Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,26 @@ Finally, you can run the images with:

The regular docker-compose.yml is reserved for production deployments, and will always use the latest images

## Configuration
Configuration for this app is done via the `resources/application.properties` file.

### BRAVA
Configuring the BRAVA tool is important because you can define supported BrAPI versions and where to get the schema files
for each BrAPI module via:

```
# Additional supported versions can be added here using commas like: 2.1,2.0,1.3, etc
brapi.schema.versions=2.1

# Here use '_' for all .'s in versions of BrAPI to load properly
brapi.schema.urls.v2_1.core=https://api.swaggerhub.com/apis/PlantBreedingAPI/BrAPI-Core/2.1/swagger.yaml?resolved=false&flatten=false
brapi.schema.urls.v2_1.germplasm=https://api.swaggerhub.com/apis/PlantBreedingAPI/BrAPI-Germplasm/2.1/swagger.yaml?resolved=false&flatten=false
brapi.schema.urls.v2_1.genotyping=https://api.swaggerhub.com/apis/PlantBreedingAPI/BrAPI-Genotyping/2.1/swagger.yaml?resolved=false&flatten=false
brapi.schema.urls.v2_1.phenotyping=https://api.swaggerhub.com/apis/PlantBreedingAPI/BrAPI-Phenotyping/2.1/swagger.yaml?resolved=false&flatten=false
```

On startup the system will load all the supported versions and URLs.

## Releases
Releases will trigger an action to build and upload an image to Docker Hub

Expand Down
4 changes: 3 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@ repositories {
}

ext {
usecaseinatorVersion = '1.0.3'
usecaseinatorVersion = '1.0.4'
}

dependencies {
implementation "org.brapi:use-caseinator:${usecaseinatorVersion}"
implementation "org.brapi.brapi-schema-tools:brapi-schema-tools-analyse:0.68.0"

implementation 'com.atlassian.oai:swagger-request-validator-core:2.44.1'
implementation "org.springframework.boot:spring-boot-starter-web"

compileOnly "org.projectlombok:lombok:1.18.34"
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/org/bravatools/BravaToolsBackend.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package org.bravatools;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableAutoConfiguration
public class BravaToolsBackend {
public static void main(String[] args) {
SpringApplication.run(BravaToolsBackend.class, args);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package org.bravatools.brava.controller;

import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.extern.slf4j.Slf4j;
import org.bravatools.brava.model.ValidationRequest;
import org.bravatools.brava.model.ValidationResponse;
import org.bravatools.brava.service.ValidationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/validator")
@Slf4j
public class ValidationController {

private ValidationService validationService;

@Autowired
public ValidationController(ValidationService validationService) {
this.validationService = validationService;
}

@PostMapping("/validateall")
public ResponseEntity<ValidationResponse> availableBrapps(
@RequestBody ValidationRequest validationRequest
) throws JsonProcessingException {
ValidationResponse result = validationService.validateAll(validationRequest);

return ResponseEntity.ok(result);
}
}
14 changes: 14 additions & 0 deletions src/main/java/org/bravatools/brava/model/BrAPIEntity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.bravatools.brava.model;

import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Getter
@Setter
public class BrAPIEntity {
private String name;
private List<TestedEndpoint> testedEndpoints;
private ValidationSuccessLevel validationSuccessLevel = ValidationSuccessLevel.SUCCESS;
}
20 changes: 20 additions & 0 deletions src/main/java/org/bravatools/brava/model/TestedEndpoint.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.bravatools.brava.model;


import com.atlassian.oai.validator.model.Request;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Getter
@Setter
public class TestedEndpoint {
private String path;
private Request.Method method;
private String summaryMessage;
private long responseTime;
private int statusCode;
private List<Validation> validations;
private ValidationSuccessLevel validationSuccessLevel = ValidationSuccessLevel.SUCCESS;
}
12 changes: 12 additions & 0 deletions src/main/java/org/bravatools/brava/model/Validation.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.bravatools.brava.model;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Validation {
private String message;
private ValidationSuccessLevel validationSuccessLevel = ValidationSuccessLevel.WARNING;

}
12 changes: 12 additions & 0 deletions src/main/java/org/bravatools/brava/model/ValidationRequest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.bravatools.brava.model;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class ValidationRequest {
private String serverUrl;
private String version;
private String token;
}
12 changes: 12 additions & 0 deletions src/main/java/org/bravatools/brava/model/ValidationResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.bravatools.brava.model;

import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Getter
@Setter
public class ValidationResponse {
List<BrAPIEntity> entities;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.bravatools.brava.model;

public enum ValidationSuccessLevel {
SUCCESS,
WARNING,
ERROR
}
12 changes: 12 additions & 0 deletions src/main/java/org/bravatools/brava/model/spec/SupportedSpecs.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.bravatools.brava.model.spec;

import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Getter
@Setter
public class SupportedSpecs {
private List<Version> versions;
}
13 changes: 13 additions & 0 deletions src/main/java/org/bravatools/brava/model/spec/Version.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.bravatools.brava.model.spec;

import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Getter
@Setter
public class Version {
private String name;
private List<String> moduleUrls;
}
Loading