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

initial checkin

parents
Loading
Loading
Loading
Loading

.gitignore

0 → 100644
+11 −0
Original line number Diff line number Diff line
# Maven
target
pom.xml.versionsBackup

# Eclipse
.project
.classpath
.settings

# Visual Studio Code
.vscode

pom.xml

0 → 100644
+142 −0
Original line number Diff line number Diff line
<project xmlns="http://maven.apache.org/POM/4.0.0"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.inteligr8</groupId>
	<artifactId>common-rest-api</artifactId>
	<version>1.0-SNAPSHOT</version>
	<name>ReST API Client for Java</name>

	<properties>
		<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
		<maven.compiler.source>8</maven.compiler.source>
		<maven.compiler.target>8</maven.compiler.target>

		<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>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</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>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.29</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>
			<version>${jersey.version}</version>
			<scope>test</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>
		</dependency>
	</dependencies>
	
	<build>
		<plugins>
			<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>
				<groupId>io.repaint.maven</groupId>
				<artifactId>tiles-maven-plugin</artifactId>
				<version>2.21</version>
				<extensions>true</extensions>
				<configuration>
					<filtering>true</filtering>
					<tiles>
						<tile>com.inteligr8:maven-public-deploy-tile:[1.0.0,2.0.0)</tile>
					</tiles>
				</configuration>
			</plugin>
		</plugins>
	</build>
	
	<pluginRepositories>
		<pluginRepository>
			<id>inteligr8-releases</id>
			<url>http://repos.inteligr8.com/nexus/repository/inteligr8-public</url>
		</pluginRepository>
	</pluginRepositories>
</project>
 No newline at end of file
+20 −0
Original line number Diff line number Diff line
package com.inteligr8.rs;

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);
	}

}
+28 −0
Original line number Diff line number Diff line
package com.inteligr8.rs;

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);
	}

}
+34 −0
Original line number Diff line number Diff line
package com.inteligr8.rs;

import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.ClientRequestFilter;
import javax.ws.rs.client.WebTarget;

import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;

/**
 * Configured JAX-RS Client & WebTarget
 */
public abstract class Client {
	
	protected abstract ClientConfiguration getConfig();
	
	public javax.ws.rs.client.Client getClient() {
		ClientRequestFilter authFilter = this.getConfig().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.getConfig().getBaseUrl());
	}
	
	public abstract <T> T getApi(Class<T> apiClass);

}
Loading