Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kc/implement services with tests #6

Merged
6 changes: 2 additions & 4 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,10 @@ jobs:
with:
java-version: ${{ matrix.java-version }}
architecture: x64

- name: Install dependencies
run: mvn install
distribution: "adopt"

- name: Lint the code
run: mvn checkstyle:checkstyle
run: mvn -X checkstyle:checkstyle

- name: Run test suite
run: mvn test
37 changes: 37 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,16 @@
</reporting>

<dependencies>
<dependency>
<groupId>org.mock-server</groupId>
<artifactId>mockserver-netty</artifactId>
<version>3.10.8</version>
</dependency>
<dependency>
<groupId>org.mock-server</groupId>
<artifactId>mockserver-client-java</artifactId>
<version>3.10.8</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
Expand Down Expand Up @@ -119,6 +129,33 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.mock-server</groupId>
<artifactId>mockserver-maven-plugin</artifactId>
<version>3.10.8</version>
<configuration>
<serverPort>1080</serverPort>
<proxyPort>1090</proxyPort>
<logLevel>OFF</logLevel>
<initializationClass>org.mockserver.maven.ExampleInitializationClass</initializationClass>
</configuration>
<executions>
<execution>
<id>process-test-classes</id>
<phase>process-test-classes</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>verify</id>
<phase>verify</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
Expand Down
76 changes: 69 additions & 7 deletions src/main/java/com/shipengine/Config.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.shipengine;

import com.shipengine.exception.InvalidFieldValueException;
import com.shipengine.exception.ValidationException;
import com.shipengine.util.Constants;

import java.util.Arrays;
Expand All @@ -12,11 +13,40 @@

public class Config {
private String apiKey;

public void setBaseUrl(String baseUrl) {
this.baseUrl = baseUrl;
}

private String baseUrl = Constants.BASE_URL;
private int pageSize = 5000;
private int retries = 1;
private int timeout = 50;

public Config(Map<String, Object> config) {
if (config.containsKey("apiKey")) {
setApiKey(config.get("apiKey").toString());
} else {
setApiKey("");
}

if (config.containsKey("baseUrl")) {
setBaseUrl(config.get("baseUrl").toString());
}

if (config.containsKey("timeout")) {
setTimeout(Integer.parseInt(config.get("timeout").toString()));
}

if (config.containsKey("retries")) {
setRetries(Integer.parseInt(config.get("retries").toString()));
}

if (config.containsKey("pageSize")) {
setPageSize(Integer.parseInt(config.get("pageSize").toString()));
}
}

public Config(String apiKey) {
setApiKey(apiKey);
}
Expand All @@ -28,6 +58,14 @@ public Config(String apiKey, int timeout, int retries, int pageSize) {
setPageSize(pageSize);
}

public Config(String apiKey, String baseUrl, int timeout, int retries, int pageSize) {
setApiKey(apiKey);
setBaseUrl(baseUrl);
setTimeout(timeout);
setRetries(retries);
setPageSize(pageSize);
}

/*
* The URL of the ShipEngine API. You can usually leave this unset and it will
* default to our public API.
Expand Down Expand Up @@ -74,6 +112,14 @@ public int getTimeout() {
* Set the timeout (in milliseconds).
*/
public void setTimeout(int timeout) {
if (timeout == 0) {
throw new ValidationException(
"The timeout value cannot be zero.",
"shipengine",
"validation",
"invalid_field_value"
);
}
this.timeout = timeout;
KaseyCantu marked this conversation as resolved.
Show resolved Hide resolved
}

Expand All @@ -93,6 +139,14 @@ public int getRetries() {
* Set the retries.
*/
public void setRetries(int retries) {
if (retries == 0) {
throw new ValidationException(
"The retries value cannot be zero.",
"shipengine",
"validation",
"invalid_field_value"
);
}
this.retries = retries;
KaseyCantu marked this conversation as resolved.
Show resolved Hide resolved
}

Expand All @@ -111,6 +165,14 @@ public int getPageSize() {
* Set the page size.
*/
public void setPageSize(int pageSize) {
if (pageSize == 0) {
throw new ValidationException(
"The pageSize value cannot be zero.",
"shipengine",
"validation",
"invalid_field_value"
);
}
this.pageSize = pageSize;
KaseyCantu marked this conversation as resolved.
Show resolved Hide resolved
}

Expand All @@ -132,32 +194,32 @@ public Config merge(Map<String, Object> newConfig) {
if (newConfig.containsKey(configKeys.get(0))) {
config.put(configKeys.get(0), newConfig.get(configKeys.get(0)));
} else {
config.put(configKeys.get(0), this.getApiKey());
config.put(configKeys.get(0), getApiKey());
}

if (newConfig.containsKey(configKeys.get(1))) {
config.put(configKeys.get(1), newConfig.get(configKeys.get(1)));
} else {
config.put(configKeys.get(1), this.getTimeout());
config.put(configKeys.get(1), getTimeout());
}

if (newConfig.containsKey(configKeys.get(2))) {
config.put(configKeys.get(2), newConfig.get(configKeys.get(2)));
} else {
config.put(configKeys.get(2), this.getRetries());
config.put(configKeys.get(2), getRetries());
}

if (newConfig.containsKey(configKeys.get(3))) {
config.put(configKeys.get(3), newConfig.get(configKeys.get(3)));
} else {
config.put(configKeys.get(3), this.pageSize);
config.put(configKeys.get(3), getPageSize());
}
}
return new Config(
config.get(configKeys.get(0)).toString(),
java.lang.Integer.parseInt(config.get(configKeys.get(1)).toString()),
java.lang.Integer.parseInt(config.get(configKeys.get(2)).toString()),
java.lang.Integer.parseInt(config.get(configKeys.get(3)).toString())
Integer.parseInt(config.get(configKeys.get(1)).toString()),
Integer.parseInt(config.get(configKeys.get(2)).toString()),
Integer.parseInt(config.get(configKeys.get(3)).toString())
);
}
}
Loading