Loading pom.xml +30 −2 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>com.inteligr8.alfresco</groupId> <artifactId>aps-public-rest-api</artifactId> <version>1.0-v1-SNAPSHOT</version> <version>1.0-SNAPSHOT-v1</version> <name>Alfresco Process Services ReST API Client for Java</name> <properties> Loading @@ -18,8 +18,8 @@ <junit.version>5.7.2</junit.version> <spring.version>5.2.14.RELEASE</spring.version> <spring-boot.version>2.3.10.RELEASE</spring-boot.version> <jersey.version>2.34</jersey.version> <cxf.version>3.3.2</cxf.version> </properties> <dependencies> Loading @@ -33,11 +33,33 @@ <artifactId>jackson-databind</artifactId> <version>2.12.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> <version>2.12.2</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.29</version> </dependency> <dependency> <groupId>jakarta.ws.rs</groupId> <artifactId>jakarta.ws.rs-api</artifactId> <version>2.1.6</version> </dependency> <dependency> <groupId>org.glassfish.jersey.ext</groupId> <artifactId>jersey-proxy-client</artifactId> <version>${jersey.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-rs-client</artifactId> <version>${cxf.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-client</artifactId> Loading Loading @@ -68,6 +90,12 @@ <version>${spring.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.9</version> <scope>test</scope> </dependency> </dependencies> <build> Loading src/main/java/com/inteligr8/alfresco/activiti/ApsClient.java +50 −14 Original line number Diff line number Diff line package com.inteligr8.alfresco.activiti; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.ClientRequestFilter; import javax.ws.rs.client.WebTarget; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.inteligr8.alfresco.activiti.api.EnterpriseAPI; import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; import com.inteligr8.alfresco.activiti.api.AdminApi; import com.inteligr8.alfresco.activiti.api.AppVersionApi; import com.inteligr8.alfresco.activiti.api.ProcessInstancesApi; import com.inteligr8.alfresco.activiti.api.ProfileApi; import com.inteligr8.alfresco.activiti.api.TasksApi; /** * Afresco Process Services Spring Client * Alfresco Process Services Spring Client */ @Component @Component("apsClient") public class ApsClient { private static final ApsClient INSTANCE = new ApsClient(); @Autowired private ApsClientConfiguration config; public static ApsClient getInstance() { return ApsClient.INSTANCE; protected ApsClientConfiguration getConfig() { return this.config; } public Client getClient() { ClientRequestFilter authFilter = this.config.getAuthorizationFilter(); ClientBuilder clientBuilder = ClientBuilder.newBuilder() .register(new JacksonJaxbJsonProvider()); if (authFilter != null) clientBuilder.register(authFilter); @Autowired private ApsClientConfiguration config; return clientBuilder.build(); } public WebTarget getTarget() { return this.getClient() .target(this.config.getBaseUrl()); } protected <T> T getApi(Class<T> apiClass) { throw new UnsupportedOperationException(); } public AdminApi getAdminApi() { return this.getApi(AdminApi.class); } public AppVersionApi getAppVersionApi() { return this.getApi(AppVersionApi.class); } public ProcessInstancesApi getProcessInstancesApi() { return this.getApi(ProcessInstancesApi.class); } public EnterpriseAPI getEnterpriseAPI() { javax.ws.rs.client.Client client = ClientBuilder .newClient(); public ProfileApi getProfileApi() { return this.getApi(ProfileApi.class); } this.config.authorize(client); return new EnterpriseAPI(this.config.getBaseUrl() + "/api", client); public TasksApi getTasksApi() { return this.getApi(TasksApi.class); } } src/main/java/com/inteligr8/alfresco/activiti/ApsClientConfiguration.java +12 −10 Original line number Diff line number Diff line package com.inteligr8.alfresco.activiti; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientRequestFilter; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.ComponentScan; Loading @@ -10,27 +10,29 @@ import org.springframework.context.annotation.Configuration; @ComponentScan public class ApsClientConfiguration { @Value("${process.service.baseUrl}") @Value("${process.service.baseUrl:http://localhost:8080/activiti-app}") private String baseUrl; @Value("${process.service.security.basicAuth.username}") @Value("${process.service.security.basicAuth.username:admin@app.activiti.com}") private String basicAuthUsername; @Value("${process.service.security.basicAuth.password}") @Value("${process.service.security.basicAuth.password:admin}") private String basicAuthPassword; @Value("${process.service.security.accessToken}") @Value("${process.service.security.accessToken:#{null}}") private String accessToken; public String getBaseUrl() { return this.baseUrl; } public void authorize(Client client) { if (this.basicAuthUsername != null) { client.register(new BasicAuthRequestFilter(this.basicAuthUsername, this.basicAuthPassword)); } else if (this.accessToken != null) { client.register(new AccessTokenRequestFilter(this.accessToken)); public ClientRequestFilter getAuthorizationFilter() { if (this.accessToken != null) { return new AccessTokenRequestFilter(this.accessToken); } else if (this.basicAuthUsername != null) { return new BasicAuthRequestFilter(this.basicAuthUsername, this.basicAuthPassword); } else { return null; } } Loading src/main/java/com/inteligr8/alfresco/activiti/ApsClientCxfImpl.java 0 → 100644 +58 −0 Original line number Diff line number Diff line package com.inteligr8.alfresco.activiti; import java.util.LinkedList; import java.util.List; import javax.ws.rs.client.ClientRequestFilter; import javax.ws.rs.ext.RuntimeDelegate; import org.apache.cxf.jaxrs.client.JAXRSClientFactory; import org.apache.cxf.jaxrs.client.WebClient; import org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; /** * Alfresco Process Services Spring Client for CXF */ @Component("apsClient.cxf") @Lazy public class ApsClientCxfImpl extends ApsClient implements InitializingBean { private final Logger logger = LoggerFactory.getLogger(ApsClientCxfImpl.class); @Override public void afterPropertiesSet() { if (RuntimeDelegate.getInstance() == null) { this.logger.info("Setting JAX-RS runtime delegate to the CXF library"); RuntimeDelegate.setInstance(new RuntimeDelegateImpl()); } else if (RuntimeDelegate.getInstance() instanceof RuntimeDelegateImpl) { this.logger.info("JAX-RS runtime delegate already the CXF library"); } else { this.logger.warn("Setting JAX-RS runtime delegate to the CXF library; was: " + RuntimeDelegate.getInstance().getClass().getName()); RuntimeDelegate.setInstance(new RuntimeDelegateImpl()); } } public WebClient getCxfClient() { List<Object> providersAndFilters = new LinkedList<Object>(); providersAndFilters.add(new JacksonJaxbJsonProvider()); ClientRequestFilter authFilter = this.getConfig().getAuthorizationFilter(); if (authFilter != null) providersAndFilters.add(authFilter); return WebClient.create(this.getConfig().getBaseUrl(), providersAndFilters); } @Override protected <T> T getApi(Class<T> apiClass) { return JAXRSClientFactory.fromClient(this.getCxfClient(), apiClass); } } src/main/java/com/inteligr8/alfresco/activiti/ApsClientJerseyImpl.java 0 → 100644 +40 −0 Original line number Diff line number Diff line package com.inteligr8.alfresco.activiti; import javax.ws.rs.ext.RuntimeDelegate; import org.glassfish.jersey.client.proxy.WebResourceFactory; import org.glassfish.jersey.internal.RuntimeDelegateImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; /** * Alfresco Process Services Spring Client for Jersey */ @Component("apsClient.jersey") @Lazy public class ApsClientJerseyImpl extends ApsClient implements InitializingBean { private final Logger logger = LoggerFactory.getLogger(ApsClientJerseyImpl.class); @Override public void afterPropertiesSet() { if (RuntimeDelegate.getInstance() == null) { this.logger.info("Setting JAX-RS runtime delegate to the Jersey library"); RuntimeDelegate.setInstance(new RuntimeDelegateImpl()); } else if (RuntimeDelegate.getInstance() instanceof RuntimeDelegateImpl) { this.logger.info("JAX-RS runtime delegate already the Jersey library"); } else { this.logger.warn("Setting JAX-RS runtime delegate to the Jersey library; was: " + RuntimeDelegate.getInstance().getClass().getName()); RuntimeDelegate.setInstance(new RuntimeDelegateImpl()); } } @Override protected <T> T getApi(Class<T> apiClass) { return WebResourceFactory.newResource(apiClass, this.getTarget()); } } Loading
pom.xml +30 −2 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>com.inteligr8.alfresco</groupId> <artifactId>aps-public-rest-api</artifactId> <version>1.0-v1-SNAPSHOT</version> <version>1.0-SNAPSHOT-v1</version> <name>Alfresco Process Services ReST API Client for Java</name> <properties> Loading @@ -18,8 +18,8 @@ <junit.version>5.7.2</junit.version> <spring.version>5.2.14.RELEASE</spring.version> <spring-boot.version>2.3.10.RELEASE</spring-boot.version> <jersey.version>2.34</jersey.version> <cxf.version>3.3.2</cxf.version> </properties> <dependencies> Loading @@ -33,11 +33,33 @@ <artifactId>jackson-databind</artifactId> <version>2.12.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> <version>2.12.2</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.29</version> </dependency> <dependency> <groupId>jakarta.ws.rs</groupId> <artifactId>jakarta.ws.rs-api</artifactId> <version>2.1.6</version> </dependency> <dependency> <groupId>org.glassfish.jersey.ext</groupId> <artifactId>jersey-proxy-client</artifactId> <version>${jersey.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-rs-client</artifactId> <version>${cxf.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-client</artifactId> Loading Loading @@ -68,6 +90,12 @@ <version>${spring.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.9</version> <scope>test</scope> </dependency> </dependencies> <build> Loading
src/main/java/com/inteligr8/alfresco/activiti/ApsClient.java +50 −14 Original line number Diff line number Diff line package com.inteligr8.alfresco.activiti; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.ClientRequestFilter; import javax.ws.rs.client.WebTarget; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.inteligr8.alfresco.activiti.api.EnterpriseAPI; import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; import com.inteligr8.alfresco.activiti.api.AdminApi; import com.inteligr8.alfresco.activiti.api.AppVersionApi; import com.inteligr8.alfresco.activiti.api.ProcessInstancesApi; import com.inteligr8.alfresco.activiti.api.ProfileApi; import com.inteligr8.alfresco.activiti.api.TasksApi; /** * Afresco Process Services Spring Client * Alfresco Process Services Spring Client */ @Component @Component("apsClient") public class ApsClient { private static final ApsClient INSTANCE = new ApsClient(); @Autowired private ApsClientConfiguration config; public static ApsClient getInstance() { return ApsClient.INSTANCE; protected ApsClientConfiguration getConfig() { return this.config; } public Client getClient() { ClientRequestFilter authFilter = this.config.getAuthorizationFilter(); ClientBuilder clientBuilder = ClientBuilder.newBuilder() .register(new JacksonJaxbJsonProvider()); if (authFilter != null) clientBuilder.register(authFilter); @Autowired private ApsClientConfiguration config; return clientBuilder.build(); } public WebTarget getTarget() { return this.getClient() .target(this.config.getBaseUrl()); } protected <T> T getApi(Class<T> apiClass) { throw new UnsupportedOperationException(); } public AdminApi getAdminApi() { return this.getApi(AdminApi.class); } public AppVersionApi getAppVersionApi() { return this.getApi(AppVersionApi.class); } public ProcessInstancesApi getProcessInstancesApi() { return this.getApi(ProcessInstancesApi.class); } public EnterpriseAPI getEnterpriseAPI() { javax.ws.rs.client.Client client = ClientBuilder .newClient(); public ProfileApi getProfileApi() { return this.getApi(ProfileApi.class); } this.config.authorize(client); return new EnterpriseAPI(this.config.getBaseUrl() + "/api", client); public TasksApi getTasksApi() { return this.getApi(TasksApi.class); } }
src/main/java/com/inteligr8/alfresco/activiti/ApsClientConfiguration.java +12 −10 Original line number Diff line number Diff line package com.inteligr8.alfresco.activiti; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientRequestFilter; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.ComponentScan; Loading @@ -10,27 +10,29 @@ import org.springframework.context.annotation.Configuration; @ComponentScan public class ApsClientConfiguration { @Value("${process.service.baseUrl}") @Value("${process.service.baseUrl:http://localhost:8080/activiti-app}") private String baseUrl; @Value("${process.service.security.basicAuth.username}") @Value("${process.service.security.basicAuth.username:admin@app.activiti.com}") private String basicAuthUsername; @Value("${process.service.security.basicAuth.password}") @Value("${process.service.security.basicAuth.password:admin}") private String basicAuthPassword; @Value("${process.service.security.accessToken}") @Value("${process.service.security.accessToken:#{null}}") private String accessToken; public String getBaseUrl() { return this.baseUrl; } public void authorize(Client client) { if (this.basicAuthUsername != null) { client.register(new BasicAuthRequestFilter(this.basicAuthUsername, this.basicAuthPassword)); } else if (this.accessToken != null) { client.register(new AccessTokenRequestFilter(this.accessToken)); public ClientRequestFilter getAuthorizationFilter() { if (this.accessToken != null) { return new AccessTokenRequestFilter(this.accessToken); } else if (this.basicAuthUsername != null) { return new BasicAuthRequestFilter(this.basicAuthUsername, this.basicAuthPassword); } else { return null; } } Loading
src/main/java/com/inteligr8/alfresco/activiti/ApsClientCxfImpl.java 0 → 100644 +58 −0 Original line number Diff line number Diff line package com.inteligr8.alfresco.activiti; import java.util.LinkedList; import java.util.List; import javax.ws.rs.client.ClientRequestFilter; import javax.ws.rs.ext.RuntimeDelegate; import org.apache.cxf.jaxrs.client.JAXRSClientFactory; import org.apache.cxf.jaxrs.client.WebClient; import org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; /** * Alfresco Process Services Spring Client for CXF */ @Component("apsClient.cxf") @Lazy public class ApsClientCxfImpl extends ApsClient implements InitializingBean { private final Logger logger = LoggerFactory.getLogger(ApsClientCxfImpl.class); @Override public void afterPropertiesSet() { if (RuntimeDelegate.getInstance() == null) { this.logger.info("Setting JAX-RS runtime delegate to the CXF library"); RuntimeDelegate.setInstance(new RuntimeDelegateImpl()); } else if (RuntimeDelegate.getInstance() instanceof RuntimeDelegateImpl) { this.logger.info("JAX-RS runtime delegate already the CXF library"); } else { this.logger.warn("Setting JAX-RS runtime delegate to the CXF library; was: " + RuntimeDelegate.getInstance().getClass().getName()); RuntimeDelegate.setInstance(new RuntimeDelegateImpl()); } } public WebClient getCxfClient() { List<Object> providersAndFilters = new LinkedList<Object>(); providersAndFilters.add(new JacksonJaxbJsonProvider()); ClientRequestFilter authFilter = this.getConfig().getAuthorizationFilter(); if (authFilter != null) providersAndFilters.add(authFilter); return WebClient.create(this.getConfig().getBaseUrl(), providersAndFilters); } @Override protected <T> T getApi(Class<T> apiClass) { return JAXRSClientFactory.fromClient(this.getCxfClient(), apiClass); } }
src/main/java/com/inteligr8/alfresco/activiti/ApsClientJerseyImpl.java 0 → 100644 +40 −0 Original line number Diff line number Diff line package com.inteligr8.alfresco.activiti; import javax.ws.rs.ext.RuntimeDelegate; import org.glassfish.jersey.client.proxy.WebResourceFactory; import org.glassfish.jersey.internal.RuntimeDelegateImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; /** * Alfresco Process Services Spring Client for Jersey */ @Component("apsClient.jersey") @Lazy public class ApsClientJerseyImpl extends ApsClient implements InitializingBean { private final Logger logger = LoggerFactory.getLogger(ApsClientJerseyImpl.class); @Override public void afterPropertiesSet() { if (RuntimeDelegate.getInstance() == null) { this.logger.info("Setting JAX-RS runtime delegate to the Jersey library"); RuntimeDelegate.setInstance(new RuntimeDelegateImpl()); } else if (RuntimeDelegate.getInstance() instanceof RuntimeDelegateImpl) { this.logger.info("JAX-RS runtime delegate already the Jersey library"); } else { this.logger.warn("Setting JAX-RS runtime delegate to the Jersey library; was: " + RuntimeDelegate.getInstance().getClass().getName()); RuntimeDelegate.setInstance(new RuntimeDelegateImpl()); } } @Override protected <T> T getApi(Class<T> apiClass) { return WebResourceFactory.newResource(apiClass, this.getTarget()); } }