From d12cb711ea0016b18502f572969674c43c70af20 Mon Sep 17 00:00:00 2001 From: Marcello Teodori <151025+mteodori@users.noreply.github.com> Date: Thu, 24 Feb 2022 12:10:36 +0100 Subject: [PATCH] fix --- .../transformer/AIOTransformRegistry.java | 368 +++++++++--------- pom.xml | 2 +- 2 files changed, 185 insertions(+), 185 deletions(-) diff --git a/alfresco-transform-core-aio/alfresco-transform-core-aio/src/main/java/org/alfresco/transformer/AIOTransformRegistry.java b/alfresco-transform-core-aio/alfresco-transform-core-aio/src/main/java/org/alfresco/transformer/AIOTransformRegistry.java index 0dadfee5..5bccd36f 100644 --- a/alfresco-transform-core-aio/alfresco-transform-core-aio/src/main/java/org/alfresco/transformer/AIOTransformRegistry.java +++ b/alfresco-transform-core-aio/alfresco-transform-core-aio/src/main/java/org/alfresco/transformer/AIOTransformRegistry.java @@ -1,184 +1,184 @@ -/* - * #%L - * Alfresco Transform Core - * %% - * Copyright (C) 2005 - 2022 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * - - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.transformer; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.alfresco.transform.client.model.config.TransformConfig; -import org.alfresco.transform.client.registry.AbstractTransformRegistry; -import org.alfresco.transform.client.registry.CombinedTransformConfig; -import org.alfresco.transform.client.registry.TransformCache; -import org.alfresco.transformer.executors.Transformer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.util.HashMap; -import java.util.Map; - -import static java.nio.charset.StandardCharsets.UTF_8; -import static org.alfresco.transform.client.model.config.CoreVersionDecorator.setCoreVersionOnSingleStepTransformers; - -/** - * AIOTransformRegistry manages all of the sub transformers registered to it and provides aggregated TransformConfig. - */ -public class AIOTransformRegistry extends AbstractTransformRegistry -{ - private static final Logger log = LoggerFactory.getLogger(AIOTransformRegistry.class); - - private static final String ENGINE_CONFIG_LOCATION_POSTFIX = "_engine_config.json"; - - private String coreVersion; - - private CombinedTransformConfig combinedTransformConfig = new CombinedTransformConfig(); - - // Holds the structures used by AbstractTransformRegistry to look up what is supported. - // Unlike other sub classes this class does not extend Data or replace it at run time. - private TransformCache data = new TransformCache(); - - private ObjectMapper jsonObjectMapper = new ObjectMapper(); - - // Represents the mapping between a transform and a transformer, multiple mappings can point to the same transformer. - private Map transformerEngineMapping = new HashMap(); - - public void setCoreVersion(String coreVersion) - { - this.coreVersion = coreVersion; - } - - /** - * Adds a transformer's (T-Engine) config to the configuration and creates a map of transforms to the T-Engine. - * The name of this method is now misleading as the registry of transforms takes place in - * {@link #registerCombinedTransformers()} . - * @param tEngine The transformer implementation, this could be a single transformer - * or a transformer managing multiple sub transformers. The transformer's configuration file will - * be read based on the {@link Transformer#getTransformerId()} value. - */ - public void registerTransformer(final Transformer tEngine) throws Exception - { - // Load config for the transformer - String location = getTransformConfigLocation(tEngine); - TransformConfig transformConfig = loadTransformConfig(location); - setCoreVersionOnSingleStepTransformers(transformConfig, coreVersion); - String transformerId = tEngine.getTransformerId(); - combinedTransformConfig.addTransformConfig(transformConfig, location, transformerId, this); - - // Map all of the transforms defined in the config to this Transformer implementation - for (org.alfresco.transform.client.model.config.Transformer transformerConfig : transformConfig.getTransformers()) - { - String transformerName = transformerConfig.getTransformerName(); - // A later tEngine 'might' override one that has already been defined. That is fine. - Transformer originalTEngine = transformerEngineMapping.get(transformerName); - if (originalTEngine != null) - { - log.debug("Overriding transform with name: '{}' originally defined in '{}'.", transformerName, originalTEngine.getTransformerId()); - } - transformerEngineMapping.put(transformerName, tEngine); - log.debug("Registered transform with name: '{}' defined in '{}'.", transformerName, transformerId); - } - } - - public void registerCombinedTransformers() - { - combinedTransformConfig.combineTransformerConfig(this); - combinedTransformConfig.registerCombinedTransformers(this); - } - - /** - * - * @param transformName The transform name as it appears in TransformConfig. - * @return The transformer implementation mapped to the transform name. - */ - public Transformer getByTransformName(final String transformName) - { - return getTransformerEngineMapping().get(transformName); - } - - /** - * - * @return The aggregated config of all the registered transformers - */ - public TransformConfig getTransformConfig() - { - return combinedTransformConfig.buildTransformConfig(); - } - - protected String getTransformConfigLocation(final Transformer transformer) - { - String location = transformer.getTransformerId() + ENGINE_CONFIG_LOCATION_POSTFIX; - return location; - } - - protected TransformConfig loadTransformConfig(final String name) throws Exception - { - if (getClass().getClassLoader().getResource(name) == null) - { - throw new Exception("Configuration '" + name + "' does not exist on the classpath."); - } - - try (InputStream is = getClass().getClassLoader().getResourceAsStream(name); - Reader reader = new InputStreamReader(is, UTF_8)) - { - return jsonObjectMapper.readValue(reader, TransformConfig.class); - } - catch (IOException e) - { - throw new Exception("Could not read '" + name + "' from the classpath.", e); - } - } - - Map getTransformerEngineMapping() - { - return transformerEngineMapping; - } - - void setTransformerEngineMapping(Map transformerEngineMapping) - { - this.transformerEngineMapping = transformerEngineMapping; - } - - @Override - public TransformCache getData() - { - return data; - } - - @Override - protected void logError(String msg) - { - log.error(msg); - } - - @Override - protected void logWarn(String msg) - { - log.warn(msg); - } -} +/* + * #%L + * Alfresco Transform Core + * %% + * Copyright (C) 2005 - 2022 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * - + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * - + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * - + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * - + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ +package org.alfresco.transformer; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.alfresco.transform.client.model.config.TransformConfig; +import org.alfresco.transform.client.registry.AbstractTransformRegistry; +import org.alfresco.transform.client.registry.CombinedTransformConfig; +import org.alfresco.transform.client.registry.TransformCache; +import org.alfresco.transformer.executors.Transformer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.util.HashMap; +import java.util.Map; + +import static java.nio.charset.StandardCharsets.UTF_8; +import static org.alfresco.transform.client.model.config.CoreVersionDecorator.setCoreVersionOnSingleStepTransformers; + +/** + * AIOTransformRegistry manages all of the sub transformers registered to it and provides aggregated TransformConfig. + */ +public class AIOTransformRegistry extends AbstractTransformRegistry +{ + private static final Logger log = LoggerFactory.getLogger(AIOTransformRegistry.class); + + private static final String ENGINE_CONFIG_LOCATION_POSTFIX = "_engine_config.json"; + + private String coreVersion; + + private CombinedTransformConfig combinedTransformConfig = new CombinedTransformConfig(); + + // Holds the structures used by AbstractTransformRegistry to look up what is supported. + // Unlike other sub classes this class does not extend Data or replace it at run time. + private TransformCache data = new TransformCache(); + + private ObjectMapper jsonObjectMapper = new ObjectMapper(); + + // Represents the mapping between a transform and a transformer, multiple mappings can point to the same transformer. + private Map transformerEngineMapping = new HashMap(); + + public void setCoreVersion(String coreVersion) + { + this.coreVersion = coreVersion; + } + + /** + * Adds a transformer's (T-Engine) config to the configuration and creates a map of transforms to the T-Engine. + * The name of this method is now misleading as the registry of transforms takes place in + * {@link #registerCombinedTransformers()} . + * @param tEngine The transformer implementation, this could be a single transformer + * or a transformer managing multiple sub transformers. The transformer's configuration file will + * be read based on the {@link Transformer#getTransformerId()} value. + */ + public void registerTransformer(final Transformer tEngine) throws Exception + { + // Load config for the transformer + String location = getTransformConfigLocation(tEngine); + TransformConfig transformConfig = loadTransformConfig(location); + setCoreVersionOnSingleStepTransformers(transformConfig, coreVersion); + String transformerId = tEngine.getTransformerId(); + combinedTransformConfig.addTransformConfig(transformConfig, location, transformerId, this); + + // Map all of the transforms defined in the config to this Transformer implementation + for (org.alfresco.transform.client.model.config.Transformer transformerConfig : transformConfig.getTransformers()) + { + String transformerName = transformerConfig.getTransformerName(); + // A later tEngine 'might' override one that has already been defined. That is fine. + Transformer originalTEngine = transformerEngineMapping.get(transformerName); + if (originalTEngine != null) + { + log.debug("Overriding transform with name: '{}' originally defined in '{}'.", transformerName, originalTEngine.getTransformerId()); + } + transformerEngineMapping.put(transformerName, tEngine); + log.debug("Registered transform with name: '{}' defined in '{}'.", transformerName, transformerId); + } + } + + public void registerCombinedTransformers() + { + combinedTransformConfig.combineTransformerConfig(this); + combinedTransformConfig.registerCombinedTransformers(this); + } + + /** + * + * @param transformName The transform name as it appears in TransformConfig. + * @return The transformer implementation mapped to the transform name. + */ + public Transformer getByTransformName(final String transformName) + { + return getTransformerEngineMapping().get(transformName); + } + + /** + * + * @return The aggregated config of all the registered transformers + */ + public TransformConfig getTransformConfig() + { + return combinedTransformConfig.buildTransformConfig(); + } + + protected String getTransformConfigLocation(final Transformer transformer) + { + String location = transformer.getTransformerId() + ENGINE_CONFIG_LOCATION_POSTFIX; + return location; + } + + protected TransformConfig loadTransformConfig(final String name) throws Exception + { + if (getClass().getClassLoader().getResource(name) == null) + { + throw new Exception("Configuration '" + name + "' does not exist on the classpath."); + } + + try (InputStream is = getClass().getClassLoader().getResourceAsStream(name); + Reader reader = new InputStreamReader(is, UTF_8)) + { + return jsonObjectMapper.readValue(reader, TransformConfig.class); + } + catch (IOException e) + { + throw new Exception("Could not read '" + name + "' from the classpath.", e); + } + } + + Map getTransformerEngineMapping() + { + return transformerEngineMapping; + } + + void setTransformerEngineMapping(Map transformerEngineMapping) + { + this.transformerEngineMapping = transformerEngineMapping; + } + + @Override + public TransformCache getData() + { + return data; + } + + @Override + protected void logError(String msg) + { + log.error(msg); + } + + @Override + protected void logWarn(String msg) + { + log.warn(msg); + } +} diff --git a/pom.xml b/pom.xml index e62f874e..88cf6121 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.alfresco alfresco-transform-core - 2.5.7-A5-SNAPSHOT + 2.5.7-A5-SNAPSHOT pom