You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/03/23 10:37:48 UTC

[camel-spring-boot] branch mapstruct created (now 64c65753faf)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a change to branch mapstruct
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git


      at 64c65753faf CAMEL-19181: camel-mapstructor - Trigger creating mapstruct component without a component is in use in Camel routes as the component can be used for type converters only.

This branch includes the following new commits:

     new 64c65753faf CAMEL-19181: camel-mapstructor - Trigger creating mapstruct component without a component is in use in Camel routes as the component can be used for type converters only.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[camel-spring-boot] 01/01: CAMEL-19181: camel-mapstructor - Trigger creating mapstruct component without a component is in use in Camel routes as the component can be used for type converters only.

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch mapstruct
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git

commit 64c65753faf32b3bcf95e9ffbc43ebd60a720d67
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Mar 23 11:37:32 2023 +0100

    CAMEL-19181: camel-mapstructor - Trigger creating mapstruct component without a component is in use in Camel routes as the component can be used for type converters only.
---
 .../MapstructMappingAutoConfiguration.java         | 71 ++++++++++++++++++++++
 ...rk.boot.autoconfigure.AutoConfiguration.imports |  1 +
 2 files changed, 72 insertions(+)

diff --git a/components-starter/camel-mapstruct-starter/src/main/java/org/apache/camel/component/mapstruct/springboot/MapstructMappingAutoConfiguration.java b/components-starter/camel-mapstruct-starter/src/main/java/org/apache/camel/component/mapstruct/springboot/MapstructMappingAutoConfiguration.java
new file mode 100644
index 00000000000..2be5c533a24
--- /dev/null
+++ b/components-starter/camel-mapstruct-starter/src/main/java/org/apache/camel/component/mapstruct/springboot/MapstructMappingAutoConfiguration.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+package org.apache.camel.component.mapstruct.springboot;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ExtendedStartupListener;
+import org.apache.camel.spi.CamelContextCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
+import org.apache.camel.spring.boot.util.ConditionalOnHierarchicalProperties;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration(proxyBeanMethods = false)
+@Conditional(ConditionalOnCamelContextAndAutoConfigurationBeans.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,MapstructComponentConfiguration.class})
+@ConditionalOnHierarchicalProperties({"camel.component", "camel.component.mapstruct"})
+@ConditionalOnProperty(prefix = "camel.component.mapstruct", name = "enabled", havingValue = "true", matchIfMissing = true)
+@AutoConfigureAfter({CamelAutoConfiguration.class, MapstructComponentAutoConfiguration.class})
+public class MapstructMappingAutoConfiguration {
+
+    @Bean
+    CamelContextCustomizer registerMapstructComponent(CamelContext context) throws Exception {
+        context.addStartupListener(new ExtendedStartupListener() {
+            @Override
+            public void onCamelContextStarting(CamelContext context, boolean alreadyStarted) throws Exception {
+                // we want mapstruct to be automatically created and initialize via spring boot auto-configuation
+                // so we need to force this via camel context, and do this without causing circular dependency creation
+                // problems with spring boot
+                if (context.hasComponent("mapstruct") == null) {
+                    context.getComponent("mapstruct");
+                }
+            }
+
+            @Override
+            public void onCamelContextStarted(CamelContext context, boolean alreadyStarted) throws Exception {
+                // noop
+            }
+
+            @Override
+            public void onCamelContextFullyStarted(CamelContext context, boolean alreadyStarted) throws Exception {
+                // noop
+            }
+        });
+        return new CamelContextCustomizer() {
+            @Override
+            public void configure(CamelContext camelContext) {
+                // empty not in use
+            }
+        };
+    }
+}
diff --git a/components-starter/camel-mapstruct-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/components-starter/camel-mapstruct-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 038f2eb5bf4..678416bd5b6 100644
--- a/components-starter/camel-mapstruct-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/components-starter/camel-mapstruct-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -17,3 +17,4 @@
 
 org.apache.camel.component.mapstruct.springboot.MapstructComponentConverter
 org.apache.camel.component.mapstruct.springboot.MapstructComponentAutoConfiguration
+org.apache.camel.component.mapstruct.springboot.MapstructMappingAutoConfiguration