Skip to content

Commit

Permalink
121 Give Config a Better Name to Make it More Distinguishable from Pr…
Browse files Browse the repository at this point in the history
…oxyConfig

Signed-off-by: Sven Strittmatter <[email protected]>
  • Loading branch information
Weltraumschaf committed Feb 16, 2024
1 parent f8efcca commit 43317a4
Show file tree
Hide file tree
Showing 31 changed files with 142 additions and 142 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ The client is supposed to be compatible with DefectDojo 1.10 and later, older ve

```java
import com.fasterxml.jackson.core.JsonProcessingException;
import io.securecodebox.persistence.defectdojo.config.ClientConfig;
import io.securecodebox.persistence.defectdojo.config.Config;
import io.securecodebox.persistence.defectdojo.service.ProductTypeService;

Expand All @@ -41,7 +42,7 @@ public class DefectDojoClientTest {
public static void main(String[] args) throws URISyntaxException, JsonProcessingException {

// Configure DefectDojo URl and APIv2 Key
var conf = new Config("https://defectdojo.example.com", "f8....");
var conf = new ClientConfig("https://defectdojo.example.com", "f8....");

var productTypeService = new ProductTypeService(conf);
var productTypes = productTypeService.search();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

package io.securecodebox.persistence.defectdojo.config;

import io.securecodebox.persistence.defectdojo.exception.ConfigException;
import io.securecodebox.persistence.defectdojo.exception.ClientConfigException;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
Expand All @@ -16,15 +16,15 @@
@Getter
@ToString
@EqualsAndHashCode
public final class Config {
public final class ClientConfig {
/**
* Default for {@link #maxPageCountForGets}
*/
static final int DEFAULT_MAX_PAGE_COUNT_FOR_GETS = 100;
/**
* Null pattern object.
*/
public static final Config NULL = new Config("", "", DEFAULT_MAX_PAGE_COUNT_FOR_GETS);
public static final ClientConfig NULL = new ClientConfig("", "", DEFAULT_MAX_PAGE_COUNT_FOR_GETS);

/**
* URL of the host which serves the DefectDojo API.
Expand Down Expand Up @@ -59,7 +59,7 @@ public final class Config {
* @param url not {@code null}
* @param apiKey not {@code null}
*/
public Config(final @NonNull String url, final @NonNull String apiKey) {
public ClientConfig(final @NonNull String url, final @NonNull String apiKey) {
this(url, apiKey, DEFAULT_MAX_PAGE_COUNT_FOR_GETS);
}

Expand All @@ -70,7 +70,7 @@ public Config(final @NonNull String url, final @NonNull String apiKey) {
* @param apiKey not {@code null}
* @param maxPageCountForGets not less than 1
*/
public Config(final @NonNull String url, final @NonNull String apiKey, final int maxPageCountForGets) {
public ClientConfig(final @NonNull String url, final @NonNull String apiKey, final int maxPageCountForGets) {
super();
this.url = url;
this.apiKey = apiKey;
Expand All @@ -90,7 +90,7 @@ private static int validateIsGreaterZero(final int number, final String name) {
*
* @return never {@code null}
*/
public static Config fromEnv() {
public static ClientConfig fromEnv() {
final var url = findRequiredEnvVar(EnvVars.DEFECTDOJO_URL);
final var apiKey = findRequiredEnvVar(EnvVars.DEFECTDOJO_APIKEY);
final int maxPageCountForGets;
Expand All @@ -99,14 +99,14 @@ public static Config fromEnv() {
try {
maxPageCountForGets = Integer.parseInt(findEnvVar(EnvVars.DEFECTDOJO_MAX_PAGE_COUNT_FOR_GETS));
} catch (final NumberFormatException e) {
throw new ConfigException(String.format("Given value for environment variable '%s' is not a valid number! Given was '%s'.", EnvVars.DEFECTDOJO_MAX_PAGE_COUNT_FOR_GETS.literal, findEnvVar(EnvVars.DEFECTDOJO_MAX_PAGE_COUNT_FOR_GETS)),
throw new ClientConfigException(String.format("Given value for environment variable '%s' is not a valid number! Given was '%s'.", EnvVars.DEFECTDOJO_MAX_PAGE_COUNT_FOR_GETS.literal, findEnvVar(EnvVars.DEFECTDOJO_MAX_PAGE_COUNT_FOR_GETS)),
e);
}
} else {
maxPageCountForGets = DEFAULT_MAX_PAGE_COUNT_FOR_GETS;
}

return new Config(url, apiKey, maxPageCountForGets);
return new ClientConfig(url, apiKey, maxPageCountForGets);
}

private static boolean hasEnvVar(final @NonNull EnvVars name) {
Expand All @@ -121,7 +121,7 @@ private static String findRequiredEnvVar(final @NonNull EnvVars name) {
final var envVar = System.getenv(name.literal);

if (envVar == null) {
throw new ConfigException(String.format("Missing environment variable '%s'!", name.literal));
throw new ClientConfigException(String.format("Missing environment variable '%s'!", name.literal));
}
return envVar;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Copyright 2021 iteratec GmbH
// SPDX-FileCopyrightText: 2023 iteratec GmbH
//
// SPDX-License-Identifier: Apache-2.0

package io.securecodebox.persistence.defectdojo.exception;

import io.securecodebox.persistence.defectdojo.config.ClientConfig;

/**
* Indicates a missing/bad {@link ClientConfig config property}
*/
public final class ClientConfigException extends PersistenceException {
public ClientConfigException(final String message) {
super(message);
}

public ClientConfigException(final String message, final Throwable cause) {
super(message, cause);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

package io.securecodebox.persistence.defectdojo.exception;

import io.securecodebox.persistence.defectdojo.config.Config;
import io.securecodebox.persistence.defectdojo.config.ClientConfig;

/**
* Thrown if we receive more objects than {@link Config configured}
* Thrown if we receive more objects than {@link ClientConfig configured}
*/
public final class TooManyResponsesException extends PersistenceException {
public TooManyResponsesException(String message) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.securecodebox.persistence.defectdojo.http;

import io.securecodebox.persistence.defectdojo.config.Config;
import io.securecodebox.persistence.defectdojo.config.ClientConfig;
import lombok.NonNull;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -14,14 +14,14 @@
*/
@Slf4j
public final class AuthHeaderFactory {
private final Config config;
private final ClientConfig clientConfig;
@Setter
@NonNull
private ProxyConfig proxyConfig = ProxyConfig.NULL;

public AuthHeaderFactory(@NonNull Config config) {
public AuthHeaderFactory(@NonNull ClientConfig clientConfig) {
super();
this.config = config;
this.clientConfig = clientConfig;
}

/**
Expand All @@ -32,7 +32,7 @@ public AuthHeaderFactory(@NonNull Config config) {
public HttpHeaders generateAuthorizationHeaders() {
final var headers = new HttpHeaders();
log.debug("Add Authorization header.");
headers.set(HttpHeaders.AUTHORIZATION, "Token " + this.config.getApiKey());
headers.set(HttpHeaders.AUTHORIZATION, "Token " + this.clientConfig.getApiKey());

if (proxyConfig.isComplete()) {
log.debug("Add Proxy-Authorization header.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
package io.securecodebox.persistence.defectdojo.service;

import io.securecodebox.persistence.defectdojo.ScanType;
import io.securecodebox.persistence.defectdojo.config.Config;
import io.securecodebox.persistence.defectdojo.config.ClientConfig;
import io.securecodebox.persistence.defectdojo.exception.PersistenceException;
import io.securecodebox.persistence.defectdojo.http.ProxyConfig;
import io.securecodebox.persistence.defectdojo.model.ScanFile;
Expand Down Expand Up @@ -56,13 +56,13 @@ class DefaultImportScanService implements ImportScanService {
/**
* Dedicated constructor.
*
* @param config not {@code null}
* @param clientConfig not {@code null}
* @param proxyConfig not {@code null}
*/
DefaultImportScanService(final @NonNull Config config, @NonNull ProxyConfig proxyConfig) {
DefaultImportScanService(final @NonNull ClientConfig clientConfig, @NonNull ProxyConfig proxyConfig) {
super();
this.defectDojoUrl = config.getUrl();
this.defectDojoApiKey = config.getApiKey();
this.defectDojoUrl = clientConfig.getUrl();
this.defectDojoApiKey = clientConfig.getApiKey();
this.proxyConfig = proxyConfig;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import io.securecodebox.persistence.defectdojo.config.Config;
import io.securecodebox.persistence.defectdojo.config.ClientConfig;
import io.securecodebox.persistence.defectdojo.exception.PersistenceException;
import io.securecodebox.persistence.defectdojo.model.Endpoint;
import io.securecodebox.persistence.defectdojo.model.PaginatedResult;

public class EndpointService extends GenericDefectDojoService<Endpoint> {
public EndpointService(Config config) {
super(config);
public EndpointService(ClientConfig clientConfig) {
super(clientConfig);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import io.securecodebox.persistence.defectdojo.config.Config;
import io.securecodebox.persistence.defectdojo.config.ClientConfig;
import io.securecodebox.persistence.defectdojo.exception.PersistenceException;
import io.securecodebox.persistence.defectdojo.model.Engagement;
import io.securecodebox.persistence.defectdojo.model.PaginatedResult;

public class EngagementService extends GenericDefectDojoService<Engagement> {
public EngagementService(Config config) {
super(config);
public EngagementService(ClientConfig clientConfig) {
super(clientConfig);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import io.securecodebox.persistence.defectdojo.config.Config;
import io.securecodebox.persistence.defectdojo.config.ClientConfig;
import io.securecodebox.persistence.defectdojo.exception.PersistenceException;
import io.securecodebox.persistence.defectdojo.model.Finding;
import io.securecodebox.persistence.defectdojo.model.PaginatedResult;
Expand All @@ -15,8 +15,8 @@
import java.util.Map;

public class FindingService extends GenericDefectDojoService<Finding> {
public FindingService(Config config) {
super(config);
public FindingService(ClientConfig clientConfig) {
super(clientConfig);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.cfg.CoercionAction;
import com.fasterxml.jackson.databind.cfg.CoercionInputShape;
import io.securecodebox.persistence.defectdojo.config.Config;
import io.securecodebox.persistence.defectdojo.config.ClientConfig;
import io.securecodebox.persistence.defectdojo.exception.PersistenceException;
import io.securecodebox.persistence.defectdojo.exception.TooManyResponsesException;
import io.securecodebox.persistence.defectdojo.http.AuthHeaderFactory;
Expand Down Expand Up @@ -39,16 +39,16 @@
public abstract class GenericDefectDojoService<T extends Model> {
private static final String API_PREFIX = "/api/v2/";
private static final long DEFECT_DOJO_OBJET_LIMIT = 100L;
protected Config config;
protected ClientConfig clientConfig;

protected ObjectMapper objectMapper;
protected ObjectMapper searchStringMapper;

@Getter
protected RestTemplate restTemplate;

public GenericDefectDojoService(Config config) {
this.config = config;
public GenericDefectDojoService(ClientConfig clientConfig) {
this.clientConfig = clientConfig;

this.objectMapper = new ObjectMapper();
this.objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Expand All @@ -68,7 +68,7 @@ public GenericDefectDojoService(Config config) {
* @return The DefectDojo Authentication Header
*/
private HttpHeaders getDefectDojoAuthorizationHeaders() {
final var factory = new AuthHeaderFactory(config);
final var factory = new AuthHeaderFactory(clientConfig);
factory.setProxyConfig(new ProxyConfigFactory().create());
return factory.generateAuthorizationHeaders();
}
Expand Down Expand Up @@ -97,7 +97,7 @@ public T get(long id) {
HttpEntity<String> payload = new HttpEntity<>(getDefectDojoAuthorizationHeaders());

ResponseEntity<T> response = restTemplate.exchange(
this.config.getUrl() + API_PREFIX + this.getUrlPath() + "/" + id,
this.clientConfig.getUrl() + API_PREFIX + this.getUrlPath() + "/" + id,
HttpMethod.GET,
payload,
getModelClass()
Expand All @@ -120,7 +120,7 @@ protected PaginatedResult<T> internalSearch(Map<String, Object> queryParams, lon
multiValueMap.set(entry.getKey(), String.valueOf(entry.getValue()));
}

final var url = this.config.getUrl() + API_PREFIX + this.getUrlPath() + "/";
final var url = this.clientConfig.getUrl() + API_PREFIX + this.getUrlPath() + "/";
final UriComponentsBuilder builder;
try {
builder = UriComponentsBuilder
Expand Down Expand Up @@ -150,7 +150,7 @@ public List<T> search(Map<String, Object> queryParams) {
objects.addAll(response.getResults());

hasNext = response.getNext() != null;
if (page > this.config.getMaxPageCountForGets()) {
if (page > this.clientConfig.getMaxPageCountForGets()) {
throw new TooManyResponsesException("Found too many response object. Quitting after " + (page - 1) + " paginated API pages of " + DEFECT_DOJO_OBJET_LIMIT + " each.");
}
} while (hasNext);
Expand Down Expand Up @@ -185,22 +185,22 @@ public T create(T object) {
var restTemplate = this.getRestTemplate();
HttpEntity<T> payload = new HttpEntity<>(object, getDefectDojoAuthorizationHeaders());

ResponseEntity<T> response = restTemplate.exchange(this.config.getUrl() + API_PREFIX + getUrlPath() + "/", HttpMethod.POST, payload, getModelClass());
ResponseEntity<T> response = restTemplate.exchange(this.clientConfig.getUrl() + API_PREFIX + getUrlPath() + "/", HttpMethod.POST, payload, getModelClass());
return response.getBody();
}

public void delete(long id) {
var restTemplate = this.getRestTemplate();
HttpEntity<String> payload = new HttpEntity<>(getDefectDojoAuthorizationHeaders());

restTemplate.exchange(this.config.getUrl() + API_PREFIX + getUrlPath() + "/" + id + "/", HttpMethod.DELETE, payload, String.class);
restTemplate.exchange(this.clientConfig.getUrl() + API_PREFIX + getUrlPath() + "/" + id + "/", HttpMethod.DELETE, payload, String.class);
}

public T update(T object, long objectId) {
var restTemplate = this.getRestTemplate();
HttpEntity<T> payload = new HttpEntity<>(object, getDefectDojoAuthorizationHeaders());

ResponseEntity<T> response = restTemplate.exchange(this.config.getUrl() + API_PREFIX + getUrlPath() + "/" + objectId + "/", HttpMethod.PUT, payload, getModelClass());
ResponseEntity<T> response = restTemplate.exchange(this.clientConfig.getUrl() + API_PREFIX + getUrlPath() + "/" + objectId + "/", HttpMethod.PUT, payload, getModelClass());
return response.getBody();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import io.securecodebox.persistence.defectdojo.config.Config;
import io.securecodebox.persistence.defectdojo.config.ClientConfig;
import io.securecodebox.persistence.defectdojo.exception.PersistenceException;
import io.securecodebox.persistence.defectdojo.model.GroupMember;
import io.securecodebox.persistence.defectdojo.model.PaginatedResult;

public class GroupMemberService extends GenericDefectDojoService<GroupMember> {
public GroupMemberService(Config config) {
super(config);
public GroupMemberService(ClientConfig clientConfig) {
super(clientConfig);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import io.securecodebox.persistence.defectdojo.config.Config;
import io.securecodebox.persistence.defectdojo.config.ClientConfig;
import io.securecodebox.persistence.defectdojo.exception.PersistenceException;
import io.securecodebox.persistence.defectdojo.model.Group;
import io.securecodebox.persistence.defectdojo.model.PaginatedResult;

public class GroupService extends GenericDefectDojoService<Group> {
public GroupService(Config config) {
super(config);
public GroupService(ClientConfig clientConfig) {
super(clientConfig);
}

@Override
Expand Down
Loading

0 comments on commit 43317a4

Please sign in to comment.