Commit 7dd7cc0f authored by Brian Long's avatar Brian Long
Browse files

Merge branch 'develop' into stable

parents e9ea1158 69dbe968
Loading
Loading
Loading
Loading
+3 −18
Original line number Diff line number Diff line
@@ -25,9 +25,9 @@

	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
			<groupId>com.inteligr8</groupId>
			<artifactId>common-rest-api</artifactId>
			<version>1.0-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>io.swagger</groupId>
@@ -40,21 +40,6 @@
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<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>
+0 −20
Original line number Diff line number Diff line
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);
	}

}
+63 −12
Original line number Diff line number Diff line
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;
@@ -22,18 +22,69 @@ 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;
	}

}
+10 −43
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.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 {
	
	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());
public class AcsClientCxfImpl extends ClientCxfImpl {
	
		ClientRequestFilter authFilter = this.getConfig().getAuthorizationFilter();
		if (authFilter != null)
			providersAndFilters.add(authFilter);
		
		return WebClient.create(this.getConfig().getBaseUrl(), providersAndFilters);
	}
	@Autowired
	private AcsClientConfiguration config;
	
	@Override
	protected <T> T getApi(Class<T> apiClass) {
		return JAXRSClientFactory.fromClient(this.getCxfClient(), apiClass);
	protected ClientConfiguration getConfig() {
		return this.config;
	}

}
+11 −26
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.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 {
	
	private final Logger logger = LoggerFactory.getLogger(AcsClientJerseyImpl.class);
public class AcsClientJerseyImpl extends ClientJerseyImpl {
	
	@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());
		}
	}
	@Autowired
	private AcsClientConfiguration config;
	
	@Override
	protected <T> T getApi(Class<T> apiClass) {
		return WebResourceFactory.newResource(apiClass, this.getTarget());
	protected ClientConfiguration getConfig() {
		return this.config;
	}

}
Loading