mirror of
https://github.com/Alfresco/alfresco-transform-core.git
synced 2025-08-14 17:58:27 +00:00
Simplify WebApplicationConfig
This commit is contained in:
@@ -43,7 +43,6 @@ import org.springframework.scheduling.annotation.EnableAsync;
|
|||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class})
|
|
||||||
@EnableAsync
|
@EnableAsync
|
||||||
//@EnableScheduling
|
//@EnableScheduling
|
||||||
//@EnableRetry
|
//@EnableRetry
|
||||||
|
@@ -40,6 +40,7 @@ import org.springframework.core.io.Resource;
|
|||||||
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpEntity;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.LinkedMultiValueMap;
|
import org.springframework.util.LinkedMultiValueMap;
|
||||||
import org.springframework.web.client.HttpClientErrorException;
|
import org.springframework.web.client.HttpClientErrorException;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
@@ -47,6 +48,7 @@ import org.springframework.web.client.RestTemplate;
|
|||||||
/**
|
/**
|
||||||
* Simple Rest client that call Alfresco Shared File Store
|
* Simple Rest client that call Alfresco Shared File Store
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class AlfrescoSharedFileStoreClient
|
public class AlfrescoSharedFileStoreClient
|
||||||
{
|
{
|
||||||
@Value("${fileStoreUrl}")
|
@Value("${fileStoreUrl}")
|
||||||
|
@@ -33,6 +33,7 @@ import org.alfresco.transform.base.registry.TransformRegistry;
|
|||||||
import org.alfresco.transform.common.TransformerDebug;
|
import org.alfresco.transform.common.TransformerDebug;
|
||||||
import org.alfresco.transform.messages.TransformRequestValidator;
|
import org.alfresco.transform.messages.TransformRequestValidator;
|
||||||
import org.alfresco.transform.registry.TransformServiceRegistry;
|
import org.alfresco.transform.registry.TransformServiceRegistry;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
@@ -61,40 +62,22 @@ public class WebApplicationConfig implements WebMvcConfigurer
|
|||||||
public void addInterceptors(InterceptorRegistry registry)
|
public void addInterceptors(InterceptorRegistry registry)
|
||||||
{
|
{
|
||||||
registry
|
registry
|
||||||
.addInterceptor(transformInterceptor())
|
.addInterceptor(new TransformInterceptor())
|
||||||
.addPathPatterns(ENDPOINT_TRANSFORM, "/live", "/ready");
|
.addPathPatterns(ENDPOINT_TRANSFORM, "/live", "/ready");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
|
||||||
public TransformInterceptor transformInterceptor()
|
|
||||||
{
|
|
||||||
return new TransformInterceptor();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public RestTemplate restTemplate()
|
public RestTemplate restTemplate()
|
||||||
{
|
{
|
||||||
return new RestTemplate();
|
return new RestTemplate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
|
||||||
public AlfrescoSharedFileStoreClient alfrescoSharedFileStoreClient()
|
|
||||||
{
|
|
||||||
return new AlfrescoSharedFileStoreClient();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public TransformRequestValidator transformRequestValidator()
|
public TransformRequestValidator transformRequestValidator()
|
||||||
{
|
{
|
||||||
return new TransformRequestValidator();
|
return new TransformRequestValidator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
|
||||||
public TransformServiceRegistry transformRegistry()
|
|
||||||
{
|
|
||||||
return new TransformRegistry();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public TransformerDebug transformerDebug()
|
public TransformerDebug transformerDebug()
|
||||||
{
|
{
|
||||||
|
@@ -32,6 +32,7 @@ import org.alfresco.transform.registry.TransformCache;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.event.ContextRefreshedEvent;
|
import org.springframework.context.event.ContextRefreshedEvent;
|
||||||
import org.springframework.context.event.EventListener;
|
import org.springframework.context.event.EventListener;
|
||||||
import org.springframework.retry.annotation.Backoff;
|
import org.springframework.retry.annotation.Backoff;
|
||||||
@@ -39,6 +40,7 @@ import org.springframework.retry.annotation.Recover;
|
|||||||
import org.springframework.retry.annotation.Retryable;
|
import org.springframework.retry.annotation.Retryable;
|
||||||
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -48,8 +50,16 @@ import java.util.function.Supplier;
|
|||||||
|
|
||||||
import static org.alfresco.transform.config.CoreVersionDecorator.setCoreVersionOnSingleStepTransformers;
|
import static org.alfresco.transform.config.CoreVersionDecorator.setCoreVersionOnSingleStepTransformers;
|
||||||
|
|
||||||
|
@Service
|
||||||
public class TransformRegistry extends AbstractTransformRegistry
|
public class TransformRegistry extends AbstractTransformRegistry
|
||||||
{
|
{
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(TransformRegistry.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private String coreVersion;
|
||||||
|
@Autowired
|
||||||
|
private List<TransformConfigSource> transformConfigSources;
|
||||||
|
|
||||||
private static class Data extends TransformCache
|
private static class Data extends TransformCache
|
||||||
{
|
{
|
||||||
private TransformConfig transformConfigBeforeIncompleteTransformsAreRemoved;
|
private TransformConfig transformConfigBeforeIncompleteTransformsAreRemoved;
|
||||||
@@ -66,47 +76,32 @@ public class TransformRegistry extends AbstractTransformRegistry
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(TransformRegistry.class);
|
private Data data = new Data();
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private String coreVersion;
|
|
||||||
@Autowired
|
|
||||||
private List<TransformConfigSource> transformConfigSources;
|
|
||||||
|
|
||||||
// Ensures that read operations are blocked while config is being updated
|
// Ensures that read operations are blocked while config is being updated
|
||||||
private ReadWriteLock configRefreshLock = new ReentrantReadWriteLock();
|
private ReadWriteLock configRefreshLock = new ReentrantReadWriteLock();
|
||||||
|
|
||||||
private Data data = new Data();
|
@EventListener
|
||||||
|
void handleContextRefreshedEvent(final ContextRefreshedEvent event)
|
||||||
|
{
|
||||||
|
final ApplicationContext context = event.getApplicationContext();
|
||||||
|
// the local "initEngineConfigs" method has to be called through the Spring proxy
|
||||||
|
context.getBean(TransformRegistry.class).initRegistryOnAppStartup(null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load the registry on application startup. This allows Components in projects that extend the t-engine base
|
* Load the registry on application startup. This allows Components in projects that extend the t-engine base
|
||||||
* to use @PostConstruct to add to {@code transformConfigSources}, before the registry is loaded.
|
* to use @PostConstruct to add to {@code transformConfigSources}, before the registry is loaded.
|
||||||
*/
|
*/
|
||||||
@EventListener
|
|
||||||
private void initRegistryOnAppStartup(final ContextRefreshedEvent event)
|
|
||||||
{
|
|
||||||
asyncRegistryInit();
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Async
|
// @Async
|
||||||
// @Retryable(include = {IllegalStateException.class},
|
// @Retryable(include = {IllegalStateException.class},
|
||||||
// maxAttemptsExpression = "#{${transform.engine.config.retry.attempts}}",
|
// maxAttemptsExpression = "#{${transform.engine.config.retry.attempts}}",
|
||||||
// backoff = @Backoff(delayExpression = "#{${transform.engine.config.retry.timeout} * 1000}"))
|
// backoff = @Backoff(delayExpression = "#{${transform.engine.config.retry.timeout} * 1000}"))
|
||||||
public void asyncRegistryInit()
|
public void initRegistryOnAppStartup(final ContextRefreshedEvent event)
|
||||||
{
|
{
|
||||||
initRegistry();
|
initRegistry();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Recovery method in case all the retries fail. If not specified, the @Retryable method will cause the application
|
|
||||||
* to stop.
|
|
||||||
*/
|
|
||||||
// @Recover
|
|
||||||
private void recover(IllegalStateException e)
|
|
||||||
{
|
|
||||||
log.warn(e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Takes the schedule from a spring-boot property
|
* Takes the schedule from a spring-boot property
|
||||||
*/
|
*/
|
||||||
@@ -135,6 +130,16 @@ public class TransformRegistry extends AbstractTransformRegistry
|
|||||||
concurrentUpdate(combinedTransformConfig, transformConfigBeforeIncompleteTransformsAreRemoved);
|
concurrentUpdate(combinedTransformConfig, transformConfigBeforeIncompleteTransformsAreRemoved);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recovery method in case all the retries fail. If not specified, the @Retryable method will cause the application
|
||||||
|
* to stop.
|
||||||
|
*/
|
||||||
|
// @Recover
|
||||||
|
private void recover(IllegalStateException e)
|
||||||
|
{
|
||||||
|
log.warn(e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
public TransformConfig getTransformConfig()
|
public TransformConfig getTransformConfig()
|
||||||
{
|
{
|
||||||
return getData().getTransformConfigBeforeIncompleteTransformsAreRemoved();
|
return getData().getTransformConfigBeforeIncompleteTransformsAreRemoved();
|
||||||
|
Reference in New Issue
Block a user