From 8f1300b097566ae4b173f64f12de86e085baba8b Mon Sep 17 00:00:00 2001 From: Brian Long Date: Sat, 5 Jun 2021 17:28:18 -0400 Subject: [PATCH 1/4] added URL logging --- .../inteligr8/alfresco/activiti/ApsClientCxfImpl.java | 9 ++++++++- .../inteligr8/alfresco/activiti/ApsClientJerseyImpl.java | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsClientCxfImpl.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsClientCxfImpl.java index 0d7636c..4dc6d5e 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsClientCxfImpl.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsClientCxfImpl.java @@ -37,6 +37,9 @@ public class ApsClientCxfImpl extends ApsClient implements InitializingBean { this.logger.warn("Setting JAX-RS runtime delegate to the CXF library; was: " + RuntimeDelegate.getInstance().getClass().getName()); RuntimeDelegate.setInstance(new RuntimeDelegateImpl()); } + + if (this.logger.isInfoEnabled()) + this.logger.info("APS API Base URL: " + this.getConfig().getBaseUrl()); } public WebClient getCxfClient() { @@ -46,8 +49,12 @@ public class ApsClientCxfImpl extends ApsClient implements InitializingBean { ClientRequestFilter authFilter = this.getConfig().getAuthorizationFilter(); if (authFilter != null) providersAndFilters.add(authFilter); + + // we can't use JAXRSClientFactory with a JAXRS client (duh!) + // so we need to create a CXF client + WebClient client = WebClient.create(this.getConfig().getBaseUrl(), providersAndFilters); - return WebClient.create(this.getConfig().getBaseUrl(), providersAndFilters); + return client; } @Override diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsClientJerseyImpl.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsClientJerseyImpl.java index 4262599..b7c0b09 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsClientJerseyImpl.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsClientJerseyImpl.java @@ -30,6 +30,9 @@ public class ApsClientJerseyImpl extends ApsClient implements InitializingBean { this.logger.warn("Setting JAX-RS runtime delegate to the Jersey library; was: " + RuntimeDelegate.getInstance().getClass().getName()); RuntimeDelegate.setInstance(new RuntimeDelegateImpl()); } + + if (this.logger.isInfoEnabled()) + this.logger.info("APS API Base URL: " + this.getConfig().getBaseUrl()); } @Override From e2b6ed6177cfc0a8e185593b85f0b3c69f26c8b4 Mon Sep 17 00:00:00 2001 From: Brian Long Date: Sat, 5 Jun 2021 17:28:38 -0400 Subject: [PATCH 2/4] fixed junit conditional execution --- .../alfresco/activiti/ArrayResponseUnitTest.java | 11 +++++++++++ .../inteligr8/alfresco/activiti/ConditionalIT.java | 12 +++--------- .../alfresco/activiti/ConnectionCxfClientIT.java | 12 +++++++++--- .../alfresco/activiti/ConnectionJerseyClientIT.java | 12 +++++++++--- 4 files changed, 32 insertions(+), 15 deletions(-) diff --git a/src/test/java/com/inteligr8/alfresco/activiti/ArrayResponseUnitTest.java b/src/test/java/com/inteligr8/alfresco/activiti/ArrayResponseUnitTest.java index 2966658..118c370 100644 --- a/src/test/java/com/inteligr8/alfresco/activiti/ArrayResponseUnitTest.java +++ b/src/test/java/com/inteligr8/alfresco/activiti/ArrayResponseUnitTest.java @@ -6,14 +6,25 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIf; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import com.inteligr8.alfresco.activiti.model.Tenant; +@TestPropertySource(locations = {"/local.properties"}) +@SpringJUnitConfig(classes = {ApsClientConfiguration.class, ApsClient.class, ApsClientJerseyImpl.class}) public class ArrayResponseUnitTest extends ConditionalIT { @Autowired + @Qualifier("apsClient.jersey") private ApsClient client; + @Override + public ApsClientConfiguration getConfiguration() { + return this.client.getConfig(); + } + @Test @EnabledIf("hostExists") public void testTenants() { diff --git a/src/test/java/com/inteligr8/alfresco/activiti/ConditionalIT.java b/src/test/java/com/inteligr8/alfresco/activiti/ConditionalIT.java index 8c54b7b..13de883 100644 --- a/src/test/java/com/inteligr8/alfresco/activiti/ConditionalIT.java +++ b/src/test/java/com/inteligr8/alfresco/activiti/ConditionalIT.java @@ -6,19 +6,13 @@ import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.methods.RequestBuilder; import org.apache.http.impl.client.DefaultRedirectStrategy; import org.apache.http.impl.client.HttpClientBuilder; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestPropertySource; -@TestPropertySource(locations = {"/local.properties"}) -@ContextConfiguration(classes = {ApsClientConfiguration.class, ApsClient.class}) -public class ConditionalIT { +public abstract class ConditionalIT { - @Autowired - private ApsClient client; + public abstract ApsClientConfiguration getConfiguration(); public boolean hostExists() { - String uri = this.client.getConfig().getBaseUrl(); + String uri = this.getConfiguration().getBaseUrl(); HttpUriRequest request = RequestBuilder.get() .setUri(uri) diff --git a/src/test/java/com/inteligr8/alfresco/activiti/ConnectionCxfClientIT.java b/src/test/java/com/inteligr8/alfresco/activiti/ConnectionCxfClientIT.java index 1586eb8..65fe3f7 100644 --- a/src/test/java/com/inteligr8/alfresco/activiti/ConnectionCxfClientIT.java +++ b/src/test/java/com/inteligr8/alfresco/activiti/ConnectionCxfClientIT.java @@ -2,6 +2,7 @@ package com.inteligr8.alfresco.activiti; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIf; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.test.context.TestPropertySource; @@ -12,14 +13,19 @@ import com.inteligr8.alfresco.activiti.model.User; @TestPropertySource(locations = {"/local.properties"}) @SpringJUnitConfig(classes = {ApsClientConfiguration.class, ApsClient.class, ApsClientCxfImpl.class}) -public class ConnectionCxfClientIT { +public class ConnectionCxfClientIT extends ConditionalIT { @Autowired @Qualifier("apsClient.cxf") private ApsClient client; + @Override + public ApsClientConfiguration getConfiguration() { + return this.client.getConfig(); + } + @Test - //@EnabledIf("hostExists") + @EnabledIf("hostExists") public void testAppVersion() { AppVersion obj = this.client.getAppVersionApi().get(); @@ -29,7 +35,7 @@ public class ConnectionCxfClientIT { } @Test - //@EnabledIf("hostExists") + @EnabledIf("hostExists") public void testProfile() { User obj = this.client.getProfileApi().get(); diff --git a/src/test/java/com/inteligr8/alfresco/activiti/ConnectionJerseyClientIT.java b/src/test/java/com/inteligr8/alfresco/activiti/ConnectionJerseyClientIT.java index 6115986..16d92a2 100644 --- a/src/test/java/com/inteligr8/alfresco/activiti/ConnectionJerseyClientIT.java +++ b/src/test/java/com/inteligr8/alfresco/activiti/ConnectionJerseyClientIT.java @@ -2,6 +2,7 @@ package com.inteligr8.alfresco.activiti; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIf; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.test.context.TestPropertySource; @@ -12,14 +13,19 @@ import com.inteligr8.alfresco.activiti.model.User; @TestPropertySource(locations = {"/local.properties"}) @SpringJUnitConfig(classes = {ApsClientConfiguration.class, ApsClient.class, ApsClientJerseyImpl.class}) -public class ConnectionJerseyClientIT { +public class ConnectionJerseyClientIT extends ConditionalIT { @Autowired @Qualifier("apsClient.jersey") private ApsClient client; + @Override + public ApsClientConfiguration getConfiguration() { + return this.client.getConfig(); + } + @Test - //@EnabledIf("hostExists") + @EnabledIf("hostExists") public void testAppVersion() { AppVersion obj = this.client.getAppVersionApi().get(); @@ -29,7 +35,7 @@ public class ConnectionJerseyClientIT { } @Test - //@EnabledIf("hostExists") + @EnabledIf("hostExists") public void testProfile() { User obj = this.client.getProfileApi().get(); From b388ffb9ede1cec5edcced68836209771233be46 Mon Sep 17 00:00:00 2001 From: Brian Long Date: Mon, 7 Jun 2021 23:04:16 -0400 Subject: [PATCH 3/4] refactored using 'common-rest-api' --- pom.xml | 26 +------ .../activiti/AccessTokenRequestFilter.java | 20 ----- .../alfresco/activiti/ApsClient.java | 71 ------------------ .../activiti/ApsClientConfiguration.java | 75 ++++++++++++++++--- .../alfresco/activiti/ApsClientCxfImpl.java | 60 +++------------ .../activiti/ApsClientJerseyImpl.java | 40 +++------- .../alfresco/activiti/ApsPublicRestApi.java | 39 ++++++++++ .../activiti/ApsPublicRestApiCxfImpl.java | 29 +++++++ .../activiti/ApsPublicRestApiJerseyImpl.java | 29 +++++++ .../activiti/BasicAuthRequestFilter.java | 28 ------- .../activiti/ArrayResponseUnitTest.java | 9 ++- .../alfresco/activiti/ConditionalIT.java | 4 +- .../activiti/ConnectionCxfClientIT.java | 9 ++- .../activiti/ConnectionJerseyClientIT.java | 9 ++- 14 files changed, 202 insertions(+), 246 deletions(-) delete mode 100644 src/main/java/com/inteligr8/alfresco/activiti/AccessTokenRequestFilter.java delete mode 100644 src/main/java/com/inteligr8/alfresco/activiti/ApsClient.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiCxfImpl.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiJerseyImpl.java delete mode 100644 src/main/java/com/inteligr8/alfresco/activiti/BasicAuthRequestFilter.java diff --git a/pom.xml b/pom.xml index 2633a82..7dc738d 100644 --- a/pom.xml +++ b/pom.xml @@ -24,29 +24,9 @@ - org.springframework - spring-context - ${spring.version} - - - com.fasterxml.jackson.core - jackson-databind - 2.12.2 - - - com.fasterxml.jackson.jaxrs - jackson-jaxrs-json-provider - 2.12.2 - - - org.slf4j - slf4j-api - 1.7.29 - - - jakarta.ws.rs - jakarta.ws.rs-api - 2.1.6 + com.inteligr8 + common-rest-api + 1.0-SNAPSHOT org.glassfish.jersey.ext diff --git a/src/main/java/com/inteligr8/alfresco/activiti/AccessTokenRequestFilter.java b/src/main/java/com/inteligr8/alfresco/activiti/AccessTokenRequestFilter.java deleted file mode 100644 index 0fc2f4d..0000000 --- a/src/main/java/com/inteligr8/alfresco/activiti/AccessTokenRequestFilter.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.inteligr8.alfresco.activiti; - -import javax.ws.rs.client.ClientRequestContext; -import javax.ws.rs.client.ClientRequestFilter; -import javax.ws.rs.core.HttpHeaders; - -public class AccessTokenRequestFilter implements ClientRequestFilter { - - private final String token; - - public AccessTokenRequestFilter(String token) { - this.token = token; - } - - @Override - public void filter(ClientRequestContext requestContext) { - requestContext.getHeaders().add(HttpHeaders.AUTHORIZATION, "Bearer " + this.token); - } - -} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsClient.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsClient.java deleted file mode 100644 index 9b10b5b..0000000 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsClient.java +++ /dev/null @@ -1,71 +0,0 @@ -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.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; - -/** - * Alfresco Process Services Spring Client - */ -@Component("apsClient") -public class ApsClient { - - @Autowired - private ApsClientConfiguration config; - - 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); - - return clientBuilder.build(); - } - - public WebTarget getTarget() { - return this.getClient() - .target(this.config.getBaseUrl()); - } - - protected T getApi(Class 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 ProfileApi getProfileApi() { - return this.getApi(ProfileApi.class); - } - - public TasksApi getTasksApi() { - return this.getApi(TasksApi.class); - } - -} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsClientConfiguration.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsClientConfiguration.java index 6b39ac1..f66136b 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsClientConfiguration.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsClientConfiguration.java @@ -1,14 +1,14 @@ package com.inteligr8.alfresco.activiti; -import javax.ws.rs.client.ClientRequestFilter; - import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import com.inteligr8.rs.ClientConfiguration; + @Configuration @ComponentScan -public class ApsClientConfiguration { +public class ApsClientConfiguration extends ClientConfiguration { @Value("${process.service.baseUrl:http://localhost:8080/activiti-app}") private String baseUrl; @@ -21,19 +21,70 @@ public class ApsClientConfiguration { @Value("${process.service.security.accessToken:#{null}}") private String accessToken; + + @Value("${process.service.security.oauth.tokenUrl:#{null}}") + private String oAuthTokenUrl; + + @Value("${process.service.security.oauth.clientId:#{null}}") + private String oAuthClientId; + + @Value("${process.service.security.oauth.clientSecret:#{null}}") + private String oAuthClientSecret; + + @Value("${process.service.security.oauth.authCode:#{null}}") + private String oAuthAuthCode; + + @Value("${process.service.security.oauth.authRedirectUri:#{null}}") + private String oAuthAuthRedirectUri; + + @Value("${process.service.security.oauth.grantUsername:#{null}}") + private String oAuthUsername; + + @Value("${process.service.security.oauth.grantPassword:#{null}}") + private String oAuthPassword; public String getBaseUrl() { return this.baseUrl; } - - 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; - } + + public String getBasicAuthUsername() { + return this.basicAuthUsername; + } + + public String getBasicAuthPassword() { + return this.basicAuthPassword; + } + + public String getAccessToken() { + return this.accessToken; + } + + public String getOAuthTokenUrl() { + return this.oAuthTokenUrl; + } + + public String getOAuthClientId() { + return this.oAuthClientId; + } + + public String getOAuthClientSecret() { + return this.oAuthClientSecret; + } + + public String getOAuthAuthCode() { + return this.oAuthAuthCode; + } + + public String getOAuthAuthRedirectUri() { + return this.oAuthAuthRedirectUri; + } + + public String getOAuthUsername() { + return this.oAuthUsername; + } + + public String getOAuthPassword() { + return this.oAuthPassword; } } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsClientCxfImpl.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsClientCxfImpl.java index 4dc6d5e..36a613b 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsClientCxfImpl.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsClientCxfImpl.java @@ -1,65 +1,25 @@ 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.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; -import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; +import com.inteligr8.rs.ClientConfiguration; +import com.inteligr8.rs.ClientCxfImpl; /** - * Alfresco Process Services Spring Client for CXF + * Configured JAX-RS Client & WebTarget for APS & CXF */ -@Component("apsClient.cxf") +@Component("aps.client.cxf") @Lazy -public class ApsClientCxfImpl extends ApsClient implements InitializingBean { +public class ApsClientCxfImpl extends ClientCxfImpl { - private final Logger logger = LoggerFactory.getLogger(ApsClientCxfImpl.class); + @Autowired + private ApsClientConfiguration config; @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()); - } - - if (this.logger.isInfoEnabled()) - this.logger.info("APS API Base URL: " + this.getConfig().getBaseUrl()); - } - - public WebClient getCxfClient() { - List providersAndFilters = new LinkedList(); - providersAndFilters.add(new JacksonJaxbJsonProvider()); - - ClientRequestFilter authFilter = this.getConfig().getAuthorizationFilter(); - if (authFilter != null) - providersAndFilters.add(authFilter); - - // we can't use JAXRSClientFactory with a JAXRS client (duh!) - // so we need to create a CXF client - WebClient client = WebClient.create(this.getConfig().getBaseUrl(), providersAndFilters); - - return client; - } - - @Override - protected T getApi(Class apiClass) { - return JAXRSClientFactory.fromClient(this.getCxfClient(), apiClass); + protected ClientConfiguration getConfig() { + return this.config; } } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsClientJerseyImpl.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsClientJerseyImpl.java index b7c0b09..874d70c 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsClientJerseyImpl.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsClientJerseyImpl.java @@ -1,43 +1,25 @@ 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.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; +import com.inteligr8.rs.ClientConfiguration; +import com.inteligr8.rs.ClientJerseyImpl; + /** - * Alfresco Process Services Spring Client for Jersey + * Configured JAX-RS Client & WebTarget for APS & Jersey */ -@Component("apsClient.jersey") +@Component("aps.client.jersey") @Lazy -public class ApsClientJerseyImpl extends ApsClient implements InitializingBean { +public class ApsClientJerseyImpl extends ClientJerseyImpl { - private final Logger logger = LoggerFactory.getLogger(ApsClientJerseyImpl.class); + @Autowired + private ApsClientConfiguration config; @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()); - } - - if (this.logger.isInfoEnabled()) - this.logger.info("APS API Base URL: " + this.getConfig().getBaseUrl()); - } - - @Override - protected T getApi(Class apiClass) { - return WebResourceFactory.newResource(apiClass, this.getTarget()); + protected ClientConfiguration getConfig() { + return this.config; } } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java new file mode 100644 index 0000000..767bf5a --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java @@ -0,0 +1,39 @@ +package com.inteligr8.alfresco.activiti; + +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; +import com.inteligr8.rs.ClientConfiguration; + +/** + * Alfresco Process Services Spring-ready API + */ +public abstract class ApsPublicRestApi { + + abstract ClientConfiguration getConfig(); + + protected abstract T getApi(Class apiClass); + + 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 ProfileApi getProfileApi() { + return this.getApi(ProfileApi.class); + } + + public TasksApi getTasksApi() { + return this.getApi(TasksApi.class); + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiCxfImpl.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiCxfImpl.java new file mode 100644 index 0000000..daa92bf --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiCxfImpl.java @@ -0,0 +1,29 @@ +package com.inteligr8.alfresco.activiti; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import com.inteligr8.rs.ClientConfiguration; + +/** + * Alfresco Process Services Spring-ready API for CXF + */ +@Component("aps.api.cxf") +@Lazy +public class ApsPublicRestApiCxfImpl extends ApsPublicRestApi { + + @Autowired + private ApsClientCxfImpl client; + + @Override + ClientConfiguration getConfig() { + return this.client.getConfig(); + } + + @Override + protected T getApi(Class apiClass) { + return this.client.getApi(apiClass); + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiJerseyImpl.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiJerseyImpl.java new file mode 100644 index 0000000..0e7f1e9 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiJerseyImpl.java @@ -0,0 +1,29 @@ +package com.inteligr8.alfresco.activiti; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import com.inteligr8.rs.ClientConfiguration; + +/** + * Alfresco Process Services Spring-ready API for Jersey + */ +@Component("aps.api.jersey") +@Lazy +public class ApsPublicRestApiJerseyImpl extends ApsPublicRestApi { + + @Autowired + private ApsClientJerseyImpl client; + + @Override + ClientConfiguration getConfig() { + return this.client.getConfig(); + } + + @Override + protected T getApi(Class apiClass) { + return this.client.getApi(apiClass); + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/BasicAuthRequestFilter.java b/src/main/java/com/inteligr8/alfresco/activiti/BasicAuthRequestFilter.java deleted file mode 100644 index 0743fef..0000000 --- a/src/main/java/com/inteligr8/alfresco/activiti/BasicAuthRequestFilter.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.inteligr8.alfresco.activiti; - -import java.io.UnsupportedEncodingException; -import java.util.Base64; - -import javax.ws.rs.client.ClientRequestContext; -import javax.ws.rs.client.ClientRequestFilter; -import javax.ws.rs.core.HttpHeaders; - -public class BasicAuthRequestFilter implements ClientRequestFilter { - - private final String username; - private final String password; - - public BasicAuthRequestFilter(String username, String password) { - this.username = username; - this.password = password; - } - - @Override - public void filter(ClientRequestContext requestContext) throws UnsupportedEncodingException { - String userAndPass = this.username + ":" + this.password; - String userAndPassEncoded = Base64.getEncoder().encodeToString(userAndPass.getBytes("utf-8")); - - requestContext.getHeaders().add(HttpHeaders.AUTHORIZATION, "Basic " + userAndPassEncoded); - } - -} diff --git a/src/test/java/com/inteligr8/alfresco/activiti/ArrayResponseUnitTest.java b/src/test/java/com/inteligr8/alfresco/activiti/ArrayResponseUnitTest.java index 118c370..d53acff 100644 --- a/src/test/java/com/inteligr8/alfresco/activiti/ArrayResponseUnitTest.java +++ b/src/test/java/com/inteligr8/alfresco/activiti/ArrayResponseUnitTest.java @@ -11,17 +11,18 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import com.inteligr8.alfresco.activiti.model.Tenant; +import com.inteligr8.rs.ClientConfiguration; @TestPropertySource(locations = {"/local.properties"}) -@SpringJUnitConfig(classes = {ApsClientConfiguration.class, ApsClient.class, ApsClientJerseyImpl.class}) +@SpringJUnitConfig(classes = {ApsClientConfiguration.class, ApsPublicRestApiJerseyImpl.class, ApsClientJerseyImpl.class}) public class ArrayResponseUnitTest extends ConditionalIT { @Autowired - @Qualifier("apsClient.jersey") - private ApsClient client; + @Qualifier("aps.api.jersey") + private ApsPublicRestApi client; @Override - public ApsClientConfiguration getConfiguration() { + public ClientConfiguration getConfiguration() { return this.client.getConfig(); } diff --git a/src/test/java/com/inteligr8/alfresco/activiti/ConditionalIT.java b/src/test/java/com/inteligr8/alfresco/activiti/ConditionalIT.java index 13de883..de77a23 100644 --- a/src/test/java/com/inteligr8/alfresco/activiti/ConditionalIT.java +++ b/src/test/java/com/inteligr8/alfresco/activiti/ConditionalIT.java @@ -7,9 +7,11 @@ import org.apache.http.client.methods.RequestBuilder; import org.apache.http.impl.client.DefaultRedirectStrategy; import org.apache.http.impl.client.HttpClientBuilder; +import com.inteligr8.rs.ClientConfiguration; + public abstract class ConditionalIT { - public abstract ApsClientConfiguration getConfiguration(); + public abstract ClientConfiguration getConfiguration(); public boolean hostExists() { String uri = this.getConfiguration().getBaseUrl(); diff --git a/src/test/java/com/inteligr8/alfresco/activiti/ConnectionCxfClientIT.java b/src/test/java/com/inteligr8/alfresco/activiti/ConnectionCxfClientIT.java index 65fe3f7..62b29e8 100644 --- a/src/test/java/com/inteligr8/alfresco/activiti/ConnectionCxfClientIT.java +++ b/src/test/java/com/inteligr8/alfresco/activiti/ConnectionCxfClientIT.java @@ -10,17 +10,18 @@ import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import com.inteligr8.alfresco.activiti.model.AppVersion; import com.inteligr8.alfresco.activiti.model.User; +import com.inteligr8.rs.ClientConfiguration; @TestPropertySource(locations = {"/local.properties"}) -@SpringJUnitConfig(classes = {ApsClientConfiguration.class, ApsClient.class, ApsClientCxfImpl.class}) +@SpringJUnitConfig(classes = {ApsClientConfiguration.class, ApsPublicRestApiCxfImpl.class, ApsClientCxfImpl.class}) public class ConnectionCxfClientIT extends ConditionalIT { @Autowired - @Qualifier("apsClient.cxf") - private ApsClient client; + @Qualifier("aps.api.cxf") + private ApsPublicRestApi client; @Override - public ApsClientConfiguration getConfiguration() { + public ClientConfiguration getConfiguration() { return this.client.getConfig(); } diff --git a/src/test/java/com/inteligr8/alfresco/activiti/ConnectionJerseyClientIT.java b/src/test/java/com/inteligr8/alfresco/activiti/ConnectionJerseyClientIT.java index 16d92a2..03f6112 100644 --- a/src/test/java/com/inteligr8/alfresco/activiti/ConnectionJerseyClientIT.java +++ b/src/test/java/com/inteligr8/alfresco/activiti/ConnectionJerseyClientIT.java @@ -10,17 +10,18 @@ import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import com.inteligr8.alfresco.activiti.model.AppVersion; import com.inteligr8.alfresco.activiti.model.User; +import com.inteligr8.rs.ClientConfiguration; @TestPropertySource(locations = {"/local.properties"}) -@SpringJUnitConfig(classes = {ApsClientConfiguration.class, ApsClient.class, ApsClientJerseyImpl.class}) +@SpringJUnitConfig(classes = {ApsClientConfiguration.class, ApsPublicRestApiCxfImpl.class, ApsClientJerseyImpl.class}) public class ConnectionJerseyClientIT extends ConditionalIT { @Autowired - @Qualifier("apsClient.jersey") - private ApsClient client; + @Qualifier("aps.api.jersey") + private ApsPublicRestApi client; @Override - public ApsClientConfiguration getConfiguration() { + public ClientConfiguration getConfiguration() { return this.client.getConfig(); } From baf2e0ebb69021602c856b4f4c85e0e8aed51f1b Mon Sep 17 00:00:00 2001 From: Brian Long Date: Mon, 7 Jun 2021 23:34:18 -0400 Subject: [PATCH 4/4] fixed compile issues --- .../java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java | 2 +- .../inteligr8/alfresco/activiti/ApsPublicRestApiCxfImpl.java | 2 +- .../inteligr8/alfresco/activiti/ApsPublicRestApiJerseyImpl.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java index 767bf5a..fea480b 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java @@ -12,7 +12,7 @@ import com.inteligr8.rs.ClientConfiguration; */ public abstract class ApsPublicRestApi { - abstract ClientConfiguration getConfig(); + protected abstract ClientConfiguration getConfig(); protected abstract T getApi(Class apiClass); diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiCxfImpl.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiCxfImpl.java index daa92bf..c261ae2 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiCxfImpl.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiCxfImpl.java @@ -17,7 +17,7 @@ public class ApsPublicRestApiCxfImpl extends ApsPublicRestApi { private ApsClientCxfImpl client; @Override - ClientConfiguration getConfig() { + protected ClientConfiguration getConfig() { return this.client.getConfig(); } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiJerseyImpl.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiJerseyImpl.java index 0e7f1e9..aa80486 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiJerseyImpl.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApiJerseyImpl.java @@ -17,7 +17,7 @@ public class ApsPublicRestApiJerseyImpl extends ApsPublicRestApi { private ApsClientJerseyImpl client; @Override - ClientConfiguration getConfig() { + protected ClientConfiguration getConfig() { return this.client.getConfig(); }