From 82ac6d0ee648967ce4f8694e6f5c3d5d8b8ad64c Mon Sep 17 00:00:00 2001 From: Croway Date: Thu, 19 Oct 2023 15:57:07 +0200 Subject: [PATCH 1/2] auto generate META-INF content for DataTypeTransformer --- .../aws2-s3-application-cloudevents | 2 ++ .../aws2-s3-application-cloudevents | 18 ------------ .../transformer/application-cloudevents-json | 2 ++ .../transformer/http-application-cloudevents | 2 ++ .../transformer/application-cloudevents-json | 18 ------------ .../transformer/http-application-cloudevents | 18 ------------ .../apache/camel/spi/DataTypeTransformer.java | 3 ++ .../transformer/application-octet-stream | 2 ++ .../camel/datatype/transformer/text-plain | 2 ++ .../transformer/application-octet-stream | 18 ------------ .../camel/datatype/transformer/plain-text | 18 ------------ .../maven/packaging/SpiGeneratorMojo.java | 28 ++++++++++++++++--- 12 files changed, 37 insertions(+), 94 deletions(-) create mode 100644 components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents delete mode 100644 components/camel-aws/camel-aws2-s3/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents create mode 100644 components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/application-cloudevents-json create mode 100644 components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents delete mode 100644 components/camel-cloudevents/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-cloudevents-json delete mode 100644 components/camel-cloudevents/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents create mode 100644 core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/application-octet-stream create mode 100644 core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/text-plain delete mode 100644 core/camel-core-processor/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-octet-stream delete mode 100644 core/camel-core-processor/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/plain-text diff --git a/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents b/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents new file mode 100644 index 0000000000000..78f1be83b8cdc --- /dev/null +++ b/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents @@ -0,0 +1,2 @@ +# Generated by camel build tools - do NOT edit this file! +class=org.apache.camel.component.aws2.s3.transform.AWS2S3CloudEventDataTypeTransformer diff --git a/components/camel-aws/camel-aws2-s3/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents b/components/camel-aws/camel-aws2-s3/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents deleted file mode 100644 index ec5793a97f61d..0000000000000 --- a/components/camel-aws/camel-aws2-s3/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents +++ /dev/null @@ -1,18 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -class=org.apache.camel.component.aws2.s3.transform.AWS2S3CloudEventDataTypeTransformer diff --git a/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/application-cloudevents-json b/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/application-cloudevents-json new file mode 100644 index 0000000000000..ce4e00dc85952 --- /dev/null +++ b/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/application-cloudevents-json @@ -0,0 +1,2 @@ +# Generated by camel build tools - do NOT edit this file! +class=org.apache.camel.component.cloudevents.transformer.CloudEventJsonDataTypeTransformer diff --git a/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents b/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents new file mode 100644 index 0000000000000..29210d5ee0bc4 --- /dev/null +++ b/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents @@ -0,0 +1,2 @@ +# Generated by camel build tools - do NOT edit this file! +class=org.apache.camel.component.cloudevents.transformer.CloudEventHttpDataTypeTransformer diff --git a/components/camel-cloudevents/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-cloudevents-json b/components/camel-cloudevents/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-cloudevents-json deleted file mode 100644 index d380ef770b95a..0000000000000 --- a/components/camel-cloudevents/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-cloudevents-json +++ /dev/null @@ -1,18 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -class=org.apache.camel.component.cloudevents.transformer.CloudEventJsonDataTypeTransformer diff --git a/components/camel-cloudevents/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents b/components/camel-cloudevents/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents deleted file mode 100644 index ca4580b0f7389..0000000000000 --- a/components/camel-cloudevents/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents +++ /dev/null @@ -1,18 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -class=org.apache.camel.component.cloudevents.transformer.CloudEventHttpDataTypeTransformer diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/DataTypeTransformer.java b/core/camel-api/src/main/java/org/apache/camel/spi/DataTypeTransformer.java index b047ed367bde3..062e67545434e 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/DataTypeTransformer.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/DataTypeTransformer.java @@ -23,6 +23,8 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import org.apache.camel.spi.annotations.ServiceFactory; + /** * Annotation to configure a data type transformer with either specifying its name or from/to data types. *

@@ -32,6 +34,7 @@ @Retention(RetentionPolicy.RUNTIME) @Documented @Target({ ElementType.TYPE }) +@ServiceFactory("transformer") public @interface DataTypeTransformer { /** diff --git a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/application-octet-stream b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/application-octet-stream new file mode 100644 index 0000000000000..6fa92135ded60 --- /dev/null +++ b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/application-octet-stream @@ -0,0 +1,2 @@ +# Generated by camel build tools - do NOT edit this file! +class=org.apache.camel.processor.transformer.ByteArrayDataTypeTransformer diff --git a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/text-plain b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/text-plain new file mode 100644 index 0000000000000..6cb700e9c21c0 --- /dev/null +++ b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/text-plain @@ -0,0 +1,2 @@ +# Generated by camel build tools - do NOT edit this file! +class=org.apache.camel.processor.transformer.StringDataTypeTransformer diff --git a/core/camel-core-processor/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-octet-stream b/core/camel-core-processor/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-octet-stream deleted file mode 100644 index 6d209870e4451..0000000000000 --- a/core/camel-core-processor/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-octet-stream +++ /dev/null @@ -1,18 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -class=org.apache.camel.processor.transformer.ByteArrayDataTypeTransformer diff --git a/core/camel-core-processor/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/plain-text b/core/camel-core-processor/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/plain-text deleted file mode 100644 index a234758337548..0000000000000 --- a/core/camel-core-processor/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/plain-text +++ /dev/null @@ -1,18 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -class=org.apache.camel.processor.transformer.StringDataTypeTransformer diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java index b53ce2b3cd0be..085f09204b46e 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java @@ -134,15 +134,29 @@ public void execute() throws MojoExecutionException, MojoFailureException { if (!isLocal(className)) { continue; } - String pvals = annotation.value().asString(); + String pvals; + // @DataTypeTransformer uses name instead of value + if (annotation.value() == null) { + pvals = annotation.values().stream() + .filter(annotationValue -> "name".equals(annotationValue.name())) + .map(name -> name.value().toString()) + .findFirst().get(); + } else { + pvals = annotation.value().asString(); + } for (String pval : pvals.split(",")) { + StringBuilder sb = new StringBuilder(); + sb.append("# ").append(GENERATED_MSG).append(NL).append("class=").append(className).append(NL); if (ServiceFactory.JDK_SERVICE.equals(sfa.value().asString())) { updateResource(resourcesOutputDir.toPath(), "META-INF/services/org/apache/camel/" + pval, - "# " + GENERATED_MSG + NL + "class=" + className + NL); + sb.toString()); + } else if ("transformer".equals(sfa.value().asString())) { + pval = cleanUpValue(pval); + updateResource(resourcesOutputDir.toPath(), + "META-INF/services/org/apache/camel/datatype/" + sfa.value().asString() + "/" + pval, + sb.toString()); } else { - StringBuilder sb = new StringBuilder(); - sb.append("# ").append(GENERATED_MSG).append(NL).append("class=").append(className).append(NL); updateResource(resourcesOutputDir.toPath(), "META-INF/services/org/apache/camel/" + sfa.value().asString() + "/" + pval, sb.toString()); @@ -152,6 +166,12 @@ public void execute() throws MojoExecutionException, MojoFailureException { } } + private String cleanUpValue(String pval) { + return pval + .replace(":", "-") + .replace("+", "-"); + } + private boolean isLocal(String className) { Path output = Paths.get(project.getBuild().getOutputDirectory()); Path file = output.resolve(className.replace('.', '/') + ".class"); From 4a7e1a81a5f3a91381ac2473726aba7a7dab708d Mon Sep 17 00:00:00 2001 From: Croway Date: Thu, 19 Oct 2023 17:47:28 +0200 Subject: [PATCH 2/2] Align generated folder structure to Camel one --- .../transformer/aws2-s3-application-cloudevents | 0 .../transformer/application-cloudevents-json | 0 .../transformer/http-application-cloudevents | 0 .../impl/engine/DefaultTransformerResolver.java | 4 ++-- .../transformer/application-octet-stream | 0 .../camel/{datatype => }/transformer/text-plain | 0 .../impl/engine/DefaultTransformerRegistryTest.java | 2 +- .../impl/engine/DefaultTransformerResolverTest.java | 2 +- .../transformer/StringDataTypeTransformerTest.java | 2 +- .../apache/camel/{datatype => }/transformer/foo-json | 0 .../camel/{datatype => }/transformer/lowercase | 0 .../camel/{datatype => }/transformer/uppercase | 0 .../camel/maven/packaging/SpiGeneratorMojo.java | 12 +++--------- 13 files changed, 8 insertions(+), 14 deletions(-) rename components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/{datatype => }/transformer/aws2-s3-application-cloudevents (100%) rename components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/{datatype => }/transformer/application-cloudevents-json (100%) rename components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/{datatype => }/transformer/http-application-cloudevents (100%) rename core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/{datatype => }/transformer/application-octet-stream (100%) rename core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/{datatype => }/transformer/text-plain (100%) rename core/camel-core/src/test/resources/META-INF/services/org/apache/camel/{datatype => }/transformer/foo-json (100%) rename core/camel-core/src/test/resources/META-INF/services/org/apache/camel/{datatype => }/transformer/lowercase (100%) rename core/camel-core/src/test/resources/META-INF/services/org/apache/camel/{datatype => }/transformer/uppercase (100%) diff --git a/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents b/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws2-s3-application-cloudevents similarity index 100% rename from components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents rename to components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/transformer/aws2-s3-application-cloudevents diff --git a/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/application-cloudevents-json b/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-cloudevents-json similarity index 100% rename from components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/application-cloudevents-json rename to components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-cloudevents-json diff --git a/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents b/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/transformer/http-application-cloudevents similarity index 100% rename from components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents rename to components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/transformer/http-application-cloudevents diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultTransformerResolver.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultTransformerResolver.java index 6099e79ca3163..28939133adf69 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultTransformerResolver.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultTransformerResolver.java @@ -30,11 +30,11 @@ /** * The default implementation of {@link org.apache.camel.spi.TransformerResolver} which tries to find components by * using the URI scheme prefix and searching for a file of the URI scheme name in the - * META-INF/services/org/apache/camel/datatype/transformer/ directory on the classpath. + * META-INF/services/org/apache/camel/transformer/ directory on the classpath. */ public class DefaultTransformerResolver implements TransformerResolver { - public static final String DATA_TYPE_TRANSFORMER_RESOURCE_PATH = "META-INF/services/org/apache/camel/datatype/transformer/"; + public static final String DATA_TYPE_TRANSFORMER_RESOURCE_PATH = "META-INF/services/org/apache/camel/transformer/"; private static final Logger LOG = LoggerFactory.getLogger(DefaultTransformerResolver.class); diff --git a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/application-octet-stream b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-octet-stream similarity index 100% rename from core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/application-octet-stream rename to core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/application-octet-stream diff --git a/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/text-plain b/core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/text-plain similarity index 100% rename from core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/datatype/transformer/text-plain rename to core/camel-core-processor/src/generated/resources/META-INF/services/org/apache/camel/transformer/text-plain diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultTransformerRegistryTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultTransformerRegistryTest.java index a7de0a24a40b5..7cdecd343cc5e 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultTransformerRegistryTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultTransformerRegistryTest.java @@ -30,7 +30,7 @@ class DefaultTransformerRegistryTest { @Test public void shouldLookupDefaultDataTypeConverters() throws Exception { - Transformer transformer = dataTypeRegistry.resolveTransformer(new TransformerKey("plain-text")); + Transformer transformer = dataTypeRegistry.resolveTransformer(new TransformerKey("text-plain")); Assertions.assertNotNull(transformer); Assertions.assertEquals(StringDataTypeTransformer.class, transformer.getClass()); transformer = dataTypeRegistry.resolveTransformer(new TransformerKey("application-octet-stream")); diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultTransformerResolverTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultTransformerResolverTest.java index b7b17d9d35404..1f62d78b2d112 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultTransformerResolverTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultTransformerResolverTest.java @@ -51,7 +51,7 @@ public void shouldHandleUnresolvableDataTypeTransformers() throws Exception { @Test public void shouldResolveDataTypeTransformers() throws Exception { - Transformer transformer = resolver.resolve(new TransformerKey("plain-text"), camelContext); + Transformer transformer = resolver.resolve(new TransformerKey("text-plain"), camelContext); Assertions.assertNotNull(transformer); Assertions.assertEquals(StringDataTypeTransformer.class, transformer.getClass()); diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/transformer/StringDataTypeTransformerTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/transformer/StringDataTypeTransformerTest.java index 25b70416c0610..76f44f1668187 100644 --- a/core/camel-core/src/test/java/org/apache/camel/processor/transformer/StringDataTypeTransformerTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/processor/transformer/StringDataTypeTransformerTest.java @@ -76,7 +76,7 @@ void shouldMapFromInputStreamToStringModel() throws Exception { @Test public void shouldLookupDataType() throws Exception { DefaultTransformerRegistry dataTypeRegistry = new DefaultTransformerRegistry(camelContext); - Transformer transformer = dataTypeRegistry.resolveTransformer(new TransformerKey("plain-text")); + Transformer transformer = dataTypeRegistry.resolveTransformer(new TransformerKey("text-plain")); Assertions.assertNotNull(transformer); } diff --git a/core/camel-core/src/test/resources/META-INF/services/org/apache/camel/datatype/transformer/foo-json b/core/camel-core/src/test/resources/META-INF/services/org/apache/camel/transformer/foo-json similarity index 100% rename from core/camel-core/src/test/resources/META-INF/services/org/apache/camel/datatype/transformer/foo-json rename to core/camel-core/src/test/resources/META-INF/services/org/apache/camel/transformer/foo-json diff --git a/core/camel-core/src/test/resources/META-INF/services/org/apache/camel/datatype/transformer/lowercase b/core/camel-core/src/test/resources/META-INF/services/org/apache/camel/transformer/lowercase similarity index 100% rename from core/camel-core/src/test/resources/META-INF/services/org/apache/camel/datatype/transformer/lowercase rename to core/camel-core/src/test/resources/META-INF/services/org/apache/camel/transformer/lowercase diff --git a/core/camel-core/src/test/resources/META-INF/services/org/apache/camel/datatype/transformer/uppercase b/core/camel-core/src/test/resources/META-INF/services/org/apache/camel/transformer/uppercase similarity index 100% rename from core/camel-core/src/test/resources/META-INF/services/org/apache/camel/datatype/transformer/uppercase rename to core/camel-core/src/test/resources/META-INF/services/org/apache/camel/transformer/uppercase diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java index 085f09204b46e..75be1f2a493f3 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java @@ -145,17 +145,13 @@ public void execute() throws MojoExecutionException, MojoFailureException { pvals = annotation.value().asString(); } for (String pval : pvals.split(",")) { + pval = sanitizeFileName(pval); StringBuilder sb = new StringBuilder(); sb.append("# ").append(GENERATED_MSG).append(NL).append("class=").append(className).append(NL); if (ServiceFactory.JDK_SERVICE.equals(sfa.value().asString())) { updateResource(resourcesOutputDir.toPath(), "META-INF/services/org/apache/camel/" + pval, sb.toString()); - } else if ("transformer".equals(sfa.value().asString())) { - pval = cleanUpValue(pval); - updateResource(resourcesOutputDir.toPath(), - "META-INF/services/org/apache/camel/datatype/" + sfa.value().asString() + "/" + pval, - sb.toString()); } else { updateResource(resourcesOutputDir.toPath(), "META-INF/services/org/apache/camel/" + sfa.value().asString() + "/" + pval, @@ -166,10 +162,8 @@ public void execute() throws MojoExecutionException, MojoFailureException { } } - private String cleanUpValue(String pval) { - return pval - .replace(":", "-") - .replace("+", "-"); + private String sanitizeFileName(String fileName) { + return fileName.replaceAll("[^A-Za-z0-9-]", "-"); } private boolean isLocal(String className) {