First commit

This commit is contained in:
2024-11-15 13:44:24 +07:00
parent cea25b6aa2
commit ad971718b2
6 changed files with 87 additions and 9 deletions

11
.idea/libraries/google_code_gson.xml generated Normal file
View File

@@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="google.code.gson" type="repository">
<properties maven-id="com.google.code.gson:gson:2.11.0" />
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.11.0/gson-2.11.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.27.0/error_prone_annotations-2.27.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@@ -20,5 +20,6 @@
<orderEntry type="library" name="tinylog" level="project" /> <orderEntry type="library" name="tinylog" level="project" />
<orderEntry type="library" name="io.javalin" level="project" /> <orderEntry type="library" name="io.javalin" level="project" />
<orderEntry type="library" name="projectlombok.lombok" level="project" /> <orderEntry type="library" name="projectlombok.lombok" level="project" />
<orderEntry type="library" name="google.code.gson" level="project" />
</component> </component>
</module> </module>

View File

@@ -1,5 +1,6 @@
import AASMini.AASMini; import AASMini.AASMini;
import ProtegeGX.ProtegeGX; import ProtegeGX.ProtegeGX;
import Web.WebResponse;
import Web.WebServer; import Web.WebServer;
import org.pmw.tinylog.Logger; import org.pmw.tinylog.Logger;
@@ -37,10 +38,14 @@ public class Main {
web.setAasAPI(data -> { web.setAasAPI(data -> {
Logger.info(data); Logger.info(data);
// Do something with AAS // Do something with AAS
WebResponse wr = new WebResponse();
return wr;
}); });
web.setProtegeGXAPI(data -> { web.setProtegeGXAPI(data -> {
Logger.info(data); Logger.info(data);
// Do something with ProtegeGX // Do something with ProtegeGX
WebResponse wr = new WebResponse();
return wr;
}); });
} }

12
src/Web/WebRequest.java Normal file
View File

@@ -0,0 +1,12 @@
package Web;
public class WebRequest {
public String command;
public String data;
public String additional;
public WebRequest(){
command = "";
data = "";
additional = "";
}
}

12
src/Web/WebResponse.java Normal file
View File

@@ -0,0 +1,12 @@
package Web;
public class WebResponse {
public String reply;
public String data;
public String additional;
public WebResponse(){
reply = "";
data = "";
additional = "";
}
}

View File

@@ -1,24 +1,31 @@
package Web; package Web;
import com.google.gson.Gson;
import io.javalin.Javalin; import io.javalin.Javalin;
import lombok.Setter; import lombok.Setter;
import java.util.function.Consumer; import java.util.function.Function;
import static io.javalin.apibuilder.ApiBuilder.get; import static io.javalin.apibuilder.ApiBuilder.*;
import static io.javalin.apibuilder.ApiBuilder.path;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class WebServer { public class WebServer {
@Setter private Consumer<String> aasAPI; @Setter private Function<WebRequest, WebResponse> aasAPI;
@Setter private Consumer<String> protegeGXAPI; @Setter private Function<WebRequest, WebResponse> protegeGXAPI;
private final Gson gson = new Gson();
private void updateAASAPI(String data){ private WebResponse ProcessAAS(WebRequest request){
if (aasAPI!=null) aasAPI.accept(data); if (aasAPI!=null){
return aasAPI.apply(request);
}
return null;
} }
private void updateProtegeGXAPI(String data){ private WebResponse ProcessProtegeGX(WebRequest request){
if (protegeGXAPI!=null) protegeGXAPI.accept(data); if (protegeGXAPI!=null){
return protegeGXAPI.apply(request);
}
return null;
} }
Javalin app; Javalin app;
@@ -31,11 +38,41 @@ public class WebServer {
path("aasmini", ()->{ path("aasmini", ()->{
//TODO implement API for AAS Mini //TODO implement API for AAS Mini
get(ctx -> ctx.result("AAS Mini API")); get(ctx -> ctx.result("AAS Mini API"));
post(ctx -> {
try{
WebRequest request = gson.fromJson(ctx.body(), WebRequest.class);
WebResponse response = ProcessAAS(request);
if (response!=null){
ctx.result(gson.toJson(response));
} else {
ctx.status(400);
ctx.result("No response from AAS Mini");
}
} catch(Exception e){
ctx.status(400);
ctx.result("Exception: "+e.getMessage());
}
});
}); });
// API for ProtegeGX // API for ProtegeGX
path("protegegx", ()->{ path("protegegx", ()->{
//TODO implement API for ProtegeGX //TODO implement API for ProtegeGX
get(ctx -> ctx.result("ProtegeGX API")); get(ctx -> ctx.result("ProtegeGX API"));
post(ctx -> {
try{
WebRequest request = gson.fromJson(ctx.body(), WebRequest.class);
WebResponse response = ProcessProtegeGX(request);
if (response!=null){
ctx.result(gson.toJson(response));
} else {
ctx.status(400);
ctx.result("No response from ProtegeGX");
}
} catch(Exception e){
ctx.status(400);
ctx.result("Exception: "+e.getMessage());
}
});
}); });
}); });
}); });