From 99d834dc0e3c95024dacb3739a5cde3441e6e50c Mon Sep 17 00:00:00 2001 From: "panagiotis.kanakakis" Date: Wed, 6 Feb 2019 00:09:13 +0000 Subject: [PATCH] 1. Bug fix on spring setup 2. Bug fix on converter class --- pom.xml | 6 ++ .../dnetlib/repo/manager/config/Config.java | 4 +- .../repo/manager/config/SwaggerConfig.java | 15 ++-- .../controllers/RepositoryController.java | 2 +- .../service/GenericControllerAdvice.java | 60 --------------- .../manager/service/RepositoryService.java | 2 +- .../service/RepositoryServiceImpl.java | 22 ++---- .../dnetlib/repo/manager/utils/Converter.java | 76 +++++++++---------- src/main/resources/application.properties | 7 +- src/test/java/unitest/ValidatorTest.java | 62 +++++++-------- uoa-repository-manager-service.iml | 55 +++++++------- 11 files changed, 127 insertions(+), 184 deletions(-) delete mode 100644 src/main/java/eu/dnetlib/repo/manager/service/GenericControllerAdvice.java diff --git a/pom.xml b/pom.xml index 32208e4..51951d8 100644 --- a/pom.xml +++ b/pom.xml @@ -234,6 +234,12 @@ 2.6.2 + + com.thetransactioncompany + cors-filter + 2.5 + + diff --git a/src/main/java/eu/dnetlib/repo/manager/config/Config.java b/src/main/java/eu/dnetlib/repo/manager/config/Config.java index 529b523..b5af39a 100644 --- a/src/main/java/eu/dnetlib/repo/manager/config/Config.java +++ b/src/main/java/eu/dnetlib/repo/manager/config/Config.java @@ -7,6 +7,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; +import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; import org.springframework.session.web.http.CookieSerializer; import org.springframework.session.web.http.DefaultCookieSerializer; @@ -16,8 +17,7 @@ import javax.annotation.PostConstruct; @Configuration @EnableRedisHttpSession @PropertySource(value = {"classpath:application.properties"} ) -@ComponentScan(basePackages = "eu.dnetlib.repo.manager.controllers") - +@ComponentScan(basePackages = "eu.dnetlib.repo.manager.*") public class Config { private static Logger LOGGER = Logger.getLogger(Config.class); diff --git a/src/main/java/eu/dnetlib/repo/manager/config/SwaggerConfig.java b/src/main/java/eu/dnetlib/repo/manager/config/SwaggerConfig.java index 84556fe..581368e 100644 --- a/src/main/java/eu/dnetlib/repo/manager/config/SwaggerConfig.java +++ b/src/main/java/eu/dnetlib/repo/manager/config/SwaggerConfig.java @@ -1,5 +1,6 @@ package eu.dnetlib.repo.manager.config; +import eu.dnetlib.repo.manager.controllers.*; import eu.dnetlib.repo.manager.service.MonitorService; import eu.dnetlib.repo.manager.service.PiWikService; import eu.dnetlib.repo.manager.service.RepositoryService; @@ -27,11 +28,15 @@ import java.util.ArrayList; @EnableSwagger2 @EnableWebMvc @ComponentScan(basePackageClasses = { - RepositoryService.class, - MonitorService.class, - ValidatorService.class, - PiWikService.class -}) + RepositoryController.class, + MonitorController.class, + ValidatorController.class, + PiWikController.class, + BrokerController.class, + StatsController.class, + UserController.class, + SushiliteController.class +},basePackages = "eu.dnetlib.repo.manager.*") public class SwaggerConfig { @Bean diff --git a/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java b/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java index ed26ae1..3faf169 100644 --- a/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java +++ b/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java @@ -197,7 +197,7 @@ public class RepositoryController { @PreAuthorize("hasRole('ROLE_USER') and #registeredBy == authentication.userInfo.email") public RepositoryInterface updateRepositoryInterface(@RequestParam("repoId") String repoId, @RequestParam("registeredBy") String registeredBy, - @RequestBody RepositoryInterface repositoryInterface) throws JSONException { + @RequestBody RepositoryInterface repositoryInterface) throws Exception { return repositoryService.updateRepositoryInterface(repoId, registeredBy, repositoryInterface); } } diff --git a/src/main/java/eu/dnetlib/repo/manager/service/GenericControllerAdvice.java b/src/main/java/eu/dnetlib/repo/manager/service/GenericControllerAdvice.java deleted file mode 100644 index 609c675..0000000 --- a/src/main/java/eu/dnetlib/repo/manager/service/GenericControllerAdvice.java +++ /dev/null @@ -1,60 +0,0 @@ -package eu.dnetlib.repo.manager.service; - - -import eu.dnetlib.api.functionality.ValidatorServiceException; -import eu.dnetlib.repo.manager.exception.ResourceNotFoundException; -import eu.dnetlib.repo.manager.exception.ServerError; -import eu.dnetlib.repo.manager.shared.BrokerException; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; -import org.json.JSONException; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.http.HttpStatus; -import org.springframework.security.access.AccessDeniedException; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.ResponseStatus; - -import javax.servlet.http.HttpServletRequest; -import java.net.UnknownHostException; - - -@ControllerAdvice -@Order(Ordered.HIGHEST_PRECEDENCE) -public class GenericControllerAdvice { - - private Logger logger = LogManager.getLogger(GenericControllerAdvice.class); - - - @ResponseStatus(HttpStatus.NOT_FOUND) - @ExceptionHandler(ResourceNotFoundException.class) - @ResponseBody - ServerError securityException(HttpServletRequest req, Exception ex) { - return new ServerError(req.getRequestURL().toString(),ex); - } - - @ResponseStatus(HttpStatus.FORBIDDEN) - @ExceptionHandler(AccessDeniedException.class) - @ResponseBody - ServerError accessDeniedException(HttpServletRequest req, Exception ex) { - return new ServerError(req.getRequestURL().toString(),ex); - } - - @ResponseStatus(HttpStatus.NOT_FOUND) - @ExceptionHandler(UnknownHostException.class) - @ResponseBody - ServerError unknownHostException(HttpServletRequest req, Exception ex) { - return new ServerError(req.getRequestURL().toString(),ex); - } - - @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) - @ExceptionHandler({JSONException.class,BrokerException.class,ValidatorServiceException.class}) - @ResponseBody - ServerError internalException(HttpServletRequest req, Exception ex) { - return new ServerError(req.getRequestURL().toString(),ex); - } - - -} diff --git a/src/main/java/eu/dnetlib/repo/manager/service/RepositoryService.java b/src/main/java/eu/dnetlib/repo/manager/service/RepositoryService.java index 52b4428..ca1813e 100644 --- a/src/main/java/eu/dnetlib/repo/manager/service/RepositoryService.java +++ b/src/main/java/eu/dnetlib/repo/manager/service/RepositoryService.java @@ -67,6 +67,6 @@ public interface RepositoryService { Map getListLatestUpdate(String mode) throws RepositoryServiceException, JSONException; - RepositoryInterface updateRepositoryInterface(String repositoryId, String registeredBy, RepositoryInterface repositoryInterface) throws JSONException; + RepositoryInterface updateRepositoryInterface(String repositoryId, String registeredBy, RepositoryInterface repositoryInterface) throws Exception; } diff --git a/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java b/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java index 513cc0e..8459f67 100644 --- a/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java +++ b/src/main/java/eu/dnetlib/repo/manager/service/RepositoryServiceImpl.java @@ -9,8 +9,8 @@ import eu.dnetlib.domain.enabling.Vocabulary; import eu.dnetlib.repo.manager.domain.RepositorySnippet; import eu.dnetlib.repo.manager.domain.RequestFilter; import eu.dnetlib.repo.manager.exception.ResourceNotFoundException; -import eu.dnetlib.repo.manager.utils.Converter; import eu.dnetlib.repo.manager.shared.*; +import eu.dnetlib.repo.manager.utils.Converter; import gr.uoa.di.driver.enabling.vocabulary.VocabularyLoader; import org.apache.commons.codec.digest.DigestUtils; import org.apache.log4j.Logger; @@ -22,7 +22,6 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.*; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; @@ -70,6 +69,7 @@ public class RepositoryServiceImpl implements RepositoryService { @Autowired private EmailUtils emailUtils; + private Map vocabularyMap = new ConcurrentHashMap(); private Map countriesMap = new HashMap<>(); @@ -489,18 +489,7 @@ public class RepositoryServiceImpl implements RepositoryService { .fromHttpUrl(baseAddress + "/ds/add/") .build() .encode(); - - String json_repository = Converter.repositoryObjectToJson(repository); - - ObjectMapper mapper = new ObjectMapper(); - mapper.enable(SerializationFeature.INDENT_OUTPUT); - try { - LOGGER.debug(mapper.writeValueAsString(json_repository)); - } catch (JsonProcessingException e) { - e.printStackTrace(); - } - HttpEntity httpEntity = new HttpEntity (json_repository,httpHeaders); ResponseEntity responseEntity = restTemplate.exchange(uriComponents.toUri(),HttpMethod.POST, httpEntity, ResponseEntity.class); @@ -751,7 +740,7 @@ public class RepositoryServiceImpl implements RepositoryService { @Override public RepositoryInterface updateRepositoryInterface(@RequestParam("repoId") String repoId, @RequestParam("registeredBy") String registeredBy, - @RequestBody RepositoryInterface repositoryInterface) throws JSONException { + @RequestBody RepositoryInterface repositoryInterface) throws Exception { this.updateBaseUrl(repoId,repositoryInterface.getId(),repositoryInterface.getBaseUrl()); this.updateCompliance(repoId,repositoryInterface.getId(),repositoryInterface.getCompliance()); @@ -759,14 +748,15 @@ public class RepositoryServiceImpl implements RepositoryService { return repositoryInterface; } - private void updateValidationSet(String repositoryId, String repositoryInterfaceId, String validationSet) { + private void updateValidationSet(String repositoryId, String repositoryInterfaceId, String validationSet) throws Exception { UriComponents uriComponents = UriComponentsBuilder .fromHttpUrl(baseAddress + "/ds/api/oaiset") .queryParam("dsId",repositoryId) .queryParam("apiId",repositoryInterfaceId) .queryParam("oaiSet",validationSet) .build().encode(); - restTemplate.postForObject(uriComponents.toUri(),null,String.class); + restTemplate.exchange(uriComponents.toUri(),HttpMethod.POST, null, ResponseEntity.class); + } diff --git a/src/main/java/eu/dnetlib/repo/manager/utils/Converter.java b/src/main/java/eu/dnetlib/repo/manager/utils/Converter.java index fa41161..8890950 100644 --- a/src/main/java/eu/dnetlib/repo/manager/utils/Converter.java +++ b/src/main/java/eu/dnetlib/repo/manager/utils/Converter.java @@ -2,6 +2,7 @@ package eu.dnetlib.repo.manager.utils; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; import eu.dnetlib.domain.data.Repository; import eu.dnetlib.domain.data.RepositoryInterface; import eu.dnetlib.repo.manager.domain.RepositorySnippet; @@ -225,65 +226,65 @@ public class Converter { public static String repositoryObjectToJson(Repository repository) throws JSONException, JsonProcessingException { - JSONObject jsonObject = new JSONObject(); + HashMap repositoryMap = new HashMap<>(); + ObjectMapper mapper = new ObjectMapper(); - jsonObject.put("id",repository.getId()); - jsonObject.put("openaireId",getOpenaireId(repository.getId())); - jsonObject.put("officialname",repository.getOfficialName()); - jsonObject.put("englishname",repository.getEnglishName()); - jsonObject.put("websiteurl",repository.getWebsiteUrl()); - jsonObject.put("logourl",repository.getLogoUrl()); - jsonObject.put("contactemail",repository.getContactEmail()); - jsonObject.put("longitude",repository.getLongitude().toString()); - jsonObject.put("latitude",repository.getLatitude().toString()); - jsonObject.put("timezone",repository.getTimezone()); + repositoryMap.put("id",repository.getId()); + repositoryMap.put("openaireId",getOpenaireId(repository.getId())); + repositoryMap.put("officialname",repository.getOfficialName()); + repositoryMap.put("englishname",repository.getEnglishName()); + repositoryMap.put("websiteurl",repository.getWebsiteUrl()); + repositoryMap.put("logourl",repository.getLogoUrl()); + repositoryMap.put("contactemail",repository.getContactEmail()); + repositoryMap.put("longitude",repository.getLongitude().toString()); + repositoryMap.put("latitude",repository.getLatitude().toString()); + repositoryMap.put("timezone",repository.getTimezone()); - jsonObject.put("namespaceprefix",repository.getNamespacePrefix()!=null?repository.getNamespacePrefix():""); - jsonObject.put("languages",repository.getOdLanguages()!=null?repository.getOdLanguages():""); + repositoryMap.put("namespaceprefix",repository.getNamespacePrefix()!=null?repository.getNamespacePrefix():""); + repositoryMap.put("languages",repository.getOdLanguages()!=null?repository.getOdLanguages():""); - jsonObject.put("dateofcollection",repository.getDateOfCollection()!=null?convertDateToString(repository.getDateOfCollection()):""); + repositoryMap.put("dateofcollection",repository.getDateOfCollection()!=null?convertDateToString(repository.getDateOfCollection()):""); /* * typology -> platform * datasource class -> typology * */ - jsonObject.put("typology",repository.getDatasourceClass()); - jsonObject.put("platform",repository.getTypology()); + repositoryMap.put("typology",repository.getDatasourceClass()); + repositoryMap.put("platform",repository.getTypology()); - jsonObject.put("dateofvalidation",repository.getDateOfCollection()!=null?convertDateToString(repository.getDateOfCollection()):""); - jsonObject.put("activationId",repository.getActivationId()!=null?repository.getActivationId():""); + repositoryMap.put("dateofvalidation",repository.getDateOfCollection()!=null?convertDateToString(repository.getDateOfCollection()):""); + repositoryMap.put("activationId",repository.getActivationId()!=null?repository.getActivationId():""); - jsonObject.put("description",repository.getDescription()); + repositoryMap.put("description",repository.getDescription()); - jsonObject.put("eissn",repository.getEissn()!=null?repository.getEissn():""); - jsonObject.put("issn",repository.getIssn()!=null?repository.getIssn():""); - jsonObject.put("lissn",repository.getLissn()!=null?repository.getLissn():""); + repositoryMap.put("eissn",repository.getEissn()!=null?repository.getEissn():""); + repositoryMap.put("issn",repository.getIssn()!=null?repository.getIssn():""); + repositoryMap.put("lissn",repository.getLissn()!=null?repository.getLissn():""); - jsonObject.put("registeredby",repository.getRegisteredBy()); + repositoryMap.put("registeredby",repository.getRegisteredBy()); - jsonObject.put("aggregator",repository.getAggregator()!=null?repository.getAggregator():""); - jsonObject.put("collectedfrom",repository.getCollectedFrom()!=null?repository.getCollectedFrom():""); + repositoryMap.put("aggregator",repository.getAggregator()!=null?repository.getAggregator():""); + repositoryMap.put("collectedfrom",repository.getCollectedFrom()!=null?repository.getCollectedFrom():""); - jsonObject.put("managed",repository.isRegistered()); + repositoryMap.put("managed",repository.isRegistered()); - JSONObject organization = new JSONObject(); + Map organization = new HashMap<>(); organization.put("legalname",repository.getOrganization()); organization.put("country",repository.getCountryCode()); organization.put("legalshortname",""); organization.put("websiteurl",""); organization.put("logourl",""); - JSONArray organizations = new JSONArray(); - organizations.put(organization); - jsonObject.put("organizations",organizations); + List organizations = new ArrayList(); + organizations.add(organization); + repositoryMap.put("organizations",organizations); //TODO check identitites - JSONArray identities = new JSONArray(); - identities.put(identities); - jsonObject.put("identities",identities); - - - jsonObject.put("subjects",""); + //Map identity = new HashMap<>(); + List identities = new ArrayList(); +// identities.add(identities); + repositoryMap.put("identities",identities); + repositoryMap.put("subjects",""); //TODO check fields /* jsonObject.put("certificates",repository.getCertificates()); @@ -305,8 +306,7 @@ public class Converter { //datasource.get("platform"); //datasource.get("subjects");*/ - ObjectMapper mapper = new ObjectMapper(); - return mapper.writeValueAsString(jsonObject); + return mapper.writeValueAsString(repositoryMap); } public static String repositoryInterfaceObjectToJson(Repository repository,RepositoryInterface repositoryInterface) throws JSONException { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index bd2f749..0b1c73f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -11,7 +11,8 @@ ISRegistryService.url = ${IS.url}/isRegistry ISSNService.url = ${IS.url}/services/isSN #ValidatorService.url=http://adonis.athenarc.gr:8080/validator-service/services/validatorWebService -ValidatorService.url=http://beta.services.openaire.eu/validator-service/services/validatorWebService +#ValidatorService.url=http://beta.services.openaire.eu/validator-service/services/validatorWebService +ValidatorService.url=http://88.197.53.69:8080/validator-service/ ## Broker Service services.broker.url = http://broker1-dev-dnet.d4science.org @@ -60,8 +61,8 @@ oidc.issuer = https://aai.openaire.eu/oidc/ oidc.id = 767422b9-5461-4807-a80a-f9a2072d3a7d oidc.secret = AMQtGlbTXNjwjhF0st28LmM6V0XypMdaVS7tJmGuYFlmH36iIv4t7tVqYuLYrNPkhnZ_GPUJvhymBhFupdgb6aU -oidc.dev.home = http://localhost:4200/uoa-repository-manager-service/openid_connect_login -webapp.dev.front = http://localhost:4200/landing +oidc.dev.home = http://aleka.athenarc.gr:8480/uoa-repository-manager-service/openid_connect_login +webapp.dev.front = http://aleka.athenarc.gr:4200/landing ##REDIS-AAI diff --git a/src/test/java/unitest/ValidatorTest.java b/src/test/java/unitest/ValidatorTest.java index 5cbe076..3c5ce65 100644 --- a/src/test/java/unitest/ValidatorTest.java +++ b/src/test/java/unitest/ValidatorTest.java @@ -1,31 +1,31 @@ -package unitest; - -import eu.dnetlib.repo.manager.config.RepoManagerContextLoaderListener; -import eu.dnetlib.repo.manager.utils.OaiTools; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = RepoManagerContextLoaderListener.class) -//@WebAppConfiguration -public class ValidatorTest { - - - @Test - public void identiFy(){ - - String url = "https://repozitorij.srce.unizg.hr/oai"; - - - System.out.println("Identify repository with url : " + url); - try { - System.out.println(OaiTools.identifyRepository(url)); - } catch (Exception e) { - System.out.println(e); - } - } - - -} +//package unitest; +// +//import eu.dnetlib.repo.manager.config.RepoManagerContextLoaderListener; +//import eu.dnetlib.repo.manager.utils.OaiTools; +//import org.junit.Test; +//import org.junit.runner.RunWith; +//import org.springframework.test.context.ContextConfiguration; +//import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +// +//@RunWith(SpringJUnit4ClassRunner.class) +//@ContextConfiguration(classes = RepoManagerContextLoaderListener.class) +////@WebAppConfiguration +//public class ValidatorTest { +// +// +// @Test +// public void identiFy(){ +// +// String url = "https://repozitorij.srce.unizg.hr/oai"; +// +// +// System.out.println("Identify repository with url : " + url); +// try { +// System.out.println(OaiTools.identifyRepository(url)); +// } catch (Exception e) { +// System.out.println(e); +// } +// } +// +// +//} diff --git a/uoa-repository-manager-service.iml b/uoa-repository-manager-service.iml index 989e8bf..b6ea490 100644 --- a/uoa-repository-manager-service.iml +++ b/uoa-repository-manager-service.iml @@ -3,15 +3,13 @@ - - file://$MODULE_DIR$/src/main/webapp/WEB-INF/applicationContext.xml - file://$MODULE_DIR$/src/main/webapp/WEB-INF/aai-security.xml - file://$MODULE_DIR$/src/main/resources/application-context.xml + file://$MODULE_DIR$/src/main/webapp/WEB-INF/spring-servlet.xml - file://$MODULE_DIR$/src/main/java/eu/dnetlib/repo/manager/service/config/Config.java - file://$MODULE_DIR$/src/main/java/eu/dnetlib/repo/manager/service/config/JdbcConfig.java - file://$MODULE_DIR$/src/main/java/eu/dnetlib/repo/manager/service/config/PropertyPlaceHolder.java - file://$MODULE_DIR$/src/main/java/eu/dnetlib/repo/manager/service/config/SwaggerConfig.java + file://$MODULE_DIR$/src/main/webapp/WEB-INF/aai-security.xml + file://$MODULE_DIR$/src/main/webapp/WEB-INF/applicationContext.xml + file://$MODULE_DIR$/src/main/resources/application-context.xml + file://$MODULE_DIR$/src/main/java/eu/dnetlib/repo/manager/config/Config.java + file://$MODULE_DIR$/src/main/java/eu/dnetlib/repo/manager/config/SwaggerConfig.java @@ -89,7 +87,7 @@ - + @@ -129,21 +127,22 @@ - + - + - + - + + - + @@ -188,19 +187,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -224,5 +223,7 @@ + + \ No newline at end of file