This is an automated email from the ASF dual-hosted git repository. isjarana pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/airavata-data-lake.git
commit 6918b882215532db94491060f3f545bcf82543f2 Author: Isuru Ranawaka <[email protected]> AuthorDate: Mon May 17 23:39:06 2021 -0400 Data orchestrator events --- airavata-data-lake.ipr | 811 ++++++++++++++++++++- airavata-data-lake.iws | 154 ++-- .../clients/core/AbstractListener.java | 2 +- .../logs/airavata.log | 12 + .../messaging/MessagingEvents.java | 2 +- .../messaging/consumer/ConsumerCallback.java | 2 +- .../messaging/consumer/MessageConsumer.java | 10 +- .../messaging/model/NotificationEvent.java | 4 + .../model/NotificationEventDeserializer.java | 1 + .../data-orchestrator-api-server/pom.xml | 17 +- .../orchestrator/APIServerInitializer.java | 2 + .../datalake/orchestrator/Configuration.java | 106 +++ .../db/inmemory/DefaultInMemoryStore.java | 76 ++ .../db/persistance/DataOrchestratorEntity.java | 150 ++++ .../DataOrchestratorEventRepository.java | 6 + .../orchestrator/db/persistance/EntityStatus.java | 8 + .../handlers/OrchestratorEventHandler.java | 22 +- .../orchestrator/processor/EventProcessor.java | 20 - .../processor/InboundEventProcessor.java | 79 ++ .../processor/OutboundEventProcessor.java | 88 +++ .../src/main/resources/application.properties | 11 + .../src/main/resources/config.yml | 9 + .../core/adaptors/OutboundAdaptor.java | 5 - .../orchestrator/core/adaptors/StorageAdaptor.java | 17 + .../core/processor/MessageProcessor.java | 2 +- 25 files changed, 1534 insertions(+), 82 deletions(-) diff --git a/airavata-data-lake.ipr b/airavata-data-lake.ipr index bcd682a..c73e67d 100644 --- a/airavata-data-lake.ipr +++ b/airavata-data-lake.ipr @@ -13,19 +13,22 @@ <sourceOutputDir name="target/generated-sources/annotations" /> <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> <outputRelativeToContentRoot value="true" /> - <module name="data-orchestrator-service" /> + <module name="data-orchestrator-api-server" /> <module name="data-orchestrator-messaging" /> <module name="data-orchestrator-file-event-listener" /> + <module name="data-orchestrator-service-core" /> <module name="data-orchestrator-clients-core" /> </profile> </annotationProcessing> <bytecodeTargetLevel> <module name="commons" target="11" /> + <module name="data-orchestrator-api-server" target="11" /> <module name="data-orchestrator-clients" target="11" /> <module name="data-orchestrator-clients-core" target="11" /> <module name="data-orchestrator-file-event-listener" target="11" /> <module name="data-orchestrator-messaging" target="11" /> <module name="data-orchestrator-service" target="11" /> + <module name="data-orchestrator-service-core" target="11" /> <module name="drms-rest-proxy" target="11" /> </bytecodeTargetLevel> </component> @@ -36,6 +39,9 @@ <file url="file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/resources" charset="UTF-8" /> + <file url="file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java" charset="UTF-8" /> + <file url="file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/resources" charset="UTF-8" /> + <file url="file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java" charset="UTF-8" /> </component> <component name="ExportToHTMLSettings"> <option name="PRINT_LINE_NUMBERS" value="false" /> @@ -281,6 +287,72 @@ <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.3"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.11.3/jackson-annotations-2.11.3.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.11.3/jackson-annotations-2.11.3-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.11.3/jackson-annotations-2.11.3-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.3"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.11.3/jackson-core-2.11.3.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.11.3/jackson-core-2.11.3-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.11.3/jackson-core-2.11.3-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.3"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.11.3/jackson-databind-2.11.3.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.11.3/jackson-databind-2.11.3-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.11.3/jackson-databind-2.11.3-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.3"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.3/jackson-datatype-jdk8-2.11.3.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.3/jackson-datatype-jdk8-2.11.3-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.3/jackson-datatype-jdk8-2.11.3-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.3"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.3/jackson-datatype-jsr310-2.11.3.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.3/jackson-datatype-jsr310-2.11.3-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.3/jackson-datatype-jsr310-2.11.3-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.3"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.3/jackson-module-parameter-names-2.11.3.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.3/jackson-module-parameter-names-2.11.3-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.3/jackson-module-parameter-names-2.11.3-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: com.google.android:annotations:4.1.1.4"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4.jar!/" /> @@ -402,6 +474,83 @@ <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/3.10.0/protobuf-java-3.10.0-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: com.google.protobuf:protobuf-java:3.6.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/3.6.1/protobuf-java-3.6.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/3.6.1/protobuf-java-3.6.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/3.6.1/protobuf-java-3.6.1-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: com.h2database:h2:1.4.197"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/h2database/h2/1.4.197/h2-1.4.197.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/h2database/h2/1.4.197/h2-1.4.197-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/h2database/h2/1.4.197/h2-1.4.197-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: com.jayway.jsonpath:json-path:2.4.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: com.zaxxer:HikariCP:3.4.5"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/3.4.5/HikariCP-3.4.5.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/3.4.5/HikariCP-3.4.5-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/3.4.5/HikariCP-3.4.5-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: commons-beanutils:commons-beanutils:1.9.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.1/commons-beanutils-1.9.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.1/commons-beanutils-1.9.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.1/commons-beanutils-1.9.1-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: commons-collections:commons-collections:3.2.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: io.github.lognet:grpc-spring-boot-starter:3.5.1"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/io/github/lognet/grpc-spring-boot-starter/3.5.1/grpc-spring-boot-starter-3.5.1.jar!/" /> @@ -655,6 +804,17 @@ <root url="jar://$MAVEN_REPOSITORY$/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: jakarta.activation:jakarta.activation-api:1.2.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar!/" /> @@ -666,6 +826,94 @@ <root url="jar://$MAVEN_REPOSITORY$/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: mysql:mysql-connector-java:8.0.18"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.18/mysql-connector-java-8.0.18.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.18/mysql-connector-java-8.0.18-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.18/mysql-connector-java-8.0.18-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: net.bytebuddy:byte-buddy-agent:1.10.18"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.10.18/byte-buddy-agent-1.10.18.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.10.18/byte-buddy-agent-1.10.18-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.10.18/byte-buddy-agent-1.10.18-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: net.bytebuddy:byte-buddy:1.10.18"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.10.18/byte-buddy-1.10.18.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.10.18/byte-buddy-1.10.18-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.10.18/byte-buddy-1.10.18-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: net.minidev:accessors-smart:1.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/net/minidev/accessors-smart/1.2/accessors-smart-1.2-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: net.minidev:json-smart:2.3"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/net/minidev/json-smart/2.3/json-smart-2.3-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: net.sf.dozer:dozer:5.5.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/net/sf/dozer/dozer/5.5.1/dozer-5.5.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/net/sf/dozer/dozer/5.5.1/dozer-5.5.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/net/sf/dozer/dozer/5.5.1/dozer-5.5.1-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.apache.commons:commons-lang3:3.2.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.2.1/commons-lang3-3.2.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.2.1/commons-lang3-3.2.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.2.1/commons-lang3-3.2.1-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.apache.kafka:kafka-clients:1.0.0"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/apache/kafka/kafka-clients/1.0.0/kafka-clients-1.0.0.jar!/" /> @@ -688,6 +936,17 @@ <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.12.1/log4j-api-2.12.1-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.apache.logging.log4j:log4j-api:2.13.3"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.12.1"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.12.1/log4j-to-slf4j-2.12.1.jar!/" /> @@ -699,6 +958,61 @@ <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.12.1/log4j-to-slf4j-2.12.1-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.13.3/log4j-to-slf4j-2.13.3.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.13.3/log4j-to-slf4j-2.13.3-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/logging/log4j/log4j-to-slf4j/2.13.3/log4j-to-slf4j-2.13.3-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.41"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/9.0.41/tomcat-embed-core-9.0.41.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/9.0.41/tomcat-embed-core-9.0.41-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-core/9.0.41/tomcat-embed-core-9.0.41-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.41"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.41/tomcat-embed-websocket-9.0.41.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.41/tomcat-embed-websocket-9.0.41-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.41/tomcat-embed-websocket-9.0.41-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.apiguardian:apiguardian-api:1.1.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.assertj:assertj-core:3.18.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.18.1/assertj-core-3.18.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.18.1/assertj-core-3.18.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.18.1/assertj-core-3.18.1-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.checkerframework:checker-compat-qual:2.5.5"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar!/" /> @@ -721,6 +1035,94 @@ <root url="jar://$MAVEN_REPOSITORY$/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.glassfish:jakarta.el:3.0.3"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jakarta.el/3.0.3/jakarta.el-3.0.3.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jakarta.el/3.0.3/jakarta.el-3.0.3-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jakarta.el/3.0.3/jakarta.el-3.0.3-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.hamcrest:hamcrest:2.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest/2.2/hamcrest-2.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest/2.2/hamcrest-2.2-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.junit.jupiter:junit-jupiter-api:5.7.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.junit.jupiter:junit-jupiter-engine:5.7.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.7.0/junit-jupiter-engine-5.7.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.7.0/junit-jupiter-engine-5.7.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.7.0/junit-jupiter-engine-5.7.0-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.junit.jupiter:junit-jupiter-params:5.7.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.7.0/junit-jupiter-params-5.7.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.7.0/junit-jupiter-params-5.7.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.7.0/junit-jupiter-params-5.7.0-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.junit.jupiter:junit-jupiter:5.7.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.7.0/junit-jupiter-5.7.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.7.0/junit-jupiter-5.7.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.7.0/junit-jupiter-5.7.0-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.junit.platform:junit-platform-commons:1.7.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.7.0/junit-platform-commons-1.7.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.7.0/junit-platform-commons-1.7.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.7.0/junit-platform-commons-1.7.0-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.junit.platform:junit-platform-engine:1.7.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.7.0/junit-platform-engine-1.7.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.7.0/junit-platform-engine-1.7.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.7.0/junit-platform-engine-1.7.0-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.lz4:lz4-java:1.4"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/lz4/lz4-java/1.4/lz4-java-1.4.jar!/" /> @@ -732,6 +1134,83 @@ <root url="jar://$MAVEN_REPOSITORY$/org/lz4/lz4-java/1.4/lz4-java-1.4-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.mockito:mockito-core:3.6.28"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/3.6.28/mockito-core-3.6.28.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/3.6.28/mockito-core-3.6.28-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-core/3.6.28/mockito-core-3.6.28-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.mockito:mockito-junit-jupiter:3.6.28"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-junit-jupiter/3.6.28/mockito-junit-jupiter-3.6.28.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-junit-jupiter/3.6.28/mockito-junit-jupiter-3.6.28-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/mockito/mockito-junit-jupiter/3.6.28/mockito-junit-jupiter-3.6.28-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.objenesis:objenesis:3.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/3.1/objenesis-3.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/3.1/objenesis-3.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/objenesis/objenesis/3.1/objenesis-3.1-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.opentest4j:opentest4j:1.2.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.ow2.asm:asm:5.0.4"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/ow2/asm/asm/5.0.4/asm-5.0.4-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.skyscreamer:jsonassert:1.5.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.slf4j:jcl-over-slf4j:1.7.5"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jcl-over-slf4j/1.7.5/jcl-over-slf4j-1.7.5.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jcl-over-slf4j/1.7.5/jcl-over-slf4j-1.7.5-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jcl-over-slf4j/1.7.5/jcl-over-slf4j-1.7.5-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.slf4j:jul-to-slf4j:1.7.29"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.29/jul-to-slf4j-1.7.29.jar!/" /> @@ -743,6 +1222,17 @@ <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.29/jul-to-slf4j-1.7.29-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.slf4j:jul-to-slf4j:1.7.30"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.slf4j:slf4j-api:1.7.25"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar!/" /> @@ -754,6 +1244,17 @@ <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.slf4j:slf4j-api:1.7.5"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.2.1.RELEASE"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.2.1.RELEASE/spring-boot-autoconfigure-2.2.1.RELEASE.jar!/" /> @@ -765,6 +1266,50 @@ <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.2.1.RELEASE/spring-boot-autoconfigure-2.2.1.RELEASE-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.4.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.4.1/spring-boot-autoconfigure-2.4.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.4.1/spring-boot-autoconfigure-2.4.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-autoconfigure/2.4.1/spring-boot-autoconfigure-2.4.1-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework.boot:spring-boot-starter-data-jdbc:2.4.5"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-jdbc/2.4.5/spring-boot-starter-data-jdbc-2.4.5.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-jdbc/2.4.5/spring-boot-starter-data-jdbc-2.4.5-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-data-jdbc/2.4.5/spring-boot-starter-data-jdbc-2.4.5-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.4.5"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.4.5/spring-boot-starter-jdbc-2.4.5.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.4.5/spring-boot-starter-jdbc-2.4.5-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-jdbc/2.4.5/spring-boot-starter-jdbc-2.4.5-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework.boot:spring-boot-starter-json:2.4.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.4.1/spring-boot-starter-json-2.4.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.4.1/spring-boot-starter-json-2.4.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-json/2.4.1/spring-boot-starter-json-2.4.1-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.springframework.boot:spring-boot-starter-logging:2.2.1.RELEASE"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.2.1.RELEASE/spring-boot-starter-logging-2.2.1.RELEASE.jar!/" /> @@ -776,6 +1321,50 @@ <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.2.1.RELEASE/spring-boot-starter-logging-2.2.1.RELEASE-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.springframework.boot:spring-boot-starter-logging:2.4.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.4.1/spring-boot-starter-logging-2.4.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.4.1/spring-boot-starter-logging-2.4.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-logging/2.4.1/spring-boot-starter-logging-2.4.1-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework.boot:spring-boot-starter-test:2.4.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.4.1/spring-boot-starter-test-2.4.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.4.1/spring-boot-starter-test-2.4.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-test/2.4.1/spring-boot-starter-test-2.4.1-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.4.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.4.1/spring-boot-starter-tomcat-2.4.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.4.1/spring-boot-starter-tomcat-2.4.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-tomcat/2.4.1/spring-boot-starter-tomcat-2.4.1-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework.boot:spring-boot-starter-web:2.4.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.4.1/spring-boot-starter-web-2.4.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.4.1/spring-boot-starter-web-2.4.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter-web/2.4.1/spring-boot-starter-web-2.4.1-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.springframework.boot:spring-boot-starter:2.2.1.RELEASE"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.2.1.RELEASE/spring-boot-starter-2.2.1.RELEASE.jar!/" /> @@ -787,6 +1376,39 @@ <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.2.1.RELEASE/spring-boot-starter-2.2.1.RELEASE-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.springframework.boot:spring-boot-starter:2.4.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.4.1/spring-boot-starter-2.4.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.4.1/spring-boot-starter-2.4.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-starter/2.4.1/spring-boot-starter-2.4.1-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.4.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.4.1/spring-boot-test-autoconfigure-2.4.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.4.1/spring-boot-test-autoconfigure-2.4.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test-autoconfigure/2.4.1/spring-boot-test-autoconfigure-2.4.1-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework.boot:spring-boot-test:2.4.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.4.1/spring-boot-test-2.4.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.4.1/spring-boot-test-2.4.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-test/2.4.1/spring-boot-test-2.4.1-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.springframework.boot:spring-boot:2.2.1.RELEASE"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.2.1.RELEASE/spring-boot-2.2.1.RELEASE.jar!/" /> @@ -798,6 +1420,50 @@ <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.2.1.RELEASE/spring-boot-2.2.1.RELEASE-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.springframework.boot:spring-boot:2.4.1"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.4.1/spring-boot-2.4.1.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.4.1/spring-boot-2.4.1-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot/2.4.1/spring-boot-2.4.1-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework.data:spring-data-commons:2.4.8"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.4.8/spring-data-commons-2.4.8.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.4.8/spring-data-commons-2.4.8-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-commons/2.4.8/spring-data-commons-2.4.8-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework.data:spring-data-jdbc:2.1.8"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-jdbc/2.1.8/spring-data-jdbc-2.1.8.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-jdbc/2.1.8/spring-data-jdbc-2.1.8-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-jdbc/2.1.8/spring-data-jdbc-2.1.8-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework.data:spring-data-relational:2.1.8"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-relational/2.1.8/spring-data-relational-2.1.8.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-relational/2.1.8/spring-data-relational-2.1.8-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/data/spring-data-relational/2.1.8/spring-data-relational-2.1.8-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.springframework:spring-aop:5.2.1.RELEASE"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.2.1.RELEASE/spring-aop-5.2.1.RELEASE.jar!/" /> @@ -809,6 +1475,17 @@ <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.2.1.RELEASE/spring-aop-5.2.1.RELEASE-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.springframework:spring-aop:5.3.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.3.2/spring-aop-5.3.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.3.2/spring-aop-5.3.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.3.2/spring-aop-5.3.2-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.springframework:spring-beans:5.2.1.RELEASE"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.2.1.RELEASE/spring-beans-5.2.1.RELEASE.jar!/" /> @@ -820,6 +1497,17 @@ <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.2.1.RELEASE/spring-beans-5.2.1.RELEASE-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.springframework:spring-beans:5.3.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.3.2/spring-beans-5.3.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.3.2/spring-beans-5.3.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.3.2/spring-beans-5.3.2-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.springframework:spring-context:5.2.1.RELEASE"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.2.1.RELEASE/spring-context-5.2.1.RELEASE.jar!/" /> @@ -831,6 +1519,17 @@ <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.2.1.RELEASE/spring-context-5.2.1.RELEASE-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.springframework:spring-context:5.3.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.3.2/spring-context-5.3.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.3.2/spring-context-5.3.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.3.2/spring-context-5.3.2-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.springframework:spring-core:5.2.1.RELEASE"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.2.1.RELEASE/spring-core-5.2.1.RELEASE.jar!/" /> @@ -842,6 +1541,17 @@ <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.2.1.RELEASE/spring-core-5.2.1.RELEASE-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.springframework:spring-core:5.3.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.3.2/spring-core-5.3.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.3.2/spring-core-5.3.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.3.2/spring-core-5.3.2-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.springframework:spring-expression:5.2.1.RELEASE"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.2.1.RELEASE/spring-expression-5.2.1.RELEASE.jar!/" /> @@ -853,6 +1563,17 @@ <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.2.1.RELEASE/spring-expression-5.2.1.RELEASE-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.springframework:spring-expression:5.3.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.3.2/spring-expression-5.3.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.3.2/spring-expression-5.3.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.3.2/spring-expression-5.3.2-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.springframework:spring-jcl:5.2.1.RELEASE"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.2.1.RELEASE/spring-jcl-5.2.1.RELEASE.jar!/" /> @@ -864,6 +1585,72 @@ <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.2.1.RELEASE/spring-jcl-5.2.1.RELEASE-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.springframework:spring-jcl:5.3.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.3.2/spring-jcl-5.3.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.3.2/spring-jcl-5.3.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.3.2/spring-jcl-5.3.2-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework:spring-jdbc:5.3.6"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.3.6/spring-jdbc-5.3.6.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.3.6/spring-jdbc-5.3.6-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.3.6/spring-jdbc-5.3.6-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework:spring-test:5.3.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.3.2/spring-test-5.3.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.3.2/spring-test-5.3.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-test/5.3.2/spring-test-5.3.2-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework:spring-tx:5.3.6"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.3.6/spring-tx-5.3.6.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.3.6/spring-tx-5.3.6-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.3.6/spring-tx-5.3.6-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework:spring-web:5.3.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.3.2/spring-web-5.3.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.3.2/spring-web-5.3.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.3.2/spring-web-5.3.2-sources.jar!/" /> + </SOURCES> + </library> + <library name="Maven: org.springframework:spring-webmvc:5.3.2"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.3.2/spring-webmvc-5.3.2.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.3.2/spring-webmvc-5.3.2-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.3.2/spring-webmvc-5.3.2-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.xerial.snappy:snappy-java:1.1.4"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/xerial/snappy/snappy-java/1.1.4/snappy-java-1.1.4.jar!/" /> @@ -875,6 +1662,17 @@ <root url="jar://$MAVEN_REPOSITORY$/org/xerial/snappy/snappy-java/1.1.4/snappy-java-1.1.4-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.xmlunit:xmlunit-core:2.7.0"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.7.0/xmlunit-core-2.7.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.7.0/xmlunit-core-2.7.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/xmlunit/xmlunit-core/2.7.0/xmlunit-core-2.7.0-sources.jar!/" /> + </SOURCES> + </library> <library name="Maven: org.yaml:snakeyaml:1.15"> <CLASSES> <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.15/snakeyaml-1.15.jar!/" /> @@ -886,5 +1684,16 @@ <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.15/snakeyaml-1.15-sources.jar!/" /> </SOURCES> </library> + <library name="Maven: org.yaml:snakeyaml:1.27"> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.27/snakeyaml-1.27.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.27/snakeyaml-1.27-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.27/snakeyaml-1.27-sources.jar!/" /> + </SOURCES> + </library> </component> </project> \ No newline at end of file diff --git a/airavata-data-lake.iws b/airavata-data-lake.iws index adc85d9..55b304b 100644 --- a/airavata-data-lake.iws +++ b/airavata-data-lake.iws @@ -5,47 +5,24 @@ </component> <component name="ChangeListManager"> <list default="true" id="1d1ef003-bfaa-49fa-837e-dc14d1daa977" name="Default Changelist" comment=""> - <change afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/src/main/java/org/apache/airavata/dataorchestrator/clients/core/AbstractListener.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/publisher/MessageProducer.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/pom.xml" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/APIServerInitializer.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/pom.xml" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/AbstractTask.java" afterDir="false" /> + <change afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/adaptors/StorageAdaptor.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/airavata-data-lake.ipr" beforeDir="false" afterPath="$PROJECT_DIR$/airavata-data-lake.ipr" afterDir="false" /> <change beforePath="$PROJECT_DIR$/airavata-data-lake.iws" beforeDir="false" afterPath="$PROJECT_DIR$/airavata-data-lake.iws" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-api/pom.xml" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-api/src/main/java/org/apache/airavata/datalake/orchestrator/api/Application.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-api/src/main/java/org/apache/airavata/datalake/orchestrator/api/controller/HookController.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-api/src/main/java/org/apache/airavata/datalake/orchestrator/api/controller/TransferController.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-api/src/main/java/org/apache/airavata/datalake/orchestrator/api/controller/remote/SFTPController.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-api/src/main/java/org/apache/airavata/datalake/orchestrator/api/db/entity/SFTPCredentialEntity.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-api/src/main/java/org/apache/airavata/datalake/orchestrator/api/db/entity/SFTPRemoteEntity.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-api/src/main/java/org/apache/airavata/datalake/orchestrator/api/db/repo/SFTPCredentialRepository.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-api/src/main/java/org/apache/airavata/datalake/orchestrator/api/db/repo/SFTPRemoteRepository.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-api/src/main/java/org/apache/airavata/datalake/orchestrator/api/model/TransferEntry.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-api/src/main/java/org/apache/airavata/datalake/orchestrator/api/model/remote/SFTPCredential.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-api/src/main/java/org/apache/airavata/datalake/orchestrator/api/model/remote/SFTPRemote.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/pom.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/src/main/java/org/apache/airavata/dataorchestrator/clients/core/listener/AbstractListener.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/src/main/java/org/apache/airavata/dataorchestrator/clients/core/model/NotificationEvent.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationEvent.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/src/main/java/org/apache/airavata/dataorchestrator/clients/core/processor/EventProcessor.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/src/main/java/org/apache/airavata/dataorchestrator/clients/core/EventPublisher.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/src/main/java/org/apache/airavata/dataorchestrator/clients/core/publisher/ClientEventsPublisher.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/src/main/java/org/apache/airavata/dataorchestrator/clients/core/publisher/PublisherCallback.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/pom.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/src/main/java/org/apache/airavata/dataorchestrator/file/client/FileClientInitializer.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/src/main/java/org/apache/airavata/dataorchestrator/file/client/FileClientInitializer.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/src/main/java/org/apache/airavata/dataorchestrator/file/client/adaptor/FileAdaptor.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/src/main/java/org/apache/airavata/dataorchestrator/file/client/Listener/FileListener.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/src/main/java/org/apache/airavata/dataorchestrator/file/client/model/FileEvent.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/src/main/java/org/apache/airavata/dataorchestrator/file/client/model/FileEvent.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/src/main/java/org/apache/airavata/dataorchestrator/file/client/watcher/FileWatcher.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/src/main/java/org/apache/airavata/dataorchestrator/file/client/watcher/FileWatcher.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/src/main/resources/logback.xml" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-core/pom.xml" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/task/AbstractTask.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/pom.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationMessage.java" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/data-orchestrator/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/pom.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/data-resource-management-service/drms-rest-proxy/src/main/resources/drms.pb" beforeDir="false" afterPath="$PROJECT_DIR$/data-resource-management-service/drms-rest-proxy/src/main/resources/drms.pb" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/data-resource-management-service/drms-stubs/drms.pb" beforeDir="false" afterPath="$PROJECT_DIR$/data-resource-management-service/drms-stubs/drms.pb" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/metadata-service/data-builders/data-builders.iml" beforeDir="false" afterPath="$PROJECT_DIR$/metadata-service/data-builders/data-builders.iml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/src/main/java/org/apache/airavata/dataorchestrator/clients/core/AbstractListener.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/src/main/java/org/apache/airavata/dataorchestrator/clients/core/AbstractListener.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/logs/airavata.log" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/logs/airavata.log" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/MessagingEvents.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/MessagingEvents.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/consumer/ConsumerCallback.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/consumer/ConsumerCallback.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/consumer/MessageConsumer.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/consumer/MessageConsumer.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationEvent.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationEvent.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationEventDeserializer.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationEventDeserializer.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/pom.xml" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/APIServerInitializer.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/APIServerInitializer.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/Configuration.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/Configuration.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/handlers/OrchestratorEventHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/handlers/OrchestratorEventHandler.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/EventProcessor.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/resources/config.yml" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/resources/config.yml" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/adaptors/OutboundAdaptor.java" beforeDir="false" /> + <change beforePath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/processor/MessageProcessor.java" beforeDir="false" afterPath="$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/processor/MessageProcessor.java" afterDir="false" /> </list> <option name="SHOW_DIALOG" value="false" /> <option name="HIGHLIGHT_CONFLICTS" value="true" /> @@ -293,12 +270,16 @@ <option name="showLibraryContents" value="true" /> </component> <component name="PropertiesComponent"> + <property name="Downloaded.Files.Path.Enabled" value="false" /> <property name="GoToClass.includeLibraries" value="false" /> <property name="GoToClass.toSaveIncludeLibraries" value="false" /> <property name="GoToFile.includeJavaFiles" value="false" /> <property name="MemberChooser.copyJavadoc" value="false" /> <property name="MemberChooser.showClasses" value="true" /> <property name="MemberChooser.sorted" value="false" /> + <property name="Repository.Attach.Annotations" value="false" /> + <property name="Repository.Attach.JavaDocs" value="false" /> + <property name="Repository.Attach.Sources" value="false" /> <property name="RequestMappingsPanelOrder0" value="0" /> <property name="RequestMappingsPanelOrder1" value="1" /> <property name="RequestMappingsPanelWidth0" value="75" /> @@ -309,6 +290,9 @@ <property name="aspect.path.notification.shown" value="true" /> <property name="last_opened_file_path" value="$PROJECT_DIR$/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/src/main/resources" /> <property name="nodejs_package_manager_path" value="npm" /> + <property name="project.structure.last.edited" value="Libraries" /> + <property name="project.structure.proportion" value="0.0" /> + <property name="project.structure.side.proportion" value="0.32220942" /> </component> <component name="RecentsManager"> <key name="CopyFile.RECENT_KEYS"> @@ -369,15 +353,13 @@ <option name="Make" enabled="true" /> </method> </configuration> - <configuration default="true" type="ArquillianTestNG" factoryName="" nameIsGenerated="true"> + <configuration default="true" type="ArquillianJUnit" factoryName="" nameIsGenerated="true"> <option name="arquillianRunConfiguration"> <value> <option name="containerStateName" value="" /> </value> </option> - <option name="TEST_OBJECT" value="CLASS" /> - <properties /> - <listeners /> + <option name="TEST_OBJECT" value="class" /> <method v="2"> <option name="Make" enabled="true" /> </method> @@ -504,7 +486,8 @@ <workItem from="1617717367883" duration="16718000" /> <workItem from="1619528905307" duration="115000" /> <workItem from="1620245029118" duration="11436000" /> - <workItem from="1620909178858" duration="61118000" /> + <workItem from="1620909178858" duration="76752000" /> + <workItem from="1621278859757" duration="14545000" /> </task> <servers /> </component> @@ -845,6 +828,89 @@ <line>89</line> <option name="timeStamp" value="82" /> </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java</url> + <line>47</line> + <option name="timeStamp" value="85" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java</url> + <line>48</line> + <option name="timeStamp" value="86" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java</url> + <line>53</line> + <option name="timeStamp" value="87" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java</url> + <line>60</line> + <option name="timeStamp" value="88" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/inmemory/DefaultInMemoryStore.java</url> + <line>28</line> + <properties> + <option name="lambda-ordinal" value="-1" /> + </properties> + <option name="timeStamp" value="93" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/inmemory/DefaultInMemoryStore.java</url> + <line>29</line> + <option name="timeStamp" value="94" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java</url> + <line>75</line> + <option name="timeStamp" value="95" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java</url> + <line>72</line> + <option name="timeStamp" value="96" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java</url> + <line>50</line> + <option name="timeStamp" value="97" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java</url> + <line>57</line> + <option name="timeStamp" value="100" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java</url> + <line>59</line> + <option name="timeStamp" value="101" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/consumer/MessageConsumer.java</url> + <line>49</line> + <option name="timeStamp" value="102" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java</url> + <line>63</line> + <option name="timeStamp" value="104" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java</url> + <line>66</line> + <option name="timeStamp" value="105" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java</url> + <line>69</line> + <option name="timeStamp" value="106" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java</url> + <line>71</line> + <option name="timeStamp" value="107" /> + </line-breakpoint> </breakpoints> </breakpoint-manager> </component> diff --git a/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/src/main/java/org/apache/airavata/dataorchestrator/clients/core/AbstractListener.java b/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/src/main/java/org/apache/airavata/dataorchestrator/clients/core/AbstractListener.java index fbadc62..ba9932b 100644 --- a/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/src/main/java/org/apache/airavata/dataorchestrator/clients/core/AbstractListener.java +++ b/data-orchestrator/data-orchestrator-clients/data-orchestrator-clients-core/src/main/java/org/apache/airavata/dataorchestrator/clients/core/AbstractListener.java @@ -36,7 +36,7 @@ public abstract class AbstractListener implements EventListener { public void onModified(NotificationEvent event) throws Exception { LOGGER.info(event.getResourceType() + " " + event.getResourcePath() + ":" + event.getResourceName() + " Created"); - eventPublisher.publish(event, MessagingEvents.MODIFIED); + eventPublisher.publish(event, MessagingEvents.MODIFY); } diff --git a/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/logs/airavata.log b/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/logs/airavata.log index f12965b..1f917d2 100644 --- a/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/logs/airavata.log +++ b/data-orchestrator/data-orchestrator-clients/data-orchestrator-file-event-listener/logs/airavata.log @@ -525,3 +525,15 @@ java.nio.file.ClosedWatchServiceException: null 2021-05-16 14:04:13,992 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File .WSED.txt.swp Deleted [] 2021-05-16 14:07:43,990 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File fvgh Modified [] 2021-05-16 14:07:43,993 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File WSED.txt Modified [] +2021-05-17 12:28:59,325 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File fvgh Modified [] +2021-05-17 12:28:59,395 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File WSED.txt.back Created [] +2021-05-17 12:33:19,293 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File fvgh Modified [] +2021-05-17 12:33:19,298 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File XDCFV.txt Created [] +2021-05-17 12:35:29,291 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File fvgh Modified [] +2021-05-17 12:35:29,295 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File WSED.txt.back Deleted [] +2021-05-17 12:35:59,283 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File fvgh Modified [] +2021-05-17 12:35:59,284 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File WSDCFVG.txt Created [] +2021-05-17 13:56:18,984 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File azsx Created [] +2021-05-17 13:56:19,021 [pool-1-thread-1] INFO o.a.a.d.f.c.w.FileWatcher registering: /Users/isururanawaka/Documents/texts/azsx [] +2021-05-17 13:56:28,956 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File azsx Modified [] +2021-05-17 13:56:29,035 [pool-1-thread-1] INFO o.a.a.d.c.c.l.AbstractListener File EDCFV.txt Created [] diff --git a/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/MessagingEvents.java b/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/MessagingEvents.java index 5f7d226..3771b72 100644 --- a/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/MessagingEvents.java +++ b/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/MessagingEvents.java @@ -4,6 +4,6 @@ public enum MessagingEvents { REGISTER, CREATE, - MODIFIED, + MODIFY, DELETE } diff --git a/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/consumer/ConsumerCallback.java b/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/consumer/ConsumerCallback.java index e2a2a23..3eacc07 100644 --- a/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/consumer/ConsumerCallback.java +++ b/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/consumer/ConsumerCallback.java @@ -5,6 +5,6 @@ import org.apache.airavata.dataorchestrator.messaging.model.NotificationEvent; @FunctionalInterface public interface ConsumerCallback { - void process(NotificationEvent notificationEvent); + void process(NotificationEvent notificationEvent) throws Exception; } diff --git a/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/consumer/MessageConsumer.java b/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/consumer/MessageConsumer.java index 3d96f9d..9af5a59 100644 --- a/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/consumer/MessageConsumer.java +++ b/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/consumer/MessageConsumer.java @@ -46,9 +46,15 @@ public class MessageConsumer { for (ConsumerRecord<String, NotificationEvent> record : partitionRecords) { - callback.process(record.value()); + try { + callback.process(record.value()); + } catch (Exception exception) { + exception.printStackTrace(); + }finally { + consumer.commitSync(Collections.singletonMap(partition, new OffsetAndMetadata(record.offset() + 1))); + } + - consumer.commitSync(Collections.singletonMap(partition, new OffsetAndMetadata(record.offset() + 1))); } } } diff --git a/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationEvent.java b/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationEvent.java index 7f1955a..483cb5c 100644 --- a/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationEvent.java +++ b/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationEvent.java @@ -111,5 +111,9 @@ public class NotificationEvent { } } + public String getResourceId() { + return host + ":" + resourcePath + ":" + resourceType; + } + } diff --git a/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationEventDeserializer.java b/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationEventDeserializer.java index e4d4f4a..065aebd 100644 --- a/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationEventDeserializer.java +++ b/data-orchestrator/data-orchestrator-messaging/src/main/java/org/apache/airavata/dataorchestrator/messaging/model/NotificationEventDeserializer.java @@ -29,6 +29,7 @@ public class NotificationEventDeserializer implements Deserializer<NotificationE event.setResourcePath(parts[6]); event.setResourceType(parts[7]); event.setResourceName(parts[8]); + event.setContext(context); return event; } diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/pom.xml b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/pom.xml index 43bb23c..5ec2657 100644 --- a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/pom.xml +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/pom.xml @@ -41,8 +41,8 @@ <dependency> <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-data-jpa</artifactId> - <version>2.4.1</version> + <artifactId>spring-boot-starter-data-jdbc</artifactId> + <version>2.4.5</version> </dependency> <dependency> @@ -50,6 +50,19 @@ <artifactId>dozer</artifactId> <version>5.5.1</version> </dependency> + + + <dependency> + <groupId>mysql</groupId> + <artifactId>mysql-connector-java</artifactId> + <version>8.0.18</version> + </dependency> +<!-- <dependency>--> +<!-- <groupId>javax.persistence</groupId>--> +<!-- <artifactId>persistence-api</artifactId>--> +<!-- <version>1.0.2</version>--> +<!-- </dependency>--> + <dependency> <groupId>org.apache.airavata.data.lake</groupId> <artifactId>data-orchestrator-core</artifactId> diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/APIServerInitializer.java b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/APIServerInitializer.java index fe48c20..9cfeecc 100644 --- a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/APIServerInitializer.java +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/APIServerInitializer.java @@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.yaml.snakeyaml.Yaml; import java.io.FileInputStream; @@ -36,6 +37,7 @@ import java.util.Optional; * TODO: Spring Boot API */ @SpringBootApplication +@EnableJpaAuditing public class APIServerInitializer implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(APIServerInitializer.class); diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/Configuration.java b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/Configuration.java index 6fbf520..be90614 100644 --- a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/Configuration.java +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/Configuration.java @@ -6,6 +6,20 @@ public class Configuration { private Consumer consumer; + private String inMemoryStorageAdaptor; + + private FilterConfig messageFilter; + + private OutboundEventProcessorConfig outboundEventProcessor; + + public FilterConfig getMessageFilter() { + return messageFilter; + } + + public void setMessageFilter(FilterConfig messageFilter) { + this.messageFilter = messageFilter; + } + public Configuration() { } @@ -30,6 +44,22 @@ public class Configuration { this.consumer = consumer; } + public String getInMemoryStorageAdaptor() { + return inMemoryStorageAdaptor; + } + + public void setInMemoryStorageAdaptor(String inMemoryStorageAdaptor) { + this.inMemoryStorageAdaptor = inMemoryStorageAdaptor; + } + + public OutboundEventProcessorConfig getOutboundEventProcessor() { + return outboundEventProcessor; + } + + public void setOutboundEventProcessor(OutboundEventProcessorConfig outboundEventProcessor) { + this.outboundEventProcessor = outboundEventProcessor; + } + public static class Consumer { private String brokerURL; @@ -80,5 +110,81 @@ public class Configuration { } } + public static class FilterConfig { + + private String resourceType; + private String eventType; + private String resourceNameExclusions; + + public FilterConfig() { + + } + + public String getResourceType() { + return resourceType; + } + + public void setResourceType(String resourceType) { + this.resourceType = resourceType; + } + + public String getEventType() { + return eventType; + } + + public void setEventType(String eventType) { + this.eventType = eventType; + } + + public String getResourceNameExclusions() { + return resourceNameExclusions; + } + + public void setResourceNameExclusions(String resourceNameExclusions) { + this.resourceNameExclusions = resourceNameExclusions; + } + } + + + public static class OutboundEventProcessorConfig { + + private long pollingDelay; + private long pollingInterval; + private int numOfEventsPerPoll; + + + public OutboundEventProcessorConfig() { + } + + public OutboundEventProcessorConfig(long pollingDelay, long pollingInterval) { + this.pollingDelay = pollingDelay; + this.pollingInterval = pollingInterval; + } + + public long getPollingDelay() { + return pollingDelay; + } + + public void setPollingDelay(long pollingDelay) { + this.pollingDelay = pollingDelay; + } + + public long getPollingInterval() { + return pollingInterval; + } + + public void setPollingInterval(long pollingInterval) { + this.pollingInterval = pollingInterval; + } + + public int getNumOfEventsPerPoll() { + return numOfEventsPerPoll; + } + + public void setNumOfEventsPerPoll(int numOfEventsPerPoll) { + this.numOfEventsPerPoll = numOfEventsPerPoll; + } + } + } diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/inmemory/DefaultInMemoryStore.java b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/inmemory/DefaultInMemoryStore.java new file mode 100644 index 0000000..cbae03b --- /dev/null +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/inmemory/DefaultInMemoryStore.java @@ -0,0 +1,76 @@ +package org.apache.airavata.datalake.orchestrator.db.inmemory; + +import org.apache.airavata.datalake.orchestrator.core.adaptors.StorageAdaptor; +import org.apache.airavata.dataorchestrator.messaging.model.NotificationEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.Stack; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * Default in memory store that stores all transient events + */ +public class DefaultInMemoryStore implements StorageAdaptor<NotificationEvent> { + + private static final Logger LOGGER = LoggerFactory.getLogger(DefaultInMemoryStore.class); + + private static final ConcurrentHashMap<String, Stack<NotificationEvent>> inmemoryStore = new ConcurrentHashMap(); + private static final ConcurrentLinkedQueue<String> resourceIdQueue = new ConcurrentLinkedQueue<>(); + + + @Override + public void save(NotificationEvent object) { + inmemoryStore.computeIfAbsent(object.getResourceId(), k -> new Stack<NotificationEvent>()).push(object); + resourceIdQueue.add(object.getResourceId()); + } + + @Override + public void delete(String id) { + inmemoryStore.computeIfPresent(id, (k, v) -> { + v.remove(id); + return v; + }); + resourceIdQueue.remove(id); + } + + @Override + public NotificationEvent get(String id) { + return inmemoryStore.get(id).get(0); + } + + @Override + public NotificationEvent update(NotificationEvent object) throws UnsupportedOperationException { + throw new UnsupportedOperationException("Update events are not supported in default inmemory store"); + } + + @Override + public List<NotificationEvent> poll(int numOfEvents) { + LOGGER.info("Polling events " + numOfEvents); + List<NotificationEvent> notificationEventList = new ArrayList<>(); + AtomicInteger count = new AtomicInteger(1); + int iterations = 0; + while (count.get() <= numOfEvents) { + String value = resourceIdQueue.poll(); + List<NotificationEvent> finalNotificationEventList = notificationEventList; + Optional.ofNullable(value).ifPresent(val-> { + Stack events = inmemoryStore.remove(val); + count.set(count.get() + events.size()); + finalNotificationEventList.addAll(events); + }); + iterations++; + if (iterations > 100) { + break; + } + } + LOGGER.info("Notification event list size " + notificationEventList.size()); + return notificationEventList; + } + + +} diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/persistance/DataOrchestratorEntity.java b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/persistance/DataOrchestratorEntity.java new file mode 100644 index 0000000..a53e81e --- /dev/null +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/persistance/DataOrchestratorEntity.java @@ -0,0 +1,150 @@ +package org.apache.airavata.datalake.orchestrator.db.persistance; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import java.util.Date; + +/** + * DataOrchestrator entity + */ +@Entity +@Table(name = "DATAORCHESTRATOR_ENTITY") +@EntityListeners(AuditingEntityListener.class) +public class DataOrchestratorEntity { + + @Id + private String id; + + @Column(nullable = false) + private String resourceId; + + @Column(nullable = false) + private String host; + private int port; + private String protocol; + @Column(nullable = false) + private String resourcePath; + + @Column(nullable = false) + private String resourceName; + + @Column(nullable = false) + private String resourceType; + + @Column(nullable = false) + private Date occurredTime; + + + @Column(nullable = false) + @Temporal(TemporalType.TIMESTAMP) + @CreatedDate + private Date createdAt; + + + @Column(nullable = false) + @Temporal(TemporalType.TIMESTAMP) + @LastModifiedDate + private Date lastModifiedAt; + + @Column(nullable = false) + private String status; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getResourceId() { + return resourceId; + } + + public void setResourceId(String resourceId) { + this.resourceId = resourceId; + } + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + + public String getProtocol() { + return protocol; + } + + public void setProtocol(String protocol) { + this.protocol = protocol; + } + + public String getResourcePath() { + return resourcePath; + } + + public void setResourcePath(String resourcePath) { + this.resourcePath = resourcePath; + } + + public String getResourceName() { + return resourceName; + } + + public void setResourceName(String resourceName) { + this.resourceName = resourceName; + } + + public String getResourceType() { + return resourceType; + } + + public void setResourceType(String resourceType) { + this.resourceType = resourceType; + } + + public Date getOccurredTime() { + return occurredTime; + } + + public void setOccurredTime(Date occurredTime) { + this.occurredTime = occurredTime; + } + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getLastModifiedAt() { + return lastModifiedAt; + } + + public void setLastModifiedAt(Date lastModifiedAt) { + this.lastModifiedAt = lastModifiedAt; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } +} diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/persistance/DataOrchestratorEventRepository.java b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/persistance/DataOrchestratorEventRepository.java new file mode 100644 index 0000000..e956fcf --- /dev/null +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/persistance/DataOrchestratorEventRepository.java @@ -0,0 +1,6 @@ +package org.apache.airavata.datalake.orchestrator.db.persistance; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface DataOrchestratorEventRepository extends JpaRepository<DataOrchestratorEntity, String> { +} diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/persistance/EntityStatus.java b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/persistance/EntityStatus.java new file mode 100644 index 0000000..a102469 --- /dev/null +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/db/persistance/EntityStatus.java @@ -0,0 +1,8 @@ +package org.apache.airavata.datalake.orchestrator.db.persistance; + +public enum EntityStatus { + RECEIVED, + PUBLISHED, + CALLBACK_RECEIVED, + COMPLETED +} diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/handlers/OrchestratorEventHandler.java b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/handlers/OrchestratorEventHandler.java index 7eb58f0..ff8328b 100644 --- a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/handlers/OrchestratorEventHandler.java +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/handlers/OrchestratorEventHandler.java @@ -2,14 +2,19 @@ package org.apache.airavata.datalake.orchestrator.handlers; import org.apache.airavata.datalake.orchestrator.Configuration; import org.apache.airavata.datalake.orchestrator.core.processor.MessageProcessor; -import org.apache.airavata.datalake.orchestrator.processor.EventProcessor; +import org.apache.airavata.datalake.orchestrator.db.persistance.DataOrchestratorEventRepository; +import org.apache.airavata.datalake.orchestrator.processor.InboundEventProcessor; +import org.apache.airavata.datalake.orchestrator.processor.OutboundEventProcessor; import org.apache.airavata.dataorchestrator.messaging.consumer.MessageConsumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; /** * Orchestrator event handler @@ -23,6 +28,10 @@ public class OrchestratorEventHandler { private ExecutorService executorService; private MessageProcessor messageProcessor; private MessageConsumer messageConsumer; + private ScheduledExecutorService scheduledExecutorService; + + @Autowired + private DataOrchestratorEventRepository dataOrchestratorEventRepository; public OrchestratorEventHandler() { @@ -31,21 +40,26 @@ public class OrchestratorEventHandler { public void init(Configuration configuration) { this.configuration = configuration; this.executorService = Executors.newFixedThreadPool(configuration.getEventProcessorWorkers()); - this.messageProcessor = new EventProcessor(); - this.messageProcessor.init(); messageConsumer = new MessageConsumer(configuration.getConsumer().getBrokerURL(), configuration.getConsumer().getConsumerGroup(), configuration.getConsumer().getMaxPollRecordsConfig(), configuration.getConsumer().getTopic()); + this.scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); } - public void startProcessing() { + public void startProcessing() throws Exception { messageConsumer.consume((notificationEvent -> { LOGGER.info("Message received " + notificationEvent.getResourceName()); LOGGER.info("Submitting {} to process in thread pool", notificationEvent.getId()); + this.executorService.submit(new InboundEventProcessor(configuration, notificationEvent)); })); + this.scheduledExecutorService + .scheduleAtFixedRate(new OutboundEventProcessor(configuration, dataOrchestratorEventRepository), + configuration.getOutboundEventProcessor().getPollingDelay(), + configuration.getOutboundEventProcessor().getPollingInterval(), + TimeUnit.MILLISECONDS); } diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/EventProcessor.java b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/EventProcessor.java deleted file mode 100644 index 43c62bf..0000000 --- a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/EventProcessor.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.apache.airavata.datalake.orchestrator.processor; - -import org.apache.airavata.datalake.orchestrator.core.processor.MessageProcessor; -import org.apache.airavata.dataorchestrator.messaging.consumer.MessageConsumer; - -public class EventProcessor implements MessageProcessor { - - private MessageConsumer messageConsumer; - - @Override - public void init() { - - } - - @Override - public void run() { - - - } -} diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java new file mode 100644 index 0000000..7faac56 --- /dev/null +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/InboundEventProcessor.java @@ -0,0 +1,79 @@ +package org.apache.airavata.datalake.orchestrator.processor; + +import org.apache.airavata.datalake.orchestrator.Configuration; +import org.apache.airavata.datalake.orchestrator.core.adaptors.StorageAdaptor; +import org.apache.airavata.datalake.orchestrator.core.processor.MessageProcessor; +import org.apache.airavata.dataorchestrator.messaging.model.NotificationEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.lang.reflect.InvocationTargetException; +import java.util.Arrays; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * This class is responsible for pick events from kafka queue and publish them into inmemory store + */ +public class InboundEventProcessor implements MessageProcessor { + private static final Logger LOGGER = LoggerFactory.getLogger(InboundEventProcessor.class); + private StorageAdaptor store; + + private Configuration configuration; + private NotificationEvent notificationEvent; + + public InboundEventProcessor(Configuration configuration, NotificationEvent notificationEvent) throws Exception { + this.configuration = configuration; + this.notificationEvent = notificationEvent; + this.init(); + } + + @Override + public void init() throws Exception { + try { + Class<StorageAdaptor> storeClass = (Class<StorageAdaptor>) Class. + forName(this.configuration.getInMemoryStorageAdaptor()); + store = storeClass.getDeclaredConstructor().newInstance(); + } catch (ClassNotFoundException | NoSuchMethodException | + IllegalAccessException | InvocationTargetException | InstantiationException exception) { + LOGGER.error(" Error occurred while initiating Inbound event processor ", exception); + throw exception; + } + + } + + @Override + public void run() { + LOGGER.info("Inbound event processor received event "+notificationEvent.getResourceId()); + String typeStr = this.configuration.getMessageFilter().getResourceType(); + String[] allowedTypes = typeStr.split(","); + boolean proceed = false; + long size = Arrays.stream(allowedTypes).filter(type -> + type.equals(notificationEvent.getResourceType())).count(); + if (size == 0) { + return; + } + String eventTypeStr = this.configuration.getMessageFilter().getEventType(); + String[] eventTypes = eventTypeStr.split(","); + long eventSize = Arrays.stream(eventTypes).filter(type -> + type.trim().equals(notificationEvent.getContext().getEvent().name())).count(); + if (eventSize == 0) { + return; + } + + String pattern = this.configuration.getMessageFilter().getResourceNameExclusions(); + + // Create a Pattern object + Pattern r = Pattern.compile(pattern); + + // Now create matcher object. + Matcher m = r.matcher(notificationEvent.getResourceName()); + + if (m.find()) { + return; + } + + store.save(notificationEvent); + + } +} diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/OutboundEventProcessor.java b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/OutboundEventProcessor.java new file mode 100644 index 0000000..e840516 --- /dev/null +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/java/org/apache/airavata/datalake/orchestrator/processor/OutboundEventProcessor.java @@ -0,0 +1,88 @@ +package org.apache.airavata.datalake.orchestrator.processor; + +import org.apache.airavata.datalake.orchestrator.Configuration; +import org.apache.airavata.datalake.orchestrator.core.adaptors.StorageAdaptor; +import org.apache.airavata.datalake.orchestrator.core.processor.MessageProcessor; +import org.apache.airavata.datalake.orchestrator.db.persistance.DataOrchestratorEntity; +import org.apache.airavata.datalake.orchestrator.db.persistance.DataOrchestratorEventRepository; +import org.apache.airavata.datalake.orchestrator.db.persistance.EntityStatus; +import org.apache.airavata.dataorchestrator.messaging.model.NotificationEvent; +import org.dozer.DozerBeanMapper; +import org.dozer.loader.api.BeanMappingBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.lang.reflect.InvocationTargetException; +import java.util.*; + +/** + * This class is responsible for pick events from inmemory store and publish events to registry and + * Workflow engine + */ +public class OutboundEventProcessor implements MessageProcessor { + private static final Logger LOGGER = LoggerFactory.getLogger(OutboundEventProcessor.class); + + private Configuration configuration; + private StorageAdaptor store; + + private DozerBeanMapper dozerBeanMapper; + private DataOrchestratorEventRepository repository; + + public OutboundEventProcessor(Configuration configuration, DataOrchestratorEventRepository repository) throws Exception { + this.configuration = configuration; + this.repository = repository; + this.init(); + } + + @Override + public void init() throws Exception { + try { + Class<StorageAdaptor> storeClass = (Class<StorageAdaptor>) Class. + forName(this.configuration.getInMemoryStorageAdaptor()); + store = storeClass.getDeclaredConstructor().newInstance(); + dozerBeanMapper = new DozerBeanMapper(); + BeanMappingBuilder orchestratorEventMapper = new BeanMappingBuilder() { + @Override + protected void configure() { + mapping(NotificationEvent.class, DataOrchestratorEntity.class); + } + }; + dozerBeanMapper.addMapping(orchestratorEventMapper); + } catch (ClassNotFoundException | NoSuchMethodException | + IllegalAccessException | InvocationTargetException | InstantiationException exception) { + LOGGER.error(" Error occurred while initiating Inbound event processor ", exception); + throw exception; + } + + } + + @Override + public void run() { + try { + List<NotificationEvent> notificationEventList = + store.poll(configuration.getOutboundEventProcessor().getNumOfEventsPerPoll()); + + List<NotificationEvent> notificationEvents = getLatestEventOfGivenPath(notificationEventList); + + notificationEvents.forEach(event -> { + DataOrchestratorEntity entity = dozerBeanMapper.map(event, DataOrchestratorEntity.class); + entity.setOccurredTime(new Date(event.getContext().getOccuredTime())); + entity.setStatus(EntityStatus.RECEIVED.name()); + repository.save(entity); + }); + + + } catch (Exception exception) { + LOGGER.error("Error occurred at outbound event processor ", exception); + } + } + + + private List<NotificationEvent> getLatestEventOfGivenPath(List<NotificationEvent> events) { + Map<String, NotificationEvent> eventMap = new HashMap<>(); + events.forEach(event -> { + eventMap.put(event.getResourceId(), event); + }); + return new ArrayList<NotificationEvent>(eventMap.values()); + } +} diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/resources/application.properties b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/resources/application.properties new file mode 100644 index 0000000..33c8d9e --- /dev/null +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/resources/application.properties @@ -0,0 +1,11 @@ +spring.datasource.url = jdbc:mysql://localhost:3306/data_orchestrator?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false&createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true +spring.datasource.username = root + + +## Hibernate Properties +# The SQL dialect makes Hibernate generate better SQL for the chosen database +spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect +spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true +# Hibernate ddl auto (create, create-drop, validate, update) +spring.jpa.hibernate.ddl-auto = update +spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver \ No newline at end of file diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/resources/config.yml b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/resources/config.yml index 7815149..8e88af1 100644 --- a/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/resources/config.yml +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-api-server/src/main/resources/config.yml @@ -1,4 +1,13 @@ eventProcessorWorkers: 10 +inMemoryStorageAdaptor: "org.apache.airavata.datalake.orchestrator.db.inmemory.DefaultInMemoryStore" +messageFilter: + resourceType: "FILE" + eventType: "CREATE,MODIFY " + resourceNameExclusions: "swp$" +outboundEventProcessor: + pollingDelay: 10000 + pollingInterval: 10000 + numOfEventsPerPoll: 10 consumer: brokerURL: "localhost:9092" consumerGroup: "DataOrchestratorGroup" diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/adaptors/OutboundAdaptor.java b/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/adaptors/OutboundAdaptor.java deleted file mode 100644 index 644558a..0000000 --- a/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/adaptors/OutboundAdaptor.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.apache.airavata.datalake.orchestrator.core.adaptors; - -public interface OutboundAdaptor { - -} diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/adaptors/StorageAdaptor.java b/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/adaptors/StorageAdaptor.java new file mode 100644 index 0000000..aab4c32 --- /dev/null +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/adaptors/StorageAdaptor.java @@ -0,0 +1,17 @@ +package org.apache.airavata.datalake.orchestrator.core.adaptors; + +import java.util.List; + +public interface StorageAdaptor<T> { + + void save(T object) throws UnsupportedOperationException; + + void delete(String id) throws UnsupportedOperationException; + + T get(String id) throws UnsupportedOperationException; + + T update(T object) throws UnsupportedOperationException; + + List<T> poll(int numOfEvents) throws UnsupportedOperationException; + +} diff --git a/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/processor/MessageProcessor.java b/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/processor/MessageProcessor.java index 393f432..0192d2b 100644 --- a/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/processor/MessageProcessor.java +++ b/data-orchestrator/data-orchestrator-service/data-orchestrator-service-core/src/main/java/org/apache/airavata/datalake/orchestrator/core/processor/MessageProcessor.java @@ -2,7 +2,7 @@ package org.apache.airavata.datalake.orchestrator.core.processor; public interface MessageProcessor extends Runnable{ - void init(); + void init() throws Exception; }
