registerMuleBeanDefinitionParser("enricher",
new MessageEnricherDefinitionParser("messageProcessor", MessageEnricher.class)).addIgnored(
"source")
.addIgnored("target")
.registerPreProcessor(
new CheckExclusiveAttributesAndChildren(new String[]{"source", "target"},
new String[]{"enrich"}))
.registerPreProcessor(
new CheckRequiredAttributesWhenNoChildren(new String[][]{new String[]{"target"}}, "enrich"))
.addCollection("enrichExpressionPairs");
registerMuleBeanDefinitionParser("enrich", new ChildDefinitionParser("enrichExpressionPair",
EnrichExpressionPair.class));
registerBeanDefinitionParser("async", new ChildDefinitionParser("messageProcessor",
AsyncMessageProcessorsFactoryBean.class));
registerBeanDefinitionParser("transactional", new ChildDefinitionParser("messageProcessor",
TransactionalMessageProcessorsFactoryBean.class));
registerMuleBeanDefinitionParser("logger", new ChildDefinitionParser("messageProcessor",
LoggerMessageProcessor.class));
// Message Sources
// TODO MULE-4987
// registerBeanDefinitionParser("custom-source", new ChildDefinitionParser("messageSource", null, MessageSource.class));
registerBeanDefinitionParser("composite-source", new ChildDefinitionParser("messageSource", CompositeMessageSourceFactoryBean.class));
// Models
registerBeanDefinitionParser("model", new ModelDefinitionParser());
registerBeanDefinitionParser("seda-model", new InheritDefinitionParser(new OrphanDefinitionParser(SedaModel.class, true), new NamedDefinitionParser()));
registerBeanDefinitionParser("entry-point-resolver-set", new ChildDefinitionParser("entryPointResolverSet", DefaultEntryPointResolverSet.class));
registerBeanDefinitionParser("legacy-entry-point-resolver-set", new ChildDefinitionParser("entryPointResolverSet", LegacyEntryPointResolverSet.class));
registerBeanDefinitionParser("custom-entry-point-resolver-set", new ChildDefinitionParser("entryPointResolverSet"));
registerBeanDefinitionParser("custom-entry-point-resolver", new ChildDefinitionParser("entryPointResolver"));
registerBeanDefinitionParser("callable-entry-point-resolver", new ChildDefinitionParser("entryPointResolver", CallableEntryPointResolver.class));
registerMuleBeanDefinitionParser("property-entry-point-resolver", new ChildDefinitionParser("entryPointResolver", MethodHeaderPropertyEntryPointResolver.class)).addAlias("property", "methodProperty");
registerBeanDefinitionParser("method-entry-point-resolver", new ChildDefinitionParser("entryPointResolver", ExplicitMethodEntryPointResolver.class));
registerBeanDefinitionParser("reflection-entry-point-resolver", new ChildDefinitionParser("entryPointResolver", ReflectionEntryPointResolver.class));
registerBeanDefinitionParser("no-arguments-entry-point-resolver", new ChildDefinitionParser("entryPointResolver", NoArgumentsEntryPointResolver.class));
registerBeanDefinitionParser("array-entry-point-resolver", new ChildDefinitionParser("entryPointResolver", ArrayEntryPointResolver.class));
registerMuleBeanDefinitionParser("include-entry-point", new ParentDefinitionParser());
registerMuleBeanDefinitionParser("exclude-entry-point", new ParentDefinitionParser()).addAlias("method", "ignoredMethod");
registerMuleBeanDefinitionParser("exclude-object-methods", new IgnoreObjectMethodsDefinitionParser());
// Services
registerBeanDefinitionParser("seda-service", new ServiceDefinitionParser(SedaService.class));
registerBeanDefinitionParser("service", new ServiceDefinitionParser(SedaService.class));
registerBeanDefinitionParser("custom-service", new ServiceDefinitionParser());
// Flow Constructs
registerBeanDefinitionParser("flow", new FlowDefinitionParser());
registerBeanDefinitionParser("simple-service", new SimpleServiceDefinitionParser());
registerBeanDefinitionParser("bridge", new BridgeDefinitionParser());
registerBeanDefinitionParser("validator", new ValidatorDefinitionParser());
registerBeanDefinitionParser("flow-ref", new FlowRefDefinitionParser());
// Processing Strategies
registerMuleBeanDefinitionParser("asynchronous-processing-strategy",
new OrphanDefinitionParser(AsynchronousProcessingStrategy.class, false)).addMapping(
"poolExhaustedAction", ThreadingProfile.POOL_EXHAUSTED_ACTIONS).addIgnored("name");
registerMuleBeanDefinitionParser("queued-asynchronous-processing-strategy",
new OrphanDefinitionParser(QueuedAsynchronousProcessingStrategy.class, false)).addMapping(
"poolExhaustedAction", ThreadingProfile.POOL_EXHAUSTED_ACTIONS).addIgnored("name");
registerMuleBeanDefinitionParser("thread-per-processor-processing-strategy",
new OrphanDefinitionParser(ThreadPerProcessorProcessingStrategy.class, false)).addMapping(
"poolExhaustedAction", ThreadingProfile.POOL_EXHAUSTED_ACTIONS).addIgnored("name");
registerMuleBeanDefinitionParser("queued-thread-per-processor-processing-strategy",
new OrphanDefinitionParser(QueuedThreadPerProcessorProcessingStrategy.class, false)).addMapping(
"poolExhaustedAction", ThreadingProfile.POOL_EXHAUSTED_ACTIONS).addIgnored("name");
registerMuleBeanDefinitionParser("custom-processing-strategy", new OrphanDefinitionParser(false)).addIgnored(
"name");
// Components
registerBeanDefinitionParser("component", new ComponentDelegatingDefinitionParser(DefaultJavaComponent.class));
registerBeanDefinitionParser("pooled-component", new ComponentDelegatingDefinitionParser(PooledJavaComponent.class));
registerMuleBeanDefinitionParser("binding", new BindingDefinitionParser("interfaceBinding", DefaultInterfaceBinding.class));
// Simple Components
registerBeanDefinitionParser("pass-through-component", new ComponentDefinitionParser(PassThroughComponent.class));
registerBeanDefinitionParser("log-component", new SimpleComponentDefinitionParser(SimpleCallableJavaComponent.class, LogComponent.class));
registerBeanDefinitionParser("null-component", new SimpleComponentDefinitionParser(SimpleCallableJavaComponent.class, NullComponent.class));
registerBeanDefinitionParser("static-component", new StaticComponentDefinitionParser());
registerIgnoredElement("return-data"); // Handled by StaticComponentDefinitionParser
// We need to use DefaultJavaComponent for the echo component because some tests invoke EchoComponent with method name and therefore we need an entry point resolver
registerBeanDefinitionParser("echo-component", new SimpleComponentDefinitionParser(DefaultJavaComponent.class, EchoComponent.class));
// Object Factories
registerBeanDefinitionParser("singleton-object", new ObjectFactoryDefinitionParser(SingletonObjectFactory.class, "objectFactory"));
registerBeanDefinitionParser("prototype-object", new ObjectFactoryDefinitionParser(PrototypeObjectFactory.class, "objectFactory"));
registerBeanDefinitionParser("spring-object", new ObjectFactoryDefinitionParser(SpringBeanLookup.class, "objectFactory"));
// Life-cycle Adapters Factories
registerBeanDefinitionParser("custom-lifecycle-adapter-factory", new ChildDefinitionParser("lifecycleAdapterFactory"));
//Stores
registerBeanDefinitionParser("in-memory-store", new ChildDefinitionParser("store", InMemoryObjectStore.class));
registerBeanDefinitionParser("simple-text-file-store", new ChildDefinitionParser("store", TextFileObjectStore.class));
registerBeanDefinitionParser("custom-object-store", new ChildDefinitionParser("store", null));
//Routers
registerBeanDefinitionParser("inbound", new ChildDefinitionParser("messageSource", ServiceCompositeMessageSource.class, true));
registerBeanDefinitionParser("outbound", new ChildDefinitionParser("outboundMessageProcessor", DefaultOutboundRouterCollection.class, true));
registerBeanDefinitionParser("async-reply", new ChildDefinitionParser("asyncReplyMessageSource", ServiceAsyncReplyCompositeMessageSource.class, true));
//Inbound Routers
registerBeanDefinitionParser("forwarding-router", new InboundRouterDefinitionParser(ForwardingConsumer.class));
registerBeanDefinitionParser("idempotent-receiver-router", new InboundRouterDefinitionParser(IdempotentMessageFilter.class));
registerBeanDefinitionParser("idempotent-secure-hash-receiver-router", new InboundRouterDefinitionParser(IdempotentSecureHashMessageFilter.class));
registerBeanDefinitionParser("selective-consumer-router", new InboundRouterDefinitionParser(MessageFilter.class));
registerBeanDefinitionParser("wire-tap-router", new InboundRouterDefinitionParser(WireTap.class));
registerBeanDefinitionParser("custom-correlation-aggregator-router", new InboundRouterDefinitionParser());
registerBeanDefinitionParser("collection-aggregator-router", new InboundRouterDefinitionParser(SimpleCollectionAggregator.class));
registerBeanDefinitionParser("message-chunking-aggregator-router", new InboundRouterDefinitionParser(MessageChunkAggregator.class));
registerBeanDefinitionParser("correlation-resequencer-router", new InboundRouterDefinitionParser(Resequencer.class));
registerBeanDefinitionParser("custom-inbound-router", new InboundRouterDefinitionParser(null));
//Outbound Routers
registerBeanDefinitionParser("pass-through-router", new RouterDefinitionParser(OutboundPassThroughRouter.class));
registerBeanDefinitionParser("filtering-router", new RouterDefinitionParser(FilteringOutboundRouter.class));
registerBeanDefinitionParser("chaining-router", new RouterDefinitionParser(ChainingRouter.class));
registerBeanDefinitionParser("endpoint-selector-router", new RouterDefinitionParser(EndpointSelector.class));
registerBeanDefinitionParser("exception-based-router", new RouterDefinitionParser(ExceptionBasedRouter.class));
registerBeanDefinitionParser("recipient-list-exception-based-router", new RouterDefinitionParser(ExceptionBasedRouter.class));
registerBeanDefinitionParser("list-message-splitter-router", new RouterDefinitionParser(ListMessageSplitter.class));
registerBeanDefinitionParser("expression-splitter-router", new RouterDefinitionParser(ExpressionMessageSplitter.class));
registerBeanDefinitionParser("message-chunking-router", new RouterDefinitionParser(MessageChunkingRouter.class));
registerBeanDefinitionParser("multicasting-router", new RouterDefinitionParser(MulticastingRouter.class));
registerBeanDefinitionParser("static-recipient-list-router", new RouterDefinitionParser(StaticRecipientList.class));
registerBeanDefinitionParser("expression-recipient-list-router", new RouterDefinitionParser(ExpressionRecipientList.class));
registerBeanDefinitionParser("recipients", new ChildListDefinitionParser("recipients"));
registerBeanDefinitionParser("custom-outbound-router", new RouterDefinitionParser(null));
registerBeanDefinitionParser("reply-to", new EndpointRefParser("replyTo"));
registerBeanDefinitionParser("sequence-router", new RouterDefinitionParser(SequenceRouter.class));
//Response Routers
registerBeanDefinitionParser("custom-async-reply-router", new InboundRouterDefinitionParser(null));
registerBeanDefinitionParser("single-async-reply-router", new InboundRouterDefinitionParser(NullMessageProcessor.class));
registerBeanDefinitionParser("collection-async-reply-router", new InboundRouterDefinitionParser(SimpleCollectionAggregator.class));
// Routing: Intercepting Message Processors
registerBeanDefinitionParser("idempotent-message-filter", new InboundRouterDefinitionParser(IdempotentMessageFilter.class));
registerBeanDefinitionParser("idempotent-secure-hash-message-filter", new InboundRouterDefinitionParser(IdempotentSecureHashMessageFilter.class));
registerBeanDefinitionParser("wire-tap", new InboundRouterDefinitionParser(WireTap.class));
registerBeanDefinitionParser("custom-aggregator", new AggregatorDefinitionParser());
registerBeanDefinitionParser("collection-aggregator", new AggregatorDefinitionParser(SimpleCollectionAggregator.class));
registerBeanDefinitionParser("message-chunk-aggregator", new AggregatorDefinitionParser(MessageChunkAggregator.class));
registerBeanDefinitionParser("resequencer", new InboundRouterDefinitionParser(Resequencer.class));
registerBeanDefinitionParser("splitter", new SplitterDefinitionParser(ExpressionSplitter.class));
registerBeanDefinitionParser("collection-splitter", new SplitterDefinitionParser(CollectionSplitter.class));
registerBeanDefinitionParser("map-splitter", new SplitterDefinitionParser(MapSplitter.class));
registerBeanDefinitionParser("message-chunk-splitter", new SplitterDefinitionParser(MessageChunkSplitter.class));
registerBeanDefinitionParser("custom-splitter", new SplitterDefinitionParser());
// Routing: Routing Message Processors
// Routing: Conditional Routers
registerBeanDefinitionParser("choice", new ChildDefinitionParser("messageProcessor", ChoiceRouterFactoryBean.class));
registerBeanDefinitionParser("when", (ChildDefinitionParser)new ChildDefinitionParser("route", MessageProcessorFilterPairFactoryBean.class).registerPreProcessor(new CheckExclusiveAttributesAndChildren(new String[]{
"expression"}, new String[]{"{http://www.mulesoft.org/schema/mule/core}abstractFilterType"})));
registerBeanDefinitionParser("otherwise", new ChildDefinitionParser("defaultRoute", MessageProcessorFilterPairFactoryBean.class));
registerBeanDefinitionParser("all", new ChildDefinitionParser("messageProcessor", MulticastingRouter.class));
registerBeanDefinitionParser("recipient-list", new ChildDefinitionParser("messageProcessor", ExpressionRecipientList.class));