Loading pom.xml +18 −6 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ <junit.version>5.7.2</junit.version> <spring.version>5.2.14.RELEASE</spring.version> <jersey.version>2.34</jersey.version> <cxf.version>3.3.2</cxf.version> </properties> <dependencies> Loading Loading @@ -49,11 +50,28 @@ <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>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 @@ -72,12 +90,6 @@ <version>${jersey.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.glassfish.jersey.ext</groupId> <artifactId>jersey-proxy-client</artifactId> <version>${jersey.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> Loading src/main/java/com/inteligr8/alfresco/acs/AcsClient.java +143 −7 Original line number Diff line number Diff line Loading @@ -2,29 +2,61 @@ 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.core.util.JacksonFeature; 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; import com.inteligr8.alfresco.acs.api.AuditApi; import com.inteligr8.alfresco.acs.api.AuthenticationApi; import com.inteligr8.alfresco.acs.api.CommentsApi; import com.inteligr8.alfresco.acs.api.DiscoveryApi; import com.inteligr8.alfresco.acs.api.DownloadsApi; import com.inteligr8.alfresco.acs.api.FavoritesApi; import com.inteligr8.alfresco.acs.api.GroupsApi; import com.inteligr8.alfresco.acs.api.NetworksApi; import com.inteligr8.alfresco.acs.api.NodesApi; import com.inteligr8.alfresco.acs.api.PeopleApi; import com.inteligr8.alfresco.acs.api.PreferencesApi; import com.inteligr8.alfresco.acs.api.ProbesApi; import com.inteligr8.alfresco.acs.api.QueriesApi; import com.inteligr8.alfresco.acs.api.RatingsApi; import com.inteligr8.alfresco.acs.api.RenditionsApi; import com.inteligr8.alfresco.acs.api.SearchApi; import com.inteligr8.alfresco.acs.api.SharedLinksApi; import com.inteligr8.alfresco.acs.api.SitesApi; 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; /** * Afresco Content Services Spring Client */ @Component @Component("acsClient") public class AcsClient { @Autowired private AcsClientConfiguration config; protected AcsClientConfiguration getConfig() { return this.config; } public Client getClient() { Client client = ClientBuilder.newBuilder() .register(JacksonFeature.class) .build(); ClientRequestFilter authFilter = this.config.getAuthorizationFilter(); this.config.authorize(client); return client; ClientBuilder clientBuilder = ClientBuilder.newBuilder() .register(new JacksonJaxbJsonProvider()); if (authFilter != null) clientBuilder.register(authFilter); return clientBuilder.build(); } public WebTarget getTarget() { Loading @@ -32,4 +64,108 @@ public class AcsClient { .target(this.config.getBaseUrl()); } protected <T> T getApi(Class<T> apiClass) { throw new UnsupportedOperationException(); } public ActionsApi getActionsApi() { return this.getApi(ActionsApi.class); } public ActivitiesApi getActivitiesApi() { return this.getApi(ActivitiesApi.class); } public AspectsApi getAspectsApi() { return this.getApi(AspectsApi.class); } public AuditApi getAuditApi() { return this.getApi(AuditApi.class); } public AuthenticationApi getAuthenticationApi() { return this.getApi(AuthenticationApi.class); } public CommentsApi getCommentsApi() { return this.getApi(CommentsApi.class); } public DiscoveryApi getDiscoveryApi() { return this.getApi(DiscoveryApi.class); } public DownloadsApi getDownloadsApi() { return this.getApi(DownloadsApi.class); } public FavoritesApi getFavoritesApi() { return this.getApi(FavoritesApi.class); } public GroupsApi getGroupsApi() { return this.getApi(GroupsApi.class); } public NetworksApi getNetworksApi() { return this.getApi(NetworksApi.class); } public NodesApi getNodesApi() { return this.getApi(NodesApi.class); } public PeopleApi getPeopleApi() { return this.getApi(PeopleApi.class); } public PreferencesApi getPreferencesApi() { return this.getApi(PreferencesApi.class); } public ProbesApi getProbesApi() { return this.getApi(ProbesApi.class); } public QueriesApi getQueriesApi() { return this.getApi(QueriesApi.class); } public RatingsApi getRatingsApi() { return this.getApi(RatingsApi.class); } public RenditionsApi getRenditionsApi() { return this.getApi(RenditionsApi.class); } public SearchApi getSearchApi() { return this.getApi(SearchApi.class); } public SharedLinksApi getSharedLinksApi() { return this.getApi(SharedLinksApi.class); } public SitesApi getSitesApi() { return this.getApi(SitesApi.class); } public TagsApi getTagsApi() { return this.getApi(TagsApi.class); } public TrashcanApi getTrashcanApi() { return this.getApi(TrashcanApi.class); } public TypesApi getTypesApi() { return this.getApi(TypesApi.class); } public VersionsApi getVersionsApi() { return this.getApi(VersionsApi.class); } } src/main/java/com/inteligr8/alfresco/acs/AcsClientConfiguration.java +7 −5 Original line number Diff line number Diff line package com.inteligr8.alfresco.acs; 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 @@ -19,18 +19,20 @@ public class AcsClientConfiguration { @Value("${content.service.security.basicAuth.password:admin}") private String basicAuthPassword; @Value("${content.service.security.accessToken}") @Value("${content.service.security.accessToken:#{null}}") private String accessToken; public String getBaseUrl() { return this.baseUrl; } public void authorize(Client client) { public ClientRequestFilter getAuthorizationFilter() { if (this.accessToken != null) { client.register(new AccessTokenRequestFilter(this.accessToken)); return new AccessTokenRequestFilter(this.accessToken); } else if (this.basicAuthUsername != null) { client.register(new BasicAuthRequestFilter(this.basicAuthUsername, this.basicAuthPassword)); return new BasicAuthRequestFilter(this.basicAuthUsername, this.basicAuthPassword); } else { return null; } } Loading src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java 0 → 100644 +58 −0 Original line number Diff line number Diff line 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.context.annotation.Lazy; import org.springframework.stereotype.Component; import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; /** * Afresco Content Services Spring Client for Jersey */ @Component("acsClient.cxf") @Lazy public class AcsClientCxfImpl extends AcsClient implements InitializingBean { private final Logger logger = LoggerFactory.getLogger(AcsClientCxfImpl.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/acs/AcsClientJerseyImpl.java 0 → 100644 +40 −0 Original line number Diff line number Diff line 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.context.annotation.Lazy; import org.springframework.stereotype.Component; /** * Afresco Content Services Spring Client for Jersey */ @Component("acsClient.jersey") @Lazy public class AcsClientJerseyImpl extends AcsClient implements InitializingBean { private final Logger logger = LoggerFactory.getLogger(AcsClientJerseyImpl.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 +18 −6 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ <junit.version>5.7.2</junit.version> <spring.version>5.2.14.RELEASE</spring.version> <jersey.version>2.34</jersey.version> <cxf.version>3.3.2</cxf.version> </properties> <dependencies> Loading Loading @@ -49,11 +50,28 @@ <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>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 @@ -72,12 +90,6 @@ <version>${jersey.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.glassfish.jersey.ext</groupId> <artifactId>jersey-proxy-client</artifactId> <version>${jersey.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> Loading
src/main/java/com/inteligr8/alfresco/acs/AcsClient.java +143 −7 Original line number Diff line number Diff line Loading @@ -2,29 +2,61 @@ 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.core.util.JacksonFeature; 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; import com.inteligr8.alfresco.acs.api.AuditApi; import com.inteligr8.alfresco.acs.api.AuthenticationApi; import com.inteligr8.alfresco.acs.api.CommentsApi; import com.inteligr8.alfresco.acs.api.DiscoveryApi; import com.inteligr8.alfresco.acs.api.DownloadsApi; import com.inteligr8.alfresco.acs.api.FavoritesApi; import com.inteligr8.alfresco.acs.api.GroupsApi; import com.inteligr8.alfresco.acs.api.NetworksApi; import com.inteligr8.alfresco.acs.api.NodesApi; import com.inteligr8.alfresco.acs.api.PeopleApi; import com.inteligr8.alfresco.acs.api.PreferencesApi; import com.inteligr8.alfresco.acs.api.ProbesApi; import com.inteligr8.alfresco.acs.api.QueriesApi; import com.inteligr8.alfresco.acs.api.RatingsApi; import com.inteligr8.alfresco.acs.api.RenditionsApi; import com.inteligr8.alfresco.acs.api.SearchApi; import com.inteligr8.alfresco.acs.api.SharedLinksApi; import com.inteligr8.alfresco.acs.api.SitesApi; 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; /** * Afresco Content Services Spring Client */ @Component @Component("acsClient") public class AcsClient { @Autowired private AcsClientConfiguration config; protected AcsClientConfiguration getConfig() { return this.config; } public Client getClient() { Client client = ClientBuilder.newBuilder() .register(JacksonFeature.class) .build(); ClientRequestFilter authFilter = this.config.getAuthorizationFilter(); this.config.authorize(client); return client; ClientBuilder clientBuilder = ClientBuilder.newBuilder() .register(new JacksonJaxbJsonProvider()); if (authFilter != null) clientBuilder.register(authFilter); return clientBuilder.build(); } public WebTarget getTarget() { Loading @@ -32,4 +64,108 @@ public class AcsClient { .target(this.config.getBaseUrl()); } protected <T> T getApi(Class<T> apiClass) { throw new UnsupportedOperationException(); } public ActionsApi getActionsApi() { return this.getApi(ActionsApi.class); } public ActivitiesApi getActivitiesApi() { return this.getApi(ActivitiesApi.class); } public AspectsApi getAspectsApi() { return this.getApi(AspectsApi.class); } public AuditApi getAuditApi() { return this.getApi(AuditApi.class); } public AuthenticationApi getAuthenticationApi() { return this.getApi(AuthenticationApi.class); } public CommentsApi getCommentsApi() { return this.getApi(CommentsApi.class); } public DiscoveryApi getDiscoveryApi() { return this.getApi(DiscoveryApi.class); } public DownloadsApi getDownloadsApi() { return this.getApi(DownloadsApi.class); } public FavoritesApi getFavoritesApi() { return this.getApi(FavoritesApi.class); } public GroupsApi getGroupsApi() { return this.getApi(GroupsApi.class); } public NetworksApi getNetworksApi() { return this.getApi(NetworksApi.class); } public NodesApi getNodesApi() { return this.getApi(NodesApi.class); } public PeopleApi getPeopleApi() { return this.getApi(PeopleApi.class); } public PreferencesApi getPreferencesApi() { return this.getApi(PreferencesApi.class); } public ProbesApi getProbesApi() { return this.getApi(ProbesApi.class); } public QueriesApi getQueriesApi() { return this.getApi(QueriesApi.class); } public RatingsApi getRatingsApi() { return this.getApi(RatingsApi.class); } public RenditionsApi getRenditionsApi() { return this.getApi(RenditionsApi.class); } public SearchApi getSearchApi() { return this.getApi(SearchApi.class); } public SharedLinksApi getSharedLinksApi() { return this.getApi(SharedLinksApi.class); } public SitesApi getSitesApi() { return this.getApi(SitesApi.class); } public TagsApi getTagsApi() { return this.getApi(TagsApi.class); } public TrashcanApi getTrashcanApi() { return this.getApi(TrashcanApi.class); } public TypesApi getTypesApi() { return this.getApi(TypesApi.class); } public VersionsApi getVersionsApi() { return this.getApi(VersionsApi.class); } }
src/main/java/com/inteligr8/alfresco/acs/AcsClientConfiguration.java +7 −5 Original line number Diff line number Diff line package com.inteligr8.alfresco.acs; 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 @@ -19,18 +19,20 @@ public class AcsClientConfiguration { @Value("${content.service.security.basicAuth.password:admin}") private String basicAuthPassword; @Value("${content.service.security.accessToken}") @Value("${content.service.security.accessToken:#{null}}") private String accessToken; public String getBaseUrl() { return this.baseUrl; } public void authorize(Client client) { public ClientRequestFilter getAuthorizationFilter() { if (this.accessToken != null) { client.register(new AccessTokenRequestFilter(this.accessToken)); return new AccessTokenRequestFilter(this.accessToken); } else if (this.basicAuthUsername != null) { client.register(new BasicAuthRequestFilter(this.basicAuthUsername, this.basicAuthPassword)); return new BasicAuthRequestFilter(this.basicAuthUsername, this.basicAuthPassword); } else { return null; } } Loading
src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java 0 → 100644 +58 −0 Original line number Diff line number Diff line 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.context.annotation.Lazy; import org.springframework.stereotype.Component; import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; /** * Afresco Content Services Spring Client for Jersey */ @Component("acsClient.cxf") @Lazy public class AcsClientCxfImpl extends AcsClient implements InitializingBean { private final Logger logger = LoggerFactory.getLogger(AcsClientCxfImpl.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/acs/AcsClientJerseyImpl.java 0 → 100644 +40 −0 Original line number Diff line number Diff line 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.context.annotation.Lazy; import org.springframework.stereotype.Component; /** * Afresco Content Services Spring Client for Jersey */ @Component("acsClient.jersey") @Lazy public class AcsClientJerseyImpl extends AcsClient implements InitializingBean { private final Logger logger = LoggerFactory.getLogger(AcsClientJerseyImpl.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()); } }