diff --git a/.github/workflows/codeql-analysis-java.yml b/.github/workflows/codeql-analysis-java.yml
index 546e91b17..5fd21511c 100644
--- a/.github/workflows/codeql-analysis-java.yml
+++ b/.github/workflows/codeql-analysis-java.yml
@@ -39,10 +39,10 @@ jobs:
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
- - name: Set up JDK 11
+ - name: Set up JDK 17
uses: actions/setup-java@v1
with:
- java-version: 11
+ java-version: 17
- run: mvn -U -ntp -e clean install -DskipTests
- name: Perform CodeQL Analysis
diff --git a/.github/workflows/unomi-ci-build-tests.yml b/.github/workflows/unomi-ci-build-tests.yml
index e4dc433b6..094996121 100644
--- a/.github/workflows/unomi-ci-build-tests.yml
+++ b/.github/workflows/unomi-ci-build-tests.yml
@@ -16,10 +16,10 @@ jobs:
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- - name: Set up JDK 11
+ - name: Set up JDK 17
uses: actions/setup-java@v1
with:
- java-version: 11
+ java-version: 17
cache: maven
- name: Build and Unit tests
run: mvn -U -ntp -e clean install
@@ -29,10 +29,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - name: Set up JDK 11
+ - name: Set up JDK 17
uses: actions/setup-java@v1
with:
- java-version: 11
+ java-version: 17
cache: maven
- name: Integration tests
run: mvn -ntp clean install -Pintegration-tests
@@ -40,13 +40,13 @@ jobs:
uses: actions/upload-artifact@v4
if: false # UNOMI-746 Reactivate if necessary
with:
- name: unomi-code-coverage-jdk11-${{ github.run_number }}
+ name: unomi-code-coverage-jdk17-${{ github.run_number }}
path: itests/target/site/jacoco
- name: Archive unomi logs
uses: actions/upload-artifact@v4
if: failure()
with:
- name: unomi-log-jdk11-${{ github.run_number }}
+ name: unomi-log-jdk17-${{ github.run_number }}
path: |
itests/target/exam/**/data/log
itests/target/elasticsearch0/data
diff --git a/.github/workflows/unomi-ci-docs-deploy.yml b/.github/workflows/unomi-ci-docs-deploy.yml
index 856750220..9ca17b060 100644
--- a/.github/workflows/unomi-ci-docs-deploy.yml
+++ b/.github/workflows/unomi-ci-docs-deploy.yml
@@ -13,10 +13,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - name: Set up JDK 11
+ - name: Set up JDK 17
uses: actions/setup-java@v1
with:
- java-version: 11
+ java-version: 17
server-id: apache.snapshots.https
server-username: NEXUS_USER
server-password: NEXUS_PW
@@ -33,10 +33,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - name: Set up JDK 11
+ - name: Set up JDK 17
uses: actions/setup-java@v1
with:
- java-version: 11
+ java-version: 17
server-id: apache.snapshots.https
server-username: NEXUS_USER
server-password: NEXUS_PW
diff --git a/BUILDING b/BUILDING
index 55173c6d9..4362d11a3 100644
--- a/BUILDING
+++ b/BUILDING
@@ -21,8 +21,7 @@ Building Apache Unomi
Initial Setup
-------------
-1) Install J2SE 8.0 SDK (or later), which can be downloaded from
- http://www.oracle.com/technetwork/java/javase/downloads/index.html
+1) Install J2SE 17 SDK (or later), which can be downloaded from http://www.oracle.com/technetwork/java/javase/downloads/index.html
2) Make sure that your JAVA_HOME environment variable is set to the newly installed
JDK location, and that your PATH includes %JAVA_HOME%\bin (windows) or
diff --git a/api/pom.xml b/api/pom.xml
index 3ed267975..f1dac0333 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -22,7 +22,7 @@
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
unomi-api
@@ -30,24 +30,43 @@
Main API of the Apache Unomi Context server
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
jakarta.xml.bind
jakarta.xml.bind-api
- 2.3.2
provided
org.apache.commons
commons-lang3
+ provided
javax.validation
validation-api
+ provided
commons-beanutils
commons-beanutils
+ provided
+
+
+ org.slf4j
+ slf4j-api
+ provided
com.fasterxml.jackson.core
diff --git a/bom/artifacts/pom.xml b/bom/artifacts/pom.xml
new file mode 100644
index 000000000..7779a1aae
--- /dev/null
+++ b/bom/artifacts/pom.xml
@@ -0,0 +1,249 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.unomi
+ unomi-root
+ 3.0.0-SNAPSHOT
+ ../../pom.xml
+
+ unomi-bom-artifacts
+ Apache Unomi :: BOM :: Unomi Artifacts
+ pom
+
+
+
+
+ org.apache.unomi
+ unomi-api
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-common
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-metrics
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-scripting
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-persistence-spi
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-persistence-elasticsearch-core
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-json-schema-services
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-json-schema-rest
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-rest
+ ${project.version}
+
+
+ org.apache.unomi
+ cxs-geonames-services
+ ${project.version}
+
+
+ org.apache.unomi
+ cxs-geonames-rest
+ ${project.version}
+
+
+ org.apache.unomi
+ cxs-privacy-extension-services
+ ${project.version}
+
+
+ org.apache.unomi
+ cxs-privacy-extension-rest
+ ${project.version}
+
+
+ org.apache.unomi
+ cxs-lists-extension-services
+ ${project.version}
+
+
+ org.apache.unomi
+ cxs-lists-extension-actions
+ ${project.version}
+
+
+ org.apache.unomi
+ cxs-lists-extension-rest
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-services
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-wab
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-web-tracker-wab
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-lifecycle-watcher
+ ${project.version}
+
+
+ org.apache.unomi
+ shell-commands
+ ${project.version}
+
+
+ org.apache.unomi
+ shell-dev-commands
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-weather-update-core
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-salesforce-connector-services
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-salesforce-connector-rest
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-salesforce-connector-actions
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-router-api
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-router-core
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-router-service
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-router-rest
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-groovy-actions-services
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-groovy-actions
+ ${project.version}
+ features
+ xml
+
+
+ org.apache.unomi
+ cdp-graphql-api-impl
+ ${project.version}
+
+
+ org.apache.unomi
+ cdp-graphql-feature
+ ${project.version}
+ features
+ xml
+
+
+ org.apache.unomi
+ graphql-providers-sample
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-plugins-base
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-plugins-request
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-plugins-mail
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-plugins-optimization-test
+ ${project.version}
+
+
+ org.apache.unomi
+ unomi-kar
+ ${project.version}
+ features
+ xml
+
+
+ org.apache.unomi
+ unomi-router-karaf-feature
+ ${project.version}
+ features
+ xml
+
+
+
+
+
diff --git a/bom/pom.xml b/bom/pom.xml
new file mode 100644
index 000000000..85de256f7
--- /dev/null
+++ b/bom/pom.xml
@@ -0,0 +1,530 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.unomi
+ unomi-root
+ 3.0.0-SNAPSHOT
+ ../pom.xml
+
+ unomi-bom
+ Apache Unomi :: Bill Of Material
+ Common Dependencies used in the Apache Unomi maven modules
+ pom
+
+
+
+
+ org.apache.karaf
+ karaf-bom
+ ${karaf.version}
+ pom
+ import
+
+
+
+ org.osgi
+ org.osgi.service.metatype.annotations
+ 1.4.1
+
+
+ org.osgi
+ org.osgi.service.useradmin
+ 1.1.1
+
+
+ org.osgi
+ osgi.enterprise
+ 7.0.0
+
+
+
+ org.apache.unomi
+ unomi-bom-artifacts
+ ${project.version}
+ pom
+ import
+
+
+
+ org.apache.karaf.cellar
+ apache-karaf-cellar
+ features
+ ${karaf.cellar.version}
+ xml
+
+
+ org.apache.karaf.cellar
+ org.apache.karaf.cellar.core
+ ${karaf.cellar.version}
+
+
+ org.apache.karaf.cellar
+ org.apache.karaf.cellar.config
+ ${karaf.cellar.version}
+
+
+ org.apache.karaf.jaas
+ org.apache.karaf.jaas.boot
+ ${karaf.version}
+
+
+
+ javax.validation
+ validation-api
+ ${javax-validation.version}
+
+
+ jakarta.annotation
+ jakarta.annotation-api
+ ${jakarta-annotation-api.version}
+
+
+ javax.ws.rs
+ javax.ws.rs-api
+ ${rs-api.version}
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ commons-io
+ commons-io
+ ${commons-io.version}
+
+
+ org.apache.commons
+ commons-csv
+ ${commons-csv.version}
+
+
+ commons-beanutils
+ commons-beanutils
+ ${commons-beanutils.version}
+
+
+ commons-collections
+ commons-collections
+ ${commons-collections.version}
+
+
+ org.apache.commons
+ commons-email
+ ${commons-email.version}
+
+
+ commons-net
+ commons-net
+ ${commons-net.version}
+
+
+ commons-fileupload
+ commons-fileupload
+ ${commons-fileupload.version}
+
+
+
+ org.elasticsearch.client
+ elasticsearch-rest-high-level-client
+ ${elasticsearch.version}
+
+
+ org.elasticsearch.test
+ framework
+ ${elasticsearch.version}
+
+
+ org.elasticsearch.plugin
+ transport-netty4-client
+ ${elasticsearch.version}
+
+
+
+ org.apache.cxf
+ cxf-rt-frontend-jaxrs
+ ${cxf.version}
+
+
+ org.apache.cxf
+ cxf-rt-rs-service-description-openapi-v3
+ ${cxf.version}
+
+
+ org.apache.cxf
+ cxf-rt-features-metrics
+ ${cxf.version}
+
+
+ org.apache.cxf
+ cxf-rt-features-logging
+ ${cxf.version}
+
+
+ org.apache.cxf
+ cxf-rt-transports-http
+ ${cxf.version}
+
+
+ org.apache.cxf
+ cxf-rt-rs-security-cors
+ ${cxf.version}
+
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.module
+ jackson-module-jaxb-annotations
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-yaml
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jdk8
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.jaxrs
+ jackson-jaxrs-base
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.jaxrs
+ jackson-jaxrs-json-provider
+ ${jackson.version}
+
+
+
+ org.apache.lucene
+ lucene-test-framework
+ ${lucene.version}
+
+
+ org.apache.logging.log4j
+ log4j-api
+ ${log4j.version}
+
+
+ org.apache.logging.log4j
+ log4j-core
+ ${log4j.version}
+
+
+ org.apache.logging.log4j
+ log4j-1.2-api
+ ${log4j.version}
+
+
+ org.apache.logging.log4j
+ log4j-slf4j-impl
+ ${log4j.version}
+
+
+ org.apache.httpcomponents
+ httpcore-osgi
+ ${httpcore-osgi.version}
+
+
+ org.apache.httpcomponents
+ httpclient-osgi
+ ${httpclient-osgi.version}
+
+
+ org.apache.httpcomponents
+ httpclient-osgi
+ ${httpclient-osgi.version}
+ bundle
+
+
+ org.apache.kafka
+ kafka-clients
+ ${kafka-client.version}
+
+
+ org.mvel
+ mvel2
+ ${mvel2.version}
+
+
+ org.yaml
+ snakeyaml
+ ${snakeyaml.version}
+
+
+ com.opencsv
+ opencsv
+ ${opencsv.version}
+
+
+ com.hazelcast
+ hazelcast-all
+ ${hazelcast.version}
+
+
+ net.jodah
+ failsafe
+ ${failsafe.version}
+
+
+ joda-time
+ joda-time
+ ${joda-time.version}
+
+
+ com.github.seancfoley
+ ipaddress
+ ${ipaddress.version}
+
+
+ com.github.java-json-tools
+ btf
+ ${btf.version}
+
+
+ com.github.java-json-tools
+ msg-simple
+ ${msg-simple.version}
+
+
+ com.github.java-json-tools
+ json-patch
+ ${json-patch.version}
+
+
+ com.github.java-json-tools
+ jackson-coreutils
+ ${jackson-coreutils.version}
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+ org.json
+ json
+ ${org-json.version}
+
+
+ com.google.code.findbugs
+ jsr305
+ ${jsr305.version}
+
+
+ org.webjars
+ swagger-ui
+ ${swagger-ui.version}
+
+
+ org.apache.groovy
+ groovy
+ ${groovy.version}
+
+
+ org.apache.groovy
+ groovy-json
+ ${groovy.version}
+
+
+ org.antlr
+ ST4
+ ${st4.version}
+
+
+ com.maxmind.geoip2
+ geoip2
+ ${geoip2.version}
+
+
+ nl.basjes.parse.useragent
+ yauaa
+ ${yauaa.version}
+
+
+ org.cometd.java
+ bayeux-api
+ ${bayeux-api.version}
+
+
+ org.cometd.java
+ cometd-java-common
+ ${comet-java-client.version}
+
+
+ org.cometd.java
+ cometd-java-client-http-common
+ ${comet-java-client.version}
+
+
+ org.cometd.java
+ cometd-java-client-common
+ ${comet-java-client.version}
+
+
+ org.cometd.java
+ cometd-java-client-http-jetty
+ ${comet-java-client.version}
+
+
+ io.reactivex.rxjava2
+ rxjava
+ ${reactivex.version}
+
+
+ org.antlr
+ antlr-runtime
+ ${antlr.version}
+
+
+ org.antlr
+ antlr4-runtime
+ ${antlr4.version}
+
+
+ org.antlr
+ stringtemplate
+ ${stringtemplate.version}
+
+
+ org.abego.treelayout
+ org.abego.treelayout.core
+ ${treelayout.version}
+
+
+ com.graphql-java
+ java-dataloader
+ ${java-dataloader.version}
+
+
+ org.reactivestreams
+ reactive-streams
+ ${reactive-stream.version}
+
+
+ org.checkerframework
+ checker-compat-qual
+ ${checker-compat-qual.version}
+
+
+ com.google.errorprone
+ error_prone_annotations
+ ${error_prone_annotations.version}
+
+
+ com.google.j2objc
+ j2objc-annotations
+ ${j2objc-annotations.version}
+
+
+ org.codehaus.mojo
+ animal-sniffer-annotations
+ ${animal-sniffer-annotations.version}
+
+
+ com.squareup.okhttp3
+ okhttp
+ ${okhttp.version}
+
+
+ com.squareup.okio
+ okio
+ ${okio.version}
+
+
+
+ com.graphql-java
+ graphql-java
+ ${graphql.java.version}
+
+
+ io.github.graphql-java
+ graphql-java-annotations
+ ${graphql.java.annotations.version}
+
+
+ com.graphql-java
+ graphql-java-extended-scalars
+ ${graphql.java.extended.scalars.version}
+
+
+
+ org.eclipse.jetty
+ jetty-client
+ ${jetty.version}
+
+
+ org.eclipse.jetty
+ jetty-http
+ ${jetty.version}
+
+
+ org.eclipse.jetty
+ jetty-io
+ ${jetty.version}
+
+
+ org.eclipse.jetty
+ jetty-util
+ ${jetty.version}
+
+
+ org.eclipse.jetty.websocket
+ websocket-server
+ ${jetty.version}
+
+
+
+ junit
+ junit
+ ${junit.version}
+
+
+
+
+
+ artifacts
+
+
+
diff --git a/common/pom.xml b/common/pom.xml
index e202af18d..2514bb721 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -18,23 +18,32 @@
4.0.0
-
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-common
Apache Unomi :: Common Classes
Common Classes used in the Apache Unomi Context server
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.commons
commons-csv
- 1.5
junit
@@ -44,28 +53,22 @@
org.apache.karaf.shell
org.apache.karaf.shell.console
- ${version.karaf}
provided
-
org.apache.karaf.shell
org.apache.karaf.shell.table
- ${version.karaf}
provided
org.apache.unomi
unomi-api
- 2.7.0-SNAPSHOT
test
-
org.slf4j
slf4j-simple
- 1.7.36
test
diff --git a/common/src/main/java/org/apache/unomi/common/DataTable.java b/common/src/main/java/org/apache/unomi/common/DataTable.java
index 06839fccd..21862d299 100644
--- a/common/src/main/java/org/apache/unomi/common/DataTable.java
+++ b/common/src/main/java/org/apache/unomi/common/DataTable.java
@@ -20,7 +20,6 @@
import org.apache.commons.csv.CSVPrinter;
import java.io.IOException;
-import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
diff --git a/docker/pom.xml b/docker/pom.xml
index 57502de25..41c568af5 100644
--- a/docker/pom.xml
+++ b/docker/pom.xml
@@ -22,13 +22,25 @@
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
unomi-docker
Apache Unomi :: Docker Image
Maven project to generate Docker image
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
@@ -43,7 +55,6 @@
org.apache.maven.plugins
maven-dependency-plugin
- 3.1.2
copy
@@ -105,7 +116,7 @@
io.fabric8
docker-maven-plugin
- 0.40.2
+ 0.46.0
diff --git a/docker/src/main/docker/Dockerfile b/docker/src/main/docker/Dockerfile
index 6734689fc..a3f5b3efa 100644
--- a/docker/src/main/docker/Dockerfile
+++ b/docker/src/main/docker/Dockerfile
@@ -15,14 +15,12 @@
# limitations under the License.
################################################################################
-FROM library/eclipse-temurin:11
+FROM library/eclipse-temurin:17
# Unomi environment variables
-ENV UNOMI_HOME /opt/apache-unomi
-ENV PATH $PATH:$UNOMI_HOME/bin
-
-ENV KARAF_OPTS "-Dunomi.autoStart=true"
-
+ENV UNOMI_HOME=/opt/apache-unomi
+ENV PATH=$PATH:$UNOMI_HOME/bin
+ENV KARAF_OPTS="-Dunomi.autoStart=true"
ENV UNOMI_ELASTICSEARCH_ADDRESSES=localhost:9200
WORKDIR $UNOMI_HOME
diff --git a/docker/src/main/docker/docker-compose-build.yml b/docker/src/main/docker/docker-compose-build.yml
index 58a8f6a14..9aff5df9b 100644
--- a/docker/src/main/docker/docker-compose-build.yml
+++ b/docker/src/main/docker/docker-compose-build.yml
@@ -17,7 +17,7 @@
version: '2.4'
services:
elasticsearch:
- image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2
+ image: docker.elastic.co/elasticsearch/elasticsearch:7.17.28
volumes: # Persist ES data in seperate "esdata" volume
- esdata1:/usr/share/elasticsearch/data
environment:
diff --git a/docker/src/main/docker/docker-compose.yml b/docker/src/main/docker/docker-compose.yml
index fc8679033..c8fc543cc 100644
--- a/docker/src/main/docker/docker-compose.yml
+++ b/docker/src/main/docker/docker-compose.yml
@@ -17,7 +17,7 @@
version: '2.4'
services:
elasticsearch:
- image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2
+ image: docker.elastic.co/elasticsearch/elasticsearch:7.17.28
volumes: # Persist ES data in separate "esdata" volume
- esdata1:/usr/share/elasticsearch/data
environment:
diff --git a/extensions/geonames/pom.xml b/extensions/geonames/pom.xml
index f83aaccbb..e337f3b33 100644
--- a/extensions/geonames/pom.xml
+++ b/extensions/geonames/pom.xml
@@ -18,20 +18,18 @@
4.0.0
-
-
- services
- rest
-
-
org.apache.unomi
unomi-extensions
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
cxs-geonames
Apache Unomi :: Extensions :: Geonames Database
Apache Unomi Context Server extension that integrates with the Geonames database
pom
+
+
+ services
+ rest
+
diff --git a/extensions/geonames/rest/pom.xml b/extensions/geonames/rest/pom.xml
index 34b3f1ce3..af09f333c 100644
--- a/extensions/geonames/rest/pom.xml
+++ b/extensions/geonames/rest/pom.xml
@@ -17,30 +17,49 @@
-->
+ 4.0.0
org.apache.unomi
cxs-geonames
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
cxs-geonames-rest
Apache Unomi :: Extensions :: Geonames Database :: REST API
REST API for the Apache Unomi Context Server extension that integrates with the Geonames database
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
-
org.apache.unomi
cxs-geonames-services
- ${project.version}
+ provided
+
+
+ org.apache.unomi
+ unomi-persistence-spi
+ provided
+
+
+
+ org.osgi
+ org.osgi.service.component.annotations
provided
@@ -51,8 +70,8 @@
- org.apache.cxf
- cxf-rt-frontend-jaxws
+ org.apache.commons
+ commons-lang3
provided
@@ -68,20 +87,16 @@
org.apache.cxf
cxf-rt-rs-security-cors
+ provided
com.fasterxml.jackson.jaxrs
jackson-jaxrs-json-provider
-
-
- org.apache.unomi
- unomi-persistence-spi
- ${project.version}
provided
- org.osgi
- osgi.cmpn
+ org.slf4j
+ slf4j-api
provided
diff --git a/extensions/geonames/rest/src/main/java/org/apache/unomi/geonames/rest/GeonamesEndPoint.java b/extensions/geonames/rest/src/main/java/org/apache/unomi/geonames/rest/GeonamesEndPoint.java
index d17bc53d1..3f1ad8118 100644
--- a/extensions/geonames/rest/src/main/java/org/apache/unomi/geonames/rest/GeonamesEndPoint.java
+++ b/extensions/geonames/rest/src/main/java/org/apache/unomi/geonames/rest/GeonamesEndPoint.java
@@ -27,8 +27,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.PathSegment;
@@ -36,7 +34,6 @@
import java.util.List;
import java.util.Locale;
-@WebService
@Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8")
@CrossOriginResourceSharing(
allowAllOrigins = true,
@@ -55,7 +52,6 @@ public GeonamesEndPoint() {
LOGGER.info("Initializing geonames service endpoint...");
}
- @WebMethod(exclude = true)
public void setGeonamesService(GeonamesService geonamesService) {
this.geonamesService = geonamesService;
}
diff --git a/extensions/geonames/services/pom.xml b/extensions/geonames/services/pom.xml
index 0fe65c5b9..e77971d17 100644
--- a/extensions/geonames/services/pom.xml
+++ b/extensions/geonames/services/pom.xml
@@ -17,32 +17,41 @@
-->
+ 4.0.0
org.apache.unomi
cxs-geonames
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
- 4.0.0
-
cxs-geonames-services
Apache Unomi :: Extensions :: Geonames Database :: Service
Service implementation for the Apache Unomi Context Server extension that integrates with the Geonames database
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
org.apache.unomi
unomi-persistence-spi
- ${project.version}
provided
+
org.apache.cxf
cxf-rt-rs-security-cors
@@ -51,10 +60,17 @@
org.apache.commons
commons-lang3
+ provided
commons-beanutils
commons-beanutils
+ provided
+
+
+ org.slf4j
+ slf4j-api
+ provided
diff --git a/extensions/geonames/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/geonames/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 01a1a805d..758cd7090 100644
--- a/extensions/geonames/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/geonames/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -17,9 +17,10 @@
-->
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0 https://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.3.0.xsd">
diff --git a/extensions/groovy-actions/karaf-kar/pom.xml b/extensions/groovy-actions/karaf-kar/pom.xml
index ff874dc6d..f1233013b 100644
--- a/extensions/groovy-actions/karaf-kar/pom.xml
+++ b/extensions/groovy-actions/karaf-kar/pom.xml
@@ -17,18 +17,15 @@
-->
+ 4.0.0
org.apache.unomi
unomi-groovy-actions-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
unomi-groovy-actions
Apache Unomi :: Extensions :: Groovy Actions :: Apache Karaf Feature and KAR archive
- Apache Karaf Feature and KAR archive for the Apache Unomi Context Server extension that provides the possibility to use
- Groovy for actions
-
+ Apache Karaf Feature and KAR archive for the Apache Unomi Context Server extension that provides the possibility to use Groovy for actions
kar
@@ -52,6 +49,44 @@
85
+
+
+ generate-features
+ generate-resources
+
+ features-generate-descriptor
+
+
+ true
+
+
+
+ verify-feature
+ process-resources
+
+ verify
+
+
+
+ mvn:org.apache.karaf.features/standard/${karaf.version}/xml/features
+ mvn:org.apache.karaf.features/enterprise/${karaf.version}/xml/features
+ mvn:org.apache.unomi/unomi-kar/${project.version}/xml/features
+ file:${project.build.directory}/feature/feature.xml
+
+ org.apache.karaf:apache-karaf:zip:${karaf.version}
+ 17
+
+ framework
+
+
+ wrap
+ unomi-kar
+ unomi-groovy-actions
+
+ true
+
+
+
diff --git a/extensions/groovy-actions/karaf-kar/src/main/feature/feature.xml b/extensions/groovy-actions/karaf-kar/src/main/feature/feature.xml
index b3e0783cb..8c2893e9a 100644
--- a/extensions/groovy-actions/karaf-kar/src/main/feature/feature.xml
+++ b/extensions/groovy-actions/karaf-kar/src/main/feature/feature.xml
@@ -16,16 +16,11 @@
~ limitations under the License.
-->
+
${project.description}
wrap
unomi-kar
- mvn:org.apache.groovy/groovy/${groovy.version}
- mvn:org.apache.groovy/groovy-xml/${groovy.version}
- mvn:org.apache.groovy/groovy-json/${groovy.version}
- wrap:mvn:io.github.http-builder-ng/http-builder-ng-core/1.0.4
- mvn:org.jsoup/jsoup/1.13.1
- mvn:com.sun.activation/javax.activation/1.2.0
mvn:org.apache.unomi/unomi-groovy-actions-services/${project.version}
mvn:org.apache.unomi/unomi-groovy-actions-rest/${project.version}
diff --git a/extensions/groovy-actions/pom.xml b/extensions/groovy-actions/pom.xml
index 53892b110..9a76295aa 100644
--- a/extensions/groovy-actions/pom.xml
+++ b/extensions/groovy-actions/pom.xml
@@ -21,9 +21,8 @@
org.apache.unomi
unomi-extensions
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-groovy-actions-root
Apache Unomi :: Extensions :: Groovy Actions
Apache Unomi Context Server extension that provides support for Groovy Actions
diff --git a/extensions/groovy-actions/rest/pom.xml b/extensions/groovy-actions/rest/pom.xml
index de1052262..8c213ec00 100644
--- a/extensions/groovy-actions/rest/pom.xml
+++ b/extensions/groovy-actions/rest/pom.xml
@@ -17,31 +17,50 @@
-->
+ 4.0.0
org.apache.unomi
unomi-groovy-actions-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
unomi-groovy-actions-rest
Apache Unomi :: Extensions :: Groovy Actions :: REST API
REST API for the Apache Unomi Context Server extension that integrates with groovy actions
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
-
+
+ org.apache.unomi
+ unomi-persistence-spi
+ provided
+
org.apache.unomi
unomi-groovy-actions-services
- ${project.version}
+ provided
+
+
+
+ org.osgi
+ org.osgi.service.component.annotations
provided
@@ -52,10 +71,16 @@
- org.apache.cxf
- cxf-rt-frontend-jaxws
+ commons-io
+ commons-io
+ provided
+
+
+ javax.ws.rs
+ javax.ws.rs-api
provided
+
org.apache.cxf
cxf-rt-frontend-jaxrs
@@ -77,20 +102,10 @@
provided
- org.apache.unomi
- unomi-persistence-spi
- ${project.version}
- provided
-
-
- org.osgi
- osgi.cmpn
+ org.slf4j
+ slf4j-api
provided
-
- commons-io
- commons-io
-
@@ -98,14 +113,6 @@
org.apache.felix
maven-bundle-plugin
true
-
-
-
- sun.nio.ch;resolution:=optional,
- *
-
-
-
diff --git a/extensions/groovy-actions/rest/src/main/java/org/apache/unomi/groovy/actions/rest/GroovyActionsEndPoint.java b/extensions/groovy-actions/rest/src/main/java/org/apache/unomi/groovy/actions/rest/GroovyActionsEndPoint.java
index ae2236c01..8ba9ca26e 100644
--- a/extensions/groovy-actions/rest/src/main/java/org/apache/unomi/groovy/actions/rest/GroovyActionsEndPoint.java
+++ b/extensions/groovy-actions/rest/src/main/java/org/apache/unomi/groovy/actions/rest/GroovyActionsEndPoint.java
@@ -27,19 +27,11 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
+import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.IOException;
-@WebService
@Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8")
@CrossOriginResourceSharing(allowAllOrigins = true, allowCredentials = true)
@Path("/groovyActions")
@@ -55,7 +47,6 @@ public GroovyActionsEndPoint() {
LOGGER.info("Initializing groovy actions service endpoint...");
}
- @WebMethod(exclude = true)
public void setGroovyActionsService(GroovyActionsService groovyActionsService) {
this.groovyActionsService = groovyActionsService;
}
diff --git a/extensions/groovy-actions/services/pom.xml b/extensions/groovy-actions/services/pom.xml
index 3d4de386e..324366b84 100644
--- a/extensions/groovy-actions/services/pom.xml
+++ b/extensions/groovy-actions/services/pom.xml
@@ -17,55 +17,75 @@
-->
+ 4.0.0
org.apache.unomi
unomi-groovy-actions-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
- 4.0.0
-
unomi-groovy-actions-services
Apache Unomi :: Extensions :: Groovy Actions :: Service
- Service implementation for the Apache Unomi Context Server extension that provides the possibility to implement actions in
- Groovy
-
+ Service implementation for the Apache Unomi Context Server extension that provides the possibility to implement actions in Groovy
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
+
+ org.apache.unomi
+ unomi-metrics
+ provided
+
+
+ org.apache.unomi
+ unomi-persistence-spi
+ provided
+
+
+ org.apache.unomi
+ unomi-services
+ provided
+
+
org.osgi
osgi.core
provided
-
org.osgi
- osgi.cmpn
+ org.osgi.service.metatype.annotations
provided
- org.apache.unomi
- unomi-metrics
- ${project.version}
+ org.osgi
+ org.osgi.service.component
provided
- org.apache.unomi
- unomi-persistence-spi
- ${project.version}
+ org.osgi
+ org.osgi.service.component.annotations
provided
+
- org.apache.unomi
- unomi-services
- ${project.version}
+ commons-io
+ commons-io
provided
@@ -78,6 +98,11 @@
jackson-databind
provided
+
+ org.slf4j
+ slf4j-api
+ provided
+
org.apache.groovy
groovy
@@ -90,10 +115,6 @@
${groovy.version}
provided
-
- commons-io
- commons-io
-
@@ -104,10 +125,6 @@
true
-
- sun.nio.ch;resolution:=optional,
- *
-
<_dsannotations>*
*;scope=compile|runtime
${project.basedir}
diff --git a/extensions/healthcheck/pom.xml b/extensions/healthcheck/pom.xml
index 8b5f9253b..faf785cf6 100644
--- a/extensions/healthcheck/pom.xml
+++ b/extensions/healthcheck/pom.xml
@@ -21,39 +21,47 @@
org.apache.unomi
unomi-extensions
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
healthcheck
Apache Unomi :: Extensions :: HealthCheck
Apache Unomi HealthCheck extension that provide liveliness information about unomi
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
org.apache.unomi
unomi-lifecycle-watcher
- ${project.version}
provided
org.apache.unomi
unomi-persistence-spi
- ${project.version}
provided
org.apache.unomi
shell-commands
- ${project.version}
provided
+
javax.servlet
javax.servlet-api
@@ -61,17 +69,34 @@
org.osgi
- osgi.cmpn
+ org.osgi.service.useradmin
provided
- org.apache.httpcomponents
- httpclient-osgi
+ org.osgi
+ org.osgi.service.component.annotations
+ provided
+
+
+ org.osgi
+ org.osgi.service.http
+ provided
+
+
+
+ org.apache.commons
+ commons-lang3
+ provided
+
+
+ org.slf4j
+ slf4j-api
provided
org.apache.httpcomponents
- httpcore-osgi
+ httpclient-osgi
+ bundle
provided
@@ -82,7 +107,6 @@
org.apache.karaf.jaas
org.apache.karaf.jaas.boot
- ${karaf.version}
provided
diff --git a/extensions/healthcheck/src/main/java/org/apache/unomi/healthcheck/provider/ElasticSearchHealthCheckProvider.java b/extensions/healthcheck/src/main/java/org/apache/unomi/healthcheck/provider/ElasticSearchHealthCheckProvider.java
index 361e68df7..96a17db1a 100644
--- a/extensions/healthcheck/src/main/java/org/apache/unomi/healthcheck/provider/ElasticSearchHealthCheckProvider.java
+++ b/extensions/healthcheck/src/main/java/org/apache/unomi/healthcheck/provider/ElasticSearchHealthCheckProvider.java
@@ -26,11 +26,10 @@
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.unomi.healthcheck.HealthCheckConfig;
-import org.apache.unomi.healthcheck.HealthCheckResponse;
import org.apache.unomi.healthcheck.HealthCheckProvider;
+import org.apache.unomi.healthcheck.HealthCheckResponse;
import org.apache.unomi.healthcheck.util.CachedValue;
import org.apache.unomi.shell.migration.utils.HttpUtils;
import org.osgi.service.component.annotations.Activate;
diff --git a/extensions/json-schema/pom.xml b/extensions/json-schema/pom.xml
index a38969f6a..8223b7753 100644
--- a/extensions/json-schema/pom.xml
+++ b/extensions/json-schema/pom.xml
@@ -21,7 +21,7 @@
org.apache.unomi
unomi-extensions
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
unomi-json-schema-root
diff --git a/extensions/json-schema/rest/pom.xml b/extensions/json-schema/rest/pom.xml
index a9d9094d6..716ed0bfd 100644
--- a/extensions/json-schema/rest/pom.xml
+++ b/extensions/json-schema/rest/pom.xml
@@ -17,80 +17,84 @@
-->
+ 4.0.0
org.apache.unomi
unomi-json-schema-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
unomi-json-schema-rest
Apache Unomi :: Extensions :: JSON Schema :: REST API
JSON Schema REST API for the Apache Unomi Context Server
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
-
org.apache.unomi
unomi-json-schema-services
- ${project.version}
provided
-
org.apache.unomi
unomi-rest
- ${project.version}
provided
- javax.servlet
- javax.servlet-api
+ org.osgi
+ org.osgi.service.component.annotations
provided
- org.apache.cxf
- cxf-rt-frontend-jaxws
+ javax.servlet
+ javax.servlet-api
provided
- org.apache.cxf
- cxf-rt-frontend-jaxrs
+ javax.ws.rs
+ javax.ws.rs-api
provided
+
- org.apache.cxf
- cxf-rt-transports-http
+ commons-io
+ commons-io
provided
- org.apache.cxf
- cxf-rt-rs-security-cors
+ org.apache.commons
+ commons-lang3
provided
- com.fasterxml.jackson.jaxrs
- jackson-jaxrs-json-provider
+ org.slf4j
+ slf4j-api
provided
- org.osgi
- osgi.cmpn
+ org.apache.cxf
+ cxf-rt-rs-security-cors
provided
-
- commons-io
- commons-io
-
+
@@ -98,14 +102,6 @@
org.apache.felix
maven-bundle-plugin
true
-
-
-
- sun.nio.ch;resolution:=optional,
- *
-
-
-
diff --git a/extensions/json-schema/rest/src/main/java/org/apache/unomi/schema/rest/JsonSchemaEndPoint.java b/extensions/json-schema/rest/src/main/java/org/apache/unomi/schema/rest/JsonSchemaEndPoint.java
index 5f9caabf0..51dc39a48 100644
--- a/extensions/json-schema/rest/src/main/java/org/apache/unomi/schema/rest/JsonSchemaEndPoint.java
+++ b/extensions/json-schema/rest/src/main/java/org/apache/unomi/schema/rest/JsonSchemaEndPoint.java
@@ -27,18 +27,13 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
+import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import java.util.*;
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
-@WebService
@Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8")
@CrossOriginResourceSharing(allowAllOrigins = true, allowCredentials = true)
@Path("/jsonSchema")
@@ -54,7 +49,6 @@ public JsonSchemaEndPoint() {
LOGGER.info("Initializing JSON schema endpoint...");
}
- @WebMethod(exclude = true)
public void setSchemaService(SchemaService schemaService) {
this.schemaService = schemaService;
}
diff --git a/extensions/json-schema/services/pom.xml b/extensions/json-schema/services/pom.xml
index 4538c8846..01515ba6e 100644
--- a/extensions/json-schema/services/pom.xml
+++ b/extensions/json-schema/services/pom.xml
@@ -17,22 +17,31 @@
-->
+ 4.0.0
org.apache.unomi
unomi-json-schema-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
- 4.0.0
-
unomi-json-schema-services
Apache Unomi :: Extensions :: JSON Schema :: Service
JSON Schema service for the Apache Unomi Context Server
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
1.0.86
- 2.17.1
1.7.0
@@ -40,32 +49,30 @@
org.apache.unomi
unomi-api
- ${project.version}
provided
-
- org.osgi
- osgi.core
+ org.apache.unomi
+ unomi-persistence-spi
provided
org.osgi
- osgi.cmpn
+ osgi.core
provided
- org.apache.unomi
- unomi-persistence-spi
- ${project.version}
+ commons-io
+ commons-io
provided
- commons-io
- commons-io
+ org.apache.commons
+ commons-lang3
+ provided
@@ -83,38 +90,36 @@
com.fasterxml.jackson.core
jackson-core
- ${version.schema.jackson}
- compile
+ provided
com.fasterxml.jackson.core
jackson-databind
- ${version.schema.jackson}
- compile
+ provided
com.fasterxml.jackson.core
jackson-annotations
- ${version.schema.jackson}
- compile
+ provided
com.fasterxml.jackson.dataformat
jackson-dataformat-yaml
- ${version.schema.jackson}
- compile
+ provided
+
+
+ org.slf4j
+ slf4j-api
+ provided
com.ethlo.time
itu
${version.schema.itu}
- compile
org.yaml
snakeyaml
- 2.2
- compile
@@ -137,7 +142,6 @@
org.jcodings.specific;resolution:=optional,
org.joni;resolution:=optional,
org.joni.exception;resolution:=optional,
- sun.nio.ch;resolution:=optional,
*
diff --git a/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationError.java b/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationError.java
index 7adfabef1..7dc9cb3eb 100644
--- a/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationError.java
+++ b/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationError.java
@@ -17,8 +17,6 @@
package org.apache.unomi.schema.api;
-import com.networknt.schema.ValidationMessage;
-
import java.io.Serializable;
/**
diff --git a/extensions/json-schema/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/json-schema/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 9998ad930..849c27fcc 100644
--- a/extensions/json-schema/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/json-schema/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -17,9 +17,10 @@
-->
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0 https://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.3.0.xsd">
diff --git a/extensions/lists-extension/actions/pom.xml b/extensions/lists-extension/actions/pom.xml
index e6a1f753d..81d0079d5 100644
--- a/extensions/lists-extension/actions/pom.xml
+++ b/extensions/lists-extension/actions/pom.xml
@@ -17,31 +17,38 @@
-->
+ 4.0.0
cxs-lists-extension
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
cxs-lists-extension-actions
Apache Unomi :: Extensions :: Lists :: Actions
List extension rule actions for the Apache Unomi Context Server
-
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
-
org.apache.unomi
cxs-lists-extension-services
- ${project.version}
provided
diff --git a/extensions/lists-extension/actions/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/lists-extension/actions/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 7a5524195..e75582222 100644
--- a/extensions/lists-extension/actions/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/lists-extension/actions/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -17,7 +17,7 @@
-->
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
diff --git a/extensions/lists-extension/pom.xml b/extensions/lists-extension/pom.xml
index 426d9f4ff..f68461fe1 100644
--- a/extensions/lists-extension/pom.xml
+++ b/extensions/lists-extension/pom.xml
@@ -18,21 +18,20 @@
4.0.0
-
-
- services
- rest
- actions
-
-
org.apache.unomi
unomi-extensions
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
cxs-lists-extension
Apache Unomi :: Extensions :: Lists
List extension for the Apache Unomi Context Server
pom
+
+
+ services
+ rest
+ actions
+
diff --git a/extensions/lists-extension/rest/pom.xml b/extensions/lists-extension/rest/pom.xml
index 2ef53bcba..6b1bf2c31 100644
--- a/extensions/lists-extension/rest/pom.xml
+++ b/extensions/lists-extension/rest/pom.xml
@@ -17,31 +17,43 @@
-->
+ 4.0.0
cxs-lists-extension
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
cxs-lists-extension-rest
Apache Unomi :: Extensions :: Lists :: REST API
List extension REST API for the Apache Unomi Context Server
-
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
-
+
+ org.apache.unomi
+ unomi-persistence-spi
+ provided
+
org.apache.unomi
cxs-lists-extension-services
- ${project.version}
provided
@@ -50,12 +62,12 @@
javax.servlet-api
provided
-
- org.apache.cxf
- cxf-rt-frontend-jaxws
+ org.osgi
+ org.osgi.service.component.annotations
provided
+
org.apache.cxf
cxf-rt-frontend-jaxrs
@@ -69,20 +81,16 @@
org.apache.cxf
cxf-rt-rs-security-cors
+ provided
com.fasterxml.jackson.jaxrs
jackson-jaxrs-json-provider
-
-
- org.apache.unomi
- unomi-persistence-spi
- ${project.version}
provided
- org.osgi
- osgi.cmpn
+ org.slf4j
+ slf4j-api
provided
diff --git a/extensions/lists-extension/rest/src/main/java/org/apache/unomi/lists/rest/UserListServiceEndPoint.java b/extensions/lists-extension/rest/src/main/java/org/apache/unomi/lists/rest/UserListServiceEndPoint.java
index 47f90e750..bd14b4780 100644
--- a/extensions/lists-extension/rest/src/main/java/org/apache/unomi/lists/rest/UserListServiceEndPoint.java
+++ b/extensions/lists-extension/rest/src/main/java/org/apache/unomi/lists/rest/UserListServiceEndPoint.java
@@ -28,8 +28,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@@ -37,7 +35,6 @@
/**
* @author Christophe Laprun
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(
allowAllOrigins = true,
@@ -56,7 +53,6 @@ public UserListServiceEndPoint() {
LOGGER.info("Initializing user list service endpoint...");
}
- @WebMethod(exclude = true)
public void setUserListService(UserListService userListService) {
this.userListService = userListService;
}
diff --git a/extensions/lists-extension/services/pom.xml b/extensions/lists-extension/services/pom.xml
index 7cabb2a02..e2fc3a134 100644
--- a/extensions/lists-extension/services/pom.xml
+++ b/extensions/lists-extension/services/pom.xml
@@ -17,31 +17,41 @@
-->
+ 4.0.0
cxs-lists-extension
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
cxs-lists-extension-services
Apache Unomi :: Extensions :: Lists :: Service
List extension service implementation for the Apache Unomi Context Server
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
org.apache.unomi
unomi-persistence-spi
- ${project.version}
provided
+
org.apache.cxf
cxf-rt-rs-security-cors
diff --git a/extensions/lists-extension/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/lists-extension/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 9398d0e67..78eac519a 100644
--- a/extensions/lists-extension/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/lists-extension/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -17,7 +17,7 @@
-->
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
diff --git a/extensions/log4j-extension/pom.xml b/extensions/log4j-extension/pom.xml
index 007010d3b..4abea7495 100644
--- a/extensions/log4j-extension/pom.xml
+++ b/extensions/log4j-extension/pom.xml
@@ -17,39 +17,39 @@
-->
-
4.0.0
-
org.apache.unomi
unomi-extensions
- 2.7.0-SNAPSHOT
- ../pom.xml
+ 3.0.0-SNAPSHOT
-
log4j-extension
- bundle
Apache Unomi :: Extensions :: Log4j Extension
Apache Unomi log4j extensions
+ bundle
-
- UTF-8
- 1.8
- 1.8
-
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
-
org.apache.commons
commons-lang3
- 3.15.0
+ provided
org.apache.logging.log4j
log4j-core
- 2.19.0
provided
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 707f8b78a..df1084a3b 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -18,30 +18,14 @@
4.0.0
-
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-extensions
Apache Unomi :: Extensions
Apache Unomi Context Server extensions
pom
-
- lists-extension
- privacy-extension
- geonames
- router
- salesforce-connector
- weather-update
- web-tracker
- groovy-actions
- json-schema
- log4j-extension
- healthcheck
-
-
diff --git a/extensions/privacy-extension/pom.xml b/extensions/privacy-extension/pom.xml
index e11174c96..f2700b46d 100644
--- a/extensions/privacy-extension/pom.xml
+++ b/extensions/privacy-extension/pom.xml
@@ -18,21 +18,18 @@
4.0.0
-
-
- services
- rest
-
-
org.apache.unomi
unomi-extensions
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
cxs-privacy-extension
Apache Unomi :: Extensions :: Privacy
Privacy management extension for the Apache Unomi Context Server
-
pom
+
+
+ services
+ rest
+
diff --git a/extensions/privacy-extension/rest/pom.xml b/extensions/privacy-extension/rest/pom.xml
index ebfa43556..8bafcbdb3 100644
--- a/extensions/privacy-extension/rest/pom.xml
+++ b/extensions/privacy-extension/rest/pom.xml
@@ -17,44 +17,58 @@
-->
+ 4.0.0
cxs-privacy-extension
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
cxs-privacy-extension-rest
Apache Unomi :: Extensions :: Privacy :: REST API
Privacy management extension REST API for the Apache Unomi Context Server
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
-
org.apache.unomi
cxs-privacy-extension-services
- ${project.version}
+ provided
+
+
+ org.apache.unomi
+ unomi-persistence-spi
provided
- javax.servlet
- javax.servlet-api
+ org.osgi
+ org.osgi.service.component.annotations
provided
- org.apache.cxf
- cxf-rt-frontend-jaxws
+ javax.servlet
+ javax.servlet-api
provided
+
org.apache.cxf
cxf-rt-frontend-jaxrs
@@ -68,43 +82,15 @@
org.apache.cxf
cxf-rt-rs-security-cors
+ provided
+
com.fasterxml.jackson.jaxrs
jackson-jaxrs-json-provider
-
-
- org.apache.unomi
- unomi-persistence-spi
- ${project.version}
- provided
-
-
- org.osgi
- osgi.cmpn
provided
-
-
-
- com.sebastian-daschner
- jaxrs-analyzer-maven-plugin
- 0.17
-
-
-
- analyze-jaxrs
-
-
- swagger
- unomi.apache.org
-
-
-
-
-
-
diff --git a/extensions/privacy-extension/rest/src/main/java/org/apache/unomi/privacy/rest/PrivacyServiceEndPoint.java b/extensions/privacy-extension/rest/src/main/java/org/apache/unomi/privacy/rest/PrivacyServiceEndPoint.java
index 8c3dafc1b..f804ac164 100644
--- a/extensions/privacy-extension/rest/src/main/java/org/apache/unomi/privacy/rest/PrivacyServiceEndPoint.java
+++ b/extensions/privacy-extension/rest/src/main/java/org/apache/unomi/privacy/rest/PrivacyServiceEndPoint.java
@@ -23,8 +23,6 @@
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@@ -33,7 +31,6 @@
/**
* REST API end point for privacy service
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(
allowAllOrigins = true,
@@ -46,7 +43,6 @@ public class PrivacyServiceEndPoint {
@Reference
private PrivacyService privacyService;
- @WebMethod(exclude = true)
public void setPrivacyService(PrivacyService privacyService) {
this.privacyService = privacyService;
}
diff --git a/extensions/privacy-extension/services/pom.xml b/extensions/privacy-extension/services/pom.xml
index ff8b64442..871d52245 100644
--- a/extensions/privacy-extension/services/pom.xml
+++ b/extensions/privacy-extension/services/pom.xml
@@ -17,46 +17,60 @@
-->
+ 4.0.0
cxs-privacy-extension
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
cxs-privacy-extension-services
Apache Unomi :: Extensions :: Privacy :: Services
Privacy management extension service implementation for the Apache Unomi Context Server
- 2.7.0-SNAPSHOT
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
org.apache.unomi
unomi-persistence-spi
- ${project.version}
provided
- org.apache.cxf
- cxf-rt-rs-security-cors
+ org.apache.unomi
+ unomi-lifecycle-watcher
provided
+
org.osgi
osgi.core
provided
+
- org.apache.unomi
- unomi-lifecycle-watcher
- ${project.version}
+ org.apache.cxf
+ cxf-rt-rs-security-cors
+ provided
+
+
+ org.slf4j
+ slf4j-api
provided
diff --git a/extensions/privacy-extension/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/privacy-extension/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 522918044..58a03fad3 100644
--- a/extensions/privacy-extension/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/privacy-extension/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -15,13 +15,13 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
+
-
-
-
+
diff --git a/extensions/router/pom.xml b/extensions/router/pom.xml
index 952614678..8ceb69a33 100644
--- a/extensions/router/pom.xml
+++ b/extensions/router/pom.xml
@@ -16,13 +16,11 @@
-->
4.0.0
-
org.apache.unomi
unomi-extensions
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-router
Apache Unomi :: Extensions :: Router
Apache Camel Router for the Apache Unomi Context server
@@ -31,7 +29,6 @@
2.23.1
0.11.0.3
- 3.10.0
diff --git a/extensions/router/router-api/pom.xml b/extensions/router/router-api/pom.xml
index ef5a6d63c..427a53407 100644
--- a/extensions/router/router-api/pom.xml
+++ b/extensions/router/router-api/pom.xml
@@ -16,23 +16,33 @@
~ limitations under the License.
-->
+ 4.0.0
unomi-router
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
unomi-router-api
Apache Unomi :: Extensions :: Router :: API
Router Specification API
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
diff --git a/extensions/router/router-core/pom.xml b/extensions/router/router-core/pom.xml
index 8b7d46aad..4abe0bab4 100644
--- a/extensions/router/router-core/pom.xml
+++ b/extensions/router/router-core/pom.xml
@@ -16,52 +16,61 @@
~ limitations under the License.
-->
+ 4.0.0
unomi-router
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
unomi-router-core
Apache Unomi :: Extensions :: Router :: Core
Router Core (Apache Camel Routes)
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
-
- org.osgi
- osgi.core
- provided
-
-
- org.osgi
- osgi.cmpn
- provided
-
org.apache.unomi
unomi-api
- ${project.version}
provided
org.apache.unomi
unomi-persistence-spi
- ${project.version}
provided
org.apache.unomi
unomi-services
- ${project.version}
provided
org.apache.unomi
unomi-router-api
- ${project.version}
+
+
+ org.osgi
+ osgi.core
+ provided
+
+
+ org.osgi
+ org.osgi.service.component.annotations
+ provided
+
+
org.apache.camel
camel-core
@@ -90,6 +99,7 @@
org.apache.camel
camel-ftp
${camel.version}
+ provided
org.apache.camel
@@ -97,14 +107,15 @@
${camel.version}
provided
+
org.apache.commons
commons-lang3
+ provided
commons-net
commons-net
- ${commons-net.version}
commons-beanutils
@@ -113,13 +124,12 @@
commons-logging
commons-logging
- 1.1.1
provided
+
com.opencsv
opencsv
- 3.10
org.apache.servicemix.bundles
@@ -133,6 +143,11 @@
${kafka.client.version}
provided
+
+ org.slf4j
+ slf4j-api
+ provided
+
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/context/RouterCamelContext.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/context/RouterCamelContext.java
index 87d275456..4d329209d 100644
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/context/RouterCamelContext.java
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/context/RouterCamelContext.java
@@ -148,7 +148,6 @@ public void run() {
}
}
-
for (Map.Entry exportConfigToRefresh : exportConfigsToRefresh.entrySet()) {
try {
if (exportConfigToRefresh.getValue().equals(RouterConstants.CONFIG_CAMEL_REFRESH.UPDATED)) {
diff --git a/extensions/router/router-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/router/router-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 281c93f91..aae3abbe2 100644
--- a/extensions/router/router-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/router/router-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -15,13 +15,12 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
+
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0 https://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.3.0.xsd">
diff --git a/extensions/router/router-karaf-feature/pom.xml b/extensions/router/router-karaf-feature/pom.xml
index 1ef821ef1..9676780cf 100644
--- a/extensions/router/router-karaf-feature/pom.xml
+++ b/extensions/router/router-karaf-feature/pom.xml
@@ -16,27 +16,74 @@
~ limitations under the License.
-->
+ 4.0.0
unomi-router
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
unomi-router-karaf-feature
Apache Unomi :: Extensions :: Router :: Apache Karaf Feature
Apache Karaf feature for the Apache Unomi Context Server extension
kar
+
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
- org.apache.servicemix.bundles
- org.apache.servicemix.bundles.jsch
- 0.1.54_1
+ org.apache.unomi
+ unomi-persistence-spi
+ provided
+
+
+ org.apache.unomi
+ unomi-router-api
+
+
+ org.apache.unomi
+ unomi-router-core
+
+
+ org.apache.unomi
+ unomi-router-service
+
+
+ org.apache.unomi
+ unomi-router-rest
+
+
+
+ org.apache.cxf
+ cxf-rt-rs-security-cors
commons-net
commons-net
- ${commons-net.version}
+
+
+ org.apache.httpcomponents
+ httpclient-osgi
+ bundle
+
+
+ org.apache.httpcomponents
+ httpcore-osgi
+
+
+
+ org.apache.servicemix.bundles
+ org.apache.servicemix.bundles.jsch
+ 0.1.54_1
org.apache.kafka
@@ -88,49 +135,6 @@
camel-kafka
${camel.version}
-
-
- org.apache.cxf
- cxf-rt-rs-security-cors
- ${cxf.version}
-
-
-
-
- org.apache.unomi
- unomi-persistence-spi
- ${project.version}
- provided
-
-
- org.apache.unomi
- unomi-router-api
- ${project.version}
-
-
- org.apache.unomi
- unomi-router-core
- ${project.version}
-
-
- org.apache.unomi
- unomi-router-service
- ${project.version}
-
-
- org.apache.unomi
- unomi-router-rest
- ${project.version}
-
-
- org.apache.httpcomponents
- httpclient-osgi
- bundle
-
-
- org.apache.httpcomponents
- httpcore-osgi
-
@@ -154,6 +158,44 @@
90
+
+
+ generate-features
+ generate-resources
+
+ features-generate-descriptor
+
+
+ true
+
+
+
+ verify-feature
+ process-resources
+
+ verify
+
+
+
+ mvn:org.apache.karaf.features/standard/${karaf.version}/xml/features
+ mvn:org.apache.karaf.features/enterprise/${karaf.version}/xml/features
+ mvn:org.apache.unomi/unomi-kar/${project.version}/xml/features
+ file:${project.build.directory}/feature/feature.xml
+
+ org.apache.karaf:apache-karaf:zip:${karaf.version}
+ 17
+
+ framework
+
+
+ wrap
+ unomi-kar
+ unomi-router-karaf-feature
+
+ true
+
+
+
diff --git a/extensions/router/router-karaf-feature/src/main/feature/feature.xml b/extensions/router/router-karaf-feature/src/main/feature/feature.xml
index 6d707cf67..17e9cab7e 100644
--- a/extensions/router/router-karaf-feature/src/main/feature/feature.xml
+++ b/extensions/router/router-karaf-feature/src/main/feature/feature.xml
@@ -15,7 +15,7 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
-
+
Apache Karaf feature for the Apache Unomi Context Server extension
wrap
diff --git a/extensions/router/router-rest/pom.xml b/extensions/router/router-rest/pom.xml
index 341594b03..385b68586 100644
--- a/extensions/router/router-rest/pom.xml
+++ b/extensions/router/router-rest/pom.xml
@@ -16,43 +16,68 @@
~ limitations under the License.
-->
+ 4.0.0
unomi-router
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
unomi-router-rest
Apache Unomi :: Extensions :: Router :: REST API
Router REST API
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
- unomi-router-api
- ${project.version}
+ unomi-api
provided
org.apache.unomi
- unomi-api
- ${project.version}
+ unomi-persistence-spi
provided
org.apache.unomi
- unomi-persistence-spi
- ${project.version}
+ unomi-router-api
+ provided
+
+
+
+ org.osgi
+ org.osgi.service.component.annotations
+ provided
+
+
+
+ javax.servlet
+ javax.servlet-api
+ provided
+
+
+ javax.validation
+ validation-api
provided
javax.ws.rs
javax.ws.rs-api
- 2.0.1
provided
+
org.apache.cxf
cxf-rt-rs-security-cors
@@ -72,24 +97,29 @@
com.fasterxml.jackson.core
jackson-databind
- ${version.jackson.databind}
provided
- javax.servlet
- javax.servlet-api
- provided
-
-
- org.osgi
- osgi.cmpn
- provided
-
-
- javax.validation
- validation-api
+ org.slf4j
+ slf4j-api
provided
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+ true
+
+
+ <_dsannotations>*
+
+
+
+
+
+
diff --git a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
index b9462c0b6..317345209 100644
--- a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
+++ b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
@@ -26,8 +26,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@@ -43,7 +41,6 @@
/**
* A JAX-RS endpoint to manage {@link ExportConfiguration}s.
*/
-@WebService
@CrossOriginResourceSharing(
allowAllOrigins = true,
allowCredentials = true
@@ -64,18 +61,15 @@ public ExportConfigurationServiceEndPoint() throws KeyStoreException, NoSuchAlgo
LOGGER.info("Initializing export configuration service endpoint...");
}
- @WebMethod(exclude = true)
@Reference(target="(configDiscriminator=EXPORT)")
public void setExportConfigurationService(ImportExportConfigurationService exportConfigurationService) {
configurationService = exportConfigurationService;
}
- @WebMethod(exclude = true)
public void setProfileExportService(ProfileExportService profileExportService) {
this.profileExportService = profileExportService;
}
- @WebMethod(exclude = true)
public void setProfileService(ProfileService profileService) {
this.profileService = profileService;
}
diff --git a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
index 37dd38bb9..fa87f47ad 100644
--- a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
+++ b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
@@ -28,8 +28,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.ws.rs.Consumes;
@@ -49,7 +47,6 @@
/**
* A JAX-RS endpoint to manage {@link ImportConfiguration}s.
*/
-@WebService
@CrossOriginResourceSharing(
allowAllOrigins = true,
allowCredentials = true
@@ -63,7 +60,6 @@ public class ImportConfigurationServiceEndPoint extends AbstractConfigurationSer
@Reference
protected ConfigSharingService configSharingService;
- @WebMethod(exclude = true)
public void setConfigSharingService(ConfigSharingService configSharingService) {
this.configSharingService = configSharingService;
}
@@ -72,7 +68,6 @@ public ImportConfigurationServiceEndPoint() throws KeyStoreException, NoSuchAlgo
LOGGER.info("Initializing import configuration service endpoint...");
}
- @WebMethod(exclude = true)
@Reference(target="(configDiscriminator=IMPORT)")
public void setImportConfigurationService(ImportExportConfigurationService importConfigurationService) {
configurationService = importConfigurationService;
diff --git a/extensions/router/router-service/pom.xml b/extensions/router/router-service/pom.xml
index c24e9e2d6..cd81d40eb 100644
--- a/extensions/router/router-service/pom.xml
+++ b/extensions/router/router-service/pom.xml
@@ -16,56 +16,43 @@
~ limitations under the License.
-->
+ 4.0.0
unomi-router
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
unomi-router-service
Apache Unomi :: Extensions :: Router :: Services
Router Services
bundle
-
-
-
- org.apache.felix
- maven-bundle-plugin
- true
-
-
- *;scope=compile|runtime
-
- sun.misc;resolution:=optional,
- *
-
-
-
-
-
-
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
-
org.apache.unomi
- unomi-router-api
- ${project.version}
+ unomi-persistence-spi
provided
-
org.apache.unomi
- unomi-persistence-spi
- ${project.version}
+ unomi-router-api
provided
@@ -74,23 +61,46 @@
osgi.core
provided
-
org.osgi
- osgi.cmpn
+ org.osgi.service.component.annotations
provided
commons-beanutils
commons-beanutils
+ provided
org.apache.commons
commons-lang3
+ provided
+
+
+ org.slf4j
+ slf4j-api
+ provided
-
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+
+ *;scope=compile|runtime
+
+ sun.misc;resolution:=optional,
+ *
+
+
+
+
+
+
diff --git a/extensions/router/router-service/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/router/router-service/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 8b187cad6..845388496 100644
--- a/extensions/router/router-service/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/router/router-service/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -18,7 +18,7 @@
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
diff --git a/extensions/salesforce-connector/actions/pom.xml b/extensions/salesforce-connector/actions/pom.xml
index e3d7c2b7c..504ae25cb 100644
--- a/extensions/salesforce-connector/actions/pom.xml
+++ b/extensions/salesforce-connector/actions/pom.xml
@@ -17,33 +17,41 @@
-->
+ 4.0.0
org.apache.unomi
unomi-salesforce-connector
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
unomi-salesforce-connector-actions
Apache Unomi :: Extensions :: Salesforce connector :: Rule Actions
Rule Actions for the Apache Unomi Context Server extension that integrates with Salesforce
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
org.apache.unomi
unomi-salesforce-connector-services
- ${project.version}
provided
-
diff --git a/extensions/salesforce-connector/actions/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/salesforce-connector/actions/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 3d0e50e67..63a6d3e8d 100644
--- a/extensions/salesforce-connector/actions/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/salesforce-connector/actions/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -18,7 +18,7 @@
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
diff --git a/extensions/salesforce-connector/karaf-kar/pom.xml b/extensions/salesforce-connector/karaf-kar/pom.xml
index 5bf6caff2..66c84e05b 100644
--- a/extensions/salesforce-connector/karaf-kar/pom.xml
+++ b/extensions/salesforce-connector/karaf-kar/pom.xml
@@ -17,50 +17,56 @@
-->
+ 4.0.0
org.apache.unomi
unomi-salesforce-connector
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
unomi-salesforce-connector-karaf-kar
Apache Unomi :: Extensions :: Salesforce connector :: Apache Karaf Feature and KAR archive
Apache Karaf Feature and KAR archive for the Apache Unomi Context Server extension that integrates with Salesforce
kar
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
-
-
- org.apache.httpcomponents
- httpcore-osgi
-
-
- org.apache.httpcomponents
- httpclient-osgi
-
org.apache.unomi
unomi-salesforce-connector-services
- ${project.version}
org.apache.unomi
unomi-salesforce-connector-rest
- ${project.version}
org.apache.unomi
unomi-salesforce-connector-actions
- ${project.version}
+
+ org.apache.httpcomponents
+ httpcore-osgi
+
+
+ org.apache.httpcomponents
+ httpclient-osgi
+
@@ -84,6 +90,43 @@
85
+
+
+ generate-features
+ generate-resources
+
+ features-generate-descriptor
+
+
+ true
+
+
+
+ verify-feature
+ process-resources
+
+ verify
+
+
+
+ mvn:org.apache.karaf.features/standard/${karaf.version}/xml/features
+ mvn:org.apache.karaf.features/enterprise/${karaf.version}/xml/features
+ mvn:org.apache.unomi/unomi-kar/${project.version}/xml/features
+ file:${project.build.directory}/feature/feature.xml
+
+ org.apache.karaf:apache-karaf:zip:${karaf.version}
+ 17
+
+ framework
+
+
+ unomi-kar
+ unomi-salesforce-connector-karaf-kar
+
+ true
+
+
+
diff --git a/extensions/salesforce-connector/karaf-kar/src/main/feature/feature.xml b/extensions/salesforce-connector/karaf-kar/src/main/feature/feature.xml
index aa544d8a2..75e3c7114 100644
--- a/extensions/salesforce-connector/karaf-kar/src/main/feature/feature.xml
+++ b/extensions/salesforce-connector/karaf-kar/src/main/feature/feature.xml
@@ -15,7 +15,7 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
-
+
Apache Karaf feature for the Apache Unomi Context Server extension that integrates with Salesforce
unomi-kar
diff --git a/extensions/salesforce-connector/pom.xml b/extensions/salesforce-connector/pom.xml
index b759f7d5b..106c19731 100644
--- a/extensions/salesforce-connector/pom.xml
+++ b/extensions/salesforce-connector/pom.xml
@@ -21,9 +21,8 @@
org.apache.unomi
unomi-extensions
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-salesforce-connector
Apache Unomi :: Extensions :: Salesforce connector
Apache Unomi Context Server extension that integrates with Salesforce
diff --git a/extensions/salesforce-connector/rest/pom.xml b/extensions/salesforce-connector/rest/pom.xml
index d40ff5314..190f112c3 100644
--- a/extensions/salesforce-connector/rest/pom.xml
+++ b/extensions/salesforce-connector/rest/pom.xml
@@ -17,51 +17,74 @@
-->
+ 4.0.0
org.apache.unomi
unomi-salesforce-connector
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
unomi-salesforce-connector-rest
Apache Unomi :: Extensions :: Salesforce connector :: REST API
REST API for the Apache Unomi Context Server extension that integrates with Salesforce
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
-
+
+ org.apache.unomi
+ unomi-persistence-spi
+ provided
+
org.apache.unomi
unomi-salesforce-connector-services
- ${project.version}
provided
- javax.servlet
- javax.servlet-api
+ org.osgi
+ osgi.core
provided
-
- org.apache.cxf
- cxf-rt-frontend-jaxws
+ org.osgi
+ org.osgi.service.component.annotations
+ provided
+
+
+
+ javax.servlet
+ javax.servlet-api
+ provided
+
+
+
+ javax.ws.rs
+ javax.ws.rs-api
provided
+
org.apache.cxf
cxf-rt-frontend-jaxrs
@@ -75,26 +98,11 @@
org.apache.cxf
cxf-rt-rs-security-cors
+ provided
com.fasterxml.jackson.jaxrs
jackson-jaxrs-json-provider
-
-
- org.apache.unomi
- unomi-persistence-spi
- ${project.version}
- provided
-
-
-
- org.osgi
- osgi.core
- provided
-
-
- org.osgi
- osgi.cmpn
provided
@@ -131,22 +139,6 @@
-
- com.sebastian-daschner
- jaxrs-analyzer-maven-plugin
- 0.17
-
-
-
- analyze-jaxrs
-
-
- swagger
- unomi.apache.org
-
-
-
-
diff --git a/extensions/salesforce-connector/rest/src/main/java/org/apache/unomi/sfdc/rest/SFDCEndPoint.java b/extensions/salesforce-connector/rest/src/main/java/org/apache/unomi/sfdc/rest/SFDCEndPoint.java
index 85158e255..d882a022c 100644
--- a/extensions/salesforce-connector/rest/src/main/java/org/apache/unomi/sfdc/rest/SFDCEndPoint.java
+++ b/extensions/salesforce-connector/rest/src/main/java/org/apache/unomi/sfdc/rest/SFDCEndPoint.java
@@ -25,8 +25,6 @@
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@@ -36,7 +34,6 @@
import java.util.HashMap;
import java.util.Map;
-@WebService
@Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8")
@CrossOriginResourceSharing(
allowAllOrigins = true,
@@ -59,7 +56,6 @@ public void activate(ComponentContext componentContext) {
this.bundleContext = componentContext.getBundleContext();
}
- @WebMethod(exclude = true)
public void setSFDCService(SFDCService sfdcService) {
this.sfdcService = sfdcService;
}
diff --git a/extensions/salesforce-connector/services/pom.xml b/extensions/salesforce-connector/services/pom.xml
index 5ab56663c..feb1fd593 100644
--- a/extensions/salesforce-connector/services/pom.xml
+++ b/extensions/salesforce-connector/services/pom.xml
@@ -17,36 +17,50 @@
-->
+ 4.0.0
org.apache.unomi
unomi-salesforce-connector
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
- 4.0.0
-
unomi-salesforce-connector-services
Apache Unomi :: Extensions :: Salesforce connector :: Service
Service implementation for the Apache Unomi Context Server extension that integrates with Salesforce
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
org.apache.unomi
unomi-persistence-spi
- ${project.version}
provided
+
+
+ org.apache.commons
+ commons-lang3
+ provided
+
+
org.apache.cxf
cxf-rt-rs-security-cors
- ${cxf.version}
provided
@@ -57,37 +71,38 @@
org.eclipse.jetty
jetty-client
- 9.4.48.v20220622
org.eclipse.jetty
jetty-http
- 9.4.48.v20220622
org.eclipse.jetty
jetty-io
- 9.4.48.v20220622
org.eclipse.jetty
jetty-util
- 9.4.48.v20220622
org.cometd.java
bayeux-api
- 4.0.9
+
+
+ org.cometd.java
+ cometd-java-common
org.cometd.java
cometd-java-client-common
- 5.0.13
+
+
+ org.cometd.java
+ cometd-java-client-http-common
org.cometd.java
cometd-java-client-http-jetty
- 5.0.13
com.fasterxml.jackson.core
@@ -99,24 +114,26 @@
jackson-databind
provided
+
+ org.slf4j
+ slf4j-api
+ provided
+
junit
junit
- 4.13.1
test
org.slf4j
slf4j-simple
- 1.7.36
test
org.apache.felix
org.apache.felix.utils
- 1.10.4
test
diff --git a/extensions/salesforce-connector/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/salesforce-connector/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 011f851b2..b8fe69bda 100644
--- a/extensions/salesforce-connector/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/salesforce-connector/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -17,9 +17,10 @@
-->
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0 https://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.3.0.xsd">
diff --git a/extensions/weather-update/core/pom.xml b/extensions/weather-update/core/pom.xml
index df00b96b0..7383fcfec 100755
--- a/extensions/weather-update/core/pom.xml
+++ b/extensions/weather-update/core/pom.xml
@@ -21,21 +21,32 @@
org.apache.unomi
unomi-weather-update
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-weather-update-core
Apache Unomi :: Extension :: Weather Update :: Core
This is a simple Apache Unomi plugin.
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
+
org.apache.httpcomponents
httpclient-osgi
@@ -51,6 +62,11 @@
jackson-databind
provided
+
+ org.slf4j
+ slf4j-api
+ provided
+
diff --git a/extensions/weather-update/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/weather-update/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index e21d74466..9afeca7ef 100755
--- a/extensions/weather-update/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/weather-update/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -16,9 +16,10 @@
~ limitations under the License.
-->
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0 https://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.3.0.xsd">
+ 4.0.0
org.apache.unomi
unomi-weather-update
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
unomi-weather-update-karaf-kar
Apache Unomi :: Extension :: Weather Update :: Apache Karaf Feature and KAR archive
This is a simple Apache Unomi plugin.
kar
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
+
+ org.apache.unomi
+ unomi-weather-update-core
+
+
org.apache.httpcomponents
httpcore-osgi
@@ -44,12 +59,6 @@
org.apache.httpcomponents
httpclient-osgi
-
-
- org.apache.unomi
- unomi-weather-update-core
- ${project.version}
-
@@ -73,6 +82,43 @@
85
+
+
+ generate-features
+ generate-resources
+
+ features-generate-descriptor
+
+
+ true
+
+
+
+ verify-feature
+ process-resources
+
+ verify
+
+
+
+ mvn:org.apache.karaf.features/standard/${karaf.version}/xml/features
+ mvn:org.apache.karaf.features/enterprise/${karaf.version}/xml/features
+ mvn:org.apache.unomi/unomi-kar/${project.version}/xml/features
+ file:${project.build.directory}/feature/feature.xml
+
+ org.apache.karaf:apache-karaf:zip:${karaf.version}
+ 17
+
+ framework
+
+
+ unomi-kar
+ unomi-weather-update-karaf-kar
+
+ true
+
+
+
diff --git a/extensions/weather-update/karaf-kar/src/main/feature/feature.xml b/extensions/weather-update/karaf-kar/src/main/feature/feature.xml
index f1db52bb4..c06b467cb 100644
--- a/extensions/weather-update/karaf-kar/src/main/feature/feature.xml
+++ b/extensions/weather-update/karaf-kar/src/main/feature/feature.xml
@@ -15,11 +15,9 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
-
-
- Apache Karaf feature for the Apache Unomi Context Server extension that integrates Weather
- update
+
+
+ Apache Karaf feature for the Apache Unomi Context Server extension that integrates Weather update
unomi-kar
mvn:org.apache.unomi/unomi-weather-update-core/${project.version}/cfg/weatherupdatecfg
mvn:org.apache.httpcomponents/httpcore-osgi/${httpcore-osgi.version}
diff --git a/extensions/weather-update/pom.xml b/extensions/weather-update/pom.xml
index 6324cd0ec..cfb16d6fc 100644
--- a/extensions/weather-update/pom.xml
+++ b/extensions/weather-update/pom.xml
@@ -21,7 +21,7 @@
org.apache.unomi
unomi-extensions
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
unomi-weather-update
diff --git a/extensions/web-tracker/pom.xml b/extensions/web-tracker/pom.xml
index 3f962a423..9fc52a55a 100644
--- a/extensions/web-tracker/pom.xml
+++ b/extensions/web-tracker/pom.xml
@@ -21,9 +21,8 @@
org.apache.unomi
unomi-extensions
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-web-tracker
Apache Unomi :: Extension :: Web Tracker
Apache Unomi Context Server to provide the web tracker
diff --git a/extensions/web-tracker/wab/pom.xml b/extensions/web-tracker/wab/pom.xml
index b7b2633d0..4f1924202 100644
--- a/extensions/web-tracker/wab/pom.xml
+++ b/extensions/web-tracker/wab/pom.xml
@@ -21,7 +21,7 @@
org.apache.unomi
unomi-web-tracker
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
unomi-web-tracker-wab
@@ -29,6 +29,18 @@
This is a simple Apache Unomi plugin.
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
diff --git a/graphql/cxs-impl/pom.xml b/graphql/cxs-impl/pom.xml
index 03efbc46f..e91155e0d 100644
--- a/graphql/cxs-impl/pom.xml
+++ b/graphql/cxs-impl/pom.xml
@@ -16,22 +16,75 @@
~ limitations under the License.
-->
+ 4.0.0
org.apache.unomi
unomi-graphql
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
cdp-graphql-api-impl
Apache Unomi :: GraphQL API :: CDP Implementation
Apache Unomi Context GraphQL API CDP Implementation
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
- org.slf4j
- slf4j-api
+ org.apache.unomi
+ unomi-api
+ provided
+
+
+ org.apache.unomi
+ cxs-lists-extension-services
+ provided
+
+
+ org.apache.unomi
+ unomi-persistence-spi
+ provided
+
+
+ org.apache.unomi
+ unomi-json-schema-services
+ provided
+
+
+
+ org.osgi
+ osgi.enterprise
+ provided
+
+
+ org.osgi
+ osgi.core
+ provided
+
+
+ org.osgi
+ org.osgi.service.http
+ provided
+
+
+ org.osgi
+ org.osgi.util.tracker
+ provided
+
+
+
+ org.apache.commons
+ commons-lang3
provided
@@ -39,108 +92,75 @@
javax.servlet-api
provided
+
+ org.slf4j
+ slf4j-api
+ provided
+
com.fasterxml.jackson.core
jackson-core
- ${version.jackson.core}
provided
com.fasterxml.jackson.core
jackson-annotations
- ${version.jackson.core}
provided
com.fasterxml.jackson.core
jackson-databind
- ${version.jackson.databind}
provided
com.fasterxml.jackson.datatype
jackson-datatype-jdk8
- ${version.jackson.core}
provided
com.fasterxml.jackson.module
jackson-module-jaxb-annotations
- ${version.jackson.jaxb}
provided
com.graphql-java
graphql-java
- ${graphql.java.version}
provided
io.github.graphql-java
graphql-java-annotations
- ${graphql.java.annotations.version}
provided
com.graphql-java
graphql-java-extended-scalars
- ${graphql.java.extended.scalars.version}
provided
io.reactivex.rxjava2
rxjava
- ${reactivex.version}
provided
org.eclipse.jetty.websocket
websocket-server
- ${jetty.websocket.version}
- provided
-
-
- org.osgi
- osgi.enterprise
- 6.0.0
- provided
-
-
- org.osgi
- osgi.core
- 6.0.0
- provided
-
-
- org.apache.felix
- org.apache.felix.scr.ds-annotations
- 1.2.4
- provided
-
-
- org.apache.unomi
- unomi-api
- ${project.version}
- provided
-
-
- org.apache.unomi
- cxs-lists-extension-services
- ${project.version}
- provided
-
-
- org.apache.unomi
- unomi-persistence-spi
- ${project.version}
- provided
-
-
- org.apache.unomi
- unomi-json-schema-services
- ${project.version}
provided
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+ org.apache.unomi.graphql.activator.GraphQLServletActivator
+
+
+
+
+
+
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/actions/CDPConsentUpdateAction.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/actions/CDPConsentUpdateAction.java
index 1eba385fa..8c11f967e 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/actions/CDPConsentUpdateAction.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/actions/CDPConsentUpdateAction.java
@@ -24,15 +24,19 @@
import org.apache.unomi.api.services.EventService;
import org.apache.unomi.graphql.utils.DateUtils;
import org.apache.unomi.graphql.utils.EventBuilder;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import java.time.OffsetDateTime;
import java.util.HashMap;
import java.util.Map;
+@Component(service = ActionExecutor.class, immediate = true, property = {"actionExecutorId=updateConsent"})
public class CDPConsentUpdateAction implements ActionExecutor {
private EventService eventService;
+ @Reference
public void setEventService(EventService eventService) {
this.eventService = eventService;
}
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/actions/CDPSessionAction.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/actions/CDPSessionAction.java
index cae969c16..6010783d2 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/actions/CDPSessionAction.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/actions/CDPSessionAction.java
@@ -25,21 +25,25 @@
import org.apache.unomi.api.services.EventService;
import org.apache.unomi.api.services.ProfileService;
import org.apache.unomi.graphql.types.output.CDPSessionState;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import java.util.Date;
import java.util.Objects;
import java.util.Optional;
+@Component(service = ActionExecutor.class, immediate = true, property = {"actionExecutorId=cdp_sessionEvent"})
public class CDPSessionAction implements ActionExecutor {
private EventService eventService;
-
private ProfileService profileService;
+ @Reference
public void setEventService(EventService eventService) {
this.eventService = eventService;
}
+ @Reference
public void setProfileService(ProfileService profileService) {
this.profileService = profileService;
}
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/actions/CDPUpdateListsAction.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/actions/CDPUpdateListsAction.java
index a409b7105..c5e16d4c2 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/actions/CDPUpdateListsAction.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/actions/CDPUpdateListsAction.java
@@ -22,6 +22,8 @@
import org.apache.unomi.api.actions.ActionExecutor;
import org.apache.unomi.api.services.EventService;
import org.apache.unomi.graphql.utils.EventBuilder;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import java.util.ArrayList;
import java.util.HashMap;
@@ -31,10 +33,12 @@
/**
* A rule action that can add a profile to a list
*/
+@Component(service = ActionExecutor.class, immediate = true, property = {"actionExecutorId=updateLists"})
public class CDPUpdateListsAction implements ActionExecutor {
private EventService eventService;
+ @Reference
public void setEventService(EventService eventService) {
this.eventService = eventService;
}
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/activator/GraphQLServletActivator.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/activator/GraphQLServletActivator.java
new file mode 100644
index 000000000..848235fc0
--- /dev/null
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/activator/GraphQLServletActivator.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.unomi.graphql.activator;
+
+import org.apache.unomi.graphql.servlet.GraphQLServlet;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.http.HttpService;
+import org.osgi.util.tracker.ServiceTracker;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+/**
+ * @author Jerome Blanchard
+ */
+public class GraphQLServletActivator implements BundleActivator {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(GraphQLServletActivator.class);
+
+ private ServiceTracker httpServiceTracker;
+ private ServiceTracker servletTracker;
+
+ @Override
+ public void start(BundleContext context) {
+ httpServiceTracker = new ServiceTracker<>(context, HttpService.class, null);
+ httpServiceTracker.open();
+
+ servletTracker = new ServiceTracker(context, GraphQLServlet.class, null) {
+ @Override
+ public GraphQLServlet addingService(ServiceReference reference) {
+ LOGGER.info("Registering GraphQL servlet");
+ GraphQLServlet servlet = context.getService(reference);
+ try {
+ HttpService httpService = httpServiceTracker.getService();
+ if (httpService != null && servlet != null) {
+ Dictionary initParams = new Hashtable<>();
+ httpService.registerServlet("/graphql", servlet, initParams, null);
+ }
+ } catch (Exception e) {
+ LOGGER.error("Failed to register GraphQL servlet", e);
+ }
+ return servlet;
+ }
+
+ @Override
+ public void removedService(ServiceReference reference, GraphQLServlet service) {
+ LOGGER.info("Unregistering GraphQL servlet");
+ try {
+ HttpService httpService = httpServiceTracker.getService();
+ if (httpService != null) {
+ httpService.unregister("/graphql");
+ }
+ } catch (Exception e) {
+ LOGGER.error("Failed to register GraphQL servlet", e);
+ }
+ context.ungetService(reference);
+ }
+ };
+ servletTracker.open();
+ }
+
+ @Override
+ public void stop(BundleContext context) {
+ if (servletTracker != null) {
+ servletTracker.close();
+ }
+
+ if (httpServiceTracker != null) {
+ httpServiceTracker.close();
+ }
+ }
+}
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/parsers/SegmentProfileEventsConditionParser.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/parsers/SegmentProfileEventsConditionParser.java
index 090f15280..ad054711e 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/parsers/SegmentProfileEventsConditionParser.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/parsers/SegmentProfileEventsConditionParser.java
@@ -164,7 +164,6 @@ private void processDynamicEventField(final Condition condition, final Map createProfileEventPropertyField(final Condition condition) {
final Map tuple = new HashMap<>();
@@ -185,7 +184,7 @@ private Map createProfileEventPropertyField(final Condition cond
tuple.put("fieldName", "cdp_timestamp_gte");
}
- final OffsetDateTime fieldValue = DateUtils.offsetDateTimeFromMap((Map) condition.getParameter("propertyValueDate"));
+ final OffsetDateTime fieldValue = OffsetDateTime.parse((String) condition.getParameter("propertyValueDate")); //With jackson JSR, OffsetDateTime are well serialized.
tuple.put("fieldValue", fieldValue != null ? fieldValue.toString() : null);
} else {
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/parsers/SegmentProfilePropertiesConditionParser.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/parsers/SegmentProfilePropertiesConditionParser.java
index f649c80e9..f8a8f0cce 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/parsers/SegmentProfilePropertiesConditionParser.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/parsers/SegmentProfilePropertiesConditionParser.java
@@ -147,7 +147,7 @@ private Map createProfilePropertiesField(final String propertyNa
Object value;
if (condition.getParameter("propertyValueDate") != null) {
- value = DateUtils.offsetDateTimeFromMap((Map) condition.getParameter("propertyValueDate"));
+ value = condition.getParameter("propertyValueDate");
} else if (condition.getParameter("propertyValueInteger") != null) {
value = condition.getParameter("propertyValueInteger");
} else {
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/servlet/GraphQLServlet.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/servlet/GraphQLServlet.java
index 93254f7c8..c9bd2da58 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/servlet/GraphQLServlet.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/servlet/GraphQLServlet.java
@@ -30,6 +30,8 @@
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
@@ -41,18 +43,15 @@
import java.util.HashMap;
import java.util.Map;
-@Component(
- service = {javax.servlet.http.HttpServlet.class, javax.servlet.Servlet.class},
- property = {"alias=/graphql"}
-)
+@Component(service = GraphQLServlet.class)
public class GraphQLServlet extends WebSocketServlet {
+ private static final Logger LOGGER = LoggerFactory.getLogger(GraphQLServlet.class);
+
public static final String SCHEMA_URL = "/schema.json";
private GraphQLSchemaUpdater graphQLSchemaUpdater;
-
private ServiceManager serviceManager;
-
private GraphQLServletSecurityValidator validator;
@Reference
@@ -65,8 +64,13 @@ public void setGraphQLSchemaUpdater(GraphQLSchemaUpdater graphQLSchemaUpdater) {
this.graphQLSchemaUpdater = graphQLSchemaUpdater;
}
+ public GraphQLServlet() {
+ LOGGER.info("GraphQLServlet created");
+ }
+
@Override
public void init(ServletConfig config) throws ServletException {
+ LOGGER.debug("GraphQLServlet initialized");
super.init(config);
this.validator = new GraphQLServletSecurityValidator();
}
@@ -75,6 +79,7 @@ public void init(ServletConfig config) throws ServletException {
@Override
public void configure(WebSocketServletFactory factory) {
+ LOGGER.debug("GraphQLServlet configured");
this.factory = factory;
factory.setCreator(new SubscriptionWebSocketFactory(graphQLSchemaUpdater.getGraphQL(), serviceManager));
factory.getPolicy().setMaxTextMessageBufferSize(1024 * 1024);
@@ -82,6 +87,7 @@ public void configure(WebSocketServletFactory factory) {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ LOGGER.debug("GraphQLServlet service called with request: {}", request.getRequestURI());
if (factory.isUpgradeRequest(request, response)) {
try {
final ServletUpgradeRequest upReq = new ServletUpgradeRequest(request);
@@ -100,6 +106,7 @@ protected void service(HttpServletRequest request, HttpServletResponse response)
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ LOGGER.debug("GraphQLServlet doGet called with request: {}", req.getRequestURI());
String query = req.getParameter("query");
if (SCHEMA_URL.equals(req.getPathInfo())) {
query = IntrospectionQuery.INTROSPECTION_QUERY;
@@ -123,11 +130,10 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IO
@Override
@SuppressWarnings("unchecked")
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
- TypeReference
diff --git a/graphql/karaf-feature/src/main/feature/feature.xml b/graphql/karaf-feature/src/main/feature/feature.xml
index 19203e810..fecbc0508 100644
--- a/graphql/karaf-feature/src/main/feature/feature.xml
+++ b/graphql/karaf-feature/src/main/feature/feature.xml
@@ -16,39 +16,37 @@
~ limitations under the License.
-->
-
+
unomi-kar
- wrap:mvn:com.google.code.findbugs/jsr305/1.3.9
- wrap:mvn:org.checkerframework/checker-compat-qual/2.0.0
- wrap:mvn:com.google.errorprone/error_prone_annotations/2.1.3
- wrap:mvn:com.google.j2objc/j2objc-annotations/1.1
- wrap:mvn:org.codehaus.mojo/animal-sniffer-annotations/1.14
- mvn:commons-fileupload/commons-fileupload/1.3.1
- mvn:org.antlr/antlr4-runtime/${antlr.runtime.version}
- wrap:mvn:com.graphql-java/java-dataloader/${java.dataloader.version}
- mvn:org.reactivestreams/reactive-streams/1.0.2
+ wrap:mvn:org.checkerframework/checker-compat-qual/${checker-compat-qual.version}
+ wrap:mvn:com.google.errorprone/error_prone_annotations/${error_prone_annotations.version}
+ wrap:mvn:com.google.j2objc/j2objc-annotations/${j2objc-annotations.version}
+ wrap:mvn:org.codehaus.mojo/animal-sniffer-annotations/${animal-sniffer-annotations.version}
+ mvn:commons-fileupload/commons-fileupload/${commons-fileupload.version}
+ mvn:org.antlr/antlr4-runtime/${antlr4.version}
+ wrap:mvn:com.graphql-java/java-dataloader/${java-dataloader.version}
+ mvn:org.reactivestreams/reactive-streams/${reactive-stream.version}
mvn:com.graphql-java/graphql-java/${graphql.java.version}
mvn:io.github.graphql-java/graphql-java-annotations/${graphql.java.annotations.version}
- mvn:javax.validation/validation-api/${bean.validation.version}
+ mvn:javax.validation/validation-api/${javax-validation.version}
wrap:mvn:com.graphql-java/graphql-java-extended-scalars/${graphql.java.extended.scalars.version}
- wrap:mvn:com.squareup.okhttp3/okhttp/3.2.0
- wrap:mvn:com.squareup.okio/okio/1.6.0
- mvn:io.reactivex.rxjava2/rxjava/2.2.19
- mvn:org.eclipse.jetty.websocket/websocket-server/${jetty.websocket.version}
- mvn:org.eclipse.jetty.websocket/websocket-common/${jetty.websocket.version}
- mvn:org.eclipse.jetty.websocket/websocket-api/${jetty.websocket.version}
- mvn:org.eclipse.jetty/jetty-util/${jetty.websocket.version}
- mvn:org.eclipse.jetty/jetty-io/${jetty.websocket.version}
- mvn:org.eclipse.jetty.websocket/websocket-client/${jetty.websocket.version}
- mvn:org.eclipse.jetty/jetty-client/${jetty.websocket.version}
- mvn:org.eclipse.jetty/jetty-xml/${jetty.websocket.version}
- mvn:org.eclipse.jetty.websocket/websocket-servlet/${jetty.websocket.version}
- mvn:javax.servlet/javax.servlet-api/3.0.1
- mvn:org.eclipse.jetty/jetty-servlet/${jetty.websocket.version}
- mvn:org.eclipse.jetty/jetty-security/${jetty.websocket.version}
- mvn:org.eclipse.jetty/jetty-server/${jetty.websocket.version}
- mvn:org.eclipse.jetty/jetty-http/${jetty.websocket.version}
+ wrap:mvn:com.squareup.okhttp3/okhttp/${okhttp.version}
+ wrap:mvn:com.squareup.okio/okio/${okio.version}
+ mvn:io.reactivex.rxjava2/rxjava/${reactivex.version}
+ mvn:org.eclipse.jetty.websocket/websocket-server/${jetty.version}
+ mvn:org.eclipse.jetty.websocket/websocket-common/${jetty.version}
+ mvn:org.eclipse.jetty.websocket/websocket-api/${jetty.version}
+ mvn:org.eclipse.jetty.websocket/websocket-client/${jetty.version}
+ mvn:org.eclipse.jetty.websocket/websocket-servlet/${jetty.version}
+ mvn:org.eclipse.jetty/jetty-util/${jetty.version}
+ mvn:org.eclipse.jetty/jetty-io/${jetty.version}
+ mvn:org.eclipse.jetty/jetty-client/${jetty.version}
+ mvn:org.eclipse.jetty/jetty-xml/${jetty.version}
+ mvn:org.eclipse.jetty/jetty-servlet/${jetty.version}
+ mvn:org.eclipse.jetty/jetty-security/${jetty.version}
+ mvn:org.eclipse.jetty/jetty-server/${jetty.version}
+ mvn:org.eclipse.jetty/jetty-http/${jetty.version}
+ mvn:${servlet.spec.groupId}/${servlet.spec.artifactId}/${servlet.spec.version}
mvn:org.apache.unomi/cdp-graphql-api-impl/${project.version}
mvn:org.apache.unomi/unomi-graphql-ui/${project.version}
diff --git a/graphql/pom.xml b/graphql/pom.xml
index f0d3d8f75..b7372703f 100644
--- a/graphql/pom.xml
+++ b/graphql/pom.xml
@@ -18,28 +18,16 @@
4.0.0
-
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-graphql
Apache Unomi :: GraphQL API
Apache Unomi Context GraphQL API Root Project
pom
-
- 14.0
- 8.0
- 1.0
- 2.2.19
- 4.7.1
- 2.2.0
- 9.4.38.v20210224
-
-
cxs-impl
graphql-ui
diff --git a/itests/pom.xml b/itests/pom.xml
index f61cbcd15..6f6e71089 100644
--- a/itests/pom.xml
+++ b/itests/pom.xml
@@ -21,18 +21,19 @@
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
unomi-itests
Apache Unomi :: Integration Tests
Apache Unomi Context Server integration tests
+ jar
- org.apache.karaf
- karaf-bom
- ${karaf.version}
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
pom
import
@@ -111,30 +112,26 @@
org.eclipse.jetty.websocket
websocket-client
- 9.4.28.v20200408
+ ${jetty.version}
org.apache.unomi
unomi-lifecycle-watcher
- ${project.version}
test
org.apache.unomi
unomi-persistence-spi
- ${project.version}
test
org.apache.unomi
shell-commands
- ${project.version}
test
org.apache.unomi
unomi-groovy-actions-services
- ${project.version}
test
@@ -146,7 +143,6 @@
-
run-tests
@@ -167,7 +163,7 @@
- https://search.maven.org/remotecontent?filepath=org/jacoco/jacoco/0.8.8/jacoco-0.8.8.zip
+ https://search.maven.org/remotecontent?filepath=org/jacoco/jacoco/0.8.13/jacoco-0.8.13.zip
jacoco.zip
true
@@ -177,13 +173,13 @@
-
org.apache.servicemix.tooling
depends-maven-plugin
generate-depends-file
+ generate-resources
generate-depends-file
@@ -218,7 +214,7 @@
9400
${elasticsearch.test.version}
true
- 120
+ 120
-Xms4g -Xmx4g
@@ -257,7 +253,7 @@
org.apache.maven.plugins
maven-failsafe-plugin
- 3.0.0-M4
+ ${maven-failsafe.plugin.version}
**/*AllITs.java
@@ -323,7 +319,7 @@
org.jacoco
jacoco-maven-plugin
- 0.7.7.201606060606
+ 0.8.13
post-site
diff --git a/itests/src/test/java/org/apache/unomi/itests/AllITs.java b/itests/src/test/java/org/apache/unomi/itests/AllITs.java
index bd9a9a108..c50e88464 100644
--- a/itests/src/test/java/org/apache/unomi/itests/AllITs.java
+++ b/itests/src/test/java/org/apache/unomi/itests/AllITs.java
@@ -52,7 +52,6 @@
ModifyConsentIT.class,
PatchIT.class,
ContextServletIT.class,
- SecurityIT.class,
RuleServiceIT.class,
PrivacyServiceIT.class,
GroovyActionsServiceIT.class,
diff --git a/itests/src/test/java/org/apache/unomi/itests/BaseIT.java b/itests/src/test/java/org/apache/unomi/itests/BaseIT.java
index a98d90d7d..3c657f7c3 100644
--- a/itests/src/test/java/org/apache/unomi/itests/BaseIT.java
+++ b/itests/src/test/java/org/apache/unomi/itests/BaseIT.java
@@ -26,11 +26,7 @@
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.config.RequestConfig;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpDelete;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.client.methods.*;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
@@ -63,6 +59,7 @@
import org.junit.Before;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.ConfigurationManager;
import org.ops4j.pax.exam.CoreOptions;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.PaxExam;
@@ -206,6 +203,11 @@ public void shutdown() {
httpClient = null;
}
+ protected String karafData() {
+ ConfigurationManager cm = new ConfigurationManager();
+ return cm.getProperty("karaf.data");
+ }
+
protected void removeItems(final Class extends Item>... classes) throws InterruptedException {
Condition condition = new Condition(definitionsService.getConditionType("matchAllCondition"));
for (Class extends Item> aClass : classes) {
diff --git a/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java b/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java
index dfaaa6641..9e6a85b3c 100644
--- a/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java
+++ b/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java
@@ -38,21 +38,10 @@
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
import static org.hamcrest.core.IsCollectionContaining.hasItem;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.*;
/**
* Created by Ron Barabash on 5/4/2020.
@@ -481,27 +470,6 @@ public void testCreateEventWithPropertyNameValidation_Failure() throws Exception
DEFAULT_TRYING_TRIES);
}
- @Test
- public void testOGNLVulnerability() throws Exception {
-
- File vulnFile = new File("target/vuln-file.txt");
- if (vulnFile.exists()) {
- vulnFile.delete();
- }
- String vulnFileCanonicalPath = vulnFile.getCanonicalPath();
- vulnFileCanonicalPath = vulnFileCanonicalPath.replace("\\", "\\\\"); // this is required for Windows support
-
- Map parameters = new HashMap<>();
- parameters.put("VULN_FILE_PATH", vulnFileCanonicalPath);
- HttpPost request = new HttpPost(getFullUrl(CONTEXT_URL));
- request.setEntity(
- new StringEntity(getValidatedBundleJSON("security/ognl-payload-1.json", parameters), ContentType.APPLICATION_JSON));
- TestUtils.executeContextJSONRequest(request);
-
- shouldBeTrueUntilEnd("Vulnerability successfully executed ! File created at " + vulnFileCanonicalPath, vulnFile::exists,
- exists -> exists == Boolean.FALSE, DEFAULT_TRYING_TIMEOUT, DEFAULT_TRYING_TRIES);
- }
-
@Test
public void testMVELVulnerability() throws Exception {
diff --git a/itests/src/test/java/org/apache/unomi/itests/SecurityIT.java b/itests/src/test/java/org/apache/unomi/itests/SecurityIT.java
deleted file mode 100644
index 69f64d6d8..000000000
--- a/itests/src/test/java/org/apache/unomi/itests/SecurityIT.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.unomi.itests;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.StringEntity;
-import org.apache.unomi.api.ContextRequest;
-import org.apache.unomi.api.conditions.Condition;
-import org.apache.unomi.api.services.PersonalizationService;
-import org.apache.unomi.persistence.spi.CustomObjectMapper;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.junit.PaxExam;
-import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
-import org.ops4j.pax.exam.spi.reactors.PerSuite;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.Assert.assertFalse;
-
-@RunWith(PaxExam.class)
-@ExamReactorStrategy(PerSuite.class)
-public class SecurityIT extends BaseIT {
-
- private static final String SESSION_ID = "vuln-session-id";
-
- private ObjectMapper objectMapper;
-
- @Before
- public void setUp() {
- objectMapper = CustomObjectMapper.getObjectMapper();
- }
-
- @Test
- public void testOGNLInjection() throws Exception {
- ContextRequest contextRequest = new ContextRequest();
- List personalizations = new ArrayList<>();
- PersonalizationService.PersonalizationRequest personalizationRequest = new PersonalizationService.PersonalizationRequest();
- personalizationRequest.setId("vuln-test");
- personalizationRequest.setStrategy("matching-first");
- Map strategyOptions = new HashMap<>();
- strategyOptions.put("fallback", "var2");
- personalizationRequest.setStrategyOptions(strategyOptions);
- List personalizationContents = new ArrayList<>();
- PersonalizationService.PersonalizedContent var1Content = new PersonalizationService.PersonalizedContent();
- var1Content.setId("var1");
- List filters = new ArrayList<>();
- PersonalizationService.Filter filter = new PersonalizationService.Filter();
- Condition condition = new Condition();
- File vulnFile = new File("target/vuln-file.txt");
- if (vulnFile.exists()) {
- vulnFile.delete();
- }
- condition.setConditionTypeId("profilePropertyCondition");
- condition.setParameter("propertyName", "@java.lang.Runtime@getRuntime().exec('touch " + vulnFile.getCanonicalPath() + "')");
- condition.setParameter("comparisonOperator", "equals");
- condition.setParameter("propertyValue",
- "script::java.io.PrintWriter writer = new java.io.PrintWriter(new java.io.BufferedWriter(new java.io.FileWriter(\""
- + vulnFile.getCanonicalPath() + "\", true)));\nwriter.println(\"test\");\nwriter.close();");
- filter.setCondition(condition);
- filters.add(filter);
- var1Content.setFilters(filters);
- personalizationContents.add(var1Content);
- PersonalizationService.PersonalizedContent var2Content = new PersonalizationService.PersonalizedContent();
- var2Content.setId("var2");
- personalizationContents.add(var2Content);
- personalizationRequest.setContents(personalizationContents);
-
- personalizations.add(personalizationRequest);
- contextRequest.setPersonalizations(personalizations);
-
- contextRequest.setSessionId(SESSION_ID);
- HttpPost request = new HttpPost(getFullUrl("/cxs/context.json"));
- request.setEntity(new StringEntity(objectMapper.writeValueAsString(contextRequest), ContentType.create("application/json")));
-
- TestUtils.RequestResponse response = executeContextJSONRequest(request, SESSION_ID);
- assertFalse("Vulnerability successfully executed ! File created at " + vulnFile.getCanonicalPath(), vulnFile.exists());
- }
-
- private TestUtils.RequestResponse executeContextJSONRequest(HttpPost request, String sessionId) throws IOException {
- return TestUtils.executeContextJSONRequest(request, sessionId);
- }
-
-}
diff --git a/itests/src/test/java/org/apache/unomi/itests/SegmentIT.java b/itests/src/test/java/org/apache/unomi/itests/SegmentIT.java
index 1a13fb602..e6fd54054 100644
--- a/itests/src/test/java/org/apache/unomi/itests/SegmentIT.java
+++ b/itests/src/test/java/org/apache/unomi/itests/SegmentIT.java
@@ -40,9 +40,12 @@
import java.text.SimpleDateFormat;
import java.time.LocalDate;
+import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.util.*;
+import static org.junit.Assert.assertNotNull;
+
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerSuite.class)
public class SegmentIT extends BaseIT {
@@ -65,7 +68,7 @@ public void tearDown() throws InterruptedException {
@Test
public void testSegments() {
- Assert.assertNotNull("Segment service should be available", segmentService);
+ assertNotNull("Segment service should be available", segmentService);
List segmentMetadatas = segmentService.getSegmentMetadatas(0, 50, null).getList();
Assert.assertEquals("Segment metadata list should be empty", 0, segmentMetadatas.size());
LOGGER.info("Retrieved " + segmentMetadatas.size() + " segment metadata entries");
@@ -132,7 +135,25 @@ public void testSegmentWithValidCondition() {
segmentCondition.setParameter("eventCondition", pastEventEventCondition);
segment.setCondition(segmentCondition);
segmentService.setSegmentDefinition(segment);
+ segmentService.removeSegmentDefinition(SEGMENT_ID, false);
+ }
+ @Test
+ public void testSegmentWithPropertyValueDateCondition() {
+ Metadata segmentMetadata = new Metadata(SEGMENT_ID);
+ Segment segment = new Segment(segmentMetadata);
+ Condition segmentCondition = new Condition(definitionsService.getConditionType("pastEventCondition"));
+ segmentCondition.setParameter("minimumEventCount", 2);
+ segmentCondition.setParameter("numberOfDays", 10);
+ Condition pastEventEventCondition = new Condition(definitionsService.getConditionType("eventPropertyCondition"));
+ pastEventEventCondition.setParameter("propertyName", "timeStamp");
+ pastEventEventCondition.setParameter("comparisonOperator", "equals");
+ pastEventEventCondition.setParameter("propertyValueDate", OffsetDateTime.parse("2019-02-26T00:57:37Z"));
+ segmentCondition.setParameter("eventCondition", pastEventEventCondition);
+ segment.setCondition(segmentCondition);
+ segmentService.setSegmentDefinition(segment);
+ Segment loadedSegment = segmentService.getSegmentDefinition(SEGMENT_ID);
+ assertNotNull("Segment should be loaded", loadedSegment);
segmentService.removeSegmentDefinition(SEGMENT_ID, false);
}
@@ -721,4 +742,5 @@ public void testSegmentWithRelativeDateExpressions() throws Exception {
updatedProfile.getScores() == null || !updatedProfile.getScores().containsKey("relative-date-scoring-test")), 1000,
20);
}
+
}
diff --git a/itests/src/test/java/org/apache/unomi/itests/graphql/BaseGraphQLIT.java b/itests/src/test/java/org/apache/unomi/itests/graphql/BaseGraphQLIT.java
index 7e515a6e2..3eb7e6707 100644
--- a/itests/src/test/java/org/apache/unomi/itests/graphql/BaseGraphQLIT.java
+++ b/itests/src/test/java/org/apache/unomi/itests/graphql/BaseGraphQLIT.java
@@ -30,6 +30,7 @@
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerSuite;
+import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.Base64;
import java.util.List;
@@ -91,9 +92,14 @@ protected static class ResponseContext {
private ResponseContext(HttpEntity httpEntity) {
try {
final String jsonFromResponse = EntityUtils.toString(httpEntity);
- responseAsMap = GraphQLObjectMapper.getInstance().readValue(jsonFromResponse, Map.class);
+ try {
+ responseAsMap = GraphQLObjectMapper.getInstance().readValue(jsonFromResponse, Map.class);
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to parse response as JSON: " + jsonFromResponse, e);
+ }
} catch (Exception e) {
- throw new RuntimeException(e);
+ throw new RuntimeException("Unable to read response content, length:" + httpEntity.getContentLength()
+ + ", type:" + httpEntity.getContentType().getValue(), e);
}
}
diff --git a/itests/src/test/java/org/apache/unomi/itests/migration/MigrationIT.java b/itests/src/test/java/org/apache/unomi/itests/migration/MigrationIT.java
index a7fa068d1..b81df24f9 100644
--- a/itests/src/test/java/org/apache/unomi/itests/migration/MigrationIT.java
+++ b/itests/src/test/java/org/apache/unomi/itests/migration/MigrationIT.java
@@ -19,6 +19,8 @@
import org.apache.unomi.itests.BaseIT;
import org.junit.Assert;
import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
@@ -28,29 +30,36 @@
import static org.junit.Assert.fail;
public class MigrationIT extends BaseIT {
- protected static final Path BASE_DIRECTORIES = Paths.get(System.getProperty( "karaf.data" ), "migration", "scripts");
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(MigrationIT.class);
private static final String FAILING_SCRIPT_NAME = "migrate-11.0.0-01-failingMigration.groovy";
private static final String SUCCESS_SCRIPT_NAME = "migrate-11.0.0-01-successMigration.groovy";
private static final String FAILING_SCRIPT_RESOURCE = "migration/" + FAILING_SCRIPT_NAME;
private static final String SUCCESS_SCRIPT_RESOURCE = "migration/" + SUCCESS_SCRIPT_NAME;
- protected static final Path FAILING_SCRIPT_FS_PATH = Paths.get(System.getProperty( "karaf.data" ), "migration", "scripts", FAILING_SCRIPT_NAME);
- protected static final Path SUCCESS_SCRIPT_FS_PATH = Paths.get(System.getProperty( "karaf.data" ), "migration", "scripts", SUCCESS_SCRIPT_NAME);
@Test
public void checkMigrationRecoverySystem() throws Exception {
+
+ String karafData = super.karafData();
+ LOGGER.info("Karaf data directory: {}", karafData);
+
+ Path scriptsDirectory = Paths.get(karafData, "migration", "scripts");
+ Path failingScriptFsPath = Paths.get(karafData, "migration", "scripts", FAILING_SCRIPT_NAME);
+ Path successScriptFsPath = Paths.get(karafData, "migration", "scripts", SUCCESS_SCRIPT_NAME);
+
try {
- Files.createDirectories(BASE_DIRECTORIES);
+ Files.createDirectories(scriptsDirectory);
- Files.write(FAILING_SCRIPT_FS_PATH, bundleResourceAsString(FAILING_SCRIPT_RESOURCE).getBytes(StandardCharsets.UTF_8));
+ Files.write(failingScriptFsPath, bundleResourceAsString(FAILING_SCRIPT_RESOURCE).getBytes(StandardCharsets.UTF_8));
try {
executeCommand("unomi:migrate 10.0.0 true");
fail("Migration should have failed and crashed by Exception throwing");
} catch (Exception e) {
// this is expected, the script fail at step 3
}
- Files.deleteIfExists(FAILING_SCRIPT_FS_PATH);
+ Files.deleteIfExists(failingScriptFsPath);
- Files.write(SUCCESS_SCRIPT_FS_PATH, bundleResourceAsString(SUCCESS_SCRIPT_RESOURCE).getBytes(StandardCharsets.UTF_8));
+ Files.write(successScriptFsPath, bundleResourceAsString(SUCCESS_SCRIPT_RESOURCE).getBytes(StandardCharsets.UTF_8));
String successResult = executeCommand("unomi:migrate 10.0.0 true");
System.out.println("Success recovered from failing migration result:");
System.out.println(successResult);
@@ -61,10 +70,10 @@ public void checkMigrationRecoverySystem() throws Exception {
Assert.assertTrue(successResult.contains("inside step 3"));
Assert.assertTrue(successResult.contains("inside step 4"));
Assert.assertTrue(successResult.contains("inside step 5"));
- Files.deleteIfExists(SUCCESS_SCRIPT_FS_PATH);
+ Files.deleteIfExists(successScriptFsPath);
} finally {
- Files.deleteIfExists(FAILING_SCRIPT_FS_PATH);
- Files.deleteIfExists(SUCCESS_SCRIPT_FS_PATH);
+ Files.deleteIfExists(failingScriptFsPath);
+ Files.deleteIfExists(successScriptFsPath);
}
}
}
diff --git a/itests/src/test/resources/etc/users.properties b/itests/src/test/resources/etc/users.properties
new file mode 100644
index 000000000..ee3acc547
--- /dev/null
+++ b/itests/src/test/resources/etc/users.properties
@@ -0,0 +1,34 @@
+################################################################################
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+#
+# This file contains the users, groups, and roles.
+# Each line has to be of the format:
+#
+# USER=PASSWORD,ROLE1,ROLE2,...
+# USER=PASSWORD,_g_:GROUP,...
+# _g_\:GROUP=ROLE1,ROLE2,...
+#
+# All users, groups, and roles entered in this file are available after Karaf startup
+# and modifiable via the JAAS command group. These users reside in a JAAS domain
+# with the name "karaf".
+#
+karaf = ${org.apache.unomi.security.root.password:-karaf},_g_:admingroup
+health = ${org.apache.unomi.healthcheck.password:-health},health
+_g_\:admingroup = group,admin,manager,viewer,systembundles,ssh,ROLE_UNOMI_ADMIN
diff --git a/kar/pom.xml b/kar/pom.xml
index 9a38f9b78..bc5bca789 100644
--- a/kar/pom.xml
+++ b/kar/pom.xml
@@ -18,140 +18,138 @@
4.0.0
-
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-kar
Apache Unomi :: Karaf KAR package
Apache Karaf KAR package for the Apache Unomi Context Server
kar
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
- org.apache.httpcomponents
- httpcore-osgi
+ org.apache.unomi
+ unomi-api
- org.apache.httpcomponents
- httpclient-osgi
+ org.apache.unomi
+ unomi-common
org.apache.unomi
unomi-wab
- ${project.version}
org.apache.unomi
- unomi-api
- ${project.version}
+ unomi-rest
org.apache.unomi
- unomi-common
- ${project.version}
+ unomi-metrics
org.apache.unomi
- unomi-metrics
- ${project.version}
+ unomi-services
org.apache.unomi
- unomi-services
- ${project.version}
+ unomi-scripting
org.apache.unomi
unomi-persistence-elasticsearch-core
- ${project.version}
+
+
org.apache.unomi
unomi-plugins-base
- ${project.version}
org.apache.unomi
unomi-plugins-request
- ${project.version}
org.apache.unomi
unomi-plugins-mail
- ${project.version}
org.apache.unomi
unomi-plugins-optimization-test
- ${project.version}
+
+
org.apache.unomi
cxs-lists-extension-services
- ${project.version}
org.apache.unomi
cxs-lists-extension-rest
- ${project.version}
org.apache.unomi
cxs-lists-extension-actions
- ${project.version}
org.apache.unomi
cxs-geonames-services
- ${project.version}
org.apache.unomi
cxs-geonames-rest
- ${project.version}
org.apache.unomi
- unomi-json-schema-services
- ${project.version}
+ cxs-privacy-extension-services
org.apache.unomi
- unomi-json-schema-rest
- ${project.version}
+ cxs-privacy-extension-rest
org.apache.unomi
- cxs-privacy-extension-services
- ${project.version}
+ unomi-json-schema-services
org.apache.unomi
- cxs-privacy-extension-rest
- ${project.version}
+ unomi-json-schema-rest
org.apache.unomi
shell-dev-commands
- ${project.version}
+
+ org.apache.unomi
+ unomi-web-tracker-wab
+
+
joda-time
joda-time
+
- org.apache.unomi
- unomi-web-tracker-wab
- ${project.version}
+ org.apache.httpcomponents
+ httpcore-osgi
- org.apache.unomi
- unomi-scripting
- ${project.version}
+ org.apache.httpcomponents
+ httpclient-osgi
@@ -176,9 +174,42 @@
85
+
+
+ generate-features
+ generate-resources
+
+ features-generate-descriptor
+
+
+ true
+
+
+
+ verify-feature
+ process-resources
+
+ verify
+
+
+
+ mvn:org.apache.karaf.features/standard/${karaf.version}/xml/features
+ mvn:org.apache.karaf.features/enterprise/${karaf.version}/xml/features
+ file:${project.build.directory}/feature/feature.xml
+
+ org.apache.karaf:apache-karaf:zip:${karaf.version}
+ 17
+
+ framework
+
+
+ unomi-kar
+
+ true
+
+
+
-
-
diff --git a/kar/src/main/feature/feature.xml b/kar/src/main/feature/feature.xml
index 6355a69e4..4c64d920f 100644
--- a/kar/src/main/feature/feature.xml
+++ b/kar/src/main/feature/feature.xml
@@ -16,51 +16,66 @@
~ limitations under the License.
-->
-
+
+ mvn:org.apache.karaf.features/specs/${karaf.version}/xml/features
mvn:org.apache.cxf.karaf/apache-cxf/${cxf.version}/xml/features
+ osgi.service;effective:=active;filter:=(objectClass=org.osgi.service.http.HttpService)
wrap
aries-blueprint
war
- cxf-jaxrs
+ config
+ scr
+ http
+ log
+ cxf-jaxrs
cxf-features-metrics
cxf-rs-security-cors
cxf-rs-description-openapi-v3
eventadmin
feature
+ spifly
shell-compat
mvn:org.apache.unomi/unomi-wab/${project.version}/cfg/unomicfg
mvn:org.apache.unomi/unomi-persistence-elasticsearch-core/${project.version}/cfg/elasticsearchcfg
- mvn:org.apache.unomi/unomi-plugins-request/${project.version}/cfg/requestcfg
- mvn:org.apache.unomi/unomi-plugins-base/${project.version}/cfg/pluginsbasecfg
mvn:org.apache.unomi/unomi-services/${project.version}/cfg/servicescfg
mvn:org.apache.unomi/unomi-services/${project.version}/cfg/thirdpartycfg
mvn:org.apache.unomi/unomi-services/${project.version}/cfg/clustercfg
+ mvn:org.apache.unomi/unomi-plugins-request/${project.version}/cfg/requestcfg
+ mvn:org.apache.unomi/unomi-plugins-base/${project.version}/cfg/pluginsbasecfg
mvn:org.apache.unomi/cxs-geonames-services/${project.version}/cfg/geonamescfg
- mvn:org.apache.unomi/unomi-groovy-actions-services/${project.version}/cfg/groovyactionscfg
mvn:org.apache.unomi/unomi-json-schema-services/${project.version}/cfg/schemacfg
- mvn:commons-io/commons-io/${apache.commons.io.version}
- mvn:com.fasterxml.jackson.core/jackson-core/${version.jackson.core}
- mvn:com.github.fge/btf/1.2
- mvn:com.github.fge/msg-simple/1.1
- mvn:com.google.guava/guava/16.0.1
- mvn:com.github.fge/jackson-coreutils/1.8
- mvn:com.github.fge/json-patch/1.9
- mvn:org.json/json/${org.json.version}
- mvn:com.fasterxml.jackson.core/jackson-databind/${version.jackson.databind}
- mvn:com.fasterxml.jackson.core/jackson-annotations/${version.jackson.core}
- mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/${version.jackson.core}
- mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/${version.jackson.jaxb}
- mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${version.jackson.core}
- mvn:org.yaml/snakeyaml/1.33
- mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${version.jackson.core}
- mvn:joda-time/joda-time/${joda-time.version}
- mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxws-api-2.2/2.9.0
- mvn:javax.annotation/javax.annotation-api/1.3.2
- mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsr305/${jsr305.bundle.version}
- mvn:commons-collections/commons-collections/${apache.commons.collections.version}
+ mvn:commons-collections/commons-collections/${commons-collections.version}
+ mvn:org.apache.commons/commons-lang3/${commons-lang3.version}
+ mvn:commons-beanutils/commons-beanutils/${commons-beanutils.version}
+ mvn:commons-io/commons-io/${commons-io.version}
+ mvn:org.apache.httpcomponents/httpcore-osgi/${httpcore-osgi.version}
+ mvn:org.apache.httpcomponents/httpclient-osgi/${httpclient-osgi.version}
+ mvn:javax.validation/validation-api/${javax-validation.version}
+ mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}
+ mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}
+ mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}
+ mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${jackson.version}
+ mvn:com.fasterxml.jackson.datatype/jackson-datatype-jsr310/${jackson.version}
+ mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/${jackson.version}
+ mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/${jackson.version}
+ mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${jackson.version}
+ mvn:com.github.java-json-tools/btf/${btf.version}
+ mvn:com.github.java-json-tools/msg-simple/${msg-simple.version}
+ mvn:com.github.java-json-tools/jackson-coreutils/${jackson-coreutils.version}
+ mvn:com.github.java-json-tools/json-patch/${json-patch.version}
+ mvn:com.google.guava/guava/${guava.version}
+ mvn:org.json/json/${org-json.version}
+ mvn:org.yaml/snakeyaml/${snakeyaml.version}
+ mvn:joda-time/joda-time/${joda-time.version}
+ mvn:jakarta.annotation/jakarta.annotation-api/${jakarta-annotation-api.version}
+ mvn:com.google.code.findbugs/jsr305/${jsr305.version}
+ mvn:org.apache.groovy/groovy/${groovy.version}
+ mvn:org.apache.groovy/groovy-xml/${groovy.version}
+ mvn:org.apache.groovy/groovy-json/${groovy.version}
+
mvn:org.apache.unomi/unomi-lifecycle-watcher/${project.version}
mvn:org.apache.unomi/unomi-api/${project.version}
mvn:org.apache.unomi/unomi-common/${project.version}
@@ -100,6 +115,7 @@
unomi-kar
- mvn:org.webjars/swagger-ui/3.23.8
+ mvn:org.webjars/swagger-ui/${swagger-ui.version}
+
diff --git a/lifecycle-watcher/pom.xml b/lifecycle-watcher/pom.xml
index 444db2f3a..71ea61623 100644
--- a/lifecycle-watcher/pom.xml
+++ b/lifecycle-watcher/pom.xml
@@ -17,33 +17,48 @@
-->
+ 4.0.0
unomi-root
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
unomi-lifecycle-watcher
Apache Unomi :: Main Lifecycle Watcher
A global lifecycle watcher for the Apache Unomi Context server
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.osgi
osgi.core
+ provided
org.apache.unomi
unomi-api
- ${project.version}
provided
org.apache.karaf.features
org.apache.karaf.features.core
- ${version.karaf}
+ provided
+
+
+ org.apache.commons
+ commons-lang3
provided
@@ -88,5 +103,4 @@
-
diff --git a/lifecycle-watcher/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/lifecycle-watcher/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index d2ae880bb..c7eb443c6 100644
--- a/lifecycle-watcher/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/lifecycle-watcher/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -17,10 +17,10 @@
-->
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0 https://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.3.0.xsd">
@@ -28,7 +28,7 @@
update-strategy="reload" placeholder-prefix="${lifecycle.">
-
+
diff --git a/manual/pom.xml b/manual/pom.xml
index 55467ebe7..b5cfa2081 100644
--- a/manual/pom.xml
+++ b/manual/pom.xml
@@ -20,7 +20,7 @@
unomi-root
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
4.0.0
diff --git a/manual/src/main/asciidoc/5-min-quickstart.adoc b/manual/src/main/asciidoc/5-min-quickstart.adoc
index a25a45dd4..26e6fae6b 100644
--- a/manual/src/main/asciidoc/5-min-quickstart.adoc
+++ b/manual/src/main/asciidoc/5-min-quickstart.adoc
@@ -48,8 +48,7 @@ Try accessing https://localhost:9443/cxs/cluster with username/password: karaf/k
=== Quick Start manually
-1) Install JDK 11 (https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) and make sure you set the
-JAVA_HOME variable https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/ (see our <> guide for more information on JDK compatibility)
+1) Install JDK 17 and make sure you set the JAVA_HOME variable (see our <> guide for more information on JDK compatibility)
2) Download ElasticSearch here : https://www.elastic.co/downloads/past-releases/elasticsearch-7-17-5 (please *make sure* you use the proper version : 7.17.5)
diff --git a/manual/src/main/asciidoc/building-and-deploying.adoc b/manual/src/main/asciidoc/building-and-deploying.adoc
index 3de47041f..c91c86052 100644
--- a/manual/src/main/asciidoc/building-and-deploying.adoc
+++ b/manual/src/main/asciidoc/building-and-deploying.adoc
@@ -16,14 +16,14 @@
==== Initial Setup
-. Install J2SE 11 SDK (or later), which can be downloaded from
+. Install J2SE 17 SDK (or later), which can be downloaded from
http://www.oracle.com/technetwork/java/javase/downloads/index.html[http://www.oracle.com/technetwork/java/javase/downloads/index.html]
. Make sure that your JAVA_HOME environment variable is set to the newly installed
JDK location, and that your PATH includes %JAVA_HOME%\bin (windows) or
$JAVA_HOME$/bin (unix).
-. Install Maven 3.0.3 (or later), which can be downloaded from
+. Install Maven 3.9.6 (or later), which can be downloaded from
http://maven.apache.org/download.html[http://maven.apache.org/download.html]. Make sure that your PATH includes
the MVN_HOME/bin directory.
diff --git a/manual/src/main/asciidoc/configuration.adoc b/manual/src/main/asciidoc/configuration.adoc
index c127b247f..c10368f0e 100644
--- a/manual/src/main/asciidoc/configuration.adoc
+++ b/manual/src/main/asciidoc/configuration.adoc
@@ -224,9 +224,8 @@ Apache Unomi allows using different types of expressions in the following subsys
- context.json filters and personalization queries
- rule conditions and actions parameters
-Apache Unomi uses two integrated scripting languages to provide this functionality: OGNL and MVEL.
-OGNL is deprecated and is now disabled by default since 1.5.2 as it is little used (and replaced by better performing
-hardcoded property lookups). MVEL is more commonly used in rule actions as in the following example:
+Apache Unomi uses an integrated scripting language to provide this functionality: MVEL.
+MVEL is used in rule actions as in the following example:
From https://github.com/apache/unomi/blob/unomi-1.5.x/plugins/baseplugin/src/main/resources/META-INF/cxs/rules/sessionAssigned.json[https://github.com/apache/unomi/blob/unomi-1.5.x/plugins/baseplugin/src/main/resources/META-INF/cxs/rules/sessionAssigned.json]:
@@ -296,10 +295,6 @@ From https://github.com/apache/unomi/blob/unomi-1.5.x/plugins/baseplugin/src/mai
As we see in the above example, we use an MVEL script with the setPropertyAction to set a property value.
Starting with version 1.5.2, any expression use in rules MUST be allow-listed.
-OGNL was previously used wherever a parameter could be used, but MVEL could only be used with a “script::” prefix.
-Starting with version 1.5.2 OGNL will no longer be allowed and is replaced by a compatible “hardcoded” property
-lookup system, while MVEL requires allow-listing the scripts that are to be used.
-
By default, Apache Unomi comes with some built-in allowed expressions that cover all the internal uses cases.
Default allowed MVEL expressions (from https://github.com/apache/unomi/blob/unomi-1.5.x/plugins/baseplugin/src/main/resources/META-INF/cxs/expressions/mvel.json[https://github.com/apache/unomi/blob/unomi-1.5.x/plugins/baseplugin/src/main/resources/META-INF/cxs/expressions/mvel.json]) :
@@ -342,15 +337,15 @@ Alongside with the allow-listing technology, there are new configuration paramet
[source]
----
# These parameters control the list of classes that are allowed or forbidden when executing expressions.
-org.apache.unomi.scripting.allow=${env:UNOMI_ALLOW_SCRIPTING_CLASSES:-org.apache.unomi.api.Event,org.apache.unomi.api.Profile,org.apache.unomi.api.Session,org.apache.unomi.api.Item,org.apache.unomi.api.CustomItem,ognl.*,java.lang.Object,java.util.Map,java.util.HashMap,java.lang.Integer,org.mvel2.*}
+org.apache.unomi.scripting.allow=${env:UNOMI_ALLOW_SCRIPTING_CLASSES:-org.apache.unomi.api.Event,org.apache.unomi.api.Profile,org.apache.unomi.api.Session,org.apache.unomi.api.Item,org.apache.unomi.api.CustomItem,java.lang.Object,java.util.Map,java.util.HashMap,java.lang.Integer,org.mvel2.*}
org.apache.unomi.scripting.forbid=${env:UNOMI_FORBID_SCRIPTING_CLASSES:-}
# This parameter controls the whole expression filtering system. It is not recommended to turn it off. The main reason to turn it off would be to check if it is interfering with something, but it should always be active in production.
org.apache.unomi.scripting.filter.activated=${env:UNOMI_SCRIPTING_FILTER_ACTIVATED:-true}
# The following parameters control the filtering using regular expressions for each scripting sub-system.
-# The "collections" parameter tells the expression filtering system which configurations to expect. By default only MVEL and/or OGNL are accepted values, but in the future these might be replaced by new scripting sub-systems.
-org.apache.unomi.scripting.filter.collections=${env:UNOMI_SCRIPTING_FILTER_COLLECTIONS:-mvel,ognl}
+# The "collections" parameter tells the expression filtering system which configurations to expect. By default only MVEL is accepted values, but in the future these might be replaced by new scripting sub-systems.
+org.apache.unomi.scripting.filter.collections=${env:UNOMI_SCRIPTING_FILTER_COLLECTIONS:-mvel}
# For each scripting sub-system, there is an allow and a forbid property that reference a .json files,
# you can either edit this files or reference your own file directly in the following config.
@@ -364,11 +359,6 @@ org.apache.unomi.scripting.filter.collections=${env:UNOMI_SCRIPTING_FILTER_COLLE
# example: ["\\Qsession.size + 1\\E"]
org.apache.unomi.scripting.filter.mvel.allow=${env:UNOMI_SCRIPTING_FILTER_MVEL_ALLOW:-${karaf.etc}/mvel-allow.json}
org.apache.unomi.scripting.filter.mvel.forbid=${env:UNOMI_SCRIPTING_FILTER_MVEL_FORBID:-${karaf.etc}/mvel-forbid.json}
-org.apache.unomi.scripting.filter.ognl.allow=${env:UNOMI_SCRIPTING_FILTER_OGNL_ALLOW:-${karaf.etc}/ognl-allow.json}
-org.apache.unomi.scripting.filter.ognl.forbid=${env:UNOMI_SCRIPTING_FILTER_OGNL_FORBID:-${karaf.etc}/ognl-forbid.json}
-
-# This parameter controls whether OGNL scripting is allowed in expressions. Because of security reasons it is deactivated by default. If you run into compatibility issues you could reactivate it but it is at your own risk.
-org.apache.unomi.security.properties.useOGNLScripting=${env:UNOMI_SCRIPTING_USE_OGNL:-false}
# This parameter controls the condition sanitizing done on the ContextServlet (/cxs/context.json). If will remove any expressions that start with "script::". It is not recommended to change this value, unless you run into compatibility issues.
org.apache.unomi.security.personalization.sanitizeConditions=${env:UNOMI_SECURITY_SANITIZEPERSONALIZATIONCONDITIONS:-true}
diff --git a/manual/src/main/asciidoc/getting-started.adoc b/manual/src/main/asciidoc/getting-started.adoc
index 8e16ab092..d535f2f60 100644
--- a/manual/src/main/asciidoc/getting-started.adoc
+++ b/manual/src/main/asciidoc/getting-started.adoc
@@ -19,13 +19,13 @@ in greater details what just happened.
==== Prerequisites
This document assumes working knowledge of https://git-scm.com/[git] to be able to retrieve the code for Unomi and the example.
-Additionally, you will require a working Java 11 or above install. Refer to http://www.oracle.com/technetwork/java/javase/[http://www.oracle.com/technetwork/java/javase/] for details on how to download and install Java SE 11 or greater.
+Additionally, you will require a working Java 17 or above install. Refer to http://www.oracle.com/technetwork/java/javase/[http://www.oracle.com/technetwork/java/javase/] for details on how to download and install Java SE 17 or greater.
===== JDK compatibility
Starting with Java 9, Oracle made some big changes to the Java platform releases. This is why Apache Unomi is focused on
-supporting the Long Term Supported versions of the JDK, currently version 11. We do not test with intermediate
-versions so they may or may not work properly. Currently the most tested version is version 11.
+supporting the Long Term Supported versions of the JDK, currently version 17. We do not test with intermediate
+versions so they may or may not work properly. Currently the most tested version is version 17.
Also, as there are new licensing restrictions on JDKs provided by Oracle for production usages, Apache Unomi has also
added support for OpenJDK builds. Other JDK distributions might also work but are not regularly tested so you should use
diff --git a/metrics/pom.xml b/metrics/pom.xml
index 102ba8e30..aed1b61b9 100644
--- a/metrics/pom.xml
+++ b/metrics/pom.xml
@@ -17,38 +17,54 @@
-->
4.0.0
-
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-metrics
Apache Unomi :: Metrics
Apache Unomi Context Server Metrics
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
+
+ org.osgi
+ osgi.core
+ provided
+
org.apache.karaf.shell
org.apache.karaf.shell.console
- ${version.karaf}
provided
-
org.apache.karaf.shell
org.apache.karaf.shell.table
- ${version.karaf}
provided
+
+ org.apache.unomi
+ unomi-common
+ provided
+
org.apache.unomi
unomi-persistence-spi
- ${project.version}
provided
@@ -63,32 +79,16 @@
provided
-
- org.apache.unomi
- unomi-common
- ${project.version}
- provided
-
-
-
- org.osgi
- osgi.core
- provided
-
-
-
+
junit
junit
- 4.13.1
test
org.slf4j
slf4j-simple
- 1.7.36
test
-
diff --git a/metrics/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/metrics/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 3a0888800..3a613dc67 100644
--- a/metrics/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/metrics/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -17,11 +17,11 @@
-->
+ xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0 https://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.3.0.xsd">
diff --git a/package/pom.xml b/package/pom.xml
index 265e91973..97cb7bb95 100644
--- a/package/pom.xml
+++ b/package/pom.xml
@@ -18,26 +18,35 @@
4.0.0
-
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi
- pom
+ 3.0.0-SNAPSHOT
Apache Unomi :: Distribution Package
Packaged distributions of the Apache Unomi Context Server
+ pom
+
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
${basedir}/../etc/appended-resources
-
-
org.apache.karaf.features
framework
@@ -70,48 +79,39 @@
xml
runtime
-
-
-
- org.apache.cxf.karaf
- apache-cxf
+ org.apache.karaf.features
+ specs
features
xml
runtime
+
org.apache.unomi
unomi-kar
- ${project.version}
features
xml
runtime
-
org.apache.unomi
unomi-router-karaf-feature
- ${project.version}
features
xml
runtime
-
org.apache.unomi
unomi-groovy-actions
- ${project.version}
features
xml
runtime
-
org.apache.unomi
cdp-graphql-feature
- ${project.version}
features
xml
runtime
@@ -166,113 +166,76 @@
org.apache.unomi
unomi-wab
- ${project.version}
unomicfg
cfg
-
- ${project.build.directory}/assembly/etc
-
+ ${project.build.directory}/assembly/etc
org.apache.unomi.web.cfg
org.apache.unomi
unomi-persistence-elasticsearch-core
- ${project.version}
elasticsearchcfg
cfg
-
- ${project.build.directory}/assembly/etc
-
+ ${project.build.directory}/assembly/etc
org.apache.unomi.persistence.elasticsearch.cfg
org.apache.unomi
unomi-services
- ${project.version}
clustercfg
cfg
-
- ${project.build.directory}/assembly/etc
-
+ ${project.build.directory}/assembly/etc
org.apache.unomi.cluster.cfg
org.apache.unomi
unomi-services
- ${project.version}
servicescfg
cfg
-
- ${project.build.directory}/assembly/etc
-
+ ${project.build.directory}/assembly/etc
org.apache.unomi.services.cfg
org.apache.unomi
unomi-plugins-request
- ${project.version}
requestcfg
cfg
-
- ${project.build.directory}/assembly/etc
-
+ ${project.build.directory}/assembly/etc
org.apache.unomi.plugins.request.cfg
org.apache.unomi
unomi-plugins-base
- ${project.version}
pluginsbasecfg
cfg
-
- ${project.build.directory}/assembly/etc
-
+ ${project.build.directory}/assembly/etc
org.apache.unomi.plugins.base.cfg
org.apache.unomi
unomi-groovy-actions-services
- ${project.version}
groovyactionscfg
cfg
-
- ${project.build.directory}/assembly/etc
-
+ ${project.build.directory}/assembly/etc
org.apache.unomi.groovy.actions.cfg
org.apache.unomi
unomi-plugins-mail
- ${project.version}
mailcfg
cfg
-
- ${project.build.directory}/assembly/etc
-
+ ${project.build.directory}/assembly/etc
org.apache.unomi.plugins.mail.cfg
org.apache.unomi
unomi-router-core
- ${project.version}
routercfg
cfg
-
- ${project.build.directory}/assembly/etc
-
+ ${project.build.directory}/assembly/etc
org.apache.unomi.router.cfg
-
-
- org.apache.aries.blueprint
- org.apache.aries.blueprint.core
- 1.6.2
-
- ${project.build.directory}/assembly/system/org/apache/aries/blueprint/org.apache.aries.blueprint.core/1.6.2
-
-
-
@@ -313,6 +276,13 @@
archive
+
+ verify-feature
+ process-resources
+
+ verify
+
+
@@ -335,7 +305,6 @@
config
deployer
diagnostic
- feature
instance
kar
log
@@ -351,28 +320,7 @@
unomi-groovy-actions
unomi-rest-ui
-
- 1.8
+ 17
diff --git a/package/src/main/resources/etc/custom.system.properties b/package/src/main/resources/etc/custom.system.properties
index 7b1b576eb..0e3cd9e5c 100644
--- a/package/src/main/resources/etc/custom.system.properties
+++ b/package/src/main/resources/etc/custom.system.properties
@@ -25,7 +25,7 @@ ${optionals}=unomi.custom.system.properties
org.apache.unomi.security.root.password=${env:UNOMI_ROOT_PASSWORD:-karaf}
# These parameters control the list of classes that are allowed or forbidden when executing expressions.
-org.apache.unomi.scripting.allow=${env:UNOMI_ALLOW_SCRIPTING_CLASSES:-org.apache.unomi.api.Event,org.apache.unomi.api.Profile,org.apache.unomi.api.Session,org.apache.unomi.api.Item,org.apache.unomi.api.CustomItem,ognl.*,java.lang.Object,java.util.Map,java.util.HashMap,java.lang.Integer,org.mvel2.*,java.lang.String}
+org.apache.unomi.scripting.allow=${env:UNOMI_ALLOW_SCRIPTING_CLASSES:-org.apache.unomi.api.Event,org.apache.unomi.api.Profile,org.apache.unomi.api.Session,org.apache.unomi.api.Item,org.apache.unomi.api.CustomItem,java.lang.Object,java.util.Map,java.util.HashMap,java.lang.Integer,org.mvel2.*,java.lang.String}
org.apache.unomi.scripting.forbid=${env:UNOMI_FORBID_SCRIPTING_CLASSES:-}
# This parameter controls the whole expression filtering system. It is not recommended to turn it off. The main reason
@@ -33,8 +33,8 @@ org.apache.unomi.scripting.forbid=${env:UNOMI_FORBID_SCRIPTING_CLASSES:-}
org.apache.unomi.scripting.filter.activated=${env:UNOMI_SCRIPTING_FILTER_ACTIVATED:-true}
# The following parameters tells the expression filtering system which configurations to expect. By default only
-# MVEL and/or OGNL are accepted values, but in the future these might be replaced by new scripting sub-systems.
-org.apache.unomi.scripting.filter.collections=${env:UNOMI_SCRIPTING_FILTER_COLLECTIONS:-mvel,ognl}
+# MVEL are accepted values, but in the future these might be replaced by new scripting sub-systems.
+org.apache.unomi.scripting.filter.collections=${env:UNOMI_SCRIPTING_FILTER_COLLECTIONS:-mvel}
# For each scripting sub-system, there is an allow and a forbid property that reference a .json files,
# you can either edit this files or reference your own file directly in the following config.
@@ -48,12 +48,7 @@ org.apache.unomi.scripting.filter.collections=${env:UNOMI_SCRIPTING_FILTER_COLLE
# example: ["\\Qsession.size + 1\\E"]
org.apache.unomi.scripting.filter.mvel.allow=${env:UNOMI_SCRIPTING_FILTER_MVEL_ALLOW:-${karaf.etc}/mvel-allow.json}
org.apache.unomi.scripting.filter.mvel.forbid=${env:UNOMI_SCRIPTING_FILTER_MVEL_FORBID:-${karaf.etc}/mvel-forbid.json}
-org.apache.unomi.scripting.filter.ognl.allow=${env:UNOMI_SCRIPTING_FILTER_OGNL_ALLOW:-${karaf.etc}/ognl-allow.json}
-org.apache.unomi.scripting.filter.ognl.forbid=${env:UNOMI_SCRIPTING_FILTER_OGNL_FORBID:-${karaf.etc}/ognl-forbid.json}
-# This parameter controls whether OGNL scripting is allowed in expressions. Because of security reasons it is
-# deactivated by default. If you run into compatibility issues you could reactivate it but it is at your own risk.
-org.apache.unomi.security.properties.useOGNLScripting=${env:UNOMI_SCRIPTING_USE_OGNL:-false}
# This parameter controls the condition sanitizing done on the ContextServlet (/context.json). If will remove any
# expressions that start with "script::". It is not recommended to change this value, unless you run into compatibility issues.
org.apache.unomi.security.personalization.sanitizeConditions=${env:UNOMI_SECURITY_SANITIZEPERSONALIZATIONCONDITIONS:-true}
@@ -62,8 +57,10 @@ org.apache.unomi.security.personalization.sanitizeConditions=${env:UNOMI_SECURIT
## HTTP Settings ##
#######################################################################################################################
org.ops4j.pax.web.ssl.keystore=${env:UNOMI_SSL_KEYSTORE:-${karaf.etc}/keystore}
-org.ops4j.pax.web.ssl.password=${env:UNOMI_SSL_PASSWORD:-changeme}
-org.ops4j.pax.web.ssl.keypassword=${env:UNOMI_SSL_KEYPASSWORD:-changeme}
+org.ops4j.pax.web.ssl.keystore.password=${env:UNOMI_SSL_KEYPASSWORD:-changeme}
+org.ops4j.pax.web.ssl.key.password=${env:UNOMI_SSL_PASSWORD:-changeme}
+org.ops4j.pax.web.ssl.truststore=${env:UNOMI_SSL_KEYSTORE:-${karaf.etc}/keystore}
+org.ops4j.pax.web.ssl.truststore.password=${env:UNOMI_SSL_PASSWORD:-changeme}
org.osgi.service.http.secure.enabled = true
org.osgi.service.http.port=${env:UNOMI_HTTP_PORT:-8181}
diff --git a/package/src/main/resources/etc/ognl-allow.json b/package/src/main/resources/etc/ognl-allow.json
deleted file mode 100644
index 0637a088a..000000000
--- a/package/src/main/resources/etc/ognl-allow.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/package/src/main/resources/etc/ognl-forbid.json b/package/src/main/resources/etc/ognl-forbid.json
deleted file mode 100644
index 07e8ee622..000000000
--- a/package/src/main/resources/etc/ognl-forbid.json
+++ /dev/null
@@ -1,19 +0,0 @@
-[
- ".*Runtime.*",
- ".*ProcessBuilder.*",
- ".*exec.*",
- ".*invoke.*",
- ".*getClass.*",
- ".*Class.*",
- ".*ClassLoader.*",
- ".*System.*",
- ".*Method.*",
- ".*method.*",
- ".*Compiler.*",
- ".*Thread.*",
- ".*FileWriter.*",
- ".*forName.*",
- ".*Socket.*",
- ".*DriverManager.*",
- "eval"
-]
\ No newline at end of file
diff --git a/package/src/main/resources/etc/org.apache.cxf.osgi.cfg b/package/src/main/resources/etc/org.apache.cxf.osgi.cfg
index 5cf8e8f7a..d4e48fcb7 100644
--- a/package/src/main/resources/etc/org.apache.cxf.osgi.cfg
+++ b/package/src/main/resources/etc/org.apache.cxf.osgi.cfg
@@ -15,4 +15,4 @@
# limitations under the License.
#
-org.apache.cxf.servlet.context=${org.apache.unomi.admin.servlet.context:-/cxs}
\ No newline at end of file
+org.apache.cxf.servlet.context=${org.apache.unomi.admin.servlet.context:-/cxs}
diff --git a/persistence-elasticsearch/core/pom.xml b/persistence-elasticsearch/core/pom.xml
index 810e38807..e9c990b3d 100644
--- a/persistence-elasticsearch/core/pom.xml
+++ b/persistence-elasticsearch/core/pom.xml
@@ -18,125 +18,108 @@
4.0.0
-
org.apache.unomi
unomi-persistence-elasticsearch
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-persistence-elasticsearch-core
Apache Unomi :: Persistence :: ElasticSearch :: Core
Core ElasticSearch persistence implementation for the Apache Unomi Context Server
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
- org.osgi
- osgi.core
+ org.apache.unomi
+ unomi-api
provided
- org.osgi
- osgi.cmpn
+ org.apache.unomi
+ unomi-common
provided
-
org.apache.unomi
- unomi-api
- ${project.version}
+ unomi-metrics
provided
org.apache.unomi
- unomi-common
- ${project.version}
+ unomi-scripting
provided
org.apache.unomi
unomi-persistence-spi
- ${project.version}
provided
+
- org.elasticsearch.client
- elasticsearch-rest-high-level-client
- ${elasticsearch.version}
-
-
+
- org.elasticsearch.test
- framework
- ${elasticsearch.version}
- test
+ com.fasterxml.jackson.core
+ jackson-databind
+ provided
- org.elasticsearch.plugin
- transport-netty4-client
- ${elasticsearch.version}
- test
+ org.apache.commons
+ commons-lang3
+ provided
- org.apache.lucene
- lucene-test-framework
- ${lucene.version}
- test
-
-
-
- org.apache.lucene
- lucene-core
-
-
+ commons-io
+ commons-io
+ provided
+
- org.apache.logging.log4j
- log4j-slf4j-impl
- 2.17.0
- test
+ org.elasticsearch.client
+ elasticsearch-rest-high-level-client
-
org.apache.logging.log4j
log4j-api
- 2.17.0
compile
true
org.apache.logging.log4j
log4j-core
- 2.17.0
compile
@@ -149,7 +132,6 @@
org.apache.logging.log4j
log4j-1.2-api
- 2.17.0
compile
@@ -163,43 +145,40 @@
true
-
- com.fasterxml.jackson.core
- jackson-databind
-
-
-
- org.apache.commons
- commons-lang3
+ junit
+ junit
+ test
- commons-io
- commons-io
+ org.elasticsearch.test
+ framework
+ test
-
- org.apache.unomi
- unomi-metrics
- ${project.version}
- provided
+ org.elasticsearch.plugin
+ transport-netty4-client
+ test
-
- junit
- junit
+ org.apache.lucene
+ lucene-test-framework
test
+
+
+
+ org.apache.lucene
+ lucene-core
+
+
-
- org.apache.unomi
- unomi-scripting
- ${project.version}
- provided
+ org.apache.logging.log4j
+ log4j-slf4j-impl
+ test
-
@@ -282,8 +261,6 @@
org.xml.sax.ext;resolution:=optional,
org.xml.sax.helpers;resolution:=optional,
org.zeromq;resolution:=optional,
- sun.misc;resolution:=optional,
- sun.nio.ch;resolution:=optional,
*
diff --git a/persistence-elasticsearch/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/persistence-elasticsearch/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index e376be29f..b9608f858 100644
--- a/persistence-elasticsearch/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/persistence-elasticsearch/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -17,10 +17,10 @@
-->
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0 https://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.3.0.xsd">
diff --git a/persistence-elasticsearch/pom.xml b/persistence-elasticsearch/pom.xml
index 01aa88967..0ac011e47 100644
--- a/persistence-elasticsearch/pom.xml
+++ b/persistence-elasticsearch/pom.xml
@@ -22,7 +22,7 @@
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
unomi-persistence-elasticsearch
diff --git a/persistence-spi/pom.xml b/persistence-spi/pom.xml
index 0129f2788..4815944bf 100644
--- a/persistence-spi/pom.xml
+++ b/persistence-spi/pom.xml
@@ -18,23 +18,32 @@
4.0.0
-
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-persistence-spi
- Apache Unomi :: Persistence :: SPI (Service Provider Interface)
+ Apache Unomi :: Persistence :: SPI
Service Provider interface for the Apache Unomi Context Server
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
@@ -47,6 +56,11 @@
jackson-databind
provided
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+ provided
+
com.fasterxml.jackson.module
jackson-module-jaxb-annotations
@@ -55,19 +69,28 @@
commons-beanutils
commons-beanutils
+ provided
+
+
+ commons-collections
+ commons-collections
+ provided
+
+
+ org.slf4j
+ slf4j-api
+ provided
junit
junit
- 4.11
test
org.slf4j
slf4j-simple
- 1.7.36
test
diff --git a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/CustomObjectMapper.java b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/CustomObjectMapper.java
index 65d09b0c7..c5b91a7a6 100644
--- a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/CustomObjectMapper.java
+++ b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/CustomObjectMapper.java
@@ -24,6 +24,7 @@
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;
import org.apache.unomi.api.*;
import org.apache.unomi.api.actions.ActionType;
@@ -46,7 +47,7 @@
public class CustomObjectMapper extends ObjectMapper {
private static final long serialVersionUID = 4578277612897061535L;
-
+
private Map> builtinItemTypeClasses = new HashMap<>();
private PropertyTypedObjectDeserializer propertyTypedObjectDeserializer;
private ItemDeserializer itemDeserializer;
@@ -58,6 +59,7 @@ public CustomObjectMapper() {
public CustomObjectMapper(Map> deserializers) {
super();
super.registerModule(new JaxbAnnotationModule());
+ super.registerModule(new JavaTimeModule());
configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
setSerializationInclusion(JsonInclude.Include.NON_NULL);
ISO8601DateFormat dateFormat = new ISO8601DateFormat();
diff --git a/plugins/baseplugin/pom.xml b/plugins/baseplugin/pom.xml
index b4f260369..7255dbc74 100644
--- a/plugins/baseplugin/pom.xml
+++ b/plugins/baseplugin/pom.xml
@@ -18,19 +18,50 @@
4.0.0
-
org.apache.unomi
unomi-plugins
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-plugins-base
Apache Unomi :: Plugins :: Base Actions and Conditions
Base actions and conditions plugin for the Apache Unomi Context Server
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
+
+ org.apache.unomi
+ unomi-persistence-elasticsearch-core
+ provided
+
+
+ org.apache.unomi
+ unomi-persistence-spi
+ provided
+
+
+ org.apache.unomi
+ unomi-common
+ provided
+
+
+ org.apache.unomi
+ unomi-scripting
+ provided
+
+
javax.servlet
javax.servlet-api
@@ -39,70 +70,46 @@
jakarta.xml.bind
jakarta.xml.bind-api
- 2.3.2
provided
+
commons-beanutils
commons-beanutils
+ provided
org.apache.commons
commons-lang3
+ provided
joda-time
joda-time
provided
-
- org.apache.unomi
- unomi-persistence-elasticsearch-core
- ${project.version}
- provided
-
-
- org.apache.unomi
- unomi-persistence-spi
- ${project.version}
- provided
-
-
- ognl
- ognl
-
com.fasterxml.jackson.core
jackson-databind
provided
- org.apache.unomi
- unomi-common
- ${project.version}
- provided
-
-
- org.apache.unomi
- unomi-scripting
- ${project.version}
+ org.slf4j
+ slf4j-api
provided
-
+
junit
junit
- 4.11
test
org.slf4j
slf4j-simple
- 1.7.36
test
-
diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java
index 089130734..c128d8f2c 100644
--- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java
+++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java
@@ -17,19 +17,19 @@
package org.apache.unomi.plugins.baseplugin.conditions;
-import ognl.*;
-import ognl.enhance.ExpressionAccessor;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.unomi.api.*;
+import org.apache.unomi.api.Event;
+import org.apache.unomi.api.GeoPoint;
+import org.apache.unomi.api.Item;
import org.apache.unomi.api.conditions.Condition;
-import org.apache.unomi.plugins.baseplugin.conditions.accessors.HardcodedPropertyAccessor;
-import org.apache.unomi.scripting.ExpressionFilterFactory;
-import org.apache.unomi.scripting.SecureFilteringClassLoader;
import org.apache.unomi.persistence.elasticsearch.conditions.ConditionContextHelper;
import org.apache.unomi.persistence.elasticsearch.conditions.ConditionEvaluator;
import org.apache.unomi.persistence.elasticsearch.conditions.ConditionEvaluatorDispatcher;
import org.apache.unomi.persistence.spi.PropertyHelper;
+import org.apache.unomi.plugins.baseplugin.conditions.accessors.HardcodedPropertyAccessor;
+import org.apache.unomi.scripting.ExpressionFilterFactory;
+import org.apache.unomi.scripting.SecureFilteringClassLoader;
import org.elasticsearch.ElasticsearchParseException;
import org.elasticsearch.common.joda.Joda;
import org.elasticsearch.common.joda.JodaDateMathParser;
@@ -37,8 +37,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.lang.reflect.Member;
-import java.lang.reflect.Modifier;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Pattern;
@@ -53,14 +51,11 @@ public class PropertyConditionEvaluator implements ConditionEvaluator {
private static final SimpleDateFormat yearMonthDayDateFormat = new SimpleDateFormat("yyyyMMdd");
- private final Map> expressionCache = new HashMap<>(64);
private boolean usePropertyConditionOptimizations = true;
private static final ClassLoader secureFilteringClassLoader = new SecureFilteringClassLoader(PropertyConditionEvaluator.class.getClassLoader());
private static final HardcodedPropertyAccessorRegistry hardcodedPropertyAccessorRegistry = new HardcodedPropertyAccessorRegistry();
private ExpressionFilterFactory expressionFilterFactory;
- private final boolean useOGNLScripting = Boolean.parseBoolean(System.getProperty("org.apache.unomi.security.properties.useOGNLScripting", "false"));
-
public void setUsePropertyConditionOptimizations(boolean usePropertyConditionOptimizations) {
this.usePropertyConditionOptimizations = usePropertyConditionOptimizations;
}
@@ -69,12 +64,6 @@ public void setExpressionFilterFactory(ExpressionFilterFactory expressionFilterF
this.expressionFilterFactory = expressionFilterFactory;
}
- public void init() {
- if (!useOGNLScripting) {
- LOGGER.info("OGNL Script disabled, properties using OGNL won't be evaluated");
- }
- }
-
private int compare(Object actualValue, String expectedValue, Object expectedValueDate, Object expectedValueInteger, Object expectedValueDateExpr, Object expectedValueDouble) {
if (expectedValue == null && expectedValueDate == null && expectedValueInteger == null && getDate(expectedValueDateExpr) == null && expectedValueDouble == null) {
return actualValue == null ? 0 : 1;
@@ -193,9 +182,7 @@ public boolean eval(Condition condition, Item item, Map context,
// property not found
actualValue = null;
} catch (Exception e) {
- if (!(e instanceof OgnlException)
- || (!StringUtils.startsWith(e.getMessage(),
- "source is null for getProperty(null"))) {
+ if ((!StringUtils.startsWith(e.getMessage(),"source is null for getProperty(null"))) {
LOGGER.warn("Error evaluating value for {} {}. See debug level for more information", item.getClass().getName(), name);
if (LOGGER.isDebugEnabled()) LOGGER.debug("Error evaluating value for {} {}", item.getClass().getName(), name, e);
}
@@ -320,9 +307,6 @@ protected Object getPropertyValue(Item item, String expression) throws Exception
return result;
}
}
- if (useOGNLScripting) {
- return getOGNLPropertyValue(item, expression);
- }
return null;
}
@@ -332,107 +316,6 @@ protected Object getHardcodedPropertyValue(Item item, String expression) {
return hardcodedPropertyAccessorRegistry.getProperty(item, expression);
}
- protected Object getOGNLPropertyValue(Item item, String expression) throws Exception {
- if (expressionFilterFactory.getExpressionFilter("ognl").filter(expression) == null) {
- LOGGER.warn("OGNL expression filtered because not allowed on item: {}. See debug log level for more information", item.getClass().getName());
- LOGGER.debug("OGNL expression filtered because not allowed: {}", expression);
- return null;
- }
- OgnlContext ognlContext = getOgnlContext(secureFilteringClassLoader);
- ExpressionAccessor accessor = getPropertyAccessor(item, expression, ognlContext, secureFilteringClassLoader);
- if (accessor != null) {
- try {
- return accessor.get(ognlContext, item);
- } catch (Throwable t) {
- LOGGER.error("Error evaluating expression on item {}. See debug level for more information", item.getClass().getName());
- LOGGER.debug("Error evaluating expression {} on item {}.", expression, item.getClass().getName(), t);
- return null;
- }
- }
- return null;
- }
-
- private class ClassLoaderClassResolver extends DefaultClassResolver {
- private ClassLoader classLoader;
-
- public ClassLoaderClassResolver(ClassLoader classLoader) {
- this.classLoader = classLoader;
- }
-
- @Override
- protected Class toClassForName(String className) throws ClassNotFoundException {
- return Class.forName(className, true, classLoader);
- }
- }
-
- private OgnlContext getOgnlContext(ClassLoader classLoader) {
- return (OgnlContext) Ognl.createDefaultContext(null, new MemberAccess() {
- @Override
- public Object setup(OgnlContext ognlContext, Object target, Member member, String propertyName) {
- return null;
- }
-
- @Override
- public void restore(OgnlContext ognlContext, Object target, Member member, String propertyName, Object state) {
- }
-
- @Override
- public boolean isAccessible(OgnlContext ognlContext, Object target, Member member, String propertyName) {
- int modifiers = member.getModifiers();
- boolean accessible = false;
- if (target instanceof Item && !"getClass".equals(member.getName())) {
- accessible = Modifier.isPublic(modifiers);
- }
- if (!accessible) {
- LOGGER.warn("OGNL security filtered target, member for property. See debug log level for more information");
- LOGGER.debug("OGNL security filtered: Target {} and member {} for property {}. Not allowed", target, member, propertyName);
- }
- return accessible;
- }
- }, new ClassLoaderClassResolver(classLoader),
- null);
- }
-
- private ExpressionAccessor getPropertyAccessor(Item item, String expression, OgnlContext ognlContext, ClassLoader classLoader) throws Exception {
- ExpressionAccessor accessor = null;
- String clazz = item.getClass().getName();
- Map expressions = expressionCache.get(clazz);
- if (expressions == null) {
- expressions = new HashMap<>();
- expressionCache.put(clazz, expressions);
- } else {
- accessor = expressions.get(expression);
- }
- if (accessor == null) {
- long time = System.nanoTime();
- Thread current = Thread.currentThread();
- ClassLoader contextCL = current.getContextClassLoader();
- try {
- current.setContextClassLoader(classLoader);
- Node node = Ognl.compileExpression(ognlContext, item, expression);
- accessor = node.getAccessor();
- } finally {
- current.setContextClassLoader(contextCL);
- }
- if (accessor != null) {
- expressions.put(expression, accessor);
- } else {
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Unable to compile expression: {} for: {}", expression, clazz);
- } else {
- LOGGER.warn("Unable to compile expression for {}. See debug log level for more information", clazz);
- }
- }
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Expression compilation for item={} expression={} took {}", item.getClass().getName(), expression, (System.nanoTime() - time) / 1000000L);
- } else {
- LOGGER.info("Expression compilation for item={} took {}. See debug log level for more information", item.getClass().getName(), (System.nanoTime() - time) / 1000000L);
- }
- }
-
- return accessor;
- }
-
protected static Date getDate(Object value) {
if (value == null) {
return null;
diff --git a/plugins/baseplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/plugins/baseplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 9f7dc8c92..33ec99222 100644
--- a/plugins/baseplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/plugins/baseplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -16,10 +16,11 @@
~ limitations under the License.
-->
-
+
@@ -155,7 +156,7 @@
-
+
@@ -187,8 +188,7 @@
-
+
diff --git a/plugins/baseplugin/src/test/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluatorTest.java b/plugins/baseplugin/src/test/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluatorTest.java
index 84eeae38a..07bc4d2e8 100644
--- a/plugins/baseplugin/src/test/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluatorTest.java
+++ b/plugins/baseplugin/src/test/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluatorTest.java
@@ -16,7 +16,6 @@
*/
package org.apache.unomi.plugins.baseplugin.conditions;
-import ognl.MethodFailedException;
import org.apache.unomi.api.*;
import org.apache.unomi.api.rules.Rule;
import org.apache.unomi.plugins.baseplugin.conditions.accessors.HardcodedPropertyAccessor;
@@ -25,17 +24,14 @@
import org.junit.Before;
import org.junit.Test;
-import java.io.File;
import java.util.*;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.regex.Pattern;
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertNull;
-import static org.junit.Assert.assertFalse;
public class PropertyConditionEvaluatorTest {
@@ -110,36 +106,6 @@ public void testFlattenedProperties() {
assertEquals("FlattenedProperties should be readable form accessor", "test", propertyConditionEvaluator.getHardcodedPropertyValue(mockEvent, "flattenedProperties.test"));
}
- @Test
- public void testOGNLEvaluator() throws Exception {
- Event mockEvent = generateMockEvent(mockProfile, mockSession);
- assertEquals("Target itemId value is not correct", MOCK_ITEM_ID, propertyConditionEvaluator.getOGNLPropertyValue(mockEvent, "target.itemId"));
- assertEquals("Target scope is not correct", DIGITALL_SCOPE, propertyConditionEvaluator.getOGNLPropertyValue(mockEvent, "target.scope"));
- assertEquals("Target page path value is not correct", TARGET_PAGE_PATH_VALUE, propertyConditionEvaluator.getOGNLPropertyValue(mockEvent, "target.properties.pageInfo.pagePath"));
- assertEquals("Target page url value is not correct", TARGET_PAGE_URL_VALUE, propertyConditionEvaluator.getOGNLPropertyValue(mockEvent, "target.properties.pageInfo.pageURL"));
- assertEquals("Session size should be 10", SESSION_SIZE, propertyConditionEvaluator.getOGNLPropertyValue(mockSession, "size"));
- assertEquals("Should have received the proper last even date", SESSION_LAST_EVENT_DATE, propertyConditionEvaluator.getOGNLPropertyValue(mockSession, "lastEventDate"));
-
- assertNull("Unexisting property should be null", propertyConditionEvaluator.getOGNLPropertyValue(mockSession, "systemProperties.goals._csk6r4cgeStartReached"));
- assertNull("Unexisting property should be null", propertyConditionEvaluator.getOGNLPropertyValue(mockProfile, "properties.email"));
- }
-
- @Test
- public void testCompareOGNLvsHardcodedPerformance() throws InterruptedException {
- int workerCount = WORKER_COUNT;
- ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE);
-
- runHardcodedTest(workerCount, executorService);
- runOGNLTest(workerCount, executorService);
- runHardcodedTest(workerCount, executorService);
- runOGNLTest(workerCount, executorService);
- runHardcodedTest(workerCount, executorService);
- runOGNLTest(workerCount, executorService);
- runHardcodedTest(workerCount, executorService);
- runOGNLTest(workerCount, executorService);
-
- }
-
@Test
public void testPropertyEvaluator() throws Exception {
Event mockEvent = generateMockEvent(mockProfile, mockSession);
@@ -154,44 +120,6 @@ public void testPropertyEvaluator() throws Exception {
assertEquals("Session last event date is not right", SESSION_LAST_EVENT_DATE, propertyConditionEvaluator.getPropertyValue(mockSession, "lastEventDate"));
}
- @Test
- public void testOGNLSecurity() throws Exception {
- Event mockEvent = generateMockEvent(mockProfile, mockSession);
- File vulnFile = new File("target/vuln-file.txt");
- if (vulnFile.exists()) {
- vulnFile.delete();
- }
- String vulnFileCanonicalPath = vulnFile.getCanonicalPath();
- vulnFileCanonicalPath = vulnFileCanonicalPath.replace("\\", "\\\\"); // this is required for Windows support
- try {
- propertyConditionEvaluator.getOGNLPropertyValue(mockEvent, "@java.lang.Runtime@getRuntime().exec('touch " + vulnFileCanonicalPath + "')");
- } catch (RuntimeException | MethodFailedException re) {
- // we ignore these exceptions as they are expected.
- }
- assertFalse("Vulnerability successfully executed ! File created at " + vulnFileCanonicalPath, vulnFile.exists());
- try {
- propertyConditionEvaluator.getOGNLPropertyValue(mockEvent, "(#cmd='touch " + vulnFileCanonicalPath + "').(#cmds={'bash','-c',#cmd}).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start())");
- } catch (RuntimeException | MethodFailedException re) {
- // we ignore these exceptions as they are expected.
- }
- vulnFile = new File("target/vuln-file.txt");
- assertFalse("Vulnerability successfully executed ! File created at " + vulnFileCanonicalPath, vulnFile.exists());
- try {
- propertyConditionEvaluator.getOGNLPropertyValue(mockEvent, "(#cmd='touch " + vulnFileCanonicalPath + "').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start())");
- } catch (RuntimeException | MethodFailedException re) {
- // we ignore these exceptions as they are expected.
- }
- vulnFile = new File("target/vuln-file.txt");
- assertFalse("Vulnerability successfully executed ! File created at " + vulnFileCanonicalPath, vulnFile.exists());
- try {
- propertyConditionEvaluator.getOGNLPropertyValue(mockEvent, "(#runtimeclass = #this.getClass().forName(\"java.lang.Runtime\")).(#getruntimemethod = #runtimeclass.getDeclaredMethods().{^ #this.name.equals(\"getRuntime\")}[0]).(#rtobj = #getruntimemethod.invoke(null,null)).(#execmethod = #runtimeclass.getDeclaredMethods().{? #this.name.equals(\"exec\")}.{? #this.getParameters()[0].getType().getName().equals(\"java.lang.String\")}.{? #this.getParameters().length < 2}[0]).(#execmethod.invoke(#rtobj,\" touch "+vulnFileCanonicalPath+"\"))");
- } catch (RuntimeException | MethodFailedException re) {
- // we ignore these exceptions as they are expected.
- }
- vulnFile = new File("target/vuln-file.txt");
- assertFalse("Vulnerability successfully executed ! File created at " + vulnFileCanonicalPath, vulnFile.exists());
- }
-
private void runHardcodedTest(int workerCount, ExecutorService executorService) throws InterruptedException {
List> todo = new ArrayList<>(workerCount);
long startTime = System.currentTimeMillis();
@@ -203,17 +131,6 @@ private void runHardcodedTest(int workerCount, ExecutorService executorService)
System.out.println("Hardcoded workers completed execution in " + totalTime + "ms");
}
- private void runOGNLTest(int workerCount, ExecutorService executorService) throws InterruptedException {
- List> todo = new ArrayList<>(workerCount);
- long startTime = System.currentTimeMillis();
- for (int i = 0; i < workerCount; i++) {
- todo.add(new OGNLWorker());
- }
- List> answers = executorService.invokeAll(todo);
- long totalTime = System.currentTimeMillis() - startTime;
- System.out.println("OGNL workers completed execution in " + totalTime + "ms");
- }
-
private static Event generateMockEvent(Profile mockProfile, Session mockSession) {
CustomItem sourceItem = new CustomItem();
sourceItem.setItemId(MOCK_ITEM_ID);
@@ -285,20 +202,4 @@ public Object call() {
}
}
- class OGNLWorker implements Callable
+
+ javax.ws.rs
+ javax.ws.rs-api
+ provided
+
- org.apache.cxf
- cxf-rt-frontend-jaxws
+ org.apache.commons
+ commons-lang3
provided
- org.apache.cxf
- cxf-rt-frontend-jaxrs
+ commons-beanutils
+ commons-beanutils
provided
- org.apache.cxf
- cxf-rt-transports-http
+ javax.validation
+ validation-api
+ provided
+
+
+
+ com.opencsv
+ opencsv
+
+
+
+ org.apache.karaf.jaas
+ org.apache.karaf.jaas.boot
+ provided
+
+
+
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-yaml
provided
com.fasterxml.jackson.jaxrs
jackson-jaxrs-json-provider
+ provided
com.fasterxml.jackson.core
@@ -96,33 +131,30 @@
jackson-annotations
provided
+
- org.apache.unomi
- unomi-persistence-spi
- ${project.version}
+ org.apache.cxf
+ cxf-rt-frontend-jaxrs
provided
- commons-lang
- commons-lang
- 2.6
+ org.apache.cxf
+ cxf-rt-transports-http
+ provided
org.apache.cxf
cxf-rt-rs-service-description-openapi-v3
- ${cxf.version}
provided
org.apache.cxf
cxf-rt-features-metrics
- ${cxf.version}
provided
org.apache.cxf
cxf-rt-features-logging
- ${cxf.version}
provided
@@ -130,25 +162,28 @@
cxf-rt-rs-security-cors
provided
+
- com.opencsv
- opencsv
- 3.10
-
-
- commons-beanutils
- commons-beanutils
-
-
- org.apache.karaf.jaas
- org.apache.karaf.jaas.boot
- ${version.karaf}
- provided
-
-
- javax.validation
- validation-api
+ org.slf4j
+ slf4j-api
provided
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+
+
+ *
+
+
+
+
+
+
diff --git a/rest/src/main/java/org/apache/unomi/rest/authentication/AuthenticationFilter.java b/rest/src/main/java/org/apache/unomi/rest/authentication/AuthenticationFilter.java
index 80fe76a81..119a556bd 100644
--- a/rest/src/main/java/org/apache/unomi/rest/authentication/AuthenticationFilter.java
+++ b/rest/src/main/java/org/apache/unomi/rest/authentication/AuthenticationFilter.java
@@ -24,7 +24,7 @@
import org.apache.karaf.jaas.boot.principal.RolePrincipal;
import org.apache.karaf.jaas.boot.principal.UserPrincipal;
-import javax.annotation.Priority;
+import jakarta.annotation.Priority;
import javax.security.auth.Subject;
import javax.ws.rs.Priorities;
import javax.ws.rs.container.ContainerRequestContext;
@@ -96,4 +96,4 @@ private boolean isPublicPath(ContainerRequestContext requestContext) {
String currentPath = requestContext.getMethod() + " " + requestContext.getUriInfo().getPath();
return restAuthenticationConfig.getPublicPathPatterns().stream().anyMatch(pattern -> pattern.matcher(currentPath).matches());
}
-}
\ No newline at end of file
+}
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/CampaignsServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/CampaignsServiceEndPoint.java
index 032dedd6f..0e23f67da 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/CampaignsServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/CampaignsServiceEndPoint.java
@@ -31,8 +31,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.Set;
@@ -40,7 +38,6 @@
/**
* A JAX-RS endpoint to manage {@link Campaign}s and related information.
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(
@@ -60,7 +57,6 @@ public CampaignsServiceEndPoint() {
LOGGER.info("Initializing campaigns service endpoint...");
}
- @WebMethod(exclude=true)
public void setGoalsService(GoalsService goalsService) {
this.goalsService = goalsService;
}
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/ClientEndpoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/ClientEndpoint.java
index 4f7fb1298..acc087cf9 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/ClientEndpoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/ClientEndpoint.java
@@ -29,15 +29,9 @@
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
-import javax.jws.WebService;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.GET;
-import javax.ws.rs.InternalServerErrorException;
-import javax.ws.rs.NotFoundException;
-import javax.ws.rs.OPTIONS;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
+import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import java.io.StringWriter;
@@ -49,7 +43,6 @@
/**
* A servlet filter to serve a context-specific Javascript containing the current request context object.
*/
-@WebService
@CrossOriginResourceSharing(allowAllOrigins = true, allowCredentials = true)
@Path("/")
@Component(service = ClientEndpoint.class, property = "osgi.jaxrs.resource=true")
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/ClusterServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/ClusterServiceEndPoint.java
index a2f9ddeb4..19fff95a5 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/ClusterServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/ClusterServiceEndPoint.java
@@ -26,8 +26,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
@@ -38,7 +36,6 @@
/**
* A JAX-RS endpoint to access information about the context server's cluster.
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(
allowAllOrigins = true,
@@ -59,12 +56,10 @@ public ClusterServiceEndPoint() {
LOGGER.info("Initializing cluster service endpoint...");
}
- @WebMethod(exclude = true)
public void setClusterService(ClusterService clusterService) {
this.clusterService = clusterService;
}
- @WebMethod(exclude = true)
public void setMessageContext(MessageContext messageContext) {
this.messageContext = messageContext;
}
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/ContextJsonEndpoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/ContextJsonEndpoint.java
index 1d50168b2..a50ea7592 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/ContextJsonEndpoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/ContextJsonEndpoint.java
@@ -23,7 +23,10 @@
import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
import org.apache.unomi.api.*;
import org.apache.unomi.api.conditions.Condition;
-import org.apache.unomi.api.services.*;
+import org.apache.unomi.api.services.PersonalizationService;
+import org.apache.unomi.api.services.PrivacyService;
+import org.apache.unomi.api.services.ProfileService;
+import org.apache.unomi.api.services.RulesService;
import org.apache.unomi.persistence.spi.CustomObjectMapper;
import org.apache.unomi.rest.exception.InvalidRequestException;
import org.apache.unomi.rest.service.RestServiceUtils;
@@ -34,7 +37,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebService;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -45,7 +47,6 @@
import java.util.*;
import java.util.stream.Collectors;
-@WebService
@Consumes(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(allowAllOrigins = true, allowCredentials = true)
@Path("/")
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/DefinitionsServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/DefinitionsServiceEndPoint.java
index 37353d2f1..a44655127 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/DefinitionsServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/DefinitionsServiceEndPoint.java
@@ -31,8 +31,6 @@
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.*;
@@ -40,7 +38,6 @@
/**
* A JAX-RS endpoint to retrieve definition information about core context server entities such as conditions, actions and values.
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8")
@CrossOriginResourceSharing(
allowAllOrigins = true,
@@ -55,12 +52,10 @@ public class DefinitionsServiceEndPoint {
@Reference
private LocalizationHelper localizationHelper;
- @WebMethod(exclude = true)
public void setDefinitionsService(DefinitionsService definitionsService) {
this.definitionsService = definitionsService;
}
- @WebMethod(exclude = true)
public void setLocalizationHelper(LocalizationHelper localizationHelper) {
this.localizationHelper = localizationHelper;
}
@@ -290,7 +285,6 @@ public Map> getTypesByPlugin() {
return definitionsService.getTypesByPlugin();
}
- @WebMethod(exclude = true)
public PropertyMergeStrategyType getPropertyMergeStrategyType(String id) {
return definitionsService.getPropertyMergeStrategyType(id);
}
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/EventServiceEndpoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/EventServiceEndpoint.java
index f1bac4d1f..46c0c2c39 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/EventServiceEndpoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/EventServiceEndpoint.java
@@ -24,20 +24,13 @@
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
+import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.Set;
/**
* A JAX-RS endpoint to access information about the context server's events.
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(
allowAllOrigins = true,
@@ -50,7 +43,6 @@ public class EventServiceEndpoint {
@Reference
private EventService eventService;
- @WebMethod(exclude = true)
public void setEventService(EventService eventService) {
this.eventService = eventService;
}
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/EventsCollectorEndpoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/EventsCollectorEndpoint.java
index c9b3109dd..6ab08e084 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/EventsCollectorEndpoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/EventsCollectorEndpoint.java
@@ -28,23 +28,15 @@
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
-import javax.jws.WebService;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.OPTIONS;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
+import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.Date;
import java.util.List;
-@WebService
@Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8")
@Consumes(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(allowAllOrigins = true, allowCredentials = true)
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/GoalsServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/GoalsServiceEndPoint.java
index 936986a76..68121e62e 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/GoalsServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/GoalsServiceEndPoint.java
@@ -28,8 +28,6 @@
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.Set;
@@ -37,7 +35,6 @@
/**
* A JAX-RS endpoint to manage {@link Goal}s and related information.
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(
@@ -51,7 +48,6 @@ public class GoalsServiceEndPoint {
@Reference
private GoalsService goalsService;
- @WebMethod(exclude = true)
public void setGoalsService(GoalsService goalsService) {
this.goalsService = goalsService;
}
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/PatchServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/PatchServiceEndPoint.java
index 338bf4189..3f6d81f68 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/PatchServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/PatchServiceEndPoint.java
@@ -23,14 +23,12 @@
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
-import javax.jws.WebService;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
/**
* A JAX-RS endpoint to manage patches.
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/ProfileServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/ProfileServiceEndPoint.java
index 2c9d040b9..7461965b4 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/ProfileServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/ProfileServiceEndPoint.java
@@ -17,7 +17,7 @@
package org.apache.unomi.rest.endpoints;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
import org.apache.unomi.api.*;
import org.apache.unomi.api.conditions.Condition;
@@ -32,8 +32,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
@@ -47,7 +45,6 @@
/**
* A JAX-RS endpoint to manage {@link Profile}s and {@link Persona}s.
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(
@@ -76,22 +73,18 @@ public ProfileServiceEndPoint() {
LOGGER.info("Initializing profile service endpoint...");
}
- @WebMethod(exclude = true)
public void setProfileService(ProfileService profileService) {
this.profileService = profileService;
}
- @WebMethod(exclude = true)
public void setEventService(EventService eventService) {
this.eventService = eventService;
}
- @WebMethod(exclude = true)
public void setSegmentService(SegmentService segmentService) {
this.segmentService = segmentService;
}
- @WebMethod(exclude = true)
public void setLocalizationHelper(LocalizationHelper localizationHelper) {
this.localizationHelper = localizationHelper;
}
@@ -439,12 +432,10 @@ public PartialList getSessionEvents(@PathParam("sessionId") String sessio
return eventService.searchEvents(sessionId, eventTypes, query, offset, size, sortBy);
}
- @WebMethod(exclude = true)
public PartialList findProfileSessions(String profileId) {
return null;
}
- @WebMethod(exclude = true)
public boolean matchCondition(Condition condition, Profile profile, Session session) {
return profileService.matchCondition(condition, profile, session);
}
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/QueryServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/QueryServiceEndPoint.java
index 8b2b2a7c1..56168259d 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/QueryServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/QueryServiceEndPoint.java
@@ -28,8 +28,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
@@ -40,7 +38,6 @@
/**
* A JAX-RS endpoint to perform queries against context-server data.
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(
@@ -58,13 +55,10 @@ public class QueryServiceEndPoint {
@Reference
private LocalizationHelper localizationHelper;
- @WebMethod(exclude = true)
public void setQueryService(QueryService queryService) {
this.queryService = queryService;
}
-
- @WebMethod(exclude = true)
public void setLocalizationHelper(LocalizationHelper localizationHelper) {
this.localizationHelper = localizationHelper;
}
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/RulesServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/RulesServiceEndPoint.java
index f204a3929..657ea7bc2 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/RulesServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/RulesServiceEndPoint.java
@@ -29,8 +29,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.Map;
@@ -39,7 +37,6 @@
/**
* A JAX-RS endpoint to manage {@link Rule}s.
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(
@@ -59,7 +56,6 @@ public RulesServiceEndPoint() {
LOGGER.info("Initializing rule service endpoint...");
}
- @WebMethod(exclude=true)
public void setRulesService(RulesService rulesService) {
this.rulesService = rulesService;
}
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/ScopeServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/ScopeServiceEndPoint.java
index a9dc82041..6ec5a054a 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/ScopeServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/ScopeServiceEndPoint.java
@@ -25,15 +25,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
+import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.List;
@@ -41,7 +33,6 @@
/**
* A JAX-RS endpoint to manage {@link org.apache.unomi.api.Scope}s.
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(allowAllOrigins = true, allowCredentials = true)
@@ -58,7 +49,6 @@ public ScopeServiceEndPoint() {
LOGGER.info("Initializing scope service endpoint...");
}
- @WebMethod(exclude = true)
public void setScopeService(ScopeService scopeService) {
this.scopeService = scopeService;
}
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/ScoringServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/ScoringServiceEndPoint.java
index 2c4dda495..471e419e0 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/ScoringServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/ScoringServiceEndPoint.java
@@ -30,8 +30,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.List;
@@ -39,7 +37,6 @@
/**
* A JAX-RS endpoint to manage {@link Scoring}s
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(
@@ -59,7 +56,6 @@ public ScoringServiceEndPoint() {
LOGGER.info("Initializing scoring service endpoint...");
}
- @WebMethod(exclude = true)
public void setSegmentService(SegmentService segmentService) {
this.segmentService = segmentService;
}
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/SegmentServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/SegmentServiceEndPoint.java
index d987f2b03..24f4d8878 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/SegmentServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/SegmentServiceEndPoint.java
@@ -30,8 +30,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.List;
@@ -39,7 +37,6 @@
/**
* A JAX-RS endpoint to manage {@link Segment}s.
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(
@@ -59,7 +56,6 @@ public SegmentServiceEndPoint() {
LOGGER.info("Initializing segment service endpoint...");
}
- @WebMethod(exclude=true)
public void setSegmentService(SegmentService segmentService) {
this.segmentService = segmentService;
}
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/TestEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/TestEndPoint.java
new file mode 100644
index 000000000..ea013e12d
--- /dev/null
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/TestEndPoint.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.unomi.rest.endpoints;
+
+import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
+import org.osgi.service.component.annotations.Component;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+/**
+ * @author Jerome Blanchard
+ */
+@Produces(MediaType.TEXT_PLAIN + ";charset=UTF-8")
+@Path("/test")
+@CrossOriginResourceSharing(allowAllOrigins = true, allowCredentials = true)
+@Component(service = TestEndPoint.class, property = "osgi.jaxrs.resource=true")
+public class TestEndPoint {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(TestEndPoint.class.getName());
+
+ public TestEndPoint() {
+ LOGGER.info("TestEndPoint initialized.");
+ }
+
+ @GET
+ @Path("/ping")
+ public String ping() {
+ LOGGER.info("Ping received.");
+ return "pong";
+ }
+}
diff --git a/rest/src/main/java/org/apache/unomi/rest/endpoints/UserListServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/endpoints/UserListServiceEndPoint.java
index 910f7564f..bbb12496f 100644
--- a/rest/src/main/java/org/apache/unomi/rest/endpoints/UserListServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/endpoints/UserListServiceEndPoint.java
@@ -30,8 +30,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.List;
@@ -39,7 +37,6 @@
/**
* A JAX-RS endpoint to manage {@link UserList}s.
*/
-@WebService
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@CrossOriginResourceSharing(
@@ -59,7 +56,6 @@ public UserListServiceEndPoint() {
LOGGER.info("Initializing user lists service endpoint...");
}
- @WebMethod(exclude=true)
public void setUserListService(UserListService userListService) {
this.userListService = userListService;
}
diff --git a/rest/src/main/java/org/apache/unomi/rest/exception/RuntimeExceptionMapper.java b/rest/src/main/java/org/apache/unomi/rest/exception/RuntimeExceptionMapper.java
index 69cb70813..c505d57d4 100644
--- a/rest/src/main/java/org/apache/unomi/rest/exception/RuntimeExceptionMapper.java
+++ b/rest/src/main/java/org/apache/unomi/rest/exception/RuntimeExceptionMapper.java
@@ -16,7 +16,7 @@
*/
package org.apache.unomi.rest.exception;
-import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.lang3.ArrayUtils;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/rest/src/main/java/org/apache/unomi/rest/server/RestServer.java b/rest/src/main/java/org/apache/unomi/rest/server/RestServer.java
index 1f49acd13..1ec0c2a36 100644
--- a/rest/src/main/java/org/apache/unomi/rest/server/RestServer.java
+++ b/rest/src/main/java/org/apache/unomi/rest/server/RestServer.java
@@ -27,6 +27,7 @@
import org.apache.cxf.jaxrs.openapi.OpenApiFeature;
import org.apache.cxf.jaxrs.security.SimpleAuthorizingFilter;
import org.apache.cxf.message.Message;
+import org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter;
import org.apache.unomi.api.ContextRequest;
import org.apache.unomi.api.EventsCollectorRequest;
import org.apache.unomi.api.services.ConfigSharingService;
@@ -56,6 +57,7 @@
import javax.xml.namespace.QName;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.stream.Collectors;
@Component
public class RestServer {
@@ -166,6 +168,7 @@ public void deactivate() throws Exception {
}
private synchronized void refreshServer() {
+ LOGGER.info("Refreshing JAX RS server...");
long now = System.currentTimeMillis();
LOGGER.info("Time (millis) since last update: {}", now - timeOfLastUpdate);
if (now - timeOfLastUpdate < startupDelay) {
@@ -204,14 +207,13 @@ public void run() {
desers.put(ContextRequest.class, new ContextRequestDeserializer(schemaService));
desers.put(EventsCollectorRequest.class, new EventsCollectorRequestDeserializer(schemaService));
-
// Build the server
ObjectMapper objectMapper = new org.apache.unomi.persistence.spi.CustomObjectMapper(desers);
JAXRSServerFactoryBean jaxrsServerFactoryBean = new JAXRSServerFactoryBean();
jaxrsServerFactoryBean.setAddress("/");
jaxrsServerFactoryBean.setBus(serverBus);
jaxrsServerFactoryBean.setProvider(new JacksonJaxbJsonProvider(objectMapper, JacksonJaxbJsonProvider.DEFAULT_ANNOTATIONS));
- jaxrsServerFactoryBean.setProvider(new org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter());
+ jaxrsServerFactoryBean.setProvider(new CrossOriginResourceSharingFilter());
jaxrsServerFactoryBean.setProvider(new RetroCompatibilityParamConverterProvider(objectMapper));
// Authentication filter (used for authenticating user from request)
@@ -233,8 +235,7 @@ public void run() {
openApiFeature.setLicense("Apache 2.0 License");
openApiFeature.setLicenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html");
openApiFeature.setScan(false);
- openApiFeature.setUseContextBasedConfig(
- true); //Set resourceClasses = serviceBeans.stream().map(service -> service.getClass().getName()).collect(toSet());
+ openApiFeature.setUseContextBasedConfig(true);
OpenApiCustomizer customizer = new OpenApiCustomizer();
customizer.setDynamicBasePath(true);
openApiFeature.setCustomizer(customizer);
diff --git a/samples/graphql-providers-feature/pom.xml b/samples/graphql-providers-feature/pom.xml
index 7a6475aaf..bb4249c70 100644
--- a/samples/graphql-providers-feature/pom.xml
+++ b/samples/graphql-providers-feature/pom.xml
@@ -17,35 +17,43 @@
-->
+ 4.0.0
- samples
org.apache.unomi
- 2.7.0-SNAPSHOT
+ samples
+ 3.0.0-SNAPSHOT
-
graphql-providers-sample-feature
Apache Unomi :: Samples :: Graphql Providers :: Karaf Feature
This is a simple Apache Unomi plugin.
- 4.0.0
- feature
+ pom
+
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
compile
org.apache.unomi
cdp-graphql-api-impl
- ${project.version}
compile
org.apache.unomi
graphql-providers-sample
- ${project.version}
compile
@@ -61,13 +69,23 @@
org.apache.karaf.tooling
karaf-maven-plugin
- ${version.karaf}
+ ${karaf.version}
true
80
true
true
+ true
+
+
+ generate-features
+ generate-resources
+
+ features-generate-descriptor
+
+
+
diff --git a/samples/graphql-providers/pom.xml b/samples/graphql-providers/pom.xml
index 0d9fc89b2..4fc6aac93 100644
--- a/samples/graphql-providers/pom.xml
+++ b/samples/graphql-providers/pom.xml
@@ -17,47 +17,56 @@
-->
+ 4.0.0
- samples
org.apache.unomi
- 2.7.0-SNAPSHOT
+ samples
+ 3.0.0-SNAPSHOT
-
graphql-providers-sample
Apache Unomi :: Samples :: Graphql Providers
This is a simple Apache Unomi plugin.
- 4.0.0
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
org.apache.unomi
cdp-graphql-api-impl
- ${project.version}
- provided
-
-
- io.github.graphql-java
- graphql-java-annotations
- ${graphql.java.annotations.version}
provided
+
org.osgi
osgi.enterprise
- 6.0.0
provided
org.osgi
osgi.core
- 6.0.0
+ provided
+
+
+
+ io.github.graphql-java
+ graphql-java-annotations
+ ${graphql.java.annotations.version}
provided
diff --git a/samples/groovy-actions/pom.xml b/samples/groovy-actions/pom.xml
index c9f07a5d1..68cf87550 100644
--- a/samples/groovy-actions/pom.xml
+++ b/samples/groovy-actions/pom.xml
@@ -19,21 +19,31 @@
4.0.0
- samples
org.apache.unomi
- 2.7.0-SNAPSHOT
+ samples
+ 3.0.0-SNAPSHOT
-
test-groovy-action-sample
Apache Unomi :: Samples :: Test Groovy Action
- bundle
This is a simple Apache Unomi plugin that demonstrate how to define and use a Groovy Action
+ bundle
+
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
diff --git a/samples/login-integration/pom.xml b/samples/login-integration/pom.xml
index 5dde3922d..5ccc86689 100644
--- a/samples/login-integration/pom.xml
+++ b/samples/login-integration/pom.xml
@@ -19,21 +19,31 @@
4.0.0
- samples
org.apache.unomi
- 2.7.0-SNAPSHOT
+ samples
+ 3.0.0-SNAPSHOT
-
login-integration-sample
Apache Unomi :: Samples :: External Login plugin
- bundle
This is a simple Apache Unomi plugin.
+ bundle
+
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
diff --git a/samples/pom.xml b/samples/pom.xml
index 2ae966fd2..9c6c1c720 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -16,20 +16,16 @@
~ limitations under the License.
-->
+ 4.0.0
unomi-root
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
- 4.0.0
-
-
- 8.0
-
-
samples
Apache Unomi :: Samples
pom
+
tweet-button-plugin
login-integration
@@ -38,5 +34,4 @@
graphql-providers
graphql-providers-feature
-
diff --git a/samples/trainingplugin/pom.xml b/samples/trainingplugin/pom.xml
index 8b648f1e2..476f4ac40 100644
--- a/samples/trainingplugin/pom.xml
+++ b/samples/trainingplugin/pom.xml
@@ -16,22 +16,33 @@
~ limitations under the License.
-->
+ 4.0.0
- samples
org.apache.unomi
- 2.7.0-SNAPSHOT
+ samples
+ 3.0.0-SNAPSHOT
training-plugin
Apache Unomi :: Samples :: Training plugin
- bundle
This is a simple Apache Unomi plugin.
- 4.0.0
+ bundle
+
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
org.apache.unomi
unomi-api
- 2.7.0-SNAPSHOT
provided
@@ -43,7 +54,6 @@
true
-
diff --git a/samples/trainingplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/samples/trainingplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 01ae5ab93..7a536af12 100644
--- a/samples/trainingplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/samples/trainingplugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -18,7 +18,7 @@
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
diff --git a/samples/tweet-button-plugin/pom.xml b/samples/tweet-button-plugin/pom.xml
index 6664bb79b..02de7d9b6 100644
--- a/samples/tweet-button-plugin/pom.xml
+++ b/samples/tweet-button-plugin/pom.xml
@@ -19,21 +19,31 @@
4.0.0
- samples
org.apache.unomi
- 2.7.0-SNAPSHOT
+ samples
+ 3.0.0-SNAPSHOT
-
tweet-button-plugin
Apache Unomi :: Samples :: Tweet Button plugin
- bundle
This is a simple Apache Unomi plugin.
+ bundle
+
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
diff --git a/samples/tweet-button-plugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/samples/tweet-button-plugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 0059ec7b1..9acae1583 100644
--- a/samples/tweet-button-plugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/samples/tweet-button-plugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -18,7 +18,7 @@
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
diff --git a/scripting/pom.xml b/scripting/pom.xml
index a4569828a..800f0481c 100644
--- a/scripting/pom.xml
+++ b/scripting/pom.xml
@@ -18,61 +18,74 @@
4.0.0
-
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-scripting
Apache Unomi :: Scripting Services
Scripting services used in the Apache Unomi Context server
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
- junit
- junit
- test
+ org.osgi
+ osgi.core
+ provided
+
+
+ org.slf4j
+ slf4j-api
+ provided
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ provided
-
org.mvel
mvel2
-
org.apache.commons
commons-lang3
+ provided
+
+
+ org.slf4j
+ slf4j-api
+ provided
+
+ junit
+ junit
+ test
+
org.apache.unomi
unomi-api
- 2.7.0-SNAPSHOT
test
-
org.slf4j
slf4j-simple
- 1.7.36
test
-
-
- org.osgi
- osgi.core
- provided
-
-
-
- com.fasterxml.jackson.core
- jackson-databind
- provided
-
-
diff --git a/scripting/src/main/java/org/apache/unomi/scripting/ExpressionFilterFactory.java b/scripting/src/main/java/org/apache/unomi/scripting/ExpressionFilterFactory.java
index 67bcc7abe..ec92882d9 100644
--- a/scripting/src/main/java/org/apache/unomi/scripting/ExpressionFilterFactory.java
+++ b/scripting/src/main/java/org/apache/unomi/scripting/ExpressionFilterFactory.java
@@ -23,7 +23,7 @@ public interface ExpressionFilterFactory {
/**
* Retrieve an expression filter for the specified filterCollection identifier.
- * @param filterCollection a filter collection identifier, typically something like "mvel", "ognl"
+ * @param filterCollection a filter collection identifier, typically something like "mvel"
* @return an instance of a ExpressionFilter with the configuration retrieved for the specified collection identifier
*/
ExpressionFilter getExpressionFilter(String filterCollection);
diff --git a/scripting/src/main/java/org/apache/unomi/scripting/SecureFilteringClassLoader.java b/scripting/src/main/java/org/apache/unomi/scripting/SecureFilteringClassLoader.java
index 4af57e1a3..6f59ca16f 100644
--- a/scripting/src/main/java/org/apache/unomi/scripting/SecureFilteringClassLoader.java
+++ b/scripting/src/main/java/org/apache/unomi/scripting/SecureFilteringClassLoader.java
@@ -22,7 +22,7 @@
/**
* A class loader that uses a allow list and a deny list of classes that it will allow to resolve. This is useful for providing proper
- * sandboxing to scripting engine such as MVEL, OGNL or Groovy.
+ * sandboxing to scripting engine such as MVEL or Groovy.
*/
public class SecureFilteringClassLoader extends ClassLoader {
@@ -34,7 +34,7 @@ public class SecureFilteringClassLoader extends ClassLoader {
static {
String systemAllowedClasses = System.getProperty("org.apache.unomi.scripting.allow",
- "org.apache.unomi.api.Event,org.apache.unomi.api.Profile,org.apache.unomi.api.Session,org.apache.unomi.api.Item,org.apache.unomi.api.CustomItem,ognl.*,java.lang.Object,java.util.Map,java.util.HashMap,java.lang.Integer,org.mvel2.*,java.lang.String");
+ "org.apache.unomi.api.Event,org.apache.unomi.api.Profile,org.apache.unomi.api.Session,org.apache.unomi.api.Item,org.apache.unomi.api.CustomItem,java.lang.Object,java.util.Map,java.util.HashMap,java.lang.Integer,org.mvel2.*,java.lang.String");
if (systemAllowedClasses != null) {
if ("all".equals(systemAllowedClasses.trim())) {
defaultAllowedClasses = null;
diff --git a/scripting/src/main/java/org/apache/unomi/scripting/internal/ExpressionFilterFactoryImpl.java b/scripting/src/main/java/org/apache/unomi/scripting/internal/ExpressionFilterFactoryImpl.java
index bb98e6541..cdfd6f4d9 100644
--- a/scripting/src/main/java/org/apache/unomi/scripting/internal/ExpressionFilterFactoryImpl.java
+++ b/scripting/src/main/java/org/apache/unomi/scripting/internal/ExpressionFilterFactoryImpl.java
@@ -56,7 +56,7 @@ public ExpressionFilterFactoryImpl() {
}
public void init() {
- String initialFilterCollections = System.getProperty("org.apache.unomi.scripting.filter.collections", "mvel,ognl");
+ String initialFilterCollections = System.getProperty("org.apache.unomi.scripting.filter.collections", "mvel");
String[] initialFilterCollectionParts = initialFilterCollections.split(",");
if (initialFilterCollectionParts != null) {
for (String initialFilterCollection : initialFilterCollectionParts) {
diff --git a/scripting/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/scripting/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index f4a72889a..169edaacf 100644
--- a/scripting/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/scripting/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -17,10 +17,8 @@
-->
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
diff --git a/services/pom.xml b/services/pom.xml
index c9fb46411..577590bcc 100644
--- a/services/pom.xml
+++ b/services/pom.xml
@@ -18,78 +18,78 @@
4.0.0
-
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-services
Apache Unomi :: Core Services
Apache Unomi Context Server Core Services
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.unomi
unomi-api
- ${project.version}
provided
-
- org.osgi
- osgi.core
+ org.apache.unomi
+ unomi-metrics
provided
-
- org.osgi
- osgi.cmpn
+ org.apache.unomi
+ unomi-common
provided
-
org.apache.unomi
unomi-persistence-spi
- ${project.version}
provided
org.apache.unomi
unomi-lifecycle-watcher
- ${project.version}
provided
-
- javax.servlet
- javax.servlet-api
+ org.apache.unomi
+ unomi-scripting
provided
- org.apache.cxf
- cxf-rt-frontend-jaxrs
+ org.osgi
+ osgi.core
provided
- org.apache.cxf
- cxf-rt-transports-http
+ org.osgi
+ org.osgi.service.cm
provided
-
- net.jodah
- failsafe
- 2.4.0
+ javax.servlet
+ javax.servlet-api
+ provided
-
- com.github.fge
+ com.github.java-json-tools
json-patch
- ${json-patch.version}
provided
@@ -102,7 +102,6 @@
jackson-databind
provided
-
com.fasterxml.jackson.module
jackson-module-jaxb-annotations
@@ -112,52 +111,39 @@
org.apache.commons
commons-lang3
+ provided
commons-beanutils
commons-beanutils
-
-
-
- org.apache.unomi
- unomi-metrics
- ${project.version}
provided
-
- org.apache.unomi
- unomi-common
- ${project.version}
+ org.slf4j
+ slf4j-api
provided
com.github.seancfoley
ipaddress
- 4.3.0
+
+
+ net.jodah
+ failsafe
-
+
junit
junit
- 4.11
test
org.slf4j
slf4j-simple
- 1.7.36
test
-
-
- org.apache.unomi
- unomi-scripting
- ${project.version}
- provided
-
diff --git a/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index bf64a77d7..36218d094 100644
--- a/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -17,10 +17,10 @@
-->
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0 https://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.3.0.xsd">
@@ -67,8 +67,7 @@
-
+
diff --git a/setenv.sh b/setenv.sh
index 8a14e8d34..dd042c07f 100755
--- a/setenv.sh
+++ b/setenv.sh
@@ -19,6 +19,6 @@
################################################################################
export UNOMI_VERSION=`mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep -Ev '(^\[|Download\w+:)'`
echo Detected project version=$UNOMI_VERSION
-export KARAF_VERSION=3.0.2
+export KARAF_VERSION=4.4.8
# Uncomment the following line if you need Apache Unomi to start automatically at the first start
# export KARAF_OPTS="-Dunomi.autoStart=true"
diff --git a/tools/pom.xml b/tools/pom.xml
index 41b1b3e01..a6411b948 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -17,16 +17,14 @@
-->
4.0.0
-
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-tools
Apache Unomi :: Tools
- Apache Unomi Context Server tools
+ Apache Unomi Context Server commands
pom
diff --git a/tools/shell-commands/pom.xml b/tools/shell-commands/pom.xml
index 707c9f806..4cb1fd39b 100644
--- a/tools/shell-commands/pom.xml
+++ b/tools/shell-commands/pom.xml
@@ -17,26 +17,34 @@
-->
4.0.0
-
unomi-tools
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
shell-commands
Apache Unomi :: Tools :: Shell commands
Provides the shell commands to interact with Apache Unomi Context Server
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
org.apache.karaf.shell
org.apache.karaf.shell.console
- ${version.karaf}
provided
-
org.apache.httpcomponents
httpclient-osgi
@@ -45,68 +53,74 @@
- org.apache.commons
- commons-lang3
+ org.osgi
+ osgi.core
+ provided
-
- commons-io
- commons-io
+ org.osgi
+ org.osgi.service.http
provided
-
- org.json
- json
+ org.osgi
+ org.osgi.service.useradmin
+ 1.1.0
provided
-
org.osgi
- osgi.core
+ org.osgi.service.component
provided
-
org.osgi
- osgi.cmpn
+ org.osgi.service.component.annotations
provided
- junit
- junit
- 4.13.2
- test
+ org.apache.commons
+ commons-lang3
+ provided
-
- org.apache.groovy
- groovy
- ${groovy.version}
+ commons-io
+ commons-io
provided
-
- org.apache.groovy
- groovy-json
- ${groovy.version}
+ org.json
+ json
provided
-
com.fasterxml.jackson.core
jackson-core
- ${version.jackson.core}
provided
-
com.fasterxml.jackson.core
jackson-databind
- ${version.jackson.databind}
provided
+
+
+ org.apache.groovy
+ groovy
+ provided
+
+
+ org.apache.groovy
+ groovy-json
+ provided
+
+
+
+ junit
+ junit
+ test
+
@@ -116,10 +130,6 @@
maven-bundle-plugin
-
- sun.nio.ch;resolution:=optional,
- *
-
org.apache.unomi.shell.migration.utils,
org.apache.unomi.shell.migration.service,
diff --git a/tools/shell-dev-commands/pom.xml b/tools/shell-dev-commands/pom.xml
index d47ab9d75..df3ba175a 100644
--- a/tools/shell-dev-commands/pom.xml
+++ b/tools/shell-dev-commands/pom.xml
@@ -17,93 +17,93 @@
-->
4.0.0
-
unomi-tools
org.apache.unomi
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
shell-dev-commands
Apache Unomi :: Tools :: Shell Dev commands
Provides the shell developer commands to interact with Apache Unomi Context Server
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
- org.apache.karaf.shell
- org.apache.karaf.shell.console
- ${version.karaf}
+ org.apache.unomi
+ unomi-api
provided
-
- org.apache.karaf.shell
- org.apache.karaf.shell.table
- ${version.karaf}
+ org.apache.unomi
+ unomi-persistence-spi
provided
-
org.apache.unomi
- unomi-api
- ${project.version}
+ unomi-common
provided
- com.fasterxml.jackson.core
- jackson-core
+ org.osgi
+ osgi.core
provided
- com.fasterxml.jackson.core
- jackson-databind
+ org.osgi
+ org.osgi.service.component.annotations
provided
- org.apache.unomi
- unomi-persistence-spi
- ${project.version}
+ org.apache.karaf.shell
+ org.apache.karaf.shell.console
provided
-
- org.apache.httpcomponents
- httpclient-osgi
- bundle
+ org.apache.karaf.shell
+ org.apache.karaf.shell.table
provided
- org.apache.commons
- commons-lang3
+ com.fasterxml.jackson.core
+ jackson-core
+ provided
-
- org.osgi
- osgi.core
+ com.fasterxml.jackson.core
+ jackson-databind
provided
- org.osgi
- osgi.cmpn
+ org.apache.httpcomponents
+ httpclient-osgi
+ bundle
provided
-
- org.apache.unomi
- unomi-common
- ${project.version}
+ org.apache.commons
+ commons-lang3
provided
junit
junit
- 4.13.2
test
diff --git a/wab/pom.xml b/wab/pom.xml
index f72628870..0474a14fc 100644
--- a/wab/pom.xml
+++ b/wab/pom.xml
@@ -18,88 +18,135 @@
4.0.0
-
org.apache.unomi
unomi-root
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
-
unomi-wab
Apache Unomi :: Core Web Application
Apache Unomi Context Server Core Web application
bundle
+
+
+
+ org.apache.unomi
+ unomi-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
- javax.servlet
- javax.servlet-api
+ org.apache.unomi
+ unomi-api
provided
- commons-io
- commons-io
+ org.apache.unomi
+ unomi-persistence-spi
+ provided
+
- org.apache.commons
- commons-lang3
+ org.osgi
+ org.osgi.framework
+ provided
- org.apache.unomi
- unomi-api
- ${project.version}
+ org.osgi
+ org.osgi.util.tracker
provided
- org.apache.unomi
- unomi-persistence-spi
- ${project.version}
+ org.osgi
+ org.osgi.service.component
provided
-
- com.fasterxml.jackson.core
- jackson-databind
- provided
+ org.osgi
+ org.osgi.service.component.annotations
+ provided
- com.fasterxml.jackson.dataformat
- jackson-dataformat-yaml
- ${version.jackson.core}
+ org.osgi
+ org.osgi.service.metatype
provided
- org.yaml
- snakeyaml
- 2.2
+ org.osgi
+ org.osgi.service.metatype.annotations
+ provided
-
- com.opencsv
- opencsv
- 3.10
+ javax.servlet
+ javax.servlet-api
+ provided
- commons-beanutils
- commons-beanutils
+ com.fasterxml.jackson.core
+ jackson-databind
+ provided
-
-
- com.fasterxml.jackson.core
- jackson-annotations
- provided
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-yaml
+ provided
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ provided
- com.fasterxml.jackson.core
- jackson-core
- provided
+ com.fasterxml.jackson.core
+ jackson-core
+ provided
org.ops4j.pax.web
pax-web-api
provided
+
+ commons-io
+ commons-io
+ provided
+
+
+ commons-collections
+ commons-collections
+ provided
+
+
+ org.apache.commons
+ commons-lang3
+ provided
+
+
+ org.yaml
+ snakeyaml
+ provided
+
+
+ commons-beanutils
+ commons-beanutils
+ provided
+
+
+ org.slf4j
+ slf4j-api
+ provided
+
+
+
+ com.opencsv
+ opencsv
+
@@ -113,15 +160,6 @@
<_wab>src/main/webapp
*;scope=compile|runtime
WEB-INF/lib
-
- org.apache.unomi.api,
- org.apache.unomi.api.conditions,
- org.apache.unomi.api.segments,
- org.apache.unomi.api.rules,
- org.apache.unomi.api.query,
- sun.nio.ch;resolution:=optional,
- *
-
/
diff --git a/wab/src/main/java/org/apache/unomi/web/ClientServlet.java b/wab/src/main/java/org/apache/unomi/web/ClientServlet.java
index 80a0a1910..94850e6ad 100644
--- a/wab/src/main/java/org/apache/unomi/web/ClientServlet.java
+++ b/wab/src/main/java/org/apache/unomi/web/ClientServlet.java
@@ -17,12 +17,12 @@
package org.apache.unomi.web;
-import org.apache.unomi.api.services.ConfigSharingService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -33,26 +33,20 @@
* A servlet filter to serve a context-specific Javascript containing the current request context object.
*/
@Deprecated
+@WebServlet(name = "ClientServlet", urlPatterns = "/client/*")
public class ClientServlet extends HttpServlet {
private static final Logger LOGGER = LoggerFactory.getLogger(ClientServlet.class.getName());
- private static final long serialVersionUID = 2928875960103325238L;
-
- private String allowedProfileDownloadFormats;
-
- private ConfigSharingService configSharingService;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
- configSharingService.setProperty("allowedProfileDownloadFormats", allowedProfileDownloadFormats);
LOGGER.info("ClientServlet initialized.");
}
@Override
public void destroy() {
super.destroy();
-
LOGGER.info("Client servlet shutdown.");
}
@@ -61,11 +55,4 @@ protected void service(HttpServletRequest request, HttpServletResponse response)
HttpServletRequestForwardWrapper.forward(request, response);
}
- public void setConfigSharingService(ConfigSharingService configSharingService) {
- this.configSharingService = configSharingService;
- }
-
- public void setAllowedProfileDownloadFormats(String allowedProfileDownloadFormats) {
- this.allowedProfileDownloadFormats = allowedProfileDownloadFormats;
- }
}
diff --git a/wab/src/main/java/org/apache/unomi/web/ContextServlet.java b/wab/src/main/java/org/apache/unomi/web/ContextServlet.java
index 785a80a24..6c04f60b6 100644
--- a/wab/src/main/java/org/apache/unomi/web/ContextServlet.java
+++ b/wab/src/main/java/org/apache/unomi/web/ContextServlet.java
@@ -17,12 +17,12 @@
package org.apache.unomi.web;
-import org.apache.unomi.api.services.ConfigSharingService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -33,28 +33,19 @@
* A servlet filter to serve a context-specific Javascript containing the current request context object.
*/
@Deprecated
+@WebServlet(name = "ContextServlet", urlPatterns = {"/context.json", "/context.js"})
public class ContextServlet extends HttpServlet {
- private static final long serialVersionUID = 2928875830103325238L;
- private static final Logger LOGGER = LoggerFactory.getLogger(ContextServlet.class.getName());
-
- private static final int MAX_COOKIE_AGE_IN_SECONDS = 60 * 60 * 24 * 365; // 1 year
- private String profileIdCookieName = "context-profile-id";
- private String profileIdCookieDomain;
- private int profileIdCookieMaxAgeInSeconds = MAX_COOKIE_AGE_IN_SECONDS;
- private boolean profileIdCookieHttpOnly = false;
- private int publicPostRequestBytesLimit = 200000;
+ private static final Logger LOGGER = LoggerFactory.getLogger(ContextServlet.class.getName());
- private ConfigSharingService configSharingService;
+ public ContextServlet() {
+ super();
+ LOGGER.info("ContextServlet created.");
+ }
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
- configSharingService.setProperty("profileIdCookieName", profileIdCookieName);
- configSharingService.setProperty("profileIdCookieDomain", profileIdCookieDomain);
- configSharingService.setProperty("profileIdCookieMaxAgeInSeconds", profileIdCookieMaxAgeInSeconds);
- configSharingService.setProperty("profileIdCookieHttpOnly", profileIdCookieHttpOnly);
- configSharingService.setProperty("publicPostRequestBytesLimit", publicPostRequestBytesLimit);
LOGGER.info("ContextServlet initialized.");
}
@@ -68,27 +59,4 @@ public void destroy() {
LOGGER.info("Context servlet shutdown.");
}
- public void setProfileIdCookieDomain(String profileIdCookieDomain) {
- this.profileIdCookieDomain = profileIdCookieDomain;
- }
-
- public void setProfileIdCookieName(String profileIdCookieName) {
- this.profileIdCookieName = profileIdCookieName;
- }
-
- public void setProfileIdCookieMaxAgeInSeconds(int profileIdCookieMaxAgeInSeconds) {
- this.profileIdCookieMaxAgeInSeconds = profileIdCookieMaxAgeInSeconds;
- }
-
- public void setProfileIdCookieHttpOnly(boolean profileIdCookieHttpOnly) {
- this.profileIdCookieHttpOnly = profileIdCookieHttpOnly;
- }
-
- public void setPublicPostRequestBytesLimit(int publicPostRequestBytesLimit) {
- this.publicPostRequestBytesLimit = publicPostRequestBytesLimit;
- }
-
- public void setConfigSharingService(ConfigSharingService configSharingService) {
- this.configSharingService = configSharingService;
- }
}
diff --git a/wab/src/main/java/org/apache/unomi/web/EventsCollectorServlet.java b/wab/src/main/java/org/apache/unomi/web/EventsCollectorServlet.java
index 14ca67c3c..bb72b2cb2 100644
--- a/wab/src/main/java/org/apache/unomi/web/EventsCollectorServlet.java
+++ b/wab/src/main/java/org/apache/unomi/web/EventsCollectorServlet.java
@@ -22,6 +22,7 @@
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -31,8 +32,9 @@
* @deprecated this servlet is now deprecated, because it have been migrated to REST endpoint.
*/
@Deprecated
+@WebServlet(name = "EventsCollectorServlet", urlPatterns = "/eventcollector")
public class EventsCollectorServlet extends HttpServlet {
- private static final long serialVersionUID = 2008054804885122957L;
+
private static final Logger LOGGER = LoggerFactory.getLogger(EventsCollectorServlet.class.getName());
@Override
diff --git a/wab/src/main/java/org/apache/unomi/web/WebConfig.java b/wab/src/main/java/org/apache/unomi/web/WebConfig.java
new file mode 100644
index 000000000..42d927d45
--- /dev/null
+++ b/wab/src/main/java/org/apache/unomi/web/WebConfig.java
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.unomi.web;
+
+import org.apache.unomi.api.services.ConfigSharingService;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.Designate;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author Jerome Blanchard
+ */
+@Component(service = WebConfig.class, immediate = true, configurationPid = "org.apache.unomi.web")
+@Designate(ocd = WebConfig.Config.class)
+public class WebConfig {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(WebConfig.class.getName());
+
+ private String contextserverDomain;
+ private String contexserverProfileIdCookieName;
+ private int contextserverProfileIdCookieMaxAgeInSeconds;
+ private boolean contextserverProfileIdCookieHttpOnly;
+ private String[] allowedProfileDownloadFormats;
+ private int publicPostRequestBytesLimit;
+
+ @Reference
+ private ConfigSharingService configSharingService;
+
+ @ObjectClassDefinition
+ public @interface Config {
+
+ @AttributeDefinition
+ String contextserver_domain() default "";
+
+ @AttributeDefinition
+ String contexserver_profileIdCookieName() default "context-profile-id";
+
+ @AttributeDefinition
+ int contextserver_profileIdCookieMaxAgeInSeconds() default 31536000;
+
+ @AttributeDefinition
+ boolean contextserver_profileIdCookieHttpOnly() default false;
+
+ @AttributeDefinition
+ String[] allowed_profile_download_formats() default {"csv", "yaml", "json", "text"};
+
+ @AttributeDefinition
+ int public_post_request_bytes_limit() default 200000;
+
+ }
+
+ public WebConfig() {
+ LOGGER.info("WebConfig created.");
+ }
+
+ @Activate
+ public void activate(Config config) {
+ this.contextserverDomain = config.contextserver_domain();
+ this.contexserverProfileIdCookieName = config.contexserver_profileIdCookieName();
+ this.contextserverProfileIdCookieMaxAgeInSeconds = config.contextserver_profileIdCookieMaxAgeInSeconds();
+ this.contextserverProfileIdCookieHttpOnly = config.contextserver_profileIdCookieHttpOnly();
+ this.allowedProfileDownloadFormats = config.allowed_profile_download_formats();
+ this.publicPostRequestBytesLimit = config.public_post_request_bytes_limit();
+
+ configSharingService.setProperty("profileIdCookieName", contexserverProfileIdCookieName);
+ configSharingService.setProperty("profileIdCookieDomain", contextserverDomain);
+ configSharingService.setProperty("profileIdCookieMaxAgeInSeconds", contextserverProfileIdCookieMaxAgeInSeconds);
+ configSharingService.setProperty("profileIdCookieHttpOnly", contextserverProfileIdCookieHttpOnly);
+ configSharingService.setProperty("publicPostRequestBytesLimit", publicPostRequestBytesLimit);
+ configSharingService.setProperty("allowedProfileDownloadFormats", allowedProfileDownloadFormats);
+ LOGGER.info("WebConfig activated.");
+ }
+
+ public String getContextserverDomain() {
+ return contextserverDomain;
+ }
+
+ public String getContexserverProfileIdCookieName() {
+ return contexserverProfileIdCookieName;
+ }
+
+ public int getContextserverProfileIdCookieMaxAgeInSeconds() {
+ return contextserverProfileIdCookieMaxAgeInSeconds;
+ }
+
+ public boolean isContextserverProfileIdCookieHttpOnly() {
+ return contextserverProfileIdCookieHttpOnly;
+ }
+
+ public String[] getAllowedProfileDownloadFormats() {
+ return allowedProfileDownloadFormats;
+ }
+
+ public int getPublicPostRequestBytesLimit() {
+ return publicPostRequestBytesLimit;
+ }
+}
diff --git a/wab/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/wab/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644
index 5437e3b49..000000000
--- a/wab/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- javax.servlet.Servlet
- javax.servlet.ServletConfig
- java.io.Serializable
-
-
-
-
- /context.json
- /context.js
-
-
-
-
-
-
-
-
-
- javax.servlet.Servlet
- javax.servlet.ServletConfig
- java.io.Serializable
-
-
-
-
-
-
-
-
-
-
-
-
-
- javax.servlet.Servlet
- javax.servlet.ServletConfig
- java.io.Serializable
-
-
-
-
-
-
-