Commit a14564c8 authored by Brian Long's avatar Brian Long
Browse files

split API/client

parent 06c8bf5f
Loading
Loading
Loading
Loading
+29 −75
Original line number Diff line number Diff line
@@ -4,8 +4,8 @@
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.inteligr8.alfresco</groupId>
	<artifactId>aps-public-rest-api</artifactId>
	<version>1.2-SNAPSHOT</version>
	<name>Alfresco Process Services ReST API Client for Java</name>
	<version>2.0-SNAPSHOT</version>
	<name>Alfresco Process Services ReST API for Java</name>

	<properties>
		<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
@@ -15,74 +15,34 @@

		<!-- If you want to build for your specific version, point to your own 
			installation -->
		<aps.baseUrl>http://localhost:8080</aps.baseUrl>
		<aps.app.tag>aps1</aps.app.tag>

		<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>
		<jersey.version>2.35</jersey.version>
		<cxf.version>3.4.7</cxf.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>com.inteligr8</groupId>
			<artifactId>common-rest-api</artifactId>
			<version>1.1-SNAPSHOT</version>
			<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>
			<groupId>com.fasterxml.jackson.module</groupId>
			<artifactId>jackson-module-jaxb-annotations</artifactId>
			<version>2.12.2</version>
		</dependency>
		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-rs-client</artifactId>
			<artifactId>cxf-rt-frontend-jaxrs</artifactId>
			<version>${cxf.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jersey.core</groupId>
			<artifactId>jersey-client</artifactId>
			<version>${jersey.version}</version>
			<scope>test</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jersey.media</groupId>
			<artifactId>jersey-media-multipart</artifactId>
			<version>${jersey.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jersey.inject</groupId>
			<artifactId>jersey-hk2</artifactId>
			<version>${jersey.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jersey.media</groupId>
			<artifactId>jersey-media-json-jackson</artifactId>
			<version>${jersey.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-api</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<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>
			<optional>true</optional>
		</dependency>
	</dependencies>
	
@@ -94,30 +54,9 @@
					<classifier>${aps.app.tag}</classifier>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>3.0.0-M5</version>
				<dependencies>
					<dependency>
						<groupId>org.junit.jupiter</groupId>
						<artifactId>junit-jupiter-engine</artifactId>
						<version>${junit.version}</version>
					</dependency>
				</dependencies>
			</plugin>
			<plugin>
				<artifactId>maven-failsafe-plugin</artifactId>
				<version>3.0.0-M5</version>
				<dependencies>
					<dependency>
						<groupId>org.junit.jupiter</groupId>
						<artifactId>junit-jupiter-engine</artifactId>
						<version>${junit.version}</version>
					</dependency>
				</dependencies>
			</plugin>
			<plugin>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>3.3.2</version>
				<executions>
					<execution>
						<id>javadoc</id>
@@ -264,6 +203,21 @@
		</profile>
	</profiles>
	
	<repositories>
		<repository>
			<id>inteligr8-releases</id>
			<url>https://repos.inteligr8.com/nexus/repository/inteligr8-public</url>
			<releases><enabled>true</enabled></releases>
			<snapshots><enabled>false</enabled></snapshots>
		</repository>
		<repository>
			<id>inteligr8-snapshots</id>
			<url>https://repos.inteligr8.com/nexus/repository/inteligr8-snapshots</url>
			<releases><enabled>false</enabled></releases>
			<snapshots><enabled>true</enabled></snapshots>
		</repository>
	</repositories>
	
	<pluginRepositories>
		<pluginRepository>
			<id>mulesoft-releases</id>
+0 −165
Original line number Diff line number Diff line
package com.inteligr8.alfresco.activiti;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import com.inteligr8.rs.ClientCxfConfiguration;
import com.inteligr8.rs.ClientJerseyConfiguration;

/**
 * This class provides a POJO &amp; Spring-based implementation of the
 * ClientConfiguration interface.  You can use it outside of the Spring
 * context, but you will need the spring-context and spring-beans libraries in
 * your non-Spring application.
 * 
 * @author brian@inteligr8.com
 */
@Configuration
@ComponentScan
public class ApsClientConfiguration implements ClientCxfConfiguration, ClientJerseyConfiguration {

	@Value("${process.service.baseUrl:http://localhost:8080/activiti-app}")
	private String baseUrl;

	@Value("${process.service.security.basicAuth.username:admin@app.activiti.com}")
	private String basicAuthUsername;

	@Value("${process.service.security.basicAuth.password:admin}")
	private String basicAuthPassword;

	@Value("${process.service.security.bearerToken:#{null}}")
	private String bearerToken;

	@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;

	@Value("${process.service.cxf.defaultBusEnabled:true}")
	private boolean defaultBusEnabled;
	
	@Value("${process.service.jersey.putBodyRequired:true}")
	private boolean putBodyRequired;

	public String getBaseUrl() {
		return this.baseUrl;
	}
	
	public void setBaseUrl(String baseUrl) {
		this.baseUrl = baseUrl;
	}
	
	public String getBasicAuthUsername() {
		return this.basicAuthUsername;
	}

	public void setBasicAuthUsername(String basicAuthUsername) {
		this.basicAuthUsername = basicAuthUsername;
	}
	
	public String getBasicAuthPassword() {
		return this.basicAuthPassword;
	}

	public void setBasicAuthPassword(String basicAuthPassword) {
		this.basicAuthPassword = basicAuthPassword;
	}
	
	public String getBearerToken() {
		return this.bearerToken;
	}

	public void setBearerToken(String bearerToken) {
		this.bearerToken = bearerToken;
	}
	
	public String getOAuthTokenUrl() {
		return this.oAuthTokenUrl;
	}

	public void setOAuthTokenUrl(String oAuthTokenUrl) {
		this.oAuthTokenUrl = oAuthTokenUrl;
	}
	
	public String getOAuthClientId() {
		return this.oAuthClientId;
	}

	public void setOAuthClientId(String oAuthClientId) {
		this.oAuthClientId = oAuthClientId;
	}
	
	public String getOAuthClientSecret() {
		return this.oAuthClientSecret;
	}

	public void setOAuthClientSecret(String oAuthClientSecret) {
		this.oAuthClientSecret = oAuthClientSecret;
	}
	
	public String getOAuthAuthCode() {
		return this.oAuthAuthCode;
	}

	public void setOAuthAuthCode(String oAuthAuthCode) {
		this.oAuthAuthCode = oAuthAuthCode;
	}
	
	public String getOAuthAuthRedirectUri() {
		return this.oAuthAuthRedirectUri;
	}

	public void setOAuthAuthRedirectUri(String oAuthAuthRedirectUri) {
		this.oAuthAuthRedirectUri = oAuthAuthRedirectUri;
	}
	
	public String getOAuthUsername() {
		return this.oAuthUsername;
	}

	public void setOAuthUsername(String oAuthUsername) {
		this.oAuthUsername = oAuthUsername;
	}
	
	public String getOAuthPassword() {
		return this.oAuthPassword;
	}

	public void setOAuthPassword(String oAuthPassword) {
		this.oAuthPassword = oAuthPassword;
	}
	
	public boolean isDefaultBusEnabled() {
		return this.defaultBusEnabled;
	}

	public void setDefaultBusEnabled(boolean defaultBusEnabled) {
		this.defaultBusEnabled = defaultBusEnabled;
	}
	
	public boolean isPutBodyRequired() {
		return this.putBodyRequired;
	}

	public void setPutBodyRequired(boolean putBodyRequired) {
		this.putBodyRequired = putBodyRequired;
	}

}
+0 −43
Original line number Diff line number Diff line
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.ClientCxfConfiguration;
import com.inteligr8.rs.ClientCxfImpl;

/**
 * This class provides a POJO &amp; Spring-based implementation of the Apache
 * CXF client.  You can use it outside of the Spring context, but you will need
 * the spring-context and spring-beans libraries in your non-Spring
 * application.
 * 
 * @author brian@inteligr8.com
 */
@Component("aps.client.cxf")
@Lazy
public class ApsClientCxfImpl extends ClientCxfImpl {
	
	@Autowired
	private ApsClientConfiguration config;
	
	/**
	 * This constructor is for Spring use
	 */
	protected ApsClientCxfImpl() {
	}
	
	/**
	 * This constructor is for POJO use
	 */
	public ApsClientCxfImpl(ApsClientConfiguration config) {
		this.config = config;
	}
	
	@Override
	protected ClientCxfConfiguration getConfig() {
		return this.config;
	}

}
+0 −43
Original line number Diff line number Diff line
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.ClientJerseyConfiguration;
import com.inteligr8.rs.ClientJerseyImpl;

/**
 * This class provides a POJO &amp; Spring-based implementation of the Apache
 * CXF client.  You can use it outside of the Spring context, but you will need
 * the spring-context and spring-beans libraries in your non-Spring
 * application.
 * 
 * @author brian@inteligr8.com
 */
@Component("aps.client.jersey")
@Lazy
public class ApsClientJerseyImpl extends ClientJerseyImpl {
	
	@Autowired
	private ApsClientConfiguration config;
	
	/**
	 * This constructor is for Spring use
	 */
	protected ApsClientJerseyImpl() {
	}
	
	/**
	 * This constructor is for POJO use
	 */
	public ApsClientJerseyImpl(ApsClientConfiguration config) {
		this.config = config;
	}
	
	@Override
	protected ClientJerseyConfiguration getConfig() {
		return this.config;
	}

}
+10 −67
Original line number Diff line number Diff line
@@ -7,84 +7,27 @@ import com.inteligr8.alfresco.activiti.api.ModelsApi;
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.AuthorizationFilter;
import com.inteligr8.rs.Client;
import com.inteligr8.rs.ClientConfiguration;

/**
 * This class serves as the base implementation for the JAX-RS API for the APS
 * Public ReST API.
 * This interface consolidates the JAX-RS APIs available in the APS Public
 * ReST API.
 * 
 * @author brian@inteligr8.com
 */
public abstract class ApsPublicRestApi {
public interface ApsPublicRestApi {
	
	abstract ClientConfiguration getConfig();
	AdminApi getAdminApi();
	
	abstract Client getClient();
	AppDefinitionsApi getAppDefinitionsApi();
	
	protected final <T> T getApi(Class<T> apiClass) {
		return this.getApi(null, apiClass);
	}

	protected <T> T getApi(AuthorizationFilter authFilter, Class<T> apiClass) {
		return this.getClient().getApi(authFilter, apiClass);
	}
	
	public AdminApi getAdminApi() {
		return this.getApi(AdminApi.class);
	}
	
	public AdminApi getAdminApi(AuthorizationFilter authFilter) {
		return this.getApi(authFilter, AdminApi.class);
	}
	AppVersionApi getAppVersionApi();
	
	public AppDefinitionsApi getAppDefinitionsApi() {
		return this.getApi(AppDefinitionsApi.class);
	}
	
	public AppDefinitionsApi getAppDefinitionsApi(AuthorizationFilter authFilter) {
		return this.getApi(authFilter, AppDefinitionsApi.class);
	}
	ModelsApi getModelsApi();
	
	public AppVersionApi getAppVersionApi() {
		return this.getApi(AppVersionApi.class);
	}
	ProcessInstancesApi getProcessInstancesApi();
	
	public AppVersionApi getAppVersionApi(AuthorizationFilter authFilter) {
		return this.getApi(authFilter, AppVersionApi.class);
	}
	
	public ModelsApi getModelsApi() {
		return this.getApi(ModelsApi.class);
	}
	ProfileApi getProfileApi();
	
	public ModelsApi getModelsApi(AuthorizationFilter authFilter) {
		return this.getApi(authFilter, ModelsApi.class);
	}
	
	public ProcessInstancesApi getProcessInstancesApi() {
		return this.getApi(ProcessInstancesApi.class);
	}
	
	public ProcessInstancesApi getProcessInstancesApi(AuthorizationFilter authFilter) {
		return this.getApi(authFilter, ProcessInstancesApi.class);
	}
	
	public ProfileApi getProfileApi() {
		return this.getApi(ProfileApi.class);
	}
	
	public ProfileApi getProfileApi(AuthorizationFilter authFilter) {
		return this.getApi(authFilter, ProfileApi.class);
	}
	
	public TasksApi getTasksApi() {
		return this.getApi(TasksApi.class);
	}
	
	public TasksApi getTasksApi(AuthorizationFilter authFilter) {
		return this.getApi(authFilter, TasksApi.class);
	}
	TasksApi getTasksApi();

}
Loading