You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by jk...@apache.org on 2021/03/25 13:07:30 UTC
[unomi] branch unomi-1.5.x updated: Merge pull request #171 from
apache/UNOMI-356-refactor-rest-api
This is an automated email from the ASF dual-hosted git repository.
jkevan pushed a commit to branch unomi-1.5.x
in repository https://gitbox.apache.org/repos/asf/unomi.git
The following commit(s) were added to refs/heads/unomi-1.5.x by this push:
new 8f2aec1 Merge pull request #171 from apache/UNOMI-356-refactor-rest-api
8f2aec1 is described below
commit 8f2aec15ce987d4d9ae6ccc5c01a0ac22d39a575
Author: Serge Huber <sh...@jahia.com>
AuthorDate: Fri Jun 26 22:15:37 2020 +0200
Merge pull request #171 from apache/UNOMI-356-refactor-rest-api
UNOMI-356 Refactor REST API
---
api/pom.xml | 29 --
extensions/geonames/rest/pom.xml | 5 +
.../unomi/geonames/rest/GeonamesEndPoint.java | 5 +
.../resources/OSGI-INF/blueprint/blueprint.xml | 75 -----
extensions/groovy-actions/services/pom.xml | 4 +-
extensions/lists-extension/rest/pom.xml | 5 +
.../unomi/lists/rest/UserListServiceEndPoint.java | 5 +
.../resources/OSGI-INF/blueprint/blueprint.xml | 75 -----
extensions/privacy-extension/rest/pom.xml | 5 +
.../unomi/privacy/rest/PrivacyServiceEndPoint.java | 6 +-
.../resources/OSGI-INF/blueprint/blueprint.xml | 75 -----
extensions/privacy-extension/services/pom.xml | 2 +-
extensions/router/router-core/pom.xml | 4 +-
extensions/router/router-rest/pom.xml | 5 +
.../rest/AbstractConfigurationServiceEndpoint.java | 14 -
.../router/rest/ConfigRestExceptionMapper.java | 5 +
.../rest/ExportConfigurationServiceEndPoint.java | 8 +
.../rest/ImportConfigurationServiceEndPoint.java | 14 +
.../resources/OSGI-INF/blueprint/blueprint.xml | 98 -------
extensions/router/router-service/pom.xml | 4 +-
extensions/salesforce-connector/rest/pom.xml | 7 +-
.../org/apache/unomi/sfdc/rest/SFDCEndPoint.java | 13 +-
.../resources/OSGI-INF/blueprint/blueprint.xml | 76 ------
extensions/unomi-mailchimp/rest/pom.xml | 7 +-
.../unomi/mailchimp/rest/MailChimpEndPoint.java | 6 +
.../resources/OSGI-INF/blueprint/blueprint.xml | 75 -----
itests/README.md | 35 +++
itests/pom.xml | 2 +-
kar/src/main/feature/feature.xml | 2 +
lifecycle-watcher/pom.xml | 2 +-
metrics/pom.xml | 2 +-
persistence-elasticsearch/core/pom.xml | 4 +-
pom.xml | 52 +---
rest/pom.xml | 303 +++------------------
.../unomi/rest/CampaignsServiceEndPoint.java | 5 +
.../apache/unomi/rest/ClusterServiceEndPoint.java | 5 +
.../unomi/rest/DefinitionsServiceEndPoint.java | 7 +
.../apache/unomi/rest/EventServiceEndpoint.java | 5 +
.../apache/unomi/rest/GoalsServiceEndPoint.java | 5 +
.../org/apache/unomi/rest/LocalizationHelper.java | 12 +
.../apache/unomi/rest/PatchServiceEndPoint.java | 5 +
.../apache/unomi/rest/ProfileServiceEndPoint.java | 8 +
.../apache/unomi/rest/QueryServiceEndPoint.java | 6 +
.../apache/unomi/rest/ResourceBundleHelper.java | 9 +
.../java/org/apache/unomi/rest/RestServer.java | 180 ++++++++++++
.../apache/unomi/rest/RulesServiceEndPoint.java | 5 +
.../apache/unomi/rest/ScoringServiceEndPoint.java | 5 +
.../apache/unomi/rest/SegmentServiceEndPoint.java | 5 +
.../apache/unomi/rest/UserListServiceEndPoint.java | 5 +
.../resources/OSGI-INF/blueprint/blueprint.xml | 280 -------------------
scripting/pom.xml | 2 +-
services/pom.xml | 4 +-
tools/shell-commands/pom.xml | 4 +-
tools/shell-dev-commands/pom.xml | 4 +-
54 files changed, 451 insertions(+), 1139 deletions(-)
diff --git a/api/pom.xml b/api/pom.xml
index babf75c..f63e42f 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -45,35 +45,6 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <tags>
- <tag>
- <name>summary</name>
- <placement>a</placement>
- <head>MireDot summary (resource title)</head>
- </tag>
- <tag>
- <name>title</name>
- <placement>a</placement>
- <head>MireDot title (resource title)</head>
- </tag>
- <tag>
- <name>servicetag</name>
- <placement>a</placement>
- <head>MireDot resource tag (label)</head>
- </tag>
- <tag>
- <name>statuscode</name>
- <placement>a</placement>
- <head>MireDot resource status code(s)</head>
- </tag>
- <tag>
- <name>responseheader</name>
- <placement>a</placement>
- <head>MireDot response header</head>
- </tag>
- </tags>
- </configuration>
</plugin>
</plugins>
</reporting>
diff --git a/extensions/geonames/rest/pom.xml b/extensions/geonames/rest/pom.xml
index 2e286de..9591e31 100644
--- a/extensions/geonames/rest/pom.xml
+++ b/extensions/geonames/rest/pom.xml
@@ -79,6 +79,11 @@
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.cmpn</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
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 206018c..e53216f 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
@@ -22,6 +22,8 @@ import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
import org.apache.unomi.api.PartialList;
import org.apache.unomi.geonames.services.GeonameEntry;
import org.apache.unomi.geonames.services.GeonamesService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,10 +42,13 @@ import java.util.Locale;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/geonames")
+@Component(service=GeonamesEndPoint.class,property = "osgi.jaxrs.resource=true")
public class GeonamesEndPoint {
private static final Logger logger = LoggerFactory.getLogger(GeonamesEndPoint.class.getName());
+ @Reference
private GeonamesService geonamesService;
public GeonamesEndPoint() {
diff --git a/extensions/geonames/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/geonames/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644
index 6e43ac3..0000000
--- a/extensions/geonames/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ 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.
- -->
-
-<blueprint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:cxf="http://cxf.apache.org/blueprint/core"
- xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
- xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
- xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
- http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
- http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd">
-
- <cxf:bus>
- <cxf:features>
- <cxf:logging/>
- <bean class="org.apache.cxf.metrics.MetricsFeature"/>
- </cxf:features>
- </cxf:bus>
-
- <bean id="cors-filter" class="org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter"/>
- <bean id="jacksonMapper" class="org.apache.unomi.persistence.spi.CustomObjectMapper"/>
- <bean id="jaxb-provider" class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider">
- <argument index="0" ref="jacksonMapper" type="com.fasterxml.jackson.databind.ObjectMapper "/>
- <argument index="1" type="com.fasterxml.jackson.jaxrs.cfg.Annotations[]">
- <array>
- <value>JACKSON</value>
- <value>JAXB</value>
- </array>
- </argument>
- </bean>
- <bean id="jaas-filter" class="org.apache.cxf.jaxrs.security.JAASAuthenticationFilter">
- <!-- Name of the JAAS Context -->
- <property name="contextName" value="karaf"/>
- <!-- Hint to the filter on how to have Principals representing users and roles separated
- while initializing a SecurityContext -->
- <property name="rolePrefix" value="ROLE_"/>
-
- <property name="realmName" value="cxs"/>
- <!-- Activate this if you want to force a redirect if auth is missing, by default it will trigger a 403 which
- is usually preferred -->
- <!--property name="redirectURI" value="/login.jsp"/-->
- </bean>
-
- <jaxrs:server address="/geonames" id="restGeonamesService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="geonamesServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <reference id="geonamesService" interface="org.apache.unomi.geonames.services.GeonamesService"/>
-
- <bean id="geonamesServiceEndPoint" class="org.apache.unomi.geonames.rest.GeonamesEndPoint">
- <property name="geonamesService" ref="geonamesService"/>
- </bean>
-</blueprint>
diff --git a/extensions/groovy-actions/services/pom.xml b/extensions/groovy-actions/services/pom.xml
index f5d6de1..a792617 100644
--- a/extensions/groovy-actions/services/pom.xml
+++ b/extensions/groovy-actions/services/pom.xml
@@ -39,13 +39,13 @@
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
+ <artifactId>osgi.cmpn</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
diff --git a/extensions/lists-extension/rest/pom.xml b/extensions/lists-extension/rest/pom.xml
index f468b89..96c6e3e 100644
--- a/extensions/lists-extension/rest/pom.xml
+++ b/extensions/lists-extension/rest/pom.xml
@@ -80,6 +80,11 @@
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.cmpn</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
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 492bc45..98ca0f1 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
@@ -23,6 +23,8 @@ import org.apache.unomi.api.PartialList;
import org.apache.unomi.api.query.Query;
import org.apache.unomi.lists.UserList;
import org.apache.unomi.services.UserListService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,10 +43,13 @@ import javax.ws.rs.core.MediaType;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/lists")
+@Component(service=UserListServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class UserListServiceEndPoint {
private static final Logger logger = LoggerFactory.getLogger(UserListServiceEndPoint.class.getName());
+ @Reference
private UserListService userListService;
public UserListServiceEndPoint() {
diff --git a/extensions/lists-extension/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/lists-extension/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644
index 8815e95..0000000
--- a/extensions/lists-extension/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ 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.
- -->
-
-<blueprint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:cxf="http://cxf.apache.org/blueprint/core"
- xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
- xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
- xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
- http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
- http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd">
-
- <cxf:bus>
- <cxf:features>
- <cxf:logging/>
- <bean class="org.apache.cxf.metrics.MetricsFeature"/>
- </cxf:features>
- </cxf:bus>
-
- <bean id="cors-filter" class="org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter"/>
- <bean id="jacksonMapper" class="org.apache.unomi.persistence.spi.CustomObjectMapper"/>
- <bean id="jaxb-provider" class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider">
- <argument index="0" ref="jacksonMapper" type="com.fasterxml.jackson.databind.ObjectMapper "/>
- <argument index="1" type="com.fasterxml.jackson.jaxrs.cfg.Annotations[]">
- <array>
- <value>JACKSON</value>
- <value>JAXB</value>
- </array>
- </argument>
- </bean>
- <bean id="jaas-filter" class="org.apache.cxf.jaxrs.security.JAASAuthenticationFilter">
- <!-- Name of the JAAS Context -->
- <property name="contextName" value="karaf"/>
- <!-- Hint to the filter on how to have Principals representing users and roles separated
- while initializing a SecurityContext -->
- <property name="rolePrefix" value="ROLE_"/>
-
- <property name="realmName" value="cxs"/>
- <!-- Activate this if you want to force a redirect if auth is missing, by default it will trigger a 403 which
- is usually preferred -->
- <!--property name="redirectURI" value="/login.jsp"/-->
- </bean>
-
- <jaxrs:server address="/lists" id="restUserListService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="userListServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <reference id="userListService" interface="org.apache.unomi.services.UserListService"/>
-
- <bean id="userListServiceEndPoint" class="org.apache.unomi.lists.rest.UserListServiceEndPoint">
- <property name="userListService" ref="userListService"/>
- </bean>
-</blueprint>
diff --git a/extensions/privacy-extension/rest/pom.xml b/extensions/privacy-extension/rest/pom.xml
index a1e4339..0697404 100644
--- a/extensions/privacy-extension/rest/pom.xml
+++ b/extensions/privacy-extension/rest/pom.xml
@@ -79,6 +79,11 @@
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.cmpn</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<build>
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 40b1160..c4c990a 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
@@ -20,6 +20,8 @@ package org.apache.unomi.privacy.rest;
import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
import org.apache.unomi.api.ServerInfo;
import org.apache.unomi.api.services.PrivacyService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import javax.jws.WebMethod;
import javax.jws.WebService;
@@ -37,9 +39,11 @@ import java.util.List;
allowAllOrigins = true,
allowCredentials = true
)
-@Path("/")
+@Path("/privacy")
+@Component(service=PrivacyServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class PrivacyServiceEndPoint {
+ @Reference
private PrivacyService privacyService;
@WebMethod(exclude = true)
diff --git a/extensions/privacy-extension/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/privacy-extension/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644
index a3b29b2..0000000
--- a/extensions/privacy-extension/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ 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.
- -->
-
-<blueprint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:cxf="http://cxf.apache.org/blueprint/core"
- xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
- xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
- xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
- http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
- http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd">
-
- <cxf:bus>
- <cxf:features>
- <cxf:logging/>
- <bean class="org.apache.cxf.metrics.MetricsFeature"/>
- </cxf:features>
- </cxf:bus>
-
- <bean id="cors-filter" class="org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter"/>
- <bean id="jacksonMapper" class="org.apache.unomi.persistence.spi.CustomObjectMapper"/>
- <bean id="jaxb-provider" class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider">
- <argument index="0" ref="jacksonMapper" type="com.fasterxml.jackson.databind.ObjectMapper "/>
- <argument index="1" type="com.fasterxml.jackson.jaxrs.cfg.Annotations[]">
- <array>
- <value>JACKSON</value>
- <value>JAXB</value>
- </array>
- </argument>
- </bean>
- <bean id="jaas-filter" class="org.apache.cxf.jaxrs.security.JAASAuthenticationFilter">
- <!-- Name of the JAAS Context -->
- <property name="contextName" value="karaf"/>
- <!-- Hint to the filter on how to have Principals representing users and roles separated
- while initializing a SecurityContext -->
- <property name="rolePrefix" value="ROLE_"/>
-
- <property name="realmName" value="cxs"/>
- <!-- Activate this if you want to force a redirect if auth is missing, by default it will trigger a 403 which
- is usually preferred -->
- <!--property name="redirectURI" value="/login.jsp"/-->
- </bean>
-
- <jaxrs:server address="/privacy" id="restPrivacyService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="privacyServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <reference id="privacyService" interface="org.apache.unomi.api.services.PrivacyService"/>
-
- <bean id="privacyServiceEndPoint" class="org.apache.unomi.privacy.rest.PrivacyServiceEndPoint">
- <property name="privacyService" ref="privacyService"/>
- </bean>
-</blueprint>
diff --git a/extensions/privacy-extension/services/pom.xml b/extensions/privacy-extension/services/pom.xml
index c4a609b..3a1e690 100644
--- a/extensions/privacy-extension/services/pom.xml
+++ b/extensions/privacy-extension/services/pom.xml
@@ -50,7 +50,7 @@
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
diff --git a/extensions/router/router-core/pom.xml b/extensions/router/router-core/pom.xml
index 4119fc6..152e537 100644
--- a/extensions/router/router-core/pom.xml
+++ b/extensions/router/router-core/pom.xml
@@ -31,12 +31,12 @@
<dependencies>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
+ <artifactId>osgi.cmpn</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
diff --git a/extensions/router/router-rest/pom.xml b/extensions/router/router-rest/pom.xml
index 58e2399..05bd157 100644
--- a/extensions/router/router-rest/pom.xml
+++ b/extensions/router/router-rest/pom.xml
@@ -80,6 +80,11 @@
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.cmpn</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/AbstractConfigurationServiceEndpoint.java b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/AbstractConfigurationServiceEndpoint.java
index 54d72ab..7d180ee 100644
--- a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/AbstractConfigurationServiceEndpoint.java
+++ b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/AbstractConfigurationServiceEndpoint.java
@@ -16,18 +16,10 @@
*/
package org.apache.unomi.router.rest;
-import org.apache.cxf.jaxrs.ext.MessageContext;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.unomi.api.services.ConfigSharingService;
import org.apache.unomi.router.api.services.ImportExportConfigurationService;
-import javax.jws.WebMethod;
import javax.ws.rs.*;
-import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
-import java.security.KeyManagementException;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
import java.util.List;
/**
@@ -36,12 +28,6 @@ import java.util.List;
public abstract class AbstractConfigurationServiceEndpoint<T> {
protected ImportExportConfigurationService<T> configurationService;
- protected ConfigSharingService configSharingService;
-
- @WebMethod(exclude = true)
- public void setConfigSharingService(ConfigSharingService configSharingService) {
- this.configSharingService = configSharingService;
- }
/**
* Retrieves all the configurations.
diff --git a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ConfigRestExceptionMapper.java b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ConfigRestExceptionMapper.java
index 179f3d4..9c266d7 100644
--- a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ConfigRestExceptionMapper.java
+++ b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ConfigRestExceptionMapper.java
@@ -16,13 +16,18 @@
*/
package org.apache.unomi.router.rest;
+import org.osgi.service.component.annotations.Component;
+
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
/**
* Created by amidani on 06/07/2017.
*/
+@Provider
+@Component(service=ExceptionMapper.class)
public class ConfigRestExceptionMapper implements ExceptionMapper<PartialContentException> {
@Override
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 5d1635b..ff31a89 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
@@ -21,6 +21,8 @@ import org.apache.unomi.api.services.ProfileService;
import org.apache.unomi.router.api.ExportConfiguration;
import org.apache.unomi.router.api.services.ImportExportConfigurationService;
import org.apache.unomi.router.api.services.ProfileExportService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,11 +48,16 @@ import java.util.Date;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/exportConfiguration")
+@Component(service=ExportConfigurationServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class ExportConfigurationServiceEndPoint extends AbstractConfigurationServiceEndpoint<ExportConfiguration> {
private static final Logger logger = LoggerFactory.getLogger(ExportConfigurationServiceEndPoint.class.getName());
+ @Reference
private ProfileExportService profileExportService;
+
+ @Reference
private ProfileService profileService;
public ExportConfigurationServiceEndPoint() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
@@ -58,6 +65,7 @@ public class ExportConfigurationServiceEndPoint extends AbstractConfigurationSer
}
@WebMethod(exclude = true)
+ @Reference(target="(configDiscriminator=EXPORT)")
public void setExportConfigurationService(ImportExportConfigurationService<ExportConfiguration> exportConfigurationService) {
configurationService = exportConfigurationService;
}
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 7f9363c..a21404b 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
@@ -19,9 +19,12 @@ package org.apache.unomi.router.rest;
import org.apache.cxf.jaxrs.ext.multipart.Attachment;
import org.apache.cxf.jaxrs.ext.multipart.Multipart;
import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
+import org.apache.unomi.api.services.ConfigSharingService;
import org.apache.unomi.router.api.ImportConfiguration;
import org.apache.unomi.router.api.RouterConstants;
import org.apache.unomi.router.api.services.ImportExportConfigurationService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,15 +52,26 @@ import java.security.NoSuchAlgorithmException;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/importConfiguration")
+@Component(service=ImportConfigurationServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class ImportConfigurationServiceEndPoint extends AbstractConfigurationServiceEndpoint<ImportConfiguration> {
private static final Logger logger = LoggerFactory.getLogger(ImportConfigurationServiceEndPoint.class.getName());
+ @Reference
+ protected ConfigSharingService configSharingService;
+
+ @WebMethod(exclude = true)
+ public void setConfigSharingService(ConfigSharingService configSharingService) {
+ this.configSharingService = configSharingService;
+ }
+
public ImportConfigurationServiceEndPoint() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
logger.info("Initializing import configuration service endpoint...");
}
@WebMethod(exclude = true)
+ @Reference(target="(configDiscriminator=IMPORT)")
public void setImportConfigurationService(ImportExportConfigurationService<ImportConfiguration> importConfigurationService) {
configurationService = importConfigurationService;
}
diff --git a/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644
index c114f4a..0000000
--- a/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ 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.
- -->
-
-<blueprint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:cxf="http://cxf.apache.org/blueprint/core"
- xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
- xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
- xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
- http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
- http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd">
-
- <cxf:bus>
- <cxf:features>
- <cxf:logging/>
- <bean class="org.apache.cxf.metrics.MetricsFeature"/>
- </cxf:features>
- </cxf:bus>
-
- <bean id="cors-filter" class="org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter"/>
- <bean id="jacksonMapper" class="com.fasterxml.jackson.databind.ObjectMapper"/>
- <bean id="json-provider" class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider">
- <argument index="0" ref="jacksonMapper" type="com.fasterxml.jackson.databind.ObjectMapper"/>
- </bean>
- <bean id="jaas-filter" class="org.apache.cxf.jaxrs.security.JAASAuthenticationFilter">
- <!-- Name of the JAAS Context -->
- <property name="contextName" value="karaf"/>
- <!-- Hint to the filter on how to have Principals representing users and roles separated
- while initializing a SecurityContext -->
- <property name="rolePrefix" value="ROLE_"/>
- <property name="realmName" value="cxs"/>
- </bean>
-
- <bean id="exceptionMapper" class="org.apache.unomi.router.rest.ConfigRestExceptionMapper"/>
-
- <jaxrs:server address="/importConfiguration" id="restImportConfigurationService">
- <jaxrs:providers>
- <ref component-id="json-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- <ref component-id="exceptionMapper"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="importConfigurationServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <jaxrs:server address="/exportConfiguration" id="restExportConfigurationService">
- <jaxrs:providers>
- <ref component-id="json-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- <ref component-id="exceptionMapper"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="exportConfigurationServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <reference id="importConfigurationService" interface="org.apache.unomi.router.api.services.ImportExportConfigurationService"
- filter="(configDiscriminator=IMPORT)"/>
-
- <reference id="exportConfigurationService" interface="org.apache.unomi.router.api.services.ImportExportConfigurationService"
- filter="(configDiscriminator=EXPORT)"/>
-
- <reference id="configSharingService" interface="org.apache.unomi.api.services.ConfigSharingService"/>
- <reference id="profileExportService" interface="org.apache.unomi.router.api.services.ProfileExportService"/>
- <reference id="profileService" interface="org.apache.unomi.api.services.ProfileService"/>
-
- <bean id="importConfigurationServiceEndPoint" class="org.apache.unomi.router.rest.ImportConfigurationServiceEndPoint">
- <property name="importConfigurationService" ref="importConfigurationService"/>
- <property name="configSharingService" ref="configSharingService"/>
- </bean>
-
- <bean id="exportConfigurationServiceEndPoint" class="org.apache.unomi.router.rest.ExportConfigurationServiceEndPoint">
- <property name="exportConfigurationService" ref="exportConfigurationService"/>
- <property name="configSharingService" ref="configSharingService"/>
- <property name="profileExportService" ref="profileExportService"/>
- <property name="profileService" ref="profileService"/>
- </bean>
-
-</blueprint>
diff --git a/extensions/router/router-service/pom.xml b/extensions/router/router-service/pom.xml
index 578ca5c..5316990 100644
--- a/extensions/router/router-service/pom.xml
+++ b/extensions/router/router-service/pom.xml
@@ -71,13 +71,13 @@
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
+ <artifactId>osgi.cmpn</artifactId>
<scope>provided</scope>
</dependency>
diff --git a/extensions/salesforce-connector/rest/pom.xml b/extensions/salesforce-connector/rest/pom.xml
index e815057..e2a2d63 100644
--- a/extensions/salesforce-connector/rest/pom.xml
+++ b/extensions/salesforce-connector/rest/pom.xml
@@ -89,7 +89,12 @@
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.cmpn</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
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 e10c9f4..85158e2 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
@@ -20,6 +20,10 @@ package org.apache.unomi.sfdc.rest;
import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
import org.apache.unomi.sfdc.services.SFDCService;
import org.osgi.framework.BundleContext;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import javax.jws.WebMethod;
import javax.jws.WebService;
@@ -38,9 +42,11 @@ import java.util.Map;
allowAllOrigins = true,
allowCredentials = true
)
-@Path("/")
+@Path("/sfdc")
+@Component(service=SFDCEndPoint.class,property = "osgi.jaxrs.resource=true")
public class SFDCEndPoint {
+ @Reference
private SFDCService sfdcService;
private BundleContext bundleContext;
@@ -48,6 +54,11 @@ public class SFDCEndPoint {
System.out.println("Initializing SFDC service endpoint...");
}
+ @Activate
+ 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/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/salesforce-connector/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644
index 59c1ed4..0000000
--- a/extensions/salesforce-connector/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ 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.
- -->
-
-<blueprint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:cxf="http://cxf.apache.org/blueprint/core"
- xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
- xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
- xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
- http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
- http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd">
-
- <cxf:bus>
- <cxf:features>
- <cxf:logging/>
- <bean class="org.apache.cxf.metrics.MetricsFeature"/>
- </cxf:features>
- </cxf:bus>
-
- <bean id="cors-filter" class="org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter"/>
- <bean id="jacksonMapper" class="org.apache.unomi.persistence.spi.CustomObjectMapper"/>
- <bean id="jaxb-provider" class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider">
- <argument index="0" ref="jacksonMapper" type="com.fasterxml.jackson.databind.ObjectMapper "/>
- <argument index="1" type="com.fasterxml.jackson.jaxrs.cfg.Annotations[]">
- <array>
- <value>JACKSON</value>
- <value>JAXB</value>
- </array>
- </argument>
- </bean>
- <bean id="jaas-filter" class="org.apache.cxf.jaxrs.security.JAASAuthenticationFilter">
- <!-- Name of the JAAS Context -->
- <property name="contextName" value="karaf"/>
- <!-- Hint to the filter on how to have Principals representing users and roles separated
- while initializing a SecurityContext -->
- <property name="rolePrefix" value="ROLE_"/>
-
- <property name="realmName" value="cxs"/>
- <!-- Activate this if you want to force a redirect if auth is missing, by default it will trigger a 403 which
- is usually preferred -->
- <!--property name="redirectURI" value="/login.jsp"/-->
- </bean>
-
- <jaxrs:server address="/sfdc" id="restSFDCService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="sfdcServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <reference id="sfdcService" interface="org.apache.unomi.sfdc.services.SFDCService"/>
-
- <bean id="sfdcServiceEndPoint" class="org.apache.unomi.sfdc.rest.SFDCEndPoint">
- <property name="sfdcService" ref="sfdcService"/>
- <property name="bundleContext" ref="blueprintBundleContext" />
- </bean>
-</blueprint>
diff --git a/extensions/unomi-mailchimp/rest/pom.xml b/extensions/unomi-mailchimp/rest/pom.xml
index b79a5ac..172690c 100644
--- a/extensions/unomi-mailchimp/rest/pom.xml
+++ b/extensions/unomi-mailchimp/rest/pom.xml
@@ -66,7 +66,12 @@
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.cmpn</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
diff --git a/extensions/unomi-mailchimp/rest/src/main/java/org/apache/unomi/mailchimp/rest/MailChimpEndPoint.java b/extensions/unomi-mailchimp/rest/src/main/java/org/apache/unomi/mailchimp/rest/MailChimpEndPoint.java
index 4624874..1802548 100644
--- a/extensions/unomi-mailchimp/rest/src/main/java/org/apache/unomi/mailchimp/rest/MailChimpEndPoint.java
+++ b/extensions/unomi-mailchimp/rest/src/main/java/org/apache/unomi/mailchimp/rest/MailChimpEndPoint.java
@@ -18,6 +18,8 @@ package org.apache.unomi.mailchimp.rest;
import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
import org.apache.unomi.mailchimp.services.MailChimpService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import javax.jws.WebMethod;
import javax.jws.WebService;
@@ -35,7 +37,11 @@ import java.util.List;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/mailchimp")
+@Component(service=MailChimpEndPoint.class,property = "osgi.jaxrs.resource=true")
public class MailChimpEndPoint {
+
+ @Reference
private MailChimpService mailChimpService;
public MailChimpEndPoint() {
diff --git a/extensions/unomi-mailchimp/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/unomi-mailchimp/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644
index adbcbc0..0000000
--- a/extensions/unomi-mailchimp/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ 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.
- -->
-
-<blueprint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:cxf="http://cxf.apache.org/blueprint/core"
- xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
- xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
- xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
- http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
- http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd">
-
- <cxf:bus>
- <cxf:features>
- <cxf:logging/>
- <bean class="org.apache.cxf.metrics.MetricsFeature"/>
- </cxf:features>
- </cxf:bus>
-
- <bean id="cors-filter" class="org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter"/>
- <bean id="jacksonMapper" class="org.apache.unomi.persistence.spi.CustomObjectMapper"/>
- <bean id="jaxb-provider" class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider">
- <argument index="0" ref="jacksonMapper" type="com.fasterxml.jackson.databind.ObjectMapper "/>
- <argument index="1" type="com.fasterxml.jackson.jaxrs.cfg.Annotations[]">
- <array>
- <value>JACKSON</value>
- <value>JAXB</value>
- </array>
- </argument>
- </bean>
- <bean id="jaas-filter" class="org.apache.cxf.jaxrs.security.JAASAuthenticationFilter">
- <!-- Name of the JAAS Context -->
- <property name="contextName" value="karaf"/>
- <!-- Hint to the filter on how to have Principals representing users and roles separated
- while initializing a SecurityContext -->
- <property name="rolePrefix" value="ROLE_"/>
-
- <property name="realmName" value="cxs"/>
- <!-- Activate this if you want to force a redirect if auth is missing, by default it will trigger a 403 which
- is usually preferred -->
- <!--property name="redirectURI" value="/login.jsp"/-->
- </bean>
-
- <jaxrs:server address="/mailchimp" id="restMCService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="mailChimpEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <reference id="mailChimpService" interface="org.apache.unomi.mailchimp.services.MailChimpService"/>
-
- <bean id="mailChimpEndPoint" class="org.apache.unomi.mailchimp.rest.MailChimpEndPoint">
- <property name="mailChimpService" ref="mailChimpService"/>
- </bean>
-</blueprint>
diff --git a/itests/README.md b/itests/README.md
index 5a3236c..845ea66 100644
--- a/itests/README.md
+++ b/itests/README.md
@@ -48,3 +48,38 @@ This will ensure the service is available before starting the test and if you ne
@Inject @Filter(value="(configDiscriminator=IMPORT)", timeout = 60000)
protected ImportExportConfigurationService<ImportConfiguration> importConfigurationService;
```
+## Running integration tests
+
+You can run the integration tests along with the build by doing:
+
+ mvn clean install -P integration-tests
+
+from the project's root directory
+
+If you want to run the tests with a debugger, you can use the `it.karaf.debug` system property.
+Here's an example:
+
+ cd itests
+ mvn clean install -Dit.karaf.debug=hold:true
+
+The `hold:true` will tell the JVM to pause for you to connect a debugger. You can simply connect a remote debugger on $
+port 5006 to debug the integration tests.
+
+Here are the parameters supported by the `it.karaf.debug` property:
+
+ hold:true - forces a wait for a remote debugger to connect
+ hold:false - continues even with no remote debugger connected
+ port:XXXX allows to configure the binding port to XXXX
+
+You can combine both parameters using a comma as a separator, as in the following example:
+
+ mvn clean install -Dit.karaf.debug=hold:true,port=5006
+
+## Running a single test
+
+If you want to run a single test or single methods, following the instructions given here:
+https://maven.apache.org/surefire/maven-failsafe-plugin/examples/single-test.html
+
+Here's an example:
+
+ mvn clean install -Dit.karaf.debug=hold:true -Dit.test=org.apache.unomi.itests.graphql.GraphQLEventIT
\ No newline at end of file
diff --git a/itests/pom.xml b/itests/pom.xml
index b0bab23..3e17b7e 100644
--- a/itests/pom.xml
+++ b/itests/pom.xml
@@ -105,7 +105,7 @@
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
diff --git a/kar/src/main/feature/feature.xml b/kar/src/main/feature/feature.xml
index c188b33..8011728 100644
--- a/kar/src/main/feature/feature.xml
+++ b/kar/src/main/feature/feature.xml
@@ -26,6 +26,7 @@
<feature>war</feature>
<feature>cxf-jaxrs</feature>
<feature>cxf-features-metrics</feature>
+ <feature>cxf-rs-description-openapi-v3</feature>
<feature>cellar</feature>
<feature>eventadmin</feature>
<feature>shell-compat</feature>
@@ -82,6 +83,7 @@
<bundle start-level="85" start="false">mvn:org.apache.unomi/unomi-web-tracker-wab/${project.version}</bundle>
<bundle start-level="99">mvn:org.apache.unomi/shell-commands/${project.version}</bundle>
+ <bundle start-level="85">mvn:org.webjars/swagger-ui/3.23.8</bundle>
</feature>
<feature name="unomi-documentation" description="Documentation of Unomi in HTML" version="${project.version}">
diff --git a/lifecycle-watcher/pom.xml b/lifecycle-watcher/pom.xml
index e57ba39..3129deb 100644
--- a/lifecycle-watcher/pom.xml
+++ b/lifecycle-watcher/pom.xml
@@ -32,7 +32,7 @@
<dependencies>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
</dependency>
</dependencies>
diff --git a/metrics/pom.xml b/metrics/pom.xml
index 64dfc37..dc152aa 100644
--- a/metrics/pom.xml
+++ b/metrics/pom.xml
@@ -72,7 +72,7 @@
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
<scope>provided</scope>
</dependency>
diff --git a/persistence-elasticsearch/core/pom.xml b/persistence-elasticsearch/core/pom.xml
index 33c5427..248df60 100644
--- a/persistence-elasticsearch/core/pom.xml
+++ b/persistence-elasticsearch/core/pom.xml
@@ -33,12 +33,12 @@
<dependencies>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
+ <artifactId>osgi.cmpn</artifactId>
<scope>provided</scope>
</dependency>
diff --git a/pom.xml b/pom.xml
index 8ed77d1..1b3dedd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -681,14 +681,14 @@
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- <version>4.3.1</version>
+ <artifactId>osgi.core</artifactId>
+ <version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
- <version>4.3.1</version>
+ <artifactId>osgi.cmpn</artifactId>
+ <version>6.0.0</version>
<scope>provided</scope>
</dependency>
@@ -1155,17 +1155,6 @@
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
</plugin>
- <!--
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-scm-publish-plugin</artifactId>
- <version>1.1</version>
- <configuration>
- <checkinComment>[scm-publish] Updating Unomi website</checkinComment>
- <pubScmUrl>scm:svn:https://svn.apache.org/repos/asf/incubator/unomi/website/</pubScmUrl>
- </configuration>
- </plugin>
- -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
@@ -1190,39 +1179,6 @@
<version>0.11</version>
</plugin>
<plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <tags>
- <tag>
- <name>summary</name>
- <placement>a</placement>
- <head>MireDot summary (resource title)</head>
- </tag>
- <tag>
- <name>title</name>
- <placement>a</placement>
- <head>MireDot title (resource title)</head>
- </tag>
- <tag>
- <name>servicetag</name>
- <placement>a</placement>
- <head>MireDot resource tag (label)</head>
- </tag>
- <tag>
- <name>statuscode</name>
- <placement>a</placement>
- <head>MireDot resource status code(s)</head>
- </tag>
- <tag>
- <name>responseheader</name>
- <placement>a</placement>
- <head>MireDot response header</head>
- </tag>
- </tags>
- </configuration>
- </plugin>
- <plugin>
<groupId>external.atlassian.jgitflow</groupId>
<artifactId>jgitflow-maven-plugin</artifactId>
<version>1.0-m5.1</version>
diff --git a/rest/pom.xml b/rest/pom.xml
index 2d1fbd0..bd713b3 100644
--- a/rest/pom.xml
+++ b/rest/pom.xml
@@ -30,14 +30,6 @@
<description>Apache Unomi Context Server REST API</description>
<packaging>bundle</packaging>
- <pluginRepositories>
- <pluginRepository>
- <id>miredot</id>
- <name>Miredot Releases</name>
- <url>https://secure-nexus.miredot.com/content/repositories/miredot/</url>
- </pluginRepository>
- </pluginRepositories>
-
<dependencies>
<dependency>
<groupId>org.apache.unomi</groupId>
@@ -48,13 +40,13 @@
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
+ <artifactId>osgi.cmpn</artifactId>
<scope>provided</scope>
</dependency>
@@ -98,267 +90,36 @@
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
- <!--<dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-core</artifactId>
- <scope>compile</scope>
- <version>1.5.3</version>
- <exclusions>
- <exclusion>
- <groupId>javax.ws.rs</groupId>
- <artifactId>jsr311-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>-->
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-rs-service-description-openapi-v3</artifactId>
+ <version>${cxf.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-features-metrics</artifactId>
+ <version>${cxf.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-features-logging</artifactId>
+ <version>${cxf.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-rs-security-cors</artifactId>
+ <version>${cxf.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+ <version>${cxf.version}</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
- <profiles>
- <profile>
- <id>rest-doc-jdk8</id>
- <activation>
- <os>
- <family>!windows</family>
- </os>
- <jdk>
- [1.6,1.10)
- </jdk>
- </activation>
- <build>
- <plugins>
- <plugin>
- <groupId>com.qmino</groupId>
- <artifactId>miredot-plugin</artifactId>
- <version>2.1.2</version>
- <executions>
- <execution>
- <goals>
- <goal>restdoc</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <licence>cHJvamVjdHxvcmcuYXBhY2hlLnVub21pLnVub21pLXJlc3R8MjAyNS0wMS0wMXxmYWxzZXwtMSNNQ3dDRkhNUlNaYVM0c2lFOHpjcnhUM1N5R2RVc3VuREFoUmNTV2lYa0RLNmJOSmtab2cxY21udWc0VDFnQT09</licence>
- <output>
- <title>Documentation for Apache Unomi's RESTful API ${project.version}</title>
- <html>
- <!-- optional html configuration -->
- <location>${project.parent.build.directory}/staging/rest-api-doc</location>
- </html>
- <raml />
- </output>
- <restModel>
- <restFramework>
- <name>jax-rs</name>
- <cxfServiceConfig>
- <item>src/main/resources/OSGI-INF/blueprint/blueprint.xml</item>
- </cxfServiceConfig>
- </restFramework>
- <httpStatusCodes>
- <httpStatusCode>
- <httpCode>200</httpCode>
- <document>always</document>
- <defaultMessage>The service call has completed successfully.</defaultMessage>
- </httpStatusCode>
- <httpStatusCode>
- <httpCode>401</httpCode>
- <document>explicit: com.acme.exceptions.AuthorizationException</document>
- <defaultMessage>The user is not authorized to use this service.</defaultMessage>
- </httpStatusCode>
- <httpStatusCode>
- <httpCode>412</httpCode>
- <document>put,post</document>
- <defaultMessage>Invalid JSON/XML input.</defaultMessage>
- </httpStatusCode>
- <httpStatusCode>
- <httpCode>500</httpCode>
- <document>always</document>
- <defaultMessage>The service call has not succeeded.</defaultMessage>
- <sticky>true</sticky> <!-- Document always, even if there is an @statuscode tag -->
- </httpStatusCode>
- </httpStatusCodes>
- <externalSources>
- <sourceDirs>
- <sourceDir>../api/src/main/java</sourceDir>
- </sourceDirs>
- </externalSources>
- </restModel>
- <analysis>
- <checks>
- <JAVADOC_MISSING_SUMMARY>warn</JAVADOC_MISSING_SUMMARY>
- <JAVADOC_MISSING_INTERFACEDOCUMENTATION>warn</JAVADOC_MISSING_INTERFACEDOCUMENTATION>
- <JAVADOC_MISSING_PARAMETER_DOCUMENTATION>warn</JAVADOC_MISSING_PARAMETER_DOCUMENTATION>
- <JAVADOC_MISSING_EXCEPTION_DOCUMENTATION>warn</JAVADOC_MISSING_EXCEPTION_DOCUMENTATION>
- <JAVADOC_MISSING_AUTHORS>ignore</JAVADOC_MISSING_AUTHORS>
- <JAXRS_MISSING_PRODUCES>warn</JAXRS_MISSING_PRODUCES>
- <JAXRS_MISSING_CONSUMES>warn</JAXRS_MISSING_CONSUMES>
- <JAXRS_MISSING_PATH_PARAM>warn</JAXRS_MISSING_PATH_PARAM>
- <REST_UNMAPPED_EXCEPTION>warn</REST_UNMAPPED_EXCEPTION>
- <UNREACHABLE_RESOURCE>warn</UNREACHABLE_RESOURCE>
- <PARTIAL_RESOURCE_OVERLAP>warn</PARTIAL_RESOURCE_OVERLAP>
- </checks>
- </analysis>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <tags>
- <tag>
- <name>summary</name>
- <placement>a</placement>
- <head>MireDot summary (resource title)</head>
- </tag>
- <tag>
- <name>title</name>
- <placement>a</placement>
- <head>MireDot title (resource title)</head>
- </tag>
- <tag>
- <name>servicetag</name>
- <placement>a</placement>
- <head>MireDot resource tag (label)</head>
- </tag>
- <tag>
- <name>statuscode</name>
- <placement>a</placement>
- <head>MireDot resource status code(s)</head>
- </tag>
- <tag>
- <name>responseheader</name>
- <placement>a</placement>
- <head>MireDot response header</head>
- </tag>
- </tags>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- <profile>
- <id>rest-doc-jdk10</id>
- <activation>
- <os>
- <family>!windows</family>
- </os>
- <jdk>
- 1.10
- </jdk>
- </activation>
- <build>
- <plugins>
- <plugin>
- <groupId>com.qmino</groupId>
- <artifactId>miredot-plugin</artifactId>
- <version>2.2.1-Java10</version>
- <executions>
- <execution>
- <goals>
- <goal>restdoc</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <licence>cHJvamVjdHxvcmcuYXBhY2hlLnVub21pLnVub21pLXJlc3R8MjAyMC0wMi0yOHx0cnVlfC0xI01Dd0NGQ01pMDRxTFZ6LzJ4SG82MjAranZITnRLYWovQWhRcG4vS01jdTU2NXpOWkRpUzcwQXMrdC96bVdRPT0=</licence>
- <output>
- <title>Documentation for Apache Unomi's RESTful API ${project.version}</title>
- <html>
- <!-- optional html configuration -->
- <location>${project.parent.build.directory}/staging/rest-api-doc</location>
- </html>
- <raml />
- </output>
- <restModel>
- <restFramework>
- <name>jax-rs</name>
- <cxfServiceConfig>
- <item>src/main/resources/OSGI-INF/blueprint/blueprint.xml</item>
- </cxfServiceConfig>
- </restFramework>
- <httpStatusCodes>
- <httpStatusCode>
- <httpCode>200</httpCode>
- <document>always</document>
- <defaultMessage>The service call has completed successfully.</defaultMessage>
- </httpStatusCode>
- <httpStatusCode>
- <httpCode>401</httpCode>
- <document>explicit: com.acme.exceptions.AuthorizationException</document>
- <defaultMessage>The user is not authorized to use this service.</defaultMessage>
- </httpStatusCode>
- <httpStatusCode>
- <httpCode>412</httpCode>
- <document>put,post</document>
- <defaultMessage>Invalid JSON/XML input.</defaultMessage>
- </httpStatusCode>
- <httpStatusCode>
- <httpCode>500</httpCode>
- <document>always</document>
- <defaultMessage>The service call has not succeeded.</defaultMessage>
- <sticky>true</sticky> <!-- Document always, even if there is an @statuscode tag -->
- </httpStatusCode>
- </httpStatusCodes>
- <externalSources>
- <sourceDirs>
- <sourceDir>../api/src/main/java</sourceDir>
- </sourceDirs>
- </externalSources>
- </restModel>
- <analysis>
- <checks>
- <JAVADOC_MISSING_SUMMARY>warn</JAVADOC_MISSING_SUMMARY>
- <JAVADOC_MISSING_INTERFACEDOCUMENTATION>warn</JAVADOC_MISSING_INTERFACEDOCUMENTATION>
- <JAVADOC_MISSING_PARAMETER_DOCUMENTATION>warn</JAVADOC_MISSING_PARAMETER_DOCUMENTATION>
- <JAVADOC_MISSING_EXCEPTION_DOCUMENTATION>warn</JAVADOC_MISSING_EXCEPTION_DOCUMENTATION>
- <JAVADOC_MISSING_AUTHORS>ignore</JAVADOC_MISSING_AUTHORS>
- <JAXRS_MISSING_PRODUCES>warn</JAXRS_MISSING_PRODUCES>
- <JAXRS_MISSING_CONSUMES>warn</JAXRS_MISSING_CONSUMES>
- <JAXRS_MISSING_PATH_PARAM>warn</JAXRS_MISSING_PATH_PARAM>
- <REST_UNMAPPED_EXCEPTION>warn</REST_UNMAPPED_EXCEPTION>
- <UNREACHABLE_RESOURCE>warn</UNREACHABLE_RESOURCE>
- <PARTIAL_RESOURCE_OVERLAP>warn</PARTIAL_RESOURCE_OVERLAP>
- </checks>
- </analysis>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <tags>
- <tag>
- <name>summary</name>
- <placement>a</placement>
- <head>MireDot summary (resource title)</head>
- </tag>
- <tag>
- <name>title</name>
- <placement>a</placement>
- <head>MireDot title (resource title)</head>
- </tag>
- <tag>
- <name>servicetag</name>
- <placement>a</placement>
- <head>MireDot resource tag (label)</head>
- </tag>
- <tag>
- <name>statuscode</name>
- <placement>a</placement>
- <head>MireDot resource status code(s)</head>
- </tag>
- <tag>
- <name>responseheader</name>
- <placement>a</placement>
- <head>MireDot response header</head>
- </tag>
- </tags>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-
- <build>
- </build>
</project>
diff --git a/rest/src/main/java/org/apache/unomi/rest/CampaignsServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/CampaignsServiceEndPoint.java
index 28d275a..5dbace2 100644
--- a/rest/src/main/java/org/apache/unomi/rest/CampaignsServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/CampaignsServiceEndPoint.java
@@ -26,6 +26,8 @@ import org.apache.unomi.api.campaigns.events.CampaignEvent;
import org.apache.unomi.api.query.Query;
import org.apache.unomi.api.rules.Rule;
import org.apache.unomi.api.services.GoalsService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,10 +47,13 @@ import java.util.Set;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/campaigns")
+@Component(service=CampaignsServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class CampaignsServiceEndPoint {
private static final Logger logger = LoggerFactory.getLogger(CampaignsServiceEndPoint.class.getName());
+ @Reference
private GoalsService goalsService;
public CampaignsServiceEndPoint() {
diff --git a/rest/src/main/java/org/apache/unomi/rest/ClusterServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/ClusterServiceEndPoint.java
index 1bb01e3..9f26c7d 100644
--- a/rest/src/main/java/org/apache/unomi/rest/ClusterServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/ClusterServiceEndPoint.java
@@ -21,6 +21,8 @@ import org.apache.cxf.jaxrs.ext.MessageContext;
import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
import org.apache.unomi.api.ClusterNode;
import org.apache.unomi.api.services.ClusterService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -42,12 +44,15 @@ import java.util.List;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/cluster")
+@Component(service=ClusterServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class ClusterServiceEndPoint {
private static final Logger logger = LoggerFactory.getLogger(ClusterServiceEndPoint.class.getName());
@Context
private MessageContext messageContext;
+ @Reference
private ClusterService clusterService;
public ClusterServiceEndPoint() {
diff --git a/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
index b2afa07..8b2c7c0 100644
--- a/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
@@ -24,6 +24,8 @@ import org.apache.unomi.api.ValueType;
import org.apache.unomi.api.actions.ActionType;
import org.apache.unomi.api.conditions.ConditionType;
import org.apache.unomi.api.services.DefinitionsService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -42,10 +44,15 @@ import java.util.*;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/definitions")
+@Component(service=DefinitionsServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class DefinitionsServiceEndPoint {
private static final Logger logger = LoggerFactory.getLogger(DefinitionsServiceEndPoint.class.getName());
+ @Reference
private DefinitionsService definitionsService;
+
+ @Reference
private LocalizationHelper localizationHelper;
@WebMethod(exclude = true)
diff --git a/rest/src/main/java/org/apache/unomi/rest/EventServiceEndpoint.java b/rest/src/main/java/org/apache/unomi/rest/EventServiceEndpoint.java
index f548d77..076b037 100644
--- a/rest/src/main/java/org/apache/unomi/rest/EventServiceEndpoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/EventServiceEndpoint.java
@@ -21,6 +21,8 @@ import org.apache.unomi.api.Event;
import org.apache.unomi.api.PartialList;
import org.apache.unomi.api.query.Query;
import org.apache.unomi.api.services.EventService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import javax.jws.WebMethod;
import javax.jws.WebService;
@@ -40,8 +42,11 @@ import javax.ws.rs.core.MediaType;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/events")
+@Component(service=EventServiceEndpoint.class,property = "osgi.jaxrs.resource=true")
public class EventServiceEndpoint {
+ @Reference
private EventService eventService;
@WebMethod(exclude = true)
diff --git a/rest/src/main/java/org/apache/unomi/rest/GoalsServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/GoalsServiceEndPoint.java
index 120507d..0063640 100644
--- a/rest/src/main/java/org/apache/unomi/rest/GoalsServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/GoalsServiceEndPoint.java
@@ -25,6 +25,8 @@ import org.apache.unomi.api.query.AggregateQuery;
import org.apache.unomi.api.query.Query;
import org.apache.unomi.api.rules.Rule;
import org.apache.unomi.api.services.GoalsService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import javax.jws.WebMethod;
import javax.jws.WebService;
@@ -42,8 +44,11 @@ import java.util.Set;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/goals")
+@Component(service=GoalsServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class GoalsServiceEndPoint {
+ @Reference
private GoalsService goalsService;
@WebMethod(exclude = true)
diff --git a/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java b/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
index 38a1203..148a425 100644
--- a/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
+++ b/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
@@ -22,6 +22,10 @@ import org.apache.unomi.api.ValueType;
import org.apache.unomi.api.actions.ActionType;
import org.apache.unomi.api.conditions.ConditionType;
import org.osgi.framework.BundleContext;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -33,13 +37,21 @@ import java.util.ResourceBundle;
/**
* A helper class to provide localized versions of context server entities.
*/
+@Component(service=LocalizationHelper.class)
public class LocalizationHelper {
private static final Logger logger = LoggerFactory.getLogger(LocalizationHelper.class.getName());
private BundleContext bundleContext;
+
+ @Reference
private ResourceBundleHelper resourceBundleHelper;
+ @Activate
+ public void activate(ComponentContext componentContext) {
+ this.bundleContext = componentContext.getBundleContext();
+ }
+
/**
* Creates {@link RESTConditionType}s, localized using the specified language, based on the specified {@link ConditionType}s.
*
diff --git a/rest/src/main/java/org/apache/unomi/rest/PatchServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/PatchServiceEndPoint.java
index b7d7a9c..81033d8 100644
--- a/rest/src/main/java/org/apache/unomi/rest/PatchServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/PatchServiceEndPoint.java
@@ -20,6 +20,8 @@ package org.apache.unomi.rest;
import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
import org.apache.unomi.api.Patch;
import org.apache.unomi.api.services.PatchService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import javax.jws.WebService;
import javax.ws.rs.*;
@@ -35,8 +37,11 @@ import javax.ws.rs.core.MediaType;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/patches")
+@Component(service=PatchServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class PatchServiceEndPoint {
+ @Reference
private PatchService patchService;
public void setPatchService(PatchService patchService) {
diff --git a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
index 0e47106..3ff36a9 100644
--- a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
@@ -26,6 +26,8 @@ import org.apache.unomi.api.services.EventService;
import org.apache.unomi.api.services.ProfileService;
import org.apache.unomi.api.services.SegmentService;
import org.apache.unomi.persistence.spi.CustomObjectMapper;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,16 +53,22 @@ import java.util.*;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/profiles")
+@Component(service=ProfileServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class ProfileServiceEndPoint {
private static final Logger logger = LoggerFactory.getLogger(ProfileServiceEndPoint.class.getName());
+ @Reference
private ProfileService profileService;
+ @Reference
private EventService eventService;
+ @Reference
private SegmentService segmentService;
+ @Reference
private LocalizationHelper localizationHelper;
public ProfileServiceEndPoint() {
diff --git a/rest/src/main/java/org/apache/unomi/rest/QueryServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/QueryServiceEndPoint.java
index 25e2456..c533e7d 100644
--- a/rest/src/main/java/org/apache/unomi/rest/QueryServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/QueryServiceEndPoint.java
@@ -22,6 +22,8 @@ import org.apache.unomi.api.Item;
import org.apache.unomi.api.conditions.Condition;
import org.apache.unomi.api.query.AggregateQuery;
import org.apache.unomi.api.services.QueryService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,11 +46,15 @@ import java.util.Map;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/query")
+@Component(service=QueryServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class QueryServiceEndPoint {
private static final Logger logger = LoggerFactory.getLogger(QueryServiceEndPoint.class.getName());
+ @Reference
private QueryService queryService;
+ @Reference
private LocalizationHelper localizationHelper;
@WebMethod(exclude = true)
diff --git a/rest/src/main/java/org/apache/unomi/rest/ResourceBundleHelper.java b/rest/src/main/java/org/apache/unomi/rest/ResourceBundleHelper.java
index 760a27e..abc375b 100644
--- a/rest/src/main/java/org/apache/unomi/rest/ResourceBundleHelper.java
+++ b/rest/src/main/java/org/apache/unomi/rest/ResourceBundleHelper.java
@@ -21,12 +21,16 @@ import org.apache.unomi.api.PluginType;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.wiring.BundleWiring;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.regex.Pattern;
+@Component(service=ResourceBundleHelper.class)
public class ResourceBundleHelper {
private static final Pattern COMMA = Pattern.compile(",", Pattern.LITERAL);
@@ -35,6 +39,11 @@ public class ResourceBundleHelper {
private BundleContext bundleContext;
+ @Activate
+ public void activate(ComponentContext componentContext) {
+ this.bundleContext = componentContext.getBundleContext();
+ }
+
private ResourceBundle getBundle(String lang, Bundle bundle, ClassLoader loader) {
Locale locale = getLocale(lang);
try {
diff --git a/rest/src/main/java/org/apache/unomi/rest/RestServer.java b/rest/src/main/java/org/apache/unomi/rest/RestServer.java
new file mode 100644
index 0000000..9004aae
--- /dev/null
+++ b/rest/src/main/java/org/apache/unomi/rest/RestServer.java
@@ -0,0 +1,180 @@
+/*
+ * 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;
+
+import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.feature.LoggingFeature;
+import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.apache.cxf.jaxrs.openapi.OpenApiCustomizer;
+import org.apache.cxf.jaxrs.openapi.OpenApiFeature;
+import org.apache.cxf.jaxrs.security.JAASAuthenticationFilter;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.ws.rs.ext.ExceptionMapper;
+import java.util.*;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+@Component
+public class RestServer {
+
+ private static final Logger logger = LoggerFactory.getLogger(RestServer.class.getName());
+
+ private Server server;
+ private BundleContext bundleContext;
+ private ServiceTracker jaxRSServiceTracker;
+ private List<ExceptionMapper> exceptionMappers = new ArrayList<>();
+ private long timeOfLastUpdate = System.currentTimeMillis();
+ private Timer refreshTimer = null;
+ private long startupDelay = 1000L;
+
+ final List<Object> serviceBeans = new CopyOnWriteArrayList<>();
+
+ @Reference
+ public void addExceptionMapper(ExceptionMapper exceptionMapper) {
+ this.exceptionMappers.add(exceptionMapper);
+ timeOfLastUpdate = System.currentTimeMillis();
+ refreshServer();
+ }
+
+ public void removeExceptionMapper(ExceptionMapper exceptionMapper) {
+ this.exceptionMappers.remove(exceptionMapper);
+ timeOfLastUpdate = System.currentTimeMillis();
+ refreshServer();
+ }
+
+ @Activate
+ public void activate(ComponentContext componentContext) throws Exception {
+ this.bundleContext = componentContext.getBundleContext();
+
+ Filter filter = bundleContext.createFilter("(osgi.jaxrs.resource=true)");
+ jaxRSServiceTracker = new ServiceTracker(bundleContext, filter, new ServiceTrackerCustomizer() {
+ @Override
+ public Object addingService(ServiceReference reference) {
+ Object serviceBean = bundleContext.getService(reference);
+ logger.info("Registering JAX RS service " + serviceBean.getClass().getName());
+ serviceBeans.add(serviceBean);
+ timeOfLastUpdate = System.currentTimeMillis();
+ refreshServer();
+ return serviceBean;
+ }
+
+ @Override
+ public void modifiedService(ServiceReference reference, Object service) {
+ logger.info("Refreshing JAX RS server because service " + service.getClass().getName() + " was modified.");
+ timeOfLastUpdate = System.currentTimeMillis();
+ refreshServer();
+ }
+
+ @Override
+ public void removedService(ServiceReference reference, Object service) {
+ Object serviceBean = bundleContext.getService(reference);
+ logger.info("Removing JAX RS service " + serviceBean.getClass().getName());
+ serviceBeans.remove(serviceBean);
+ timeOfLastUpdate = System.currentTimeMillis();
+ refreshServer();
+ }
+ });
+ jaxRSServiceTracker.open();
+ }
+
+ @Deactivate
+ public void deactivate() throws Exception {
+ jaxRSServiceTracker.close();
+ if (server != null) {
+ server.destroy();
+ }
+ }
+
+ private synchronized void refreshServer() {
+ long now = System.currentTimeMillis();
+ logger.info("Time (millis) since last update: {}", now - timeOfLastUpdate);
+ if (now - timeOfLastUpdate < startupDelay) {
+ if (refreshTimer != null) {
+ return;
+ }
+ TimerTask task = new TimerTask() {
+ public void run() {
+ refreshTimer = null;
+ refreshServer();
+ logger.info("Refreshed server task performed on: " + new Date() +
+ " Thread's name: " + Thread.currentThread().getName());
+ }
+ };
+ refreshTimer = new Timer("Timer-Refresh-REST-API");
+
+ refreshTimer.schedule(task, startupDelay);
+ return;
+ }
+
+ if (server != null) {
+ logger.info("Shutting down JAX RS Endpoint... ");
+ server.destroy();
+ }
+
+ final OpenApiFeature openApiFeature = new OpenApiFeature();
+ openApiFeature.setContactEmail("dev@unomi.apache.org");
+ openApiFeature.setLicense("Apache 2.0 License");
+ openApiFeature.setLicenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html");
+ openApiFeature.setScan(false);
+ openApiFeature.setUseContextBasedConfig(true); //Set<String> resourceClasses = serviceBeans.stream().map(service -> service.getClass().getName()).collect(toSet());
+ OpenApiCustomizer customizer = new OpenApiCustomizer();
+ customizer.setDynamicBasePath(true);
+ openApiFeature.setCustomizer(customizer);
+
+ JAXRSServerFactoryBean jaxrsServerFactoryBean = new JAXRSServerFactoryBean();
+ jaxrsServerFactoryBean.setAddress("/");
+ Bus bus = BusFactory.getDefaultBus();
+ // bus.getFeatures().add(new LoggingFeature());
+ bus.getFeatures().add(new LoggingFeature());
+ bus.getFeatures().add(new org.apache.cxf.metrics.MetricsFeature());
+ jaxrsServerFactoryBean.setBus(bus);
+ jaxrsServerFactoryBean.setProvider(
+ new JacksonJaxbJsonProvider(
+ new org.apache.unomi.persistence.spi.CustomObjectMapper(),
+ JacksonJaxbJsonProvider.DEFAULT_ANNOTATIONS));
+ jaxrsServerFactoryBean.setProvider(new org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter());
+ JAASAuthenticationFilter jaasFilter = new org.apache.cxf.jaxrs.security.JAASAuthenticationFilter();
+ jaasFilter.setContextName("karaf");
+ jaasFilter.setRoleClassifier("ROLE_");
+ jaasFilter.setRealmName("cxs");
+ jaxrsServerFactoryBean.setProvider(jaasFilter);
+ for (ExceptionMapper exceptionMapper : exceptionMappers) {
+ jaxrsServerFactoryBean.setProvider(exceptionMapper);
+ }
+ jaxrsServerFactoryBean.setServiceBeans(serviceBeans);
+ jaxrsServerFactoryBean.getFeatures().add(openApiFeature);
+ if (serviceBeans.size() > 0) {
+ logger.info("Starting JAX RS Endpoint...");
+ server = jaxrsServerFactoryBean.create();
+ }
+ }
+
+}
diff --git a/rest/src/main/java/org/apache/unomi/rest/RulesServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/RulesServiceEndPoint.java
index f27a95e..b52ed79 100644
--- a/rest/src/main/java/org/apache/unomi/rest/RulesServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/RulesServiceEndPoint.java
@@ -24,6 +24,8 @@ import org.apache.unomi.api.query.Query;
import org.apache.unomi.api.rules.Rule;
import org.apache.unomi.api.rules.RuleStatistics;
import org.apache.unomi.api.services.RulesService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,10 +46,13 @@ import java.util.Set;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/rules")
+@Component(service=RulesServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class RulesServiceEndPoint {
private static final Logger logger = LoggerFactory.getLogger(RulesServiceEndPoint.class.getName());
+ @Reference
private RulesService rulesService;
public RulesServiceEndPoint() {
diff --git a/rest/src/main/java/org/apache/unomi/rest/ScoringServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/ScoringServiceEndPoint.java
index c7b83cc..fc0ca72 100644
--- a/rest/src/main/java/org/apache/unomi/rest/ScoringServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/ScoringServiceEndPoint.java
@@ -25,6 +25,8 @@ import org.apache.unomi.api.query.Query;
import org.apache.unomi.api.segments.DependentMetadata;
import org.apache.unomi.api.segments.Scoring;
import org.apache.unomi.api.services.SegmentService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,10 +46,13 @@ import java.util.List;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/scoring")
+@Component(service=ScoringServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class ScoringServiceEndPoint {
private static final Logger logger = LoggerFactory.getLogger(ScoringServiceEndPoint.class.getName());
+ @Reference
private SegmentService segmentService;
public ScoringServiceEndPoint() {
diff --git a/rest/src/main/java/org/apache/unomi/rest/SegmentServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/SegmentServiceEndPoint.java
index 240c9a0..0c7f9c9 100644
--- a/rest/src/main/java/org/apache/unomi/rest/SegmentServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/SegmentServiceEndPoint.java
@@ -25,6 +25,8 @@ import org.apache.unomi.api.query.Query;
import org.apache.unomi.api.segments.DependentMetadata;
import org.apache.unomi.api.segments.Segment;
import org.apache.unomi.api.services.SegmentService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,10 +46,13 @@ import java.util.List;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/segments")
+@Component(service=SegmentServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class SegmentServiceEndPoint {
private static final Logger logger = LoggerFactory.getLogger(SegmentServiceEndPoint.class.getName());
+ @Reference
private SegmentService segmentService;
public SegmentServiceEndPoint() {
diff --git a/rest/src/main/java/org/apache/unomi/rest/UserListServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/UserListServiceEndPoint.java
index 6a4c264..33484ff 100644
--- a/rest/src/main/java/org/apache/unomi/rest/UserListServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/UserListServiceEndPoint.java
@@ -25,6 +25,8 @@ import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
import org.apache.unomi.api.Metadata;
import org.apache.unomi.api.lists.UserList;
import org.apache.unomi.api.services.UserListService;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,10 +46,13 @@ import java.util.List;
allowAllOrigins = true,
allowCredentials = true
)
+@Path("/userList")
+@Component(service=UserListServiceEndPoint.class,property = "osgi.jaxrs.resource=true")
public class UserListServiceEndPoint {
private static final Logger logger = LoggerFactory.getLogger(UserListServiceEndPoint.class.getName());
+ @Reference
private UserListService userListService;
public UserListServiceEndPoint() {
diff --git a/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644
index dba20eb..0000000
--- a/rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ /dev/null
@@ -1,280 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ 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.
- -->
-
-<blueprint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
- xmlns:cxf="http://cxf.apache.org/blueprint/core"
- xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
- xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
- xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
- http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
- http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd
- http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd">
- <cm:property-placeholder persistent-id="org.apache.unomi.rest.segmentserviceendpoint"
- update-strategy="reload">
- </cm:property-placeholder>
-
- <cxf:bus>
- <cxf:features>
- <cxf:logging/>
- <bean class="org.apache.cxf.metrics.MetricsFeature"/>
- </cxf:features>
- </cxf:bus>
-
- <bean id="cors-filter" class="org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter"/>
- <bean id="jacksonMapper" class="org.apache.unomi.persistence.spi.CustomObjectMapper"/>
- <bean id="jaxb-provider" class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider">
- <argument index="0" ref="jacksonMapper" type="com.fasterxml.jackson.databind.ObjectMapper "/>
- <argument index="1" type="com.fasterxml.jackson.jaxrs.cfg.Annotations[]">
- <array>
- <value>JACKSON</value>
- <value>JAXB</value>
- </array>
- </argument>
- </bean>
- <bean id="jaas-filter" class="org.apache.cxf.jaxrs.security.JAASAuthenticationFilter">
- <!-- Name of the JAAS Context -->
- <property name="contextName" value="karaf"/>
- <!-- Hint to the filter on how to have Principals representing users and roles separated
- while initializing a SecurityContext -->
- <property name="rolePrefix" value="ROLE_"/>
-
- <property name="realmName" value="cxs"/>
- <!-- Activate this if you want to force a redirect if auth is missing, by default it will trigger a 403 which
- is usually preferred -->
- <!--property name="redirectURI" value="/login.jsp"/-->
- </bean>
-
- <jaxrs:server address="/segments" id="restSegmentService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="segmentServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <jaxrs:server address="/userList" id="restUserListService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="userListServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <jaxrs:server address="/scoring" id="restScoringService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="scoringServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <jaxrs:server address="/definitions" id="restDefinitionsService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="definitionsServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <jaxrs:server address="/goals" id="restGoalsService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="goalsServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <jaxrs:server address="/campaigns" id="restCampaignsService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="campaignServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <jaxrs:server address="/rules" id="restRulesService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="rulesServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <jaxrs:server address="/profiles" id="restProfileService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="profileServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <jaxrs:server address="/cluster" id="restClusterService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="clusterServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <jaxrs:server address="/query" id="restQueryService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="queryServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <jaxrs:server address="/patches" id="restPatchService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="patchServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <jaxrs:server address="/events" id="restEventService">
- <jaxrs:providers>
- <ref component-id="jaxb-provider"/>
- <ref component-id="cors-filter"/>
- <ref component-id="jaas-filter"/>
- </jaxrs:providers>
-
- <jaxrs:serviceBeans>
- <ref component-id="eventServiceEndPoint"/>
- </jaxrs:serviceBeans>
- </jaxrs:server>
-
- <reference id="segmentService" interface="org.apache.unomi.api.services.SegmentService"/>
- <reference id="userListService" interface="org.apache.unomi.api.services.UserListService"/>
- <reference id="definitionsService" interface="org.apache.unomi.api.services.DefinitionsService"/>
- <reference id="goalsService" interface="org.apache.unomi.api.services.GoalsService"/>
- <reference id="rulesService" interface="org.apache.unomi.api.services.RulesService"/>
- <reference id="profileService" interface="org.apache.unomi.api.services.ProfileService"/>
- <reference id="clusterService" interface="org.apache.unomi.api.services.ClusterService"/>
- <reference id="queryService" interface="org.apache.unomi.api.services.QueryService"/>
- <reference id="eventService" interface="org.apache.unomi.api.services.EventService"/>
- <reference id="patchService" interface="org.apache.unomi.api.services.PatchService"/>
-
- <bean id="segmentServiceEndPoint" class="org.apache.unomi.rest.SegmentServiceEndPoint">
- <property name="segmentService" ref="segmentService"/>
- </bean>
-
- <bean id="userListServiceEndPoint" class="org.apache.unomi.rest.UserListServiceEndPoint">
- <property name="userListService" ref="userListService"/>
- </bean>
-
- <bean id="scoringServiceEndPoint" class="org.apache.unomi.rest.ScoringServiceEndPoint">
- <property name="segmentService" ref="segmentService"/>
- </bean>
-
- <bean id="definitionsServiceEndPoint" class="org.apache.unomi.rest.DefinitionsServiceEndPoint">
- <property name="definitionsService" ref="definitionsService"/>
- <property name="localizationHelper" ref="localizationHelper"/>
- </bean>
-
- <bean id="goalsServiceEndPoint" class="org.apache.unomi.rest.GoalsServiceEndPoint">
- <property name="goalsService" ref="goalsService"/>
- </bean>
-
- <bean id="campaignServiceEndPoint" class="org.apache.unomi.rest.CampaignsServiceEndPoint">
- <property name="goalsService" ref="goalsService"/>
- </bean>
-
- <bean id="rulesServiceEndPoint" class="org.apache.unomi.rest.RulesServiceEndPoint">
- <property name="rulesService" ref="rulesService"/>
- </bean>
-
- <bean id="profileServiceEndPoint" class="org.apache.unomi.rest.ProfileServiceEndPoint">
- <property name="profileService" ref="profileService"/>
- <property name="eventService" ref="eventService"/>
- <property name="segmentService" ref="segmentService"/>
- <property name="localizationHelper" ref="localizationHelper"/>
- </bean>
-
- <bean id="clusterServiceEndPoint" class="org.apache.unomi.rest.ClusterServiceEndPoint">
- <property name="clusterService" ref="clusterService"/>
- </bean>
-
- <bean id="queryServiceEndPoint" class="org.apache.unomi.rest.QueryServiceEndPoint">
- <property name="queryService" ref="queryService"/>
- <property name="localizationHelper" ref="localizationHelper"/>
- </bean>
-
- <bean id="patchServiceEndPoint" class="org.apache.unomi.rest.PatchServiceEndPoint">
- <property name="patchService" ref="patchService"/>
- </bean>
-
- <bean id="eventServiceEndPoint" class="org.apache.unomi.rest.EventServiceEndpoint">
- <property name="eventService" ref="eventService"/>
- </bean>
-
- <bean id="resourceBundleHelper" class="org.apache.unomi.rest.ResourceBundleHelper">
- <property name="bundleContext" ref="blueprintBundleContext"/>
- </bean>
-
- <bean id="localizationHelper" class="org.apache.unomi.rest.LocalizationHelper">
- <property name="bundleContext" ref="blueprintBundleContext"/>
- <property name="resourceBundleHelper" ref="resourceBundleHelper"/>
- </bean>
-
-</blueprint>
diff --git a/scripting/pom.xml b/scripting/pom.xml
index a44f92e..ee04387 100644
--- a/scripting/pom.xml
+++ b/scripting/pom.xml
@@ -63,7 +63,7 @@
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
<scope>provided</scope>
</dependency>
diff --git a/services/pom.xml b/services/pom.xml
index 4ec7d4a..2ab56f9 100644
--- a/services/pom.xml
+++ b/services/pom.xml
@@ -40,13 +40,13 @@
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
+ <artifactId>osgi.cmpn</artifactId>
<scope>provided</scope>
</dependency>
diff --git a/tools/shell-commands/pom.xml b/tools/shell-commands/pom.xml
index 2d904dd..334bbff 100644
--- a/tools/shell-commands/pom.xml
+++ b/tools/shell-commands/pom.xml
@@ -57,13 +57,13 @@
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
+ <artifactId>osgi.cmpn</artifactId>
<scope>provided</scope>
</dependency>
diff --git a/tools/shell-dev-commands/pom.xml b/tools/shell-dev-commands/pom.xml
index e246e13..344e0f3 100644
--- a/tools/shell-dev-commands/pom.xml
+++ b/tools/shell-dev-commands/pom.xml
@@ -89,13 +89,13 @@
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
+ <artifactId>osgi.core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
+ <artifactId>osgi.cmpn</artifactId>
<scope>provided</scope>
</dependency>