[DEV] update with new interface of archidata and karso
This commit is contained in:
parent
f4d2b550a2
commit
f7979dcbed
25
back/pom.xml
25
back/pom.xml
@ -1,14 +1,12 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.kar</groupId>
|
||||
<artifactId>karanage</artifactId>
|
||||
<version>0.2.3</version>
|
||||
<properties>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.kar</groupId>
|
||||
<artifactId>karanage</artifactId>
|
||||
<version>0.2.3</version>
|
||||
<properties>
|
||||
<maven.compiler.version>3.1</maven.compiler.version>
|
||||
<maven.compiler.source>17</maven.compiler.source>
|
||||
<maven.compiler.target>17</maven.compiler.target>
|
||||
|
||||
<maven.dependency.version>3.1.1</maven.dependency.version>
|
||||
</properties>
|
||||
<repositories>
|
||||
@ -22,7 +20,13 @@
|
||||
<dependency>
|
||||
<groupId>kangaroo-and-rabbit</groupId>
|
||||
<artifactId>archidata</artifactId>
|
||||
<version>0.3.4</version>
|
||||
<version>0.3.7</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<!--<scope>test</scope>-->
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
@ -30,6 +34,11 @@
|
||||
<sourceDirectory>src</sourceDirectory>
|
||||
<testSourceDirectory>test/src</testSourceDirectory>
|
||||
<directory>${project.basedir}/out/maven/</directory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
|
@ -15,59 +15,72 @@ import org.kar.karanage.api.LogResource;
|
||||
import org.kar.karanage.api.StateHistoryResource;
|
||||
import org.kar.karanage.api.StateResource;
|
||||
import org.kar.karanage.api.UserResource;
|
||||
import org.kar.karanage.filter.KaranageAuthenticationFilter;
|
||||
import org.kar.karanage.migration.Initialization;
|
||||
import org.kar.archidata.GlobalConfiguration;
|
||||
import org.kar.archidata.SqlWrapper;
|
||||
import org.kar.archidata.UpdateJwtPublicKey;
|
||||
import org.kar.archidata.catcher.ExceptionCatcher;
|
||||
import org.kar.archidata.catcher.FailExceptionCatcher;
|
||||
import org.kar.archidata.catcher.InputExceptionCatcher;
|
||||
import org.kar.archidata.catcher.SystemExceptionCatcher;
|
||||
import org.kar.archidata.filter.AuthenticationFilter;
|
||||
import org.kar.archidata.filter.CORSFilter;
|
||||
import org.kar.archidata.filter.OptionFilter;
|
||||
import org.kar.archidata.migration.MigrationEngine;
|
||||
import org.kar.archidata.util.ConfigBaseVariable;
|
||||
import org.kar.karanage.model.StateHistory;
|
||||
import org.kar.karanage.model.StateInstant;
|
||||
import org.kar.karanage.model.DataLog;
|
||||
import org.kar.karanage.model.Group;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
public class WebLauncher {
|
||||
private WebLauncher() {
|
||||
}
|
||||
|
||||
final static Logger LOGGER = LoggerFactory.getLogger(WebLauncher.class);
|
||||
protected UpdateJwtPublicKey keyUpdater = null;
|
||||
public WebLauncher() {
|
||||
ConfigBaseVariable.bdDatabase = "karanage";
|
||||
}
|
||||
|
||||
private static URI getBaseURI() {
|
||||
return UriBuilder.fromUri(ConfigBaseVariable.getlocalAddress()).build();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
ConfigBaseVariable.bdDatabase = "karanage";
|
||||
public void migrateDB() throws Exception {
|
||||
WebLauncher.LOGGER.info("Create migration engine");
|
||||
MigrationEngine migrationEngine = new MigrationEngine();
|
||||
WebLauncher.LOGGER.info("Add initialization");
|
||||
migrationEngine.setInit(new Initialization());
|
||||
WebLauncher.LOGGER.info("Add migration since last version");
|
||||
// NOTHING for now
|
||||
WebLauncher.LOGGER.info("Migrate the DB [START]");
|
||||
migrationEngine.migrate(GlobalConfiguration.dbConfig);
|
||||
WebLauncher.LOGGER.info("Migrate the DB [STOP]");
|
||||
}
|
||||
|
||||
// generate the BDD:
|
||||
try {
|
||||
String out = "";
|
||||
out += SqlWrapper.createTable(StateInstant.class);
|
||||
out += SqlWrapper.createTable(StateHistory.class);
|
||||
out += SqlWrapper.createTable(Group.class);
|
||||
out += SqlWrapper.createTable(DataLog.class);
|
||||
System.out.println(out);
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
public static void main(String[] args) throws Exception {
|
||||
WebLauncher.LOGGER.info("[START] application wake UP");
|
||||
WebLauncher launcher = new WebLauncher();
|
||||
launcher.migrateDB();
|
||||
|
||||
launcher.process();
|
||||
WebLauncher.LOGGER.info("end-configure the server & wait finish process:");
|
||||
Thread.currentThread().join();
|
||||
WebLauncher.LOGGER.info("STOP Key updater");
|
||||
launcher.stopOther();
|
||||
WebLauncher.LOGGER.info("STOP the REST server:");
|
||||
}
|
||||
|
||||
|
||||
public void process() throws InterruptedException {
|
||||
// ===================================================================
|
||||
// Configure resources
|
||||
// ===================================================================
|
||||
ResourceConfig rc = new ResourceConfig();
|
||||
|
||||
// add multipart models ..
|
||||
rc.register(new MultiPartFeature());
|
||||
rc.register(MultiPartFeature.class);
|
||||
// global authentication system
|
||||
rc.register(new OptionFilter());
|
||||
rc.register(OptionFilter.class);
|
||||
// remove cors ==> all time called by an other system...
|
||||
rc.register(new CORSFilter());
|
||||
rc.register(CORSFilter.class);
|
||||
// global authentication system
|
||||
rc.registerClasses(AuthenticationFilter.class);
|
||||
rc.register(KaranageAuthenticationFilter.class);
|
||||
// register exception catcher
|
||||
rc.register(InputExceptionCatcher.class);
|
||||
rc.register(SystemExceptionCatcher.class);
|
||||
@ -75,14 +88,14 @@ public class WebLauncher {
|
||||
rc.register(ExceptionCatcher.class);
|
||||
|
||||
// add default resource:
|
||||
rc.registerClasses(UserResource.class);
|
||||
rc.registerClasses(StateResource.class);
|
||||
rc.registerClasses(StateHistoryResource.class);
|
||||
rc.registerClasses(LogResource.class);
|
||||
rc.register(UserResource.class);
|
||||
rc.register(StateResource.class);
|
||||
rc.register(StateHistoryResource.class);
|
||||
rc.register(LogResource.class);
|
||||
|
||||
|
||||
rc.registerClasses(HealthCheck.class);
|
||||
rc.registerClasses(Front.class);
|
||||
rc.register(HealthCheck.class);
|
||||
rc.register(Front.class);
|
||||
|
||||
// add jackson to be discovenr when we are ins standalone server
|
||||
rc.register(JacksonFeature.class);
|
||||
@ -109,8 +122,8 @@ public class WebLauncher {
|
||||
// ===================================================================
|
||||
// start periodic update of the token ...
|
||||
// ===================================================================
|
||||
UpdateJwtPublicKey keyUpdater = new UpdateJwtPublicKey();
|
||||
keyUpdater.start();
|
||||
this.keyUpdater = new UpdateJwtPublicKey();
|
||||
this.keyUpdater.start();
|
||||
|
||||
// ===================================================================
|
||||
// run JERSEY
|
||||
@ -118,12 +131,13 @@ public class WebLauncher {
|
||||
try {
|
||||
server.start();
|
||||
System.out.println("Jersey app started at " + getBaseURI());
|
||||
System.out.println("Press CTRL^C to exit..");
|
||||
Thread.currentThread().join();
|
||||
} catch (Exception e) {
|
||||
System.out.println("There was an error while starting Grizzly HTTP server.");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void stopOther() {
|
||||
keyUpdater.kill();
|
||||
try {
|
||||
keyUpdater.join(4000, 0);
|
||||
|
@ -1,16 +1,38 @@
|
||||
package org.kar.karanage;
|
||||
|
||||
import org.kar.archidata.util.ConfigBaseVariable;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
public class WebLauncherLocal {
|
||||
public class WebLauncherLocal extends WebLauncher {
|
||||
final Logger logger = LoggerFactory.getLogger(WebLauncherLocal.class);
|
||||
private WebLauncherLocal() {}
|
||||
|
||||
public static void main(String[] args) throws InterruptedException {
|
||||
WebLauncherLocal launcher = new WebLauncherLocal();
|
||||
launcher.process();
|
||||
launcher.logger.info("end-configure the server & wait finish process:");
|
||||
Thread.currentThread().join();
|
||||
launcher.logger.info("STOP the REST server:");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process() throws InterruptedException {
|
||||
if (true) {
|
||||
// for local test:
|
||||
ConfigBaseVariable.apiAdress = "http://0.0.0.0:20080/karanage/api/";
|
||||
ConfigBaseVariable.ssoAdress = "https://atria-soft.org/karso/api/";
|
||||
//ConfigBaseVariable.ssoAdress = "https://atria-soft.org/karso/api/";
|
||||
}
|
||||
WebLauncher.main(args);
|
||||
try {
|
||||
super.migrateDB();
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
while (true) {
|
||||
logger.error("Migration fail ==> waiting intervention of administrator...");
|
||||
Thread.sleep(60*60*1000);
|
||||
}
|
||||
}
|
||||
super.process();
|
||||
}
|
||||
}
|
||||
|
@ -211,7 +211,7 @@ public class LogResource {
|
||||
throw new InputException("group", "url: /log/{group}/... ==> Unknown group name");
|
||||
}
|
||||
//System.out.println("receive to insert : " + listDataToInsert.size());
|
||||
DBEntry entry = new DBEntry(GlobalConfiguration.dbConfig);
|
||||
DBEntry entry = DBEntry.createInterface(GlobalConfiguration.dbConfig);
|
||||
entry.connection.setAutoCommit(false);
|
||||
try {
|
||||
String query = "INSERT INTO log (`create_date`, `group`, `system`, `clientUuid`, `clientId`, `data`) VALUES (?, ?, ?, ?, ?, ?)";
|
||||
|
@ -1,8 +1,13 @@
|
||||
package org.kar.karanage.api;
|
||||
|
||||
import org.kar.archidata.filter.GenericContext;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.kar.archidata.model.User;
|
||||
import org.kar.karanage.model.UserKaranage;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
|
||||
import org.kar.archidata.SqlWrapper;
|
||||
import org.kar.archidata.annotation.security.RolesAllowed;
|
||||
|
||||
@ -16,7 +21,19 @@ import java.util.List;
|
||||
@Path("/users")
|
||||
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
|
||||
public class UserResource {
|
||||
final Logger logger = LoggerFactory.getLogger(UserResource.class);
|
||||
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class UserOut {
|
||||
public long id;
|
||||
public String login;
|
||||
public UserOut(long id, String login) {
|
||||
super();
|
||||
this.id = id;
|
||||
this.login = login;
|
||||
}
|
||||
|
||||
}
|
||||
public UserResource() {
|
||||
}
|
||||
|
||||
@ -42,7 +59,7 @@ public class UserResource {
|
||||
System.out.println("getUser " + userId);
|
||||
GenericContext gc = (GenericContext) sc.getUserPrincipal();
|
||||
System.out.println("===================================================");
|
||||
System.out.println("== USER ? " + gc.user);
|
||||
System.out.println("== USER ? " + gc.userByToken.name);
|
||||
System.out.println("===================================================");
|
||||
try {
|
||||
return SqlWrapper.get(UserKaranage.class, userId);
|
||||
@ -53,17 +70,14 @@ public class UserResource {
|
||||
return null;
|
||||
}
|
||||
|
||||
// curl http://localhost:9993/api/users/3
|
||||
@GET
|
||||
@Path("me")
|
||||
@RolesAllowed("USER")
|
||||
public User getMe(@Context SecurityContext sc) {
|
||||
System.out.println("getMe()");
|
||||
public UserOut getMe(@Context SecurityContext sc) {
|
||||
logger.debug("getMe()");
|
||||
GenericContext gc = (GenericContext) sc.getUserPrincipal();
|
||||
System.out.println("===================================================");
|
||||
System.out.println("== USER ? " + gc.user);
|
||||
System.out.println("===================================================");
|
||||
return gc.user;
|
||||
logger.debug("== USER ? {}", gc.userByToken);
|
||||
return new UserOut(gc.userByToken.id, gc.userByToken.name);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,23 @@
|
||||
package org.kar.karanage.filter;
|
||||
|
||||
import org.kar.archidata.filter.AuthenticationFilter;
|
||||
|
||||
import jakarta.ws.rs.Priorities;
|
||||
import jakarta.ws.rs.ext.Provider;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import jakarta.annotation.Priority;
|
||||
|
||||
//@PreMatching
|
||||
@Provider
|
||||
@Priority(Priorities.AUTHENTICATION)
|
||||
public class KaranageAuthenticationFilter extends AuthenticationFilter {
|
||||
final Logger logger = LoggerFactory.getLogger(KaranageAuthenticationFilter.class);
|
||||
|
||||
public KaranageAuthenticationFilter() {
|
||||
super("karanage");
|
||||
}
|
||||
|
||||
}
|
31
back/src/org/kar/karanage/migration/Initialization.java
Normal file
31
back/src/org/kar/karanage/migration/Initialization.java
Normal file
@ -0,0 +1,31 @@
|
||||
package org.kar.karanage.migration;
|
||||
|
||||
import org.kar.archidata.migration.MigrationSqlStep;
|
||||
import org.kar.karanage.model.DataLog;
|
||||
import org.kar.karanage.model.Group;
|
||||
import org.kar.karanage.model.StateHistory;
|
||||
import org.kar.karanage.model.StateInstant;
|
||||
|
||||
public class Initialization extends MigrationSqlStep {
|
||||
|
||||
public static final int KARSO_INITIALISATION_ID = 1;
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Initialization";
|
||||
}
|
||||
|
||||
public Initialization() throws Exception {
|
||||
addClass(StateInstant.class);
|
||||
addClass(StateHistory.class);
|
||||
addClass(Group.class);
|
||||
addClass(DataLog.class);
|
||||
|
||||
addAction("""
|
||||
INSERT INTO `group` (`id`, `name`, `description`) VALUES
|
||||
(1, 'test', 'Basic test interface');
|
||||
""");
|
||||
|
||||
}
|
||||
|
||||
}
|
35
back/src/resources/simplelogger.properties
Normal file
35
back/src/resources/simplelogger.properties
Normal file
@ -0,0 +1,35 @@
|
||||
# SLF4J's SimpleLogger configuration file
|
||||
# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err.
|
||||
# Default logging detail level for all instances of SimpleLogger.
|
||||
# Must be one of ("trace", "debug", "info", "warn", or "error").
|
||||
# If not specified, defaults to "info".
|
||||
org.slf4j.simpleLogger.defaultLogLevel=trace
|
||||
|
||||
# Logging detail level for a SimpleLogger instance named "xxxxx".
|
||||
# Must be one of ("trace", "debug", "info", "warn", or "error").
|
||||
# If not specified, the default logging detail level is used.
|
||||
#org.slf4j.simpleLogger.log.xxxxx=
|
||||
|
||||
# Set to true if you want the current date and time to be included in output messages.
|
||||
# Default is false, and will output the number of milliseconds elapsed since startup.
|
||||
#org.slf4j.simpleLogger.showDateTime=false
|
||||
|
||||
# The date and time format to be used in the output messages.
|
||||
# The pattern describing the date and time format is the same that is used in java.text.SimpleDateFormat.
|
||||
# If the format is not specified or is invalid, the default format is used.
|
||||
# The default format is yyyy-MM-dd HH:mm:ss:SSS Z.
|
||||
#org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z
|
||||
|
||||
# Set to true if you want to output the current thread name.
|
||||
# Defaults to true.
|
||||
org.slf4j.simpleLogger.showThreadName=true
|
||||
|
||||
# Set to true if you want the Logger instance name to be included in output messages.
|
||||
# Defaults to true.
|
||||
#org.slf4j.simpleLogger.showLogName=true
|
||||
|
||||
# Set to true if you want the last component of the name to be included in output messages.
|
||||
# Defaults to false.
|
||||
#org.slf4j.simpleLogger.showShortLogName=false
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user