diff --git a/cobigen-documentation/tools-cobigen.wiki b/cobigen-documentation/tools-cobigen.wiki index 3149107e1a..d0c0469569 160000 --- a/cobigen-documentation/tools-cobigen.wiki +++ b/cobigen-documentation/tools-cobigen.wiki @@ -1 +1 @@ -Subproject commit 3149107e1ab7cae10d0990b8e45e4edb271b1b51 +Subproject commit d0c0469569e60e2287c80b77a39d020734bb6001 diff --git a/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/InputInterpreter.java b/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/InputInterpreter.java index 5d13235670..ab283ac294 100644 --- a/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/InputInterpreter.java +++ b/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/InputInterpreter.java @@ -47,4 +47,19 @@ public interface InputInterpreter { public Object read(String type, Path path, Charset inputCharset, Object... additionalArguments) throws InputReaderException; + /** + * Reads the content at a path via the first fitting {@link InputReader} and returns a CobiGen compliant + * input + * @param path + * the {@link Path} to the object. Can also point to a folder + * @param inputCharset + * of the input to be used + * @param additionalArguments + * depending on the InputReader implementation + * @return Object that is a valid input or null if the file cannot be read by any InputReader + * @throws InputReaderException + * if the Path cannot be read + */ + public Object read(Path path, Charset inputCharset, Object... additionalArguments) throws InputReaderException; + } \ No newline at end of file diff --git a/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/exception/InputReaderException.java b/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/exception/InputReaderException.java index c91d0ecca9..c9dff38df1 100644 --- a/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/exception/InputReaderException.java +++ b/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/exception/InputReaderException.java @@ -1,5 +1,6 @@ package com.capgemini.cobigen.api.exception; + /** Exception to indicate that an InputReader encountered a problem while parsing input content. */ public class InputReaderException extends CobiGenRuntimeException { diff --git a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/exceptions/NotYetSupportedException.java b/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/exception/NotYetSupportedException.java similarity index 84% rename from cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/exceptions/NotYetSupportedException.java rename to cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/exception/NotYetSupportedException.java index 4ca5b1320c..f1bb325531 100644 --- a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/exceptions/NotYetSupportedException.java +++ b/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/exception/NotYetSupportedException.java @@ -1,6 +1,4 @@ -package com.capgemini.cobigen.impl.exceptions; - -import com.capgemini.cobigen.api.exception.CobiGenRuntimeException; +package com.capgemini.cobigen.api.exception; /** * States that any logic has been triggered, which is currently not supported. diff --git a/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/exception/PluginNotAvailableException.java b/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/exception/PluginNotAvailableException.java index 644e0f3080..d40a5212cb 100644 --- a/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/exception/PluginNotAvailableException.java +++ b/cobigen/cobigen-core-parent/cobigen-core-api/src/main/java/com/capgemini/cobigen/api/exception/PluginNotAvailableException.java @@ -14,7 +14,8 @@ public class PluginNotAvailableException extends InvalidConfigurationException { * the plugin type searched for */ public PluginNotAvailableException(String component, String plugintype) { - super("The Plug-in with type " + plugintype + " did not serve any " + component + super((plugintype != null ? "The Plug-in with type " + plugintype + " did not serve any " + : "There is no plug-in serving ") + component + ". Please make sure, that you installed all necessary plug-ins and there is no typo in " + "type='...' values of all triggers in your context configuration as well as there are no typos " + "in your templates configuration's mergeStrategy='...' values."); diff --git a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/upgrade/AbstractConfigurationUpgrader.java b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/upgrade/AbstractConfigurationUpgrader.java index c072e192ec..74644924e2 100644 --- a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/upgrade/AbstractConfigurationUpgrader.java +++ b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/upgrade/AbstractConfigurationUpgrader.java @@ -30,8 +30,8 @@ import com.capgemini.cobigen.api.constants.BackupPolicy; import com.capgemini.cobigen.api.exception.CobiGenRuntimeException; import com.capgemini.cobigen.api.exception.InvalidConfigurationException; +import com.capgemini.cobigen.api.exception.NotYetSupportedException; import com.capgemini.cobigen.impl.exceptions.BackupFailedException; -import com.capgemini.cobigen.impl.exceptions.NotYetSupportedException; import com.capgemini.cobigen.impl.util.ExceptionUtil; /** diff --git a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/upgrade/ContextConfigurationUpgrader.java b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/upgrade/ContextConfigurationUpgrader.java index d64ffdee86..d735a63549 100644 --- a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/upgrade/ContextConfigurationUpgrader.java +++ b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/upgrade/ContextConfigurationUpgrader.java @@ -6,9 +6,9 @@ import org.dozer.DozerBeanMapper; import com.capgemini.cobigen.api.constants.ConfigurationConstants; +import com.capgemini.cobigen.api.exception.NotYetSupportedException; import com.capgemini.cobigen.impl.config.ContextConfiguration; import com.capgemini.cobigen.impl.config.constant.ContextConfigurationVersion; -import com.capgemini.cobigen.impl.exceptions.NotYetSupportedException; /** * This class encompasses all logic for legacy context configuration detection and upgrading these to the diff --git a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/upgrade/TemplateConfigurationUpgrader.java b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/upgrade/TemplateConfigurationUpgrader.java index a5294f0253..bae3994795 100644 --- a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/upgrade/TemplateConfigurationUpgrader.java +++ b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/upgrade/TemplateConfigurationUpgrader.java @@ -6,9 +6,9 @@ import org.dozer.DozerBeanMapper; import com.capgemini.cobigen.api.constants.ConfigurationConstants; +import com.capgemini.cobigen.api.exception.NotYetSupportedException; import com.capgemini.cobigen.impl.config.constant.TemplatesConfigurationVersion; import com.capgemini.cobigen.impl.config.entity.io.TemplatesConfiguration; -import com.capgemini.cobigen.impl.exceptions.NotYetSupportedException; /** * This class encompasses all logic for legacy templates configuration detection and upgrading these to the diff --git a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/versioning/VersionValidator.java b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/versioning/VersionValidator.java index a96acbcb17..76bfc606a9 100644 --- a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/versioning/VersionValidator.java +++ b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/config/versioning/VersionValidator.java @@ -7,9 +7,9 @@ import org.slf4j.LoggerFactory; import com.capgemini.cobigen.api.exception.InvalidConfigurationException; +import com.capgemini.cobigen.api.exception.NotYetSupportedException; import com.capgemini.cobigen.impl.config.constant.ContextConfigurationVersion; import com.capgemini.cobigen.impl.config.constant.TemplatesConfigurationVersion; -import com.capgemini.cobigen.impl.exceptions.NotYetSupportedException; /** * The version validator checks the compatibility of CobiGen and its configuration files diff --git a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/extension/PluginRegistry.java b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/extension/PluginRegistry.java index 1fd0ce2eed..e64643bc38 100644 --- a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/extension/PluginRegistry.java +++ b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/extension/PluginRegistry.java @@ -1,7 +1,9 @@ package com.capgemini.cobigen.impl.extension; import java.util.Collections; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -143,4 +145,13 @@ public static TriggerInterpreter getTriggerInterpreter(String triggerType) { return triggerInterpreter; } + /** + * Returns a {@link Map} of all {@link TriggerInterpreter} keys. + * + * @return all {@link TriggerInterpreter} keys as a set of strings. + */ + public static Set getTriggerInterpreterKeySet() { + return new HashSet<>(registeredTriggerInterpreter.keySet()); + } + } diff --git a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/generator/CobiGenImpl.java b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/generator/CobiGenImpl.java index 403e0ce288..a2cc88598f 100644 --- a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/generator/CobiGenImpl.java +++ b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/generator/CobiGenImpl.java @@ -145,6 +145,11 @@ public Object read(String type, Path path, Charset inputCharset, Object... addit return inputInterpreter.read(type, path, inputCharset, additionalArguments); } + @Override + public Object read(Path path, Charset inputCharset, Object... additionalArguments) throws InputReaderException { + return inputInterpreter.read(path, inputCharset, additionalArguments); + } + @Override public List getMatchingIncrements(Object matcherInput) throws InvalidConfigurationException { return configurationInterpreter.getMatchingIncrements(matcherInput); diff --git a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/generator/GenerationProcessorImpl.java b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/generator/GenerationProcessorImpl.java index 53b55c1a2c..2e80968c23 100644 --- a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/generator/GenerationProcessorImpl.java +++ b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/generator/GenerationProcessorImpl.java @@ -347,8 +347,8 @@ private Map generate(TemplateTo template, TriggerInterpreter trigger if (merger != null) { mergeResult = merger.merge(tmpOriginalFile, patch, targetCharset); } else { - throw new PluginNotAvailableException(trigger.getType(), - "merge strategy '" + templateEty.getMergeStrategy() + "'"); + throw new PluginNotAvailableException( + "merge strategy '" + templateEty.getMergeStrategy() + "'", null); } if (mergeResult != null) { diff --git a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/generator/InputInterpreterImpl.java b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/generator/InputInterpreterImpl.java index 94ac1286ea..83e83f1d55 100644 --- a/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/generator/InputInterpreterImpl.java +++ b/cobigen/cobigen-core-parent/cobigen-core/src/main/java/com/capgemini/cobigen/impl/generator/InputInterpreterImpl.java @@ -4,6 +4,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.List; +import java.util.Set; import javax.inject.Inject; @@ -57,6 +58,19 @@ public Object read(String type, Path path, Charset inputCharset, Object... addit return getInputReader(type).read(path, inputCharset, additionalArguments); } + @Override + public Object read(Path path, Charset inputCharset, Object... additionalArguments) throws InputReaderException { + Set keySet = PluginRegistry.getTriggerInterpreterKeySet(); + for (String s : keySet) { + try { + return getInputReader(s).read(path, inputCharset, additionalArguments); + } catch (InputReaderException e) { + // nothing to do. + } + } + return null; + } + /** * @param type * of the input diff --git a/cobigen/cobigen-core-parent/pom.xml b/cobigen/cobigen-core-parent/pom.xml index 191bfa4af8..0ee7bdeb9f 100644 --- a/cobigen/cobigen-core-parent/pom.xml +++ b/cobigen/cobigen-core-parent/pom.xml @@ -14,7 +14,7 @@ - 4.2.0 + 4.2.1-SNAPSHOT