From e3cb51f910a2211a56cf68575aa7e981979fa409 Mon Sep 17 00:00:00 2001 From: Brian Long Date: Sat, 5 Jun 2021 17:26:25 -0400 Subject: [PATCH 1/3] add URL logging --- src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java | 3 +++ .../java/com/inteligr8/alfresco/acs/AcsClientJerseyImpl.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java b/src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java index abbc0f3..be87c1d 100644 --- a/src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java @@ -37,6 +37,9 @@ public class AcsClientCxfImpl extends AcsClient 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("ACS API Base URL: " + this.getConfig().getBaseUrl()); } public WebClient getCxfClient() { diff --git a/src/main/java/com/inteligr8/alfresco/acs/AcsClientJerseyImpl.java b/src/main/java/com/inteligr8/alfresco/acs/AcsClientJerseyImpl.java index 995d577..14fe399 100644 --- a/src/main/java/com/inteligr8/alfresco/acs/AcsClientJerseyImpl.java +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsClientJerseyImpl.java @@ -30,6 +30,9 @@ public class AcsClientJerseyImpl extends AcsClient 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("ACS API Base URL: " + this.getConfig().getBaseUrl()); } @Override From de7da4d1c25b1a58ad7637ee98f177b0651255a0 Mon Sep 17 00:00:00 2001 From: Brian Long Date: Sat, 5 Jun 2021 17:26:53 -0400 Subject: [PATCH 2/3] fixed junit testing conditionals --- .../inteligr8/alfresco/acs/ConditionalIT.java | 33 +++++++++++++++++ .../alfresco/acs/ConnectionCxfClientIT.java | 33 ++++------------- .../acs/ConnectionJerseyClientIT.java | 36 +++++-------------- 3 files changed, 47 insertions(+), 55 deletions(-) create mode 100644 src/test/java/com/inteligr8/alfresco/acs/ConditionalIT.java diff --git a/src/test/java/com/inteligr8/alfresco/acs/ConditionalIT.java b/src/test/java/com/inteligr8/alfresco/acs/ConditionalIT.java new file mode 100644 index 0000000..b75c2ed --- /dev/null +++ b/src/test/java/com/inteligr8/alfresco/acs/ConditionalIT.java @@ -0,0 +1,33 @@ +package com.inteligr8.alfresco.acs; + +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +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; + +public abstract class ConditionalIT { + + public abstract AcsClientConfiguration getConfiguration(); + + public boolean hostExists() { + String uri = this.getConfiguration().getBaseUrl(); + + HttpUriRequest request = RequestBuilder.get() + .setUri(uri) + .build(); + + HttpClient client = HttpClientBuilder.create() + .setRedirectStrategy(DefaultRedirectStrategy.INSTANCE) + .build(); + + try { + HttpResponse response = client.execute(request); + return response.getStatusLine().getStatusCode() < 300; + } catch (Exception e) { + return false; + } + } + +} diff --git a/src/test/java/com/inteligr8/alfresco/acs/ConnectionCxfClientIT.java b/src/test/java/com/inteligr8/alfresco/acs/ConnectionCxfClientIT.java index 5e8d31f..5115f42 100644 --- a/src/test/java/com/inteligr8/alfresco/acs/ConnectionCxfClientIT.java +++ b/src/test/java/com/inteligr8/alfresco/acs/ConnectionCxfClientIT.java @@ -1,13 +1,5 @@ package com.inteligr8.alfresco.acs; -import java.net.URI; - -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; -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.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIf; @@ -21,12 +13,17 @@ import com.inteligr8.alfresco.acs.model.RepositoryInfo; @TestPropertySource(locations = {"/local.properties"}) @SpringJUnitConfig(classes = {AcsClientConfiguration.class, AcsClient.class, AcsClientCxfImpl.class}) -public class ConnectionCxfClientIT { +public class ConnectionCxfClientIT extends ConditionalIT { @Autowired @Qualifier("acsClient.cxf") private AcsClient client; + @Override + public AcsClientConfiguration getConfiguration() { + return this.client.getConfig(); + } + @Test @EnabledIf("hostExists") public void testDiscovery() { @@ -38,22 +35,4 @@ public class ConnectionCxfClientIT { Assertions.assertEquals("6", repoInfo.getVersion().getMajor()); } - public boolean hostExists() { - URI uri = this.client.getTarget().getUri(); - - HttpUriRequest request = RequestBuilder.get() - .setUri(uri) - .build(); - - HttpClient client = HttpClientBuilder.create() - .setRedirectStrategy(DefaultRedirectStrategy.INSTANCE) - .build(); - - try { - HttpResponse response = client.execute(request); - return response.getStatusLine().getStatusCode() < 300; - } catch (Exception e) { - return false; - } - } } diff --git a/src/test/java/com/inteligr8/alfresco/acs/ConnectionJerseyClientIT.java b/src/test/java/com/inteligr8/alfresco/acs/ConnectionJerseyClientIT.java index 0059f4b..5ccee13 100644 --- a/src/test/java/com/inteligr8/alfresco/acs/ConnectionJerseyClientIT.java +++ b/src/test/java/com/inteligr8/alfresco/acs/ConnectionJerseyClientIT.java @@ -1,15 +1,8 @@ package com.inteligr8.alfresco.acs; -import java.net.URI; - -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; -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.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; @@ -20,14 +13,19 @@ import com.inteligr8.alfresco.acs.model.RepositoryInfo; @TestPropertySource(locations = {"/local.properties"}) @SpringJUnitConfig(classes = {AcsClientConfiguration.class, AcsClient.class, AcsClientJerseyImpl.class}) -public class ConnectionJerseyClientIT { +public class ConnectionJerseyClientIT extends ConditionalIT { @Autowired @Qualifier("acsClient.jersey") private AcsClient client; + @Override + public AcsClientConfiguration getConfiguration() { + return this.client.getConfig(); + } + @Test - //@EnabledIf("hostExists") + @EnabledIf("hostExists") public void testDiscovery() { DiscoveryApi api = this.client.getDiscoveryApi(); RepositoryInfo repoInfo = api.getRepositoryInformation().getEntry().getRepository(); @@ -37,22 +35,4 @@ public class ConnectionJerseyClientIT { Assertions.assertEquals("6", repoInfo.getVersion().getMajor()); } - public boolean hostExists() { - URI uri = this.client.getTarget().getUri(); - - HttpUriRequest request = RequestBuilder.get() - .setUri(uri) - .build(); - - HttpClient client = HttpClientBuilder.create() - .setRedirectStrategy(DefaultRedirectStrategy.INSTANCE) - .build(); - - try { - HttpResponse response = client.execute(request); - return response.getStatusLine().getStatusCode() < 300; - } catch (Exception e) { - return false; - } - } } From 69dbe968efe613346d79ba073cee06e0de377727 Mon Sep 17 00:00:00 2001 From: Brian Long Date: Mon, 7 Jun 2021 23:03:55 -0400 Subject: [PATCH 3/3] refactored using 'common-rest-api' --- pom.xml | 21 +----- .../acs/AccessTokenRequestFilter.java | 20 ----- .../alfresco/acs/AcsClientConfiguration.java | 75 ++++++++++++++++--- .../alfresco/acs/AcsClientCxfImpl.java | 56 +++----------- .../alfresco/acs/AcsClientJerseyImpl.java | 40 +++------- .../{AcsClient.java => AcsPublicRestApi.java} | 42 ++--------- .../alfresco/acs/AcsPublicRestApiCxfImpl.java | 29 +++++++ .../acs/AcsPublicRestApiJerseyImpl.java | 29 +++++++ .../alfresco/acs/BasicAuthRequestFilter.java | 28 ------- .../inteligr8/alfresco/acs/ConditionalIT.java | 4 +- .../alfresco/acs/ConnectionCxfClientIT.java | 9 ++- .../acs/ConnectionJerseyClientIT.java | 9 ++- 12 files changed, 163 insertions(+), 199 deletions(-) delete mode 100644 src/main/java/com/inteligr8/alfresco/acs/AccessTokenRequestFilter.java rename src/main/java/com/inteligr8/alfresco/acs/{AcsClient.java => AcsPublicRestApi.java} (76%) create mode 100644 src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiCxfImpl.java create mode 100644 src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiJerseyImpl.java delete mode 100644 src/main/java/com/inteligr8/alfresco/acs/BasicAuthRequestFilter.java diff --git a/pom.xml b/pom.xml index 6815f3e..b8d0f34 100644 --- a/pom.xml +++ b/pom.xml @@ -25,9 +25,9 @@ - org.springframework - spring-context - ${spring.version} + com.inteligr8 + common-rest-api + 1.0-SNAPSHOT io.swagger @@ -40,21 +40,6 @@ - - com.fasterxml.jackson.core - jackson-databind - 2.12.2 - - - com.fasterxml.jackson.jaxrs - jackson-jaxrs-json-provider - 2.12.2 - - - jakarta.ws.rs - jakarta.ws.rs-api - 2.1.6 - org.glassfish.jersey.ext jersey-proxy-client diff --git a/src/main/java/com/inteligr8/alfresco/acs/AccessTokenRequestFilter.java b/src/main/java/com/inteligr8/alfresco/acs/AccessTokenRequestFilter.java deleted file mode 100644 index d37ec85..0000000 --- a/src/main/java/com/inteligr8/alfresco/acs/AccessTokenRequestFilter.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.inteligr8.alfresco.acs; - -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/acs/AcsClientConfiguration.java b/src/main/java/com/inteligr8/alfresco/acs/AcsClientConfiguration.java index ff3a402..557e221 100644 --- a/src/main/java/com/inteligr8/alfresco/acs/AcsClientConfiguration.java +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsClientConfiguration.java @@ -1,14 +1,14 @@ package com.inteligr8.alfresco.acs; -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 AcsClientConfiguration { +public class AcsClientConfiguration extends ClientConfiguration { @Value("${content.service.baseUrl:http://localhost:8080/alfresco}") private String baseUrl; @@ -21,19 +21,70 @@ public class AcsClientConfiguration { @Value("${content.service.security.accessToken:#{null}}") private String accessToken; + + @Value("${content.service.security.oauth.tokenUrl:#{null}}") + private String oAuthTokenUrl; + + @Value("${content.service.security.oauth.clientId:#{null}}") + private String oAuthClientId; + + @Value("${content.service.security.oauth.clientSecret:#{null}}") + private String oAuthClientSecret; + + @Value("${content.service.security.oauth.authCode:#{null}}") + private String oAuthAuthCode; + + @Value("${content.service.security.oauth.authRedirectUri:#{null}}") + private String oAuthAuthRedirectUri; + + @Value("${content.service.security.oauth.grantUsername:#{null}}") + private String oAuthUsername; + + @Value("${content.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/acs/AcsClientCxfImpl.java b/src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java index be87c1d..20b7d67 100644 --- a/src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java @@ -1,61 +1,25 @@ package com.inteligr8.alfresco.acs; -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 Content Services Spring Client for CXF + * Configured JAX-RS Client & WebTarget for ACS & CXF */ -@Component("acsClient.cxf") +@Component("acs.client.cxf") @Lazy -public class AcsClientCxfImpl extends AcsClient implements InitializingBean { +public class AcsClientCxfImpl extends ClientCxfImpl { - private final Logger logger = LoggerFactory.getLogger(AcsClientCxfImpl.class); + @Autowired + private AcsClientConfiguration 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("ACS 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); - - return WebClient.create(this.getConfig().getBaseUrl(), providersAndFilters); - } - - @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/acs/AcsClientJerseyImpl.java b/src/main/java/com/inteligr8/alfresco/acs/AcsClientJerseyImpl.java index 14fe399..b65819a 100644 --- a/src/main/java/com/inteligr8/alfresco/acs/AcsClientJerseyImpl.java +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsClientJerseyImpl.java @@ -1,43 +1,25 @@ package com.inteligr8.alfresco.acs; -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 Content Services Spring Client for Jersey + * Configured JAX-RS Client & WebTarget for ACS & Jersey */ -@Component("acsClient.jersey") +@Component("acs.client.jersey") @Lazy -public class AcsClientJerseyImpl extends AcsClient implements InitializingBean { +public class AcsClientJerseyImpl extends ClientJerseyImpl { - private final Logger logger = LoggerFactory.getLogger(AcsClientJerseyImpl.class); + @Autowired + private AcsClientConfiguration 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("ACS 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/acs/AcsClient.java b/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApi.java similarity index 76% rename from src/main/java/com/inteligr8/alfresco/acs/AcsClient.java rename to src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApi.java index 2810673..27d6be3 100644 --- a/src/main/java/com/inteligr8/alfresco/acs/AcsClient.java +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApi.java @@ -1,14 +1,5 @@ package com.inteligr8.alfresco.acs; -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.acs.api.ActionsApi; import com.inteligr8.alfresco.acs.api.ActivitiesApi; import com.inteligr8.alfresco.acs.api.AspectsApi; @@ -34,39 +25,16 @@ import com.inteligr8.alfresco.acs.api.TagsApi; import com.inteligr8.alfresco.acs.api.TrashcanApi; import com.inteligr8.alfresco.acs.api.TypesApi; import com.inteligr8.alfresco.acs.api.VersionsApi; +import com.inteligr8.rs.ClientConfiguration; /** - * Alfresco Content Services Spring Client + * Alfresco Content Services Spring-ready API */ -@Component("acsClient") -public class AcsClient { +public abstract class AcsPublicRestApi { - @Autowired - private AcsClientConfiguration config; + abstract ClientConfiguration getConfig(); - protected AcsClientConfiguration 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(); - } + protected abstract T getApi(Class apiClass); public ActionsApi getActionsApi() { return this.getApi(ActionsApi.class); diff --git a/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiCxfImpl.java b/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiCxfImpl.java new file mode 100644 index 0000000..a6a4ab1 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiCxfImpl.java @@ -0,0 +1,29 @@ +package com.inteligr8.alfresco.acs; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import com.inteligr8.rs.ClientConfiguration; + +/** + * Alfresco Content Services Spring-ready API for CXF + */ +@Component("acs.api.cxf") +@Lazy +public class AcsPublicRestApiCxfImpl extends AcsPublicRestApi { + + @Autowired + private AcsClientCxfImpl 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/acs/AcsPublicRestApiJerseyImpl.java b/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiJerseyImpl.java new file mode 100644 index 0000000..e517ea5 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiJerseyImpl.java @@ -0,0 +1,29 @@ +package com.inteligr8.alfresco.acs; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import com.inteligr8.rs.ClientConfiguration; + +/** + * Alfresco Content Services Spring-ready API for Jersey + */ +@Component("acs.api.jersey") +@Lazy +public class AcsPublicRestApiJerseyImpl extends AcsPublicRestApi { + + @Autowired + private AcsClientJerseyImpl 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/acs/BasicAuthRequestFilter.java b/src/main/java/com/inteligr8/alfresco/acs/BasicAuthRequestFilter.java deleted file mode 100644 index 9a44dc3..0000000 --- a/src/main/java/com/inteligr8/alfresco/acs/BasicAuthRequestFilter.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.inteligr8.alfresco.acs; - -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/acs/ConditionalIT.java b/src/test/java/com/inteligr8/alfresco/acs/ConditionalIT.java index b75c2ed..90c6ecd 100644 --- a/src/test/java/com/inteligr8/alfresco/acs/ConditionalIT.java +++ b/src/test/java/com/inteligr8/alfresco/acs/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 AcsClientConfiguration getConfiguration(); + public abstract ClientConfiguration getConfiguration(); public boolean hostExists() { String uri = this.getConfiguration().getBaseUrl(); diff --git a/src/test/java/com/inteligr8/alfresco/acs/ConnectionCxfClientIT.java b/src/test/java/com/inteligr8/alfresco/acs/ConnectionCxfClientIT.java index 5115f42..cda0dc4 100644 --- a/src/test/java/com/inteligr8/alfresco/acs/ConnectionCxfClientIT.java +++ b/src/test/java/com/inteligr8/alfresco/acs/ConnectionCxfClientIT.java @@ -10,17 +10,18 @@ import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import com.inteligr8.alfresco.acs.api.DiscoveryApi; import com.inteligr8.alfresco.acs.model.RepositoryInfo; +import com.inteligr8.rs.ClientConfiguration; @TestPropertySource(locations = {"/local.properties"}) -@SpringJUnitConfig(classes = {AcsClientConfiguration.class, AcsClient.class, AcsClientCxfImpl.class}) +@SpringJUnitConfig(classes = {AcsClientConfiguration.class, AcsPublicRestApiCxfImpl.class, AcsClientCxfImpl.class}) public class ConnectionCxfClientIT extends ConditionalIT { @Autowired - @Qualifier("acsClient.cxf") - private AcsClient client; + @Qualifier("acs.api.cxf") + private AcsPublicRestApi client; @Override - public AcsClientConfiguration getConfiguration() { + public ClientConfiguration getConfiguration() { return this.client.getConfig(); } diff --git a/src/test/java/com/inteligr8/alfresco/acs/ConnectionJerseyClientIT.java b/src/test/java/com/inteligr8/alfresco/acs/ConnectionJerseyClientIT.java index 5ccee13..096ee7a 100644 --- a/src/test/java/com/inteligr8/alfresco/acs/ConnectionJerseyClientIT.java +++ b/src/test/java/com/inteligr8/alfresco/acs/ConnectionJerseyClientIT.java @@ -10,17 +10,18 @@ import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import com.inteligr8.alfresco.acs.api.DiscoveryApi; import com.inteligr8.alfresco.acs.model.RepositoryInfo; +import com.inteligr8.rs.ClientConfiguration; @TestPropertySource(locations = {"/local.properties"}) -@SpringJUnitConfig(classes = {AcsClientConfiguration.class, AcsClient.class, AcsClientJerseyImpl.class}) +@SpringJUnitConfig(classes = {AcsClientConfiguration.class, AcsPublicRestApiJerseyImpl.class, AcsClientJerseyImpl.class}) public class ConnectionJerseyClientIT extends ConditionalIT { @Autowired - @Qualifier("acsClient.jersey") - private AcsClient client; + @Qualifier("acs.api.jersey") + private AcsPublicRestApi client; @Override - public AcsClientConfiguration getConfiguration() { + public ClientConfiguration getConfiguration() { return this.client.getConfig(); }