Skip to content

Commit

Permalink
Merge pull request #33 from identifiers-org/IDENTIFIER-104
Browse files Browse the repository at this point in the history
Java 17 upgrade and some other refactoring
  • Loading branch information
renatocjn committed Mar 1, 2024
2 parents 491d5ab + 2a684b0 commit f8f82c0
Show file tree
Hide file tree
Showing 22 changed files with 172 additions and 154 deletions.
35 changes: 20 additions & 15 deletions docker-compose-development.yml
Expand Up @@ -3,18 +3,18 @@
version: "3.5"
services:
postgresql:
container_name: postgres
container_name: reg-postgres-spa
image: postgres
environment:
- POSTGRES_DB=devdatabase
- POSTGRES_USER=devusername
- POSTGRES_PASSWORD=devpassword
ports:
- "5430:5432"
- "5431:5432"
networks:
- satwebspanet
volumes:
- "registry:/var/lib/postgresql/data"
- "../db/registry:/docker-entrypoint-initdb.d"
hqregistry:
container_name: hqregistry
image: identifiersorg/cloud-hq-ws-registry
Expand All @@ -32,11 +32,24 @@ services:
depends_on:
- postgresql
- hqmiridcontroller
miridpostgresql:
container_name: postgres
image: postgres
environment:
- POSTGRES_DB=devdatabase
- POSTGRES_USER=devusername
- POSTGRES_PASSWORD=devpassword
ports:
- "5432:5432"
networks:
- satwebspanet
volumes:
- "../db/mirid-controller:/docker-entrypoint-initdb.d"
hqmiridcontroller:
container_name: hqmiridcontroller
image: identifiersorg/cloud-hq-ws-mirid-controller
environment:
- HQ_WS_MIRID_CONTROLLER_CONFIG_JDBC_URL=jdbc:postgresql://postgresql:5432/devdatabase
- HQ_WS_MIRID_CONTROLLER_CONFIG_JDBC_URL=jdbc:postgresql://miridpostgresql:5432/devdatabase
- HQ_WS_MIRID_CONTROLLER_CONFIG_RDBMS_USERNAME=devusername
- HQ_WS_MIRID_CONTROLLER_CONFIG_RDBMS_PASSWORD:devpassword
- HQ_WS_MIRID_CONTROLLER_CONFIG_REDIS_HOST=redis
Expand All @@ -47,16 +60,7 @@ services:
- satwebspanet
depends_on:
- redis
- postgresql
# hqwebspa:
# container_name: hq-frontend
# image: identifiersorg/cloud-hq-web-frontend:latest
# environment:
# - ENVCONFIG_HQ_WEB_REGISTRY_CONFIG_API_REGISTRY_URL=http://localhost:8180
# ports:
# - "9092:80"
# networks:
# - satwebspanet
- miridpostgresql
resolver:
container_name: resolver
image: identifiersorg/cloud-ws-resolver
Expand All @@ -66,8 +70,9 @@ services:
- WS_RESOLVER_CONFIG_RESOURCE_RECOMMENDER_HOST=recommender
- WS_RESOLVER_CONFIG_RESOURCE_RECOMMENDER_PORT=8083
- WS_RESOLVER_CONFIG_REGISTRY_RESOLUTION_DATASET_ENDPOINT=http://hqregistry:8180/resolutionApi/getResolverDataset
- WS_RESOLVER_CONFIG_APPLICATION_ACTIVE_PROFILE=authdisabled
- WS_RESOLVER_JVM_MEMORY_MAX=1024m
- WS_RESOLVER_CONFIG_APPLICATION_CORS_ORIGINS=*
- MATOMO_ENABLED=false
ports:
- "8080:8080"
networks:
Expand Down
14 changes: 7 additions & 7 deletions pom.xml
Expand Up @@ -5,8 +5,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
<version>3.1.5</version>
</parent>
<groupId>org.identifiers.satellite.frontend</groupId>
<artifactId>satellite-webspa</artifactId>
Expand All @@ -15,7 +14,10 @@
<description>Identifiers.org Satellite Resolution Services Web SPA</description>

<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>

<dependencies>
Expand All @@ -32,14 +34,12 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<version>1.18.24</version>
</dependency>

<dependency>
<groupId>org.identifiers.cloud</groupId>
<artifactId>libapi</artifactId>
<version>2.6.0</version>
<version>3.0.0</version>
</dependency>

<dependency>
Expand All @@ -51,7 +51,7 @@
<dependency>
<groupId>org.piwik.java.tracking</groupId>
<artifactId>matomo-java-tracker</artifactId>
<version>3.0.3</version>
<version>3.2.0</version>
</dependency>
</dependencies>

Expand Down
5 changes: 4 additions & 1 deletion site/package.json
@@ -1,6 +1,9 @@
{
"name": "cloud-satellite-web-frontend",
"browserslist": "> 0.5%, last 2 versions, not dead",
"browserslist": [
"> 0.5%",
"last 2 versions",
"not dead" ],
"version": "1.3.0",
"description": "Identifiers.org satellite web frontend",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion site/src/actions/ResolvedResources.js
Expand Up @@ -24,7 +24,7 @@ export const getResolvedResources = (query) => {
}

// Sort resources by their score.
if (data.hasOwnProperty('payload')) {
if (data && data.hasOwnProperty('payload')) {
data = data.payload.resolvedResources.sort((a, b) => b.recommendation.recommendationIndex - a.recommendation.recommendationIndex);

// Add compact identifier to every resource.
Expand Down
2 changes: 1 addition & 1 deletion site/src/components/common/Footer.js
Expand Up @@ -21,7 +21,7 @@ class Footer extends React.Component {
<>
<div className="row footer-section align-items-center mb-2 mx-5 bg-light py-2">
<div className="col col-xl-1">
<img src={elixirKiteMark} />
<img src={elixirKiteMark} alt="Elixir mark"/>
</div>
<div className="col col-xl-11">
<span>This service</span> is part of the ELIXIR infrastructure
Expand Down
2 changes: 1 addition & 1 deletion site/src/components/common/Header.js
Expand Up @@ -65,7 +65,7 @@ class Header extends React.Component {
<div className="masthead-inner row expanded">
<div className="columns medium-12" id="local-title">
<div className="d-flex ml-3 mb-2">
<img src={identifiersLogo} />
<img src={identifiersLogo} alt="identifiers logo"/>
<div className="logo-text">
<h1>Identifiers.org</h1>
<p className="logo-subtitle">Resolution service</p>
Expand Down
2 changes: 1 addition & 1 deletion site/src/config/Config.js
Expand Up @@ -3,7 +3,7 @@ export const config = {
resolverApi: 'https://resolver.api.identifiers.org',

// Hardcoded Url used to build the links shown in the resolver page.
resolverHardcodedUrl: '//identifiers.org',
resolverHardcodedUrl: 'http://identifiers.org',

// Registry API Url used to fetch namespaces for the suggestions box.
registryApi: 'https://registry.api.identifiers.org',
Expand Down
2 changes: 1 addition & 1 deletion site/src/index.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html>
<html lang="en">

<head>
<meta charset="UTF-8">
Expand Down
@@ -1,6 +1,7 @@
package org.identifiers.satellite.frontend.satellitewebspa.api.controllers;

//@Controller
@Deprecated
public class ErrorController {

// @RequestMapping(value = "/error")
Expand Down
Expand Up @@ -14,7 +14,7 @@
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.view.RedirectView;

import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;

/**
* Project: satellite-webspa
Expand Down
Expand Up @@ -3,44 +3,44 @@
import org.identifiers.satellite.frontend.satellitewebspa.api.exceptions.FailedResolutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

import static java.nio.charset.StandardCharsets.UTF_8;
import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
import static org.springframework.http.HttpStatus.NOT_FOUND;

@ControllerAdvice
public class ResponseEntityExceptionHandler extends org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler {
private static final Logger logger = LoggerFactory.getLogger(ResponseEntityExceptionHandler.class);
private static final Logger log = LoggerFactory.getLogger(ResponseEntityExceptionHandler.class);

@ExceptionHandler(value = { Exception.class })
protected ModelAndView handleConflict(Exception ex, HttpServletResponse response) throws Exception {
// Last hope for logging of unforeseen errors
// Also a way to make all responses to be of type ServiceResponse
logger.error("Unforeseen exception", ex);
// return new RedirectView(newPath);
response.addCookie(new Cookie("message", URLEncoder.encode(ex.getMessage())));
return new ModelAndView("/index.html", HttpStatus.INTERNAL_SERVER_ERROR);
protected ModelAndView handleConflict(Exception ex, HttpServletResponse response) {
log.error("Unforeseen exception", ex);
response.addCookie(new Cookie("message", URLEncoder.encode(ex.getMessage(), UTF_8)));
return new ModelAndView("/index.html", INTERNAL_SERVER_ERROR);
}

@ExceptionHandler(value = { FailedResolutionException.class })
protected ModelAndView FailedResolution(FailedResolutionException ex, HttpServletResponse response) throws UnsupportedEncodingException {//, HttpServletRequest request) {
protected ModelAndView failedResolution(FailedResolutionException ex, HttpServletResponse response) {
// Last hope for logging of unforeseen errors
// Also a way to make all responses to be of type ServiceResponse
// String newPath = UriComponentsBuilder.fromHttpUrl(request.getRequestURL().toString())
// .queryParam("message", ex.getMessage())
// .build().toString();
// logger.debug("redirecting to: {}", newPath);
// return new RedirectView(newPath);
String encodedMessage = URLEncoder.encode(ex.getMessage(), StandardCharsets.UTF_8.toString());
log.debug("failedResolutionException", ex);
String encodedMessage = URLEncoder.encode(ex.getMessage(), UTF_8);
String cookieVal = String.format("message=%s; SameSite=None", encodedMessage);
response.addHeader("Set-Cookie", cookieVal);
response.addHeader("Set-Cookie", "title=Resolution+failed; SameSite=None");
return new ModelAndView("/index.html", HttpStatus.NOT_FOUND);
return new ModelAndView("/index.html", NOT_FOUND);
}
}
Expand Up @@ -22,7 +22,7 @@ public class DevOpsApiModel {
@Autowired
private SpaConfiguration spaConfiguration;

public ResponseEntity<?> getSpaConfiguration() {
return new ResponseEntity<SpaConfiguration>(spaConfiguration, HttpStatus.OK);
public ResponseEntity<SpaConfiguration> getSpaConfiguration() {
return new ResponseEntity<>(spaConfiguration, HttpStatus.OK);
}
}
Expand Up @@ -14,7 +14,7 @@
*/
@Component
public class HealthApiModel {
private static String runningSessionId = UUID.randomUUID().toString();
private static final String runningSessionId = UUID.randomUUID().toString();

public String livenessCheck() {
return runningSessionId;
Expand Down

This file was deleted.

Expand Up @@ -6,7 +6,7 @@
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.annotation.PostConstruct;
import jakarta.annotation.PostConstruct;

/**
* Project: satellite-webspa
Expand All @@ -18,7 +18,7 @@
*/
@Configuration
@Slf4j
public class ApplicationConfigurationCors implements WebMvcConfigurer {
public class CorsConfiguration implements WebMvcConfigurer {
@Value("${org.identifiers.satellite.frontend.satellitewebspa.config.cors.origin}")
private String corsOrigins;

Expand Down
@@ -0,0 +1,29 @@
package org.identifiers.satellite.frontend.satellitewebspa.configuration;

import io.micrometer.common.util.StringUtils;
import org.matomo.java.tracking.MatomoTracker;
import org.matomo.java.tracking.TrackerConfiguration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.net.URI;

@Configuration
public class MatomoTrackerConfiguration {
@Bean
public MatomoTracker getMatomoTracker(
@Value("${org.identifiers.matomo.baseUrl}") URI matomoBaseUrl,
@Value("${org.identifiers.matomo.authToken:}") String authToken,
@Value("${org.identifiers.matomo.enabled}") boolean enabled
) {
var confBuilder = TrackerConfiguration.builder()
.apiEndpoint(matomoBaseUrl)
.threadPoolSize(30)
.enabled(enabled);
if (StringUtils.isNotBlank(authToken) && authToken.length() == 32) {
confBuilder = confBuilder.defaultAuthToken(authToken);
}
return new MatomoTracker(confBuilder.build());
}
}
Expand Up @@ -8,8 +8,8 @@
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;

/**
Expand Down

0 comments on commit f8f82c0

Please sign in to comment.