This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 452915ef143 [CAMEL-18305] Support writing all OptionalIdentifiedDefinition 452915ef143 is described below commit 452915ef143f92f4e28d46c03a219abfb1ef228e Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Thu Feb 9 09:17:56 2023 +0100 [CAMEL-18305] Support writing all OptionalIdentifiedDefinition --- .../java/org/apache/camel/xml/out/ModelWriter.java | 101 ++++++++++++++++++++- .../org/apache/camel/xml/LwModelToXMLDumper.java | 11 +-- .../packaging/ModelXmlWriterGeneratorMojo.java | 13 ++- 3 files changed, 109 insertions(+), 16 deletions(-) diff --git a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java index 074f96a8d56..a371d2e4679 100644 --- a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java +++ b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java @@ -1009,6 +1009,9 @@ public class ModelWriter extends BaseWriter { throws IOException { doWriteValidatorsDefinition("validators", def); } + public void writeOptionalIdentifiedDefinitionRef(OptionalIdentifiedDefinition def) throws IOException { + doWriteOptionalIdentifiedDefinitionRef(null, def); + } protected void doWriteAggregateDefinition( String name, AggregateDefinition def) @@ -4681,6 +4684,100 @@ public class ModelWriter extends BaseWriter { } } } + protected void doWriteOptionalIdentifiedDefinitionRef( + String n, + OptionalIdentifiedDefinition<?> v) + throws IOException { + if (v != null) { + switch (v.getClass().getSimpleName()) { + case "AggregateDefinition" -> doWriteAggregateDefinition("aggregate", (AggregateDefinition) v); + case "BeanDefinition" -> doWriteBeanDefinition("bean", (BeanDefinition) v); + case "CatchDefinition" -> doWriteCatchDefinition("doCatch", (CatchDefinition) v); + case "ChoiceDefinition" -> doWriteChoiceDefinition("choice", (ChoiceDefinition) v); + case "CircuitBreakerDefinition" -> doWriteCircuitBreakerDefinition("circuitBreaker", (CircuitBreakerDefinition) v); + case "ClaimCheckDefinition" -> doWriteClaimCheckDefinition("claimCheck", (ClaimCheckDefinition) v); + case "ConvertBodyDefinition" -> doWriteConvertBodyDefinition("convertBodyTo", (ConvertBodyDefinition) v); + case "DelayDefinition" -> doWriteDelayDefinition("delay", (DelayDefinition) v); + case "DynamicRouterDefinition" -> doWriteDynamicRouterDefinition("dynamicRouter", (DynamicRouterDefinition) v); + case "EnrichDefinition" -> doWriteEnrichDefinition("enrich", (EnrichDefinition) v); + case "FilterDefinition" -> doWriteFilterDefinition("filter", (FilterDefinition) v); + case "FinallyDefinition" -> doWriteFinallyDefinition("doFinally", (FinallyDefinition) v); + case "FromDefinition" -> doWriteFromDefinition("from", (FromDefinition) v); + case "IdempotentConsumerDefinition" -> doWriteIdempotentConsumerDefinition("idempotentConsumer", (IdempotentConsumerDefinition) v); + case "InOnlyDefinition" -> doWriteInOnlyDefinition("inOnly", (InOnlyDefinition) v); + case "InOutDefinition" -> doWriteInOutDefinition("inOut", (InOutDefinition) v); + case "InputTypeDefinition" -> doWriteInputTypeDefinition("inputType", (InputTypeDefinition) v); + case "InterceptDefinition" -> doWriteInterceptDefinition("intercept", (InterceptDefinition) v); + case "InterceptFromDefinition" -> doWriteInterceptFromDefinition("interceptFrom", (InterceptFromDefinition) v); + case "InterceptSendToEndpointDefinition" -> doWriteInterceptSendToEndpointDefinition("interceptSendToEndpoint", (InterceptSendToEndpointDefinition) v); + case "KameletDefinition" -> doWriteKameletDefinition("kamelet", (KameletDefinition) v); + case "LoadBalanceDefinition" -> doWriteLoadBalanceDefinition("loadBalance", (LoadBalanceDefinition) v); + case "LogDefinition" -> doWriteLogDefinition("log", (LogDefinition) v); + case "LoopDefinition" -> doWriteLoopDefinition("loop", (LoopDefinition) v); + case "MarshalDefinition" -> doWriteMarshalDefinition("marshal", (MarshalDefinition) v); + case "MulticastDefinition" -> doWriteMulticastDefinition("multicast", (MulticastDefinition) v); + case "OnCompletionDefinition" -> doWriteOnCompletionDefinition("onCompletion", (OnCompletionDefinition) v); + case "OnExceptionDefinition" -> doWriteOnExceptionDefinition("onException", (OnExceptionDefinition) v); + case "OnFallbackDefinition" -> doWriteOnFallbackDefinition("onFallback", (OnFallbackDefinition) v); + case "OtherwiseDefinition" -> doWriteOtherwiseDefinition("otherwise", (OtherwiseDefinition) v); + case "OutputTypeDefinition" -> doWriteOutputTypeDefinition("outputType", (OutputTypeDefinition) v); + case "PausableDefinition" -> doWritePausableDefinition("pausable", (PausableDefinition) v); + case "PipelineDefinition" -> doWritePipelineDefinition("pipeline", (PipelineDefinition) v); + case "PolicyDefinition" -> doWritePolicyDefinition("policy", (PolicyDefinition) v); + case "PollEnrichDefinition" -> doWritePollEnrichDefinition("pollEnrich", (PollEnrichDefinition) v); + case "ProcessDefinition" -> doWriteProcessDefinition("process", (ProcessDefinition) v); + case "RecipientListDefinition" -> doWriteRecipientListDefinition("recipientList", (RecipientListDefinition) v); + case "RemoveHeaderDefinition" -> doWriteRemoveHeaderDefinition("removeHeader", (RemoveHeaderDefinition) v); + case "RemoveHeadersDefinition" -> doWriteRemoveHeadersDefinition("removeHeaders", (RemoveHeadersDefinition) v); + case "RemovePropertiesDefinition" -> doWriteRemovePropertiesDefinition("removeProperties", (RemovePropertiesDefinition) v); + case "RemovePropertyDefinition" -> doWriteRemovePropertyDefinition("removeProperty", (RemovePropertyDefinition) v); + case "ResequenceDefinition" -> doWriteResequenceDefinition("resequence", (ResequenceDefinition) v); + case "ResumableDefinition" -> doWriteResumableDefinition("resumable", (ResumableDefinition) v); + case "RollbackDefinition" -> doWriteRollbackDefinition("rollback", (RollbackDefinition) v); + case "RouteConfigurationDefinition" -> doWriteRouteConfigurationDefinition("routeConfiguration", (RouteConfigurationDefinition) v); + case "RouteDefinition" -> doWriteRouteDefinition("route", (RouteDefinition) v); + case "RouteTemplateDefinition" -> doWriteRouteTemplateDefinition("routeTemplate", (RouteTemplateDefinition) v); + case "RouteTemplatesDefinition" -> doWriteRouteTemplatesDefinition("routeTemplates", (RouteTemplatesDefinition) v); + case "RoutesDefinition" -> doWriteRoutesDefinition("routes", (RoutesDefinition) v); + case "RoutingSlipDefinition" -> doWriteRoutingSlipDefinition("routingSlip", (RoutingSlipDefinition) v); + case "SagaDefinition" -> doWriteSagaDefinition("saga", (SagaDefinition) v); + case "SamplingDefinition" -> doWriteSamplingDefinition("sample", (SamplingDefinition) v); + case "ScriptDefinition" -> doWriteScriptDefinition("script", (ScriptDefinition) v); + case "SetBodyDefinition" -> doWriteSetBodyDefinition("setBody", (SetBodyDefinition) v); + case "SetExchangePatternDefinition" -> doWriteSetExchangePatternDefinition("setExchangePattern", (SetExchangePatternDefinition) v); + case "SetHeaderDefinition" -> doWriteSetHeaderDefinition("setHeader", (SetHeaderDefinition) v); + case "SetPropertyDefinition" -> doWriteSetPropertyDefinition("setProperty", (SetPropertyDefinition) v); + case "SortDefinition" -> doWriteSortDefinition("sort", (SortDefinition) v); + case "SplitDefinition" -> doWriteSplitDefinition("split", (SplitDefinition) v); + case "StepDefinition" -> doWriteStepDefinition("step", (StepDefinition) v); + case "StopDefinition" -> doWriteStopDefinition("stop", (StopDefinition) v); + case "TemplatedRoutesDefinition" -> doWriteTemplatedRoutesDefinition("templatedRoutes", (TemplatedRoutesDefinition) v); + case "ThreadPoolProfileDefinition" -> doWriteThreadPoolProfileDefinition("threadPoolProfile", (ThreadPoolProfileDefinition) v); + case "ThreadsDefinition" -> doWriteThreadsDefinition("threads", (ThreadsDefinition) v); + case "ThrottleDefinition" -> doWriteThrottleDefinition("throttle", (ThrottleDefinition) v); + case "ThrowExceptionDefinition" -> doWriteThrowExceptionDefinition("throwException", (ThrowExceptionDefinition) v); + case "ToDefinition" -> doWriteToDefinition("to", (ToDefinition) v); + case "ToDynamicDefinition" -> doWriteToDynamicDefinition("toD", (ToDynamicDefinition) v); + case "TransactedDefinition" -> doWriteTransactedDefinition("transacted", (TransactedDefinition) v); + case "TransformDefinition" -> doWriteTransformDefinition("transform", (TransformDefinition) v); + case "TryDefinition" -> doWriteTryDefinition("doTry", (TryDefinition) v); + case "UnmarshalDefinition" -> doWriteUnmarshalDefinition("unmarshal", (UnmarshalDefinition) v); + case "ValidateDefinition" -> doWriteValidateDefinition("validate", (ValidateDefinition) v); + case "WhenDefinition" -> doWriteWhenDefinition("when", (WhenDefinition) v); + case "WireTapDefinition" -> doWriteWireTapDefinition("wireTap", (WireTapDefinition) v); + case "ServiceCallDefinition" -> doWriteServiceCallDefinition("serviceCall", (ServiceCallDefinition) v); + case "DeleteDefinition" -> doWriteDeleteDefinition("delete", (DeleteDefinition) v); + case "GetDefinition" -> doWriteGetDefinition("get", (GetDefinition) v); + case "HeadDefinition" -> doWriteHeadDefinition("head", (HeadDefinition) v); + case "PatchDefinition" -> doWritePatchDefinition("patch", (PatchDefinition) v); + case "PostDefinition" -> doWritePostDefinition("post", (PostDefinition) v); + case "PutDefinition" -> doWritePutDefinition("put", (PutDefinition) v); + case "RestBindingDefinition" -> doWriteRestBindingDefinition("restBinding", (RestBindingDefinition) v); + case "RestDefinition" -> doWriteRestDefinition("rest", (RestDefinition) v); + case "RestsDefinition" -> doWriteRestsDefinition("rests", (RestsDefinition) v); + } + } + } protected void doWriteOutputTypeDefinitionRef( String n, OutputTypeDefinition v) @@ -4928,7 +5025,7 @@ public class ModelWriter extends BaseWriter { text(value); } } - private <T> void doWriteList(String wrapperName, String name, List<T> list, ElementSerializer<T> elementSerializer) throws IOException { + protected <T> void doWriteList(String wrapperName, String name, List<T> list, ElementSerializer<T> elementSerializer) throws IOException { if (list != null) { if (wrapperName != null) { startElement(wrapperName); @@ -4941,7 +5038,7 @@ public class ModelWriter extends BaseWriter { } } } - private <T> void doWriteElement(String name, T v, ElementSerializer<T> elementSerializer) throws IOException { + protected <T> void doWriteElement(String name, T v, ElementSerializer<T> elementSerializer) throws IOException { if (v != null) { elementSerializer.doWriteElement(name, v); } diff --git a/core/camel-xml-io/src/main/java/org/apache/camel/xml/LwModelToXMLDumper.java b/core/camel-xml-io/src/main/java/org/apache/camel/xml/LwModelToXMLDumper.java index 167b0de40ec..4809350fae1 100644 --- a/core/camel-xml-io/src/main/java/org/apache/camel/xml/LwModelToXMLDumper.java +++ b/core/camel-xml-io/src/main/java/org/apache/camel/xml/LwModelToXMLDumper.java @@ -40,8 +40,6 @@ import org.apache.camel.model.RoutesDefinition; import org.apache.camel.model.SendDefinition; import org.apache.camel.model.ToDynamicDefinition; import org.apache.camel.model.language.ExpressionDefinition; -import org.apache.camel.model.rest.RestDefinition; -import org.apache.camel.model.rest.RestsDefinition; import org.apache.camel.spi.ModelToXMLDumper; import org.apache.camel.spi.NamespaceAware; import org.apache.camel.spi.annotations.JdkService; @@ -167,21 +165,14 @@ public class LwModelToXMLDumper implements ModelToXMLDumper { // gather all namespaces from the routes or route which is stored on the expression nodes if (definition instanceof RouteTemplatesDefinition templates) { templates.getRouteTemplates().forEach(template -> extractor.accept(template.getRoute())); - writer.writeRouteTemplatesDefinition(templates); } else if (definition instanceof RouteTemplateDefinition template) { extractor.accept(template.getRoute()); - writer.writeRouteTemplateDefinition(template); } else if (definition instanceof RoutesDefinition routes) { routes.getRoutes().forEach(extractor); - writer.writeRoutesDefinition(routes); } else if (definition instanceof RouteDefinition route) { extractor.accept(route); - writer.writeRouteDefinition(route); - } else if (definition instanceof RestsDefinition rests) { - writer.writeRestsDefinition(rests); - } else if (definition instanceof RestDefinition rest) { - writer.writeRestDefinition(rest); } + writer.writeOptionalIdentifiedDefinitionRef((OptionalIdentifiedDefinition) definition); return buffer.toString(); } diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlWriterGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlWriterGeneratorMojo.java index dbb76d1f48e..e367aebc5c8 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlWriterGeneratorMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlWriterGeneratorMojo.java @@ -250,6 +250,13 @@ public class ModelXmlWriterGeneratorMojo extends AbstractGeneratorMojo { Set<Class<?>> elementRefs = new TreeSet<>(Comparator.comparing(Class::getName)); + // Special case for OptionalIdentifiedDefinition + model.stream().filter(cl -> "OptionalIdentifiedDefinition".equals(cl.getSimpleName())) + .forEach(elementRefs::add); + writer.addMethod() + .setSignature("public void writeOptionalIdentifiedDefinitionRef(OptionalIdentifiedDefinition def) throws IOException") + .setBody("doWriteOptionalIdentifiedDefinitionRef(null, def);"); + for (Class<?> clazz : model) { if (clazz.getAnnotation(XmlEnum.class) != null || clazz.isInterface()) { continue; @@ -485,8 +492,7 @@ public class ModelXmlWriterGeneratorMojo extends AbstractGeneratorMojo { " text(value);", "}"); writer.addMethod() - .setProtected() - .setSignature("private <T> void doWriteList(String wrapperName, String name, List<T> list, ElementSerializer<T> elementSerializer) throws IOException") + .setSignature("protected <T> void doWriteList(String wrapperName, String name, List<T> list, ElementSerializer<T> elementSerializer) throws IOException") .setBody(""" if (list != null) { if (wrapperName != null) { @@ -500,8 +506,7 @@ public class ModelXmlWriterGeneratorMojo extends AbstractGeneratorMojo { } }"""); writer.addMethod() - .setProtected() - .setSignature("private <T> void doWriteElement(String name, T v, ElementSerializer<T> elementSerializer) throws IOException") + .setSignature("protected <T> void doWriteElement(String name, T v, ElementSerializer<T> elementSerializer) throws IOException") .setBody(""" if (v != null) { elementSerializer.doWriteElement(name, v);