Skip to content

Commit

Permalink
Merge pull request #103 from ids-basecamp/feat/github-pkg-build
Browse files Browse the repository at this point in the history
EDC basecamp build
  • Loading branch information
augustocmleal authored Apr 18, 2024
2 parents 6c05bca + 8c442ff commit 72e0dd3
Show file tree
Hide file tree
Showing 82 changed files with 1,728 additions and 1,844 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/release-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,9 @@ jobs:
DOCKER_IMAGE_TAG: ${{ needs.release.outputs.new_tag_version }}
run: |
cd ${{ matrix.directory }}
docker build -t ghcr.io/${{ github.repository }}/${{ matrix.context }}:$DOCKER_IMAGE_TAG -f ${{ matrix.dockerfile }} .
docker build --build-arg="VERSION=${{ needs.release.outputs.new_tag_version }}" \
--build-arg="GITHUB_USER=${{ github.actor }}" --build-arg="GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}" \
-t ghcr.io/${{ github.repository }}/${{ matrix.context }}:$DOCKER_IMAGE_TAG -f ${{ matrix.dockerfile }} .
- name: Push Docker image
env:
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,13 @@ jobs:
java-version: '17'
distribution: 'temurin'

- name: Build Project
run: |
cd clearing-house-edc
./gradlew clean build \
-Dorg.gradle.project.gitHubUserName=${{ github.actor }} \
-Dorg.gradle.project.gitHubUserPassword=${{ secrets.GITHUB_TOKEN }}
- name: Run Unit Tests
run: |
cd clearing-house-edc
Expand Down
65 changes: 60 additions & 5 deletions clearing-house-edc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,68 @@
*/

plugins {
`java-base`
`java-library`
}

val javaVersion: String by project
val defaultVersion: String by project
val annotationProcessorVersion: String by project
val metaModelVersion: String by project

java {
toolchain {
languageVersion = JavaLanguageVersion.of(javaVersion)
}
var actualVersion: String = (project.findProperty("version") ?: defaultVersion) as String
if (actualVersion == "unspecified") {
actualVersion = defaultVersion
}

buildscript {
dependencies {
val gradlePluginsGroup: String by project
val gradlePluginsVersion: String by project
classpath("${gradlePluginsGroup}.edc-build:${gradlePluginsGroup}.edc-build.gradle.plugin:${gradlePluginsVersion}")
}
}

allprojects {
val gradlePluginsGroup: String by project
apply(plugin = "${gradlePluginsGroup}.edc-build")

// configure which version of the annotation processor to use. defaults to the same version as the plugin
configure<org.eclipse.edc.plugins.autodoc.AutodocExtension> {
processorVersion.set(annotationProcessorVersion)
outputDirectory.set(project.buildDir)
}

configure<org.eclipse.edc.plugins.edcbuild.extensions.BuildExtension> {
versions {
// override default dependency versions here
projectVersion.set(actualVersion)
metaModel.set(metaModelVersion)
}
javaLanguageVersion.set(JavaLanguageVersion.of(javaVersion))
}

configure<CheckstyleExtension> {
configFile = rootProject.file("resources/edc-checkstyle-config.xml")
configDirectory.set(rootProject.file("resources"))
}

repositories {
val gitHubUserName: String? by project
val gitHubUserPassword: String? by project
maven {
url = uri("https://maven.pkg.github.com/ids-basecamp/edc-fork")
credentials {
username = gitHubUserName
password = gitHubUserPassword
}
}
maven {
url = uri("https://maven.pkg.github.com/ids-basecamp/gradle-plugins-fork")
credentials {
username = gitHubUserName
password = gitHubUserPassword
}
}
}

}
12 changes: 3 additions & 9 deletions clearing-house-edc/core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ plugins {

val auth0JWTVersion: String by project

configurations.all {
exclude(group = "de.fraunhofer.iais.eis.ids.infomodel", module = "java")
}

dependencies {
api(edc.spi.core)

Expand All @@ -33,9 +29,6 @@ dependencies {
implementation(libs.jersey.multipart)
implementation("com.auth0:java-jwt:${auth0JWTVersion}")

implementation(":infomodel-java-4.1.3")
implementation(":infomodel-util-4.0.4")

testImplementation(libs.junit.jupiter.api)
testImplementation(libs.mockito.inline)
testImplementation(libs.mockito.inline)
Expand All @@ -51,7 +44,7 @@ tasks.test {
}
tasks.jacocoTestReport {
reports {
xml.required = true
xml.required.set(true)
}
dependsOn(tasks.test)
classDirectories.setFrom(
Expand All @@ -60,7 +53,8 @@ tasks.jacocoTestReport {
exclude(
"**/dto/**",
"**/types/clearinghouse/*",
"**/types/ids/*")
"**/types/ids/*",
"**/types/Paging*")
}
})
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@
*/
package de.truzzt.clearinghouse.edc.app;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import de.truzzt.clearinghouse.edc.app.delegate.AppSenderDelegate;
import de.truzzt.clearinghouse.edc.dto.AppSenderRequest;
import de.truzzt.clearinghouse.edc.types.TypeManagerUtil;
import de.truzzt.clearinghouse.edc.app.message.AppSenderRequest;
import okhttp3.MediaType;
import okhttp3.Request;
import okhttp3.RequestBody;
Expand All @@ -31,29 +32,27 @@ public class AppSender {

private final Monitor monitor;
private final EdcHttpClient httpClient;
private final TypeManagerUtil typeManagerUtil;

public AppSender(Monitor monitor,
EdcHttpClient httpClient,
TypeManagerUtil typeManagerUtil) {
EdcHttpClient httpClient) {
this.monitor = monitor;
this.httpClient = httpClient;
this.typeManagerUtil = typeManagerUtil;
}

public <R, P> P send(AppSenderRequest request, AppSenderDelegate<P> appSenderDelegate) {

var json = typeManagerUtil.toJson(request.getBody());
var requestBody = RequestBody.create(json, MediaType.get(JSON_CONTENT_TYPE));
try{
var json = new ObjectMapper().writeValueAsString(request.getBody());
var requestBody = RequestBody.create(json, MediaType.get(JSON_CONTENT_TYPE));

var httpRequest = new Request.Builder()
.url(request.getUrl())
.addHeader("Ch-Service", request.getToken())
.addHeader("Content-Type", JSON_CONTENT_TYPE)
.post(requestBody)
.build();
var httpRequest = new Request.Builder()
.url(request.getUrl())
.addHeader("Ch-Service", request.getToken())
.addHeader("Content-Type", JSON_CONTENT_TYPE)
.post(requestBody)
.build();

try (Response response = httpClient.execute(httpRequest)) {
Response response = httpClient.execute(httpRequest);
monitor.debug("Response received from Clearing House App. Status: " + response.code());

if (response.isSuccessful()) {
Expand All @@ -67,10 +66,13 @@ public <R, P> P send(AppSenderRequest request, AppSenderDelegate<P> appSenderDel
throw new EdcException("Error reading Clearing House App response body", e);
}
} else {
throw new EdcException(format("Received an error from Clearing House App. Status: %s, message: %s", response.code(), response.message()));
throw new EdcException(format("Received an error from Clearing House App. Status: %s, message: %s",
response.code(), response.message()));
}
} catch (JsonProcessingException jpe){
throw new EdcException("Error parsing request to Json", jpe);
} catch (java.io.IOException e) {
throw new EdcException("Error sending request to Clearing House App", e);
}
throw new EdcException("Error sending request to Clearing House App", e);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,45 +13,34 @@
*/
package de.truzzt.clearinghouse.edc.app.delegate;

import de.truzzt.clearinghouse.edc.dto.*;
import de.truzzt.clearinghouse.edc.types.TypeManagerUtil;
import de.truzzt.clearinghouse.edc.types.clearinghouse.Context;
import de.truzzt.clearinghouse.edc.types.clearinghouse.Header;
import de.truzzt.clearinghouse.edc.types.clearinghouse.SecurityToken;
import de.truzzt.clearinghouse.edc.types.clearinghouse.TokenFormat;
import com.fasterxml.jackson.databind.ObjectMapper;
import de.truzzt.clearinghouse.edc.app.message.CreateProcessRequest;
import de.truzzt.clearinghouse.edc.app.message.CreateProcessResponse;
import de.truzzt.clearinghouse.edc.app.types.Header;
import de.truzzt.clearinghouse.edc.app.types.SecurityToken;
import de.truzzt.clearinghouse.edc.types.HandlerRequest;
import okhttp3.ResponseBody;
import org.eclipse.edc.spi.EdcException;

public class CreateProcessDelegate implements AppSenderDelegate<CreateProcessResponse> {

private final TypeManagerUtil typeManagerUtil;

public CreateProcessDelegate(TypeManagerUtil typeManagerUtil) {
this.typeManagerUtil = typeManagerUtil;
}

public String buildRequestUrl(String baseUrl, HandlerRequest handlerRequest) {
return baseUrl + "/process/" + handlerRequest.getPid();
}

public CreateProcessRequest buildRequestBody(HandlerRequest handlerRequest) {
var header = handlerRequest.getHeader();

var multipartContext = header.getContext();
var context = new Context(multipartContext.getIds(), multipartContext.getIdsc());

var multipartSecurityToken = header.getSecurityToken();
var multipartTokenFormat = multipartSecurityToken.getTokenFormat();
var securityToken = SecurityToken.Builder.newInstance().
type(multipartSecurityToken.getType()).
type(multipartSecurityToken).
id(multipartSecurityToken.getId()).
tokenFormat(new TokenFormat(multipartTokenFormat.getId())).
tokenValue(multipartSecurityToken.getTokenValue()).
build();

var requestHeader = Header.Builder.newInstance()
.context(context)
.id(header.getId())
.type(header.getType())
.type(header)
.securityToken(securityToken)
.issuerConnector(header.getIssuerConnector())
.modelVersion(header.getModelVersion())
Expand All @@ -64,6 +53,10 @@ public CreateProcessRequest buildRequestBody(HandlerRequest handlerRequest) {

@Override
public CreateProcessResponse parseResponseBody(ResponseBody responseBody) {
return typeManagerUtil.parse(responseBody.byteStream(), CreateProcessResponse.class);
try {
return new ObjectMapper().readValue(responseBody.byteStream(), CreateProcessResponse.class);
} catch (Exception e){
throw new EdcException("Error parsing byte to CreateProcessResponse", e);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,47 +13,37 @@
*/
package de.truzzt.clearinghouse.edc.app.delegate;

import de.truzzt.clearinghouse.edc.dto.HandlerRequest;
import de.truzzt.clearinghouse.edc.dto.LoggingMessageRequest;
import de.truzzt.clearinghouse.edc.dto.LoggingMessageResponse;
import de.truzzt.clearinghouse.edc.types.TypeManagerUtil;
import de.truzzt.clearinghouse.edc.types.clearinghouse.Context;
import de.truzzt.clearinghouse.edc.types.clearinghouse.Header;
import de.truzzt.clearinghouse.edc.types.clearinghouse.SecurityToken;
import de.truzzt.clearinghouse.edc.types.clearinghouse.TokenFormat;
import com.fasterxml.jackson.databind.ObjectMapper;
import de.truzzt.clearinghouse.edc.types.HandlerRequest;
import de.truzzt.clearinghouse.edc.app.message.LoggingMessageRequest;
import de.truzzt.clearinghouse.edc.app.message.LoggingMessageResponse;
import de.truzzt.clearinghouse.edc.app.types.Header;
import de.truzzt.clearinghouse.edc.app.types.SecurityToken;
import okhttp3.ResponseBody;
import org.eclipse.edc.protocol.ids.api.multipart.message.MultipartRequest;
import org.eclipse.edc.spi.EdcException;

public class LoggingMessageDelegate implements AppSenderDelegate<LoggingMessageResponse> {

private final TypeManagerUtil typeManagerUtil;

public LoggingMessageDelegate(TypeManagerUtil typeManagerUtil) {
this.typeManagerUtil = typeManagerUtil;
}

public String buildRequestUrl(String baseUrl, HandlerRequest handlerRequest) {
return baseUrl + "/messages/log/" + handlerRequest.getPid();
}

public LoggingMessageRequest buildRequestBody(HandlerRequest handlerRequest) {
public LoggingMessageRequest buildRequestBody(MultipartRequest multipartRequest) {
var handlerRequest = (HandlerRequest) multipartRequest;
var header = handlerRequest.getHeader();

var multipartContext = header.getContext();
var context = new Context(multipartContext.getIds(), multipartContext.getIdsc());

var multipartSecurityToken = header.getSecurityToken();
var multipartTokenFormat = multipartSecurityToken.getTokenFormat();
var securityToken = SecurityToken.Builder.newInstance().
type(multipartSecurityToken.getType()).
type(multipartSecurityToken).
id(multipartSecurityToken.getId()).
tokenFormat(new TokenFormat(multipartTokenFormat.getId())).
tokenValue(multipartSecurityToken.getTokenValue()).
build();

var requestHeader = Header.Builder.newInstance()
.context(context)
.id(header.getId())
.type(header.getType())
.type(header)
.securityToken(securityToken)
.issuerConnector(header.getIssuerConnector())
.modelVersion(header.getModelVersion())
Expand All @@ -66,6 +56,10 @@ public LoggingMessageRequest buildRequestBody(HandlerRequest handlerRequest) {

@Override
public LoggingMessageResponse parseResponseBody(ResponseBody responseBody) {
return typeManagerUtil.parse(responseBody.byteStream(), LoggingMessageResponse.class);
try {
return new ObjectMapper().readValue(responseBody.byteStream(), LoggingMessageResponse.class);
} catch (Exception e) {
throw new EdcException("Error reading byte to LoggingMessageResponse", e);
}
}
}
Loading

0 comments on commit 72e0dd3

Please sign in to comment.