Skip to content

Commit

Permalink
Merge branch 'release/v11'
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] committed Oct 3, 2023
2 parents 773fae4 + 53c72e1 commit 93ce389
Show file tree
Hide file tree
Showing 160 changed files with 4,642 additions and 3,016 deletions.
2 changes: 0 additions & 2 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 4 additions & 3 deletions .run/metis-authentication(.properties).run.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@
<configuration default="false" name="metis-authentication(.properties)" type="SpringBootApplicationConfigurationType"
factoryName="Spring Boot">
<envs>
<env name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/metis-authentication_local"/>
<env name="logging.config" value="file:///data/metis-configuration/k8s/common-components/log4j2-xml/log4j2.xml"/>
<env name="server.servlet.context-path" value="/metis-authentication"/>
<env name="spring.config.location"
value="file:///data/metis-configuration/metis-framework/metis-authentication/metis-authentication-rest/k8s/overlays/local/components/properties/application.properties"/>
<env name="logging.config" value="file:///data/metis-configuration/k8s/common-components/log4j2-xml/log4j2.xml"/>
value="file:///data/metis-configuration/metis-framework/metis-authentication/metis-authentication-rest/k8s/overlays/test/components/properties/application.properties"/>
<env name="truststore.path"
value="/data/metis-configuration/k8s/common-components/custom-truststore-jks/custom-truststore.jks"/>
</envs>
<module name="metis-authentication-rest"/>
<option name="SPRING_BOOT_MAIN_CLASS" value="eu.europeana.metis.authentication.rest.Application"/>
Expand Down
9 changes: 4 additions & 5 deletions .run/metis-core (.properties).run.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@
<configuration default="false" name="metis-core (.properties)" type="SpringBootApplicationConfigurationType"
factoryName="Spring Boot">
<envs>
<env name="mongo_hosts" value="localhost"/>
<env name="rabbitmq.host" value="localhost"/>
<env name="redis.host" value="localhost"/>
<env name="logging.config" value="file:///data/metis-configuration/k8s/common-components/log4j2-xml/log4j2.xml"/>
<env name="server.servlet.context-path" value="/metis-core"/>
<env name="spring.config.location"
value="file:///data/metis-configuration/metis-framework/metis-core/metis-core-rest/k8s/overlays/local/components/properties/application.properties"/>
<env name="logging.config" value="file:///data/metis-configuration/k8s/common-components/log4j2-xml/log4j2.xml"/>
value="file:///data/metis-configuration/metis-framework/metis-core/metis-core-rest/k8s/overlays/test/components/properties/application.properties"/>
<env name="truststore.path"
value="/data/metis-configuration/k8s/common-components/custom-truststore-jks/custom-truststore.jks"/>
</envs>
<module name="metis-core-rest"/>
<option name="SPRING_BOOT_MAIN_CLASS" value="eu.europeana.metis.core.rest.Application"/>
Expand Down
7 changes: 4 additions & 3 deletions .run/metis-dereference(.properties).run.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@
<configuration default="false" name="metis-dereference(.properties)" type="SpringBootApplicationConfigurationType"
factoryName="Spring Boot">
<envs>
<env name="mongo.hosts" value="localhost"/>
<env name="logging.config" value="file:///data/metis-configuration/k8s/common-components/log4j2-xml/log4j2.xml"/>
<env name="server.servlet.context-path" value="/metis-dereference"/>
<env name="spring.config.location"
value="file:///data/metis-configuration/metis-framework/metis-dereference/metis-dereference-rest/k8s/overlays/local/components/properties/application.properties"/>
<env name="logging.config" value="file:///data/metis-configuration/k8s/common-components/log4j2-xml/log4j2.xml"/>
value="file:///data/metis-configuration/metis-framework/metis-dereference/metis-dereference-rest/k8s/overlays/test/components/properties/application.properties"/>
<env name="truststore.path"
value="/data/metis-configuration/k8s/common-components/custom-truststore-jks/custom-truststore.jks"/>
</envs>
<module name="metis-dereference-rest"/>
<option name="SPRING_BOOT_MAIN_CLASS" value="eu.europeana.metis.dereference.rest.Application"/>
Expand Down
4 changes: 3 additions & 1 deletion .run/metis-repository (.properties).run.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
<env name="logging.config" value="file:///data/metis-configuration/k8s/common-components/log4j2-xml/log4j2.xml"/>
<env name="server.servlet.context-path" value="/metis-repository"/>
<env name="spring.config.location"
value="file:///data/metis-configuration/metis-framework/metis-repository/metis-repository-rest/k8s/overlays/local/components/properties/application.properties"/>
value="file:///data/metis-configuration/metis-framework/metis-repository/metis-repository-rest/k8s/overlays/test/components/properties/application.properties"/>
<env name="truststore.path"
value="/data/metis-configuration/k8s/common-components/custom-truststore-jks/custom-truststore.jks"/>
</envs>
<module name="metis-repository-rest"/>
<option name="SPRING_BOOT_MAIN_CLASS" value="eu.europeana.metis.repository.rest.Application"/>
Expand Down
2 changes: 1 addition & 1 deletion metis-authentication/metis-authentication-common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<artifactId>metis-authentication</artifactId>
<groupId>eu.europeana.metis</groupId>
<version>10</version>
<version>11</version>
</parent>
<artifactId>metis-authentication-common</artifactId>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<artifactId>metis-authentication</artifactId>
<groupId>eu.europeana.metis</groupId>
<version>10</version>
<version>11</version>
</parent>
<artifactId>metis-authentication-rest-client</artifactId>

Expand Down
7 changes: 6 additions & 1 deletion metis-authentication/metis-authentication-rest/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<artifactId>metis-authentication</artifactId>
<groupId>eu.europeana.metis</groupId>
<version>10</version>
<version>11</version>
</parent>
<artifactId>metis-authentication-rest</artifactId>

Expand Down Expand Up @@ -58,6 +58,11 @@
<groupId>eu.europeana.metis</groupId>
<artifactId>metis-common-utils</artifactId>
</dependency>
<dependency>
<groupId>eu.europeana.metis</groupId>
<artifactId>metis-common-spring-properties</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>eu.europeana.metis</groupId>
<artifactId>metis-authentication-common</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static eu.europeana.metis.utils.SonarqubeNullcheckAvoidanceUtils.performAction;

import eu.europeana.metis.authentication.dao.PsqlMetisUserDao;
import eu.europeana.metis.authentication.rest.config.properties.MetisAuthenticationConfigurationProperties;
import eu.europeana.metis.authentication.service.AuthenticationService;
import eu.europeana.metis.authentication.user.MetisUser;
import eu.europeana.metis.authentication.user.MetisUserAccessToken;
Expand All @@ -16,24 +17,35 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.lang.invoke.MethodHandles;
import java.nio.charset.StandardCharsets;
import java.util.List;
import javax.annotation.PreDestroy;
import metis.common.config.properties.TruststoreConfigurationProperties;
import metis.common.config.properties.postgres.HibernateConfigurationProperties;
import metis.common.config.properties.zoho.ZohoConfigurationProperties;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.service.ServiceRegistry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.core.io.Resource;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter;
import org.springframework.lang.NonNull;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.util.FileCopyUtils;
Expand All @@ -47,83 +59,63 @@
* @since 2017-10-27
*/
@Configuration
@Import({ElasticAPMConfiguration.class})
@EnableConfigurationProperties({
ElasticAPMConfiguration.class, TruststoreConfigurationProperties.class,
HibernateConfigurationProperties.class, ZohoConfigurationProperties.class,
MetisAuthenticationConfigurationProperties.class})
@ComponentScan(basePackages = {"eu.europeana.metis.authentication.rest.controller"})
@EnableScheduling
public class ApplicationConfiguration implements WebMvcConfigurer {
public class ApplicationConfiguration implements WebMvcConfigurer, ApplicationContextAware {

private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());

@Value("classpath:create_tables.sql")
private Resource createTablesSqlResource;

//Custom trustore
@Value("${truststore.path}")
private String truststorePath;
@Value("${truststore.password}")
private String truststorePassword;
@Value("${metis.access.token.expire.time.in.mins}")
private int metisAccessTokenExpireTimeInMins;
@Value("${allowed.cors.hosts}")
private String[] allowedCorsHosts;

//Zoho configuration
@Value("${zoho.initial.grant.token}")
private String zohoInitialGrantToken;
@Value("${zoho.refresh.token}")
private String zohoRefreshToken;
@Value("${zoho.current.user.email}")
private String zohoCurrentUserEmail;
@Value("${zoho.client.id}")
private String zohoClientId;
@Value("${zoho.client.secret}")
private String zohoClientSecret;
@Value("${zoho.redirect.uri}")
private String zohoRedirectUri;

//Hibernate configuration
@Value("${hibernate.connection.driver_class}")
private String hibernateConnectionDriverClass;
@Value("${hibernate.connection.url}")
private String hibernateConnectionUrl;
@Value("${hibernate.dialect}")
private String hibernateDialect;
@Value("${hibernate.connection.username}")
private String hibernateConnectionUsername;
@Value("${hibernate.connection.password}")
private String hibernateConnectionPassword;
@Value("${hibernate.c3p0.min_size}")
private String hibernateC3P0MinSize;
@Value("${hibernate.c3p0.max_size}")
private String hibernateC3P0MaxSize;
@Value("${hibernate.c3p0.timeout}")
private String hibernateC3P0Timeout;
@Value("${hibernate.c3p0.max_statements}")
private String hibernateC3p0MaxStatements;

private SessionFactory sessionFactory;
private AuthenticationService authenticationService;
private MetisZohoOAuthPSQLHandler metisZohoOAuthPSQLHandler;
private ApplicationContext applicationContext;

/**
* Constructor.
*
* @param truststoreConfigurationProperties the truststore configuration properties
* @throws CustomTruststoreAppender.TrustStoreConfigurationException if the configuration of the truststore failed
*/
@Autowired
public ApplicationConfiguration(TruststoreConfigurationProperties truststoreConfigurationProperties)
throws TrustStoreConfigurationException {
ApplicationConfiguration.initializeApplication(truststoreConfigurationProperties);
}

/**
* Get the session factory.
*
* @param hibernateConfigurationProperties the hibernate configuration properties
* @return the session factory
* @throws IOException if an I/O error occurs during sql script initialization
*/
@Bean
public SessionFactory getSessionFactory() throws TrustStoreConfigurationException, IOException {
if (StringUtils.isNotEmpty(truststorePath) && StringUtils.isNotEmpty(truststorePassword)) {
CustomTruststoreAppender.appendCustomTrustoreToDefault(truststorePath, truststorePassword);
}
public SessionFactory getSessionFactory(HibernateConfigurationProperties hibernateConfigurationProperties) throws IOException {

org.hibernate.cfg.Configuration configuration = new org.hibernate.cfg.Configuration();
configuration.addAnnotatedClass(MetisUser.class);
configuration.addAnnotatedClass(MetisUserAccessToken.class);
configuration.addAnnotatedClass(MetisZohoOAuthToken.class);

//Apply code configuration to allow spring boot to handle the properties injection
configuration.setProperty("hibernate.connection.driver_class", hibernateConnectionDriverClass);
configuration.setProperty("hibernate.connection.url", hibernateConnectionUrl);
configuration.setProperty("hibernate.dialect", hibernateDialect);
configuration.setProperty("hibernate.connection.username", hibernateConnectionUsername);
configuration.setProperty("hibernate.connection.password", hibernateConnectionPassword);
configuration.setProperty("hibernate.c3p0.min_size", hibernateC3P0MinSize);
configuration.setProperty("hibernate.c3p0.max_size", hibernateC3P0MaxSize);
configuration.setProperty("hibernate.c3p0.timeout", hibernateC3P0Timeout);
configuration.setProperty("hibernate.c3p0.max_statements", hibernateC3p0MaxStatements);
configuration.setProperty("hibernate.connection.driver_class",
hibernateConfigurationProperties.getConnection().getDriverClass());
configuration.setProperty("hibernate.connection.url", hibernateConfigurationProperties.getConnection().getUrl());
configuration.setProperty("hibernate.connection.username", hibernateConfigurationProperties.getConnection().getUsername());
configuration.setProperty("hibernate.connection.password", hibernateConfigurationProperties.getConnection().getPassword());
configuration.setProperty("hibernate.dialect", hibernateConfigurationProperties.getDialect());
configuration.setProperty("hibernate.c3p0.min_size", hibernateConfigurationProperties.getC3p0().getMinSize());
configuration.setProperty("hibernate.c3p0.max_size", hibernateConfigurationProperties.getC3p0().getMaxSize());
configuration.setProperty("hibernate.c3p0.timeout", hibernateConfigurationProperties.getC3p0().getTimeout());
configuration.setProperty("hibernate.c3p0.max_statements", hibernateConfigurationProperties.getC3p0().getMaxStatements());
configuration.setProperty("hibernate.hbm2ddl.auto", hibernateConfigurationProperties.getHbm2ddl().getAuto());

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties()).build();
Expand All @@ -146,10 +138,42 @@ public SessionFactory getSessionFactory() throws TrustStoreConfigurationExceptio
return sessionFactory;
}

/**
* Set the application context.
*
* @param applicationContext the application context
* @throws BeansException if a beans exception occurs
*/
@Override
public void setApplicationContext(@NonNull ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}

/**
* This method performs the initializing tasks for the application.
*
* @param truststoreConfigurationProperties The properties.
* @throws CustomTruststoreAppender.TrustStoreConfigurationException In case a problem occurred with the truststore.
*/
static void initializeApplication(TruststoreConfigurationProperties truststoreConfigurationProperties)
throws CustomTruststoreAppender.TrustStoreConfigurationException {

// Load the trust store file.
if (StringUtils.isNotEmpty(truststoreConfigurationProperties.getPath()) && StringUtils
.isNotEmpty(truststoreConfigurationProperties.getPassword())) {
CustomTruststoreAppender
.appendCustomTruststoreToDefault(truststoreConfigurationProperties.getPath(),
truststoreConfigurationProperties.getPassword());
LOGGER.info("Custom truststore appended to default truststore");
}
}

@Override
public void addCorsMappings(CorsRegistry registry) {
MetisAuthenticationConfigurationProperties metisAuthenticationConfigurationProperties =
applicationContext.getBean(MetisAuthenticationConfigurationProperties.class);
registry.addMapping("/**").allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
.allowedOrigins(allowedCorsHosts);
.allowedOrigins(metisAuthenticationConfigurationProperties.getAllowedCorsHosts());
}

/**
Expand All @@ -170,17 +194,21 @@ public AuthenticationService getAuthenticationService(PsqlMetisUserDao psqlMetis
* Get the zoho access client.
*
* @param sessionFactory the session factory
* @param zohoConfigurationProperties the zoho configuration properties
* @return the zoho access client
* @throws ZohoException if a zoho configuration error occurred
*/
@Bean
public ZohoAccessClient getZohoAccessClient(SessionFactory sessionFactory) throws ZohoException {
metisZohoOAuthPSQLHandler = new MetisZohoOAuthPSQLHandler(sessionFactory, zohoCurrentUserEmail, zohoRefreshToken,
zohoClientId, zohoClientSecret);
public ZohoAccessClient getZohoAccessClient(SessionFactory sessionFactory,
ZohoConfigurationProperties zohoConfigurationProperties) throws ZohoException {
metisZohoOAuthPSQLHandler = new MetisZohoOAuthPSQLHandler(sessionFactory, zohoConfigurationProperties.getCurrentUserEmail(),
zohoConfigurationProperties.getRefreshToken(),
zohoConfigurationProperties.getClientId(), zohoConfigurationProperties.getClientSecret());

final ZohoAccessClient zohoAccessClient = new ZohoAccessClient(metisZohoOAuthPSQLHandler,
zohoCurrentUserEmail, zohoClientId, zohoClientSecret, zohoInitialGrantToken,
zohoRedirectUri);
zohoConfigurationProperties.getCurrentUserEmail(), zohoConfigurationProperties.getClientId(),
zohoConfigurationProperties.getClientSecret(), zohoConfigurationProperties.getInitialGrantToken(),
zohoConfigurationProperties.getRedirectUri());
//Make a call to zoho so that the grant token will generate the first pair of access/refresh tokens
zohoAccessClient.getZohoRecordContactByEmail("");
return zohoAccessClient;
Expand All @@ -190,12 +218,15 @@ public ZohoAccessClient getZohoAccessClient(SessionFactory sessionFactory) throw
* Get the DAO for metis users.
*
* @param sessionFactory the session factory required to initialize the DAO
* @param metisAuthenticationConfigurationProperties the metis authentication configuration properties
* @return the DAO instance for accessing user information
*/
@Bean
public PsqlMetisUserDao getPsqlMetisUserDao(SessionFactory sessionFactory) {
public PsqlMetisUserDao getPsqlMetisUserDao(SessionFactory sessionFactory,
MetisAuthenticationConfigurationProperties metisAuthenticationConfigurationProperties) {
PsqlMetisUserDao psqlMetisUserDao = new PsqlMetisUserDao(sessionFactory);
psqlMetisUserDao.setAccessTokenExpireTimeInMins(metisAccessTokenExpireTimeInMins);
psqlMetisUserDao.setAccessTokenExpireTimeInMins(
metisAuthenticationConfigurationProperties.getAccessTokenExpireTimeInMinutes());
return psqlMetisUserDao;
}

Expand Down
Loading

0 comments on commit 93ce389

Please sign in to comment.