/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.config.spring.handlers; import org.mule.runtime.config.spring.factories.AggregationStrategyDefinitionParser; import org.mule.runtime.config.spring.factories.ChoiceRouterFactoryBean; import org.mule.runtime.config.spring.factories.CompositeMessageSourceFactoryBean; import org.mule.runtime.config.spring.factories.DefaultMemoryQueueStoreFactoryBean; import org.mule.runtime.config.spring.factories.DefaultPersistentQueueStoreFactoryBean; import org.mule.runtime.config.spring.factories.MessageProcessorFilterPairFactoryBean; import org.mule.runtime.config.spring.factories.QueueProfileFactoryBean; import org.mule.runtime.config.spring.factories.ScatterGatherRouterFactoryBean; import org.mule.runtime.config.spring.factories.SchedulingMessageSourceFactoryBean; import org.mule.runtime.config.spring.factories.SubflowMessageProcessorChainFactoryBean; import org.mule.runtime.config.spring.factories.TryProcessorFactoryBean; import org.mule.runtime.config.spring.parsers.AbstractMuleBeanDefinitionParser; import org.mule.runtime.config.spring.parsers.collection.ChildListEntryDefinitionParser; import org.mule.runtime.config.spring.parsers.collection.ChildMapDefinitionParser; import org.mule.runtime.config.spring.parsers.collection.ChildMapEntryDefinitionParser; import org.mule.runtime.config.spring.parsers.generic.ChildDefinitionParser; import org.mule.runtime.config.spring.parsers.generic.ChildEmbeddedDefinitionParser; import org.mule.runtime.config.spring.parsers.generic.MuleOrphanDefinitionParser; import org.mule.runtime.config.spring.parsers.generic.NameTransferDefinitionParser; import org.mule.runtime.config.spring.parsers.generic.NamedDefinitionParser; import org.mule.runtime.config.spring.parsers.generic.OrphanDefinitionParser; import org.mule.runtime.config.spring.parsers.generic.ParentDefinitionParser; import org.mule.runtime.config.spring.parsers.processors.CheckExclusiveAttributeAndText; import org.mule.runtime.config.spring.parsers.processors.CheckExclusiveAttributes; import org.mule.runtime.config.spring.parsers.processors.CheckExclusiveAttributesAndChildren; import org.mule.runtime.config.spring.parsers.processors.CheckRequiredAttributesWhenNoChildren; import org.mule.runtime.config.spring.parsers.specific.AggregatorDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.AsyncMessageProcessorsDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.ComponentDelegatingDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.ConfigurationDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.DefaultNameMuleOrphanDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.ExceptionStrategyDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.ExceptionTXFilterDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.ExpressionComponentDefintionParser; import org.mule.runtime.config.spring.parsers.specific.ExpressionLanguageDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.ExpressionTransformerDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.FilterDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.FilterRefDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.FlowDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.FlowRefDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.GlobalFunctionsDefintionParser; import org.mule.runtime.config.spring.parsers.specific.GlobalPropertyDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.IgnoreObjectMethodsDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.ImportMapEntryDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.InboundRouterDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.InterceptorDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.InterceptorStackDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.MessageEnricherDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.MessageFilterDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.MessageProcessorChainDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.MessageProcessorDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.MessageProcessorWithDataTypeDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.NotificationDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.NotificationDisableDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.ObjectFactoryDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.PoolingProfileDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.QueueStoreDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.ReferenceExceptionStrategyDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.RegExFilterDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.ResponseDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.RetryNotifierDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.RetryPolicyDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.SecurityFilterDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.SimpleComponentDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.SplitterDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.StaticComponentDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.TransactionDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.TransactionManagerDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.TransformerMessageProcessorDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.TypedPropertyMapEntryDefinitionParser; import org.mule.runtime.config.spring.parsers.specific.XaTransactionDefinitionParser; import org.mule.runtime.config.spring.util.SpringBeanLookup; import org.mule.runtime.core.api.config.MuleProperties; import org.mule.runtime.core.api.model.resolvers.ArrayEntryPointResolver; import org.mule.runtime.core.api.model.resolvers.CallableEntryPointResolver; import org.mule.runtime.core.api.model.resolvers.DefaultEntryPointResolverSet; import org.mule.runtime.core.api.model.resolvers.ExplicitMethodEntryPointResolver; import org.mule.runtime.core.api.model.resolvers.LegacyEntryPointResolverSet; import org.mule.runtime.core.api.model.resolvers.MethodHeaderPropertyEntryPointResolver; import org.mule.runtime.core.api.model.resolvers.NoArgumentsEntryPointResolver; import org.mule.runtime.core.api.model.resolvers.ReflectionEntryPointResolver; import org.mule.runtime.core.api.processor.LoggerMessageProcessor; import org.mule.runtime.core.api.source.MessageSource; import org.mule.runtime.core.component.DefaultJavaComponent; import org.mule.runtime.core.component.PooledJavaComponent; import org.mule.runtime.core.component.SimpleCallableJavaComponent; import org.mule.runtime.core.component.simple.EchoComponent; import org.mule.runtime.core.component.simple.LogComponent; import org.mule.runtime.core.component.simple.NullComponent; import org.mule.runtime.core.context.notification.ListenerSubscriptionPair; import org.mule.runtime.core.el.ExpressionLanguageComponent; import org.mule.runtime.core.enricher.MessageEnricher; import org.mule.runtime.core.enricher.MessageEnricher.EnrichExpressionPair; import org.mule.runtime.core.exception.ErrorHandler; import org.mule.runtime.core.exception.OnErrorContinueHandler; import org.mule.runtime.core.exception.OnErrorPropagateHandler; import org.mule.runtime.core.exception.RedeliveryExceeded; import org.mule.runtime.core.expression.ExpressionConfig; import org.mule.runtime.core.expression.transformers.BeanBuilderTransformer; import org.mule.runtime.core.expression.transformers.ExpressionArgument; import org.mule.runtime.core.expression.transformers.ExpressionTransformer; import org.mule.runtime.core.interceptor.LoggingInterceptor; import org.mule.runtime.core.interceptor.TimerInterceptor; import org.mule.runtime.core.internal.transformer.simple.ObjectToByteArray; import org.mule.runtime.core.internal.transformer.simple.ObjectToString; import org.mule.runtime.core.object.PrototypeObjectFactory; import org.mule.runtime.core.object.SingletonObjectFactory; import org.mule.runtime.core.processor.IdempotentRedeliveryPolicy; import org.mule.runtime.core.processor.InvokerMessageProcessor; import org.mule.runtime.core.processor.simple.AddFlowVariableProcessor; import org.mule.runtime.core.processor.simple.AddPropertyProcessor; import org.mule.runtime.core.processor.simple.RemoveFlowVariableProcessor; import org.mule.runtime.core.processor.simple.RemovePropertyProcessor; import org.mule.runtime.core.processor.simple.SetPayloadMessageProcessor; import org.mule.runtime.core.retry.notifiers.ConnectNotifier; import org.mule.runtime.core.retry.policies.RetryForeverPolicyTemplate; import org.mule.runtime.core.retry.policies.SimpleRetryPolicyTemplate; import org.mule.runtime.core.routing.Splitter; import org.mule.runtime.core.routing.FirstSuccessful; import org.mule.runtime.core.routing.Foreach; import org.mule.runtime.core.routing.IdempotentMessageValidator; import org.mule.runtime.core.routing.IdempotentSecureHashMessageValidator; import org.mule.runtime.core.routing.MessageChunkAggregator; import org.mule.runtime.core.routing.MessageChunkSplitter; import org.mule.runtime.core.routing.Resequencer; import org.mule.runtime.core.routing.RoundRobin; import org.mule.runtime.core.routing.SimpleCollectionAggregator; import org.mule.runtime.core.routing.UntilSuccessful; import org.mule.runtime.core.routing.WireTap; import org.mule.runtime.core.routing.filters.EqualsFilter; import org.mule.runtime.core.routing.filters.ExceptionTypeFilter; import org.mule.runtime.core.routing.filters.ExpressionFilter; import org.mule.runtime.core.routing.filters.MessagePropertyFilter; import org.mule.runtime.core.routing.filters.PayloadTypeFilter; import org.mule.runtime.core.routing.filters.WildcardFilter; import org.mule.runtime.core.routing.filters.logic.AndFilter; import org.mule.runtime.core.routing.filters.logic.NotFilter; import org.mule.runtime.core.routing.filters.logic.OrFilter; import org.mule.runtime.core.routing.outbound.MulticastingRouter; import org.mule.runtime.core.routing.requestreply.SimpleAsyncRequestReplyRequester; import org.mule.runtime.core.security.PasswordBasedEncryptionStrategy; import org.mule.runtime.core.security.SecretKeyEncryptionStrategy; import org.mule.runtime.core.security.UsernamePasswordAuthenticationFilter; import org.mule.runtime.core.security.filters.MuleEncryptionEndpointSecurityFilter; import org.mule.runtime.core.source.scheduler.schedule.FixedFrequencyScheduler; import org.mule.runtime.core.transaction.XaTransactionFactory; import org.mule.runtime.core.transformer.codec.Base64Decoder; import org.mule.runtime.core.transformer.codec.Base64Encoder; import org.mule.runtime.core.transformer.codec.XmlEntityDecoder; import org.mule.runtime.core.transformer.codec.XmlEntityEncoder; import org.mule.runtime.core.transformer.compression.GZipCompressTransformer; import org.mule.runtime.core.transformer.compression.GZipUncompressTransformer; import org.mule.runtime.core.transformer.encryption.DecryptionTransformer; import org.mule.runtime.core.transformer.encryption.EncryptionTransformer; import org.mule.runtime.core.transformer.simple.AutoTransformer; import org.mule.runtime.core.transformer.simple.BeanToMap; import org.mule.runtime.core.transformer.simple.ByteArrayToHexString; import org.mule.runtime.core.transformer.simple.ByteArrayToObject; import org.mule.runtime.core.transformer.simple.ByteArrayToSerializable; import org.mule.runtime.core.transformer.simple.CombineCollectionsTransformer; import org.mule.runtime.core.transformer.simple.CopyPropertiesProcessor; import org.mule.runtime.core.transformer.simple.HexStringToByteArray; import org.mule.runtime.core.transformer.simple.MapToBean; import org.mule.runtime.core.transformer.simple.ParseTemplateTransformer; import org.mule.runtime.core.transformer.simple.SerializableToByteArray; import org.mule.runtime.core.transformer.simple.StringAppendTransformer; /** * This is the core namespace handler for Mule and configures all Mule configuration elements under the * <code>http://www.mulesoft.org/schema/mule/core/${version}</code> Namespace. */ public class MuleNamespaceHandler extends AbstractMuleNamespaceHandler { public static final String PATTERNS_DEPRECATION_MESSAGE = "Patterns module is deprecated and will be removed in Mule 4.0."; public static final String VARIABLE_NAME_ATTRIBUTE = "variableName"; public static final String PROPERTY_NAME_ATTRIBUTE = "propertyName"; public static final String IDENTIFIER_PROPERTY = "identifier"; @Override public void init() { registerIgnoredElement("mule"); registerIgnoredElement("description"); // Common elements registerBeanDefinitionParser("configuration", new ConfigurationDefinitionParser()); registerBeanDefinitionParser("global-property", new GlobalPropertyDefinitionParser()); registerBeanDefinitionParser("custom-agent", new DefaultNameMuleOrphanDefinitionParser()); registerBeanDefinitionParser("expression-language", new ExpressionLanguageDefinitionParser()); registerBeanDefinitionParser("global-functions", new GlobalFunctionsDefintionParser("globalFunctionsString")); registerMuleBeanDefinitionParser("alias", new ChildMapEntryDefinitionParser("aliases")).addAlias("name", "key") .addAlias("expression", "value"); registerMuleBeanDefinitionParser("import", new ImportMapEntryDefinitionParser("import")); // Exception Strategies registerBeanDefinitionParser("on-error-continue", new ExceptionStrategyDefinitionParser(OnErrorContinueHandler.class)); registerBeanDefinitionParser("on-error-propagate", new ExceptionStrategyDefinitionParser(OnErrorPropagateHandler.class)); registerBeanDefinitionParser("on-redelivery-attempts-exceeded", new ChildDefinitionParser("redeliveryExceeded", RedeliveryExceeded.class)); registerBeanDefinitionParser("error-handler", new ExceptionStrategyDefinitionParser(ErrorHandler.class)); registerMuleBeanDefinitionParser("exception-strategy", new ReferenceExceptionStrategyDefinitionParser()); registerBeanDefinitionParser("custom-exception-strategy", new ExceptionStrategyDefinitionParser(null)); registerBeanDefinitionParser("commit-transaction", new ExceptionTXFilterDefinitionParser("commitTxFilter")); registerBeanDefinitionParser("rollback-transaction", new ExceptionTXFilterDefinitionParser("rollbackTxFilter")); // Reconnection Strategies registerBeanDefinitionParser("reconnect", new RetryPolicyDefinitionParser(SimpleRetryPolicyTemplate.class)); registerBeanDefinitionParser("reconnect-forever", new RetryPolicyDefinitionParser(RetryForeverPolicyTemplate.class)); registerBeanDefinitionParser("reconnect-custom-strategy", new RetryPolicyDefinitionParser()); registerBeanDefinitionParser("reconnect-notifier", new RetryNotifierDefinitionParser(ConnectNotifier.class)); registerBeanDefinitionParser("reconnect-custom-notifier", new RetryNotifierDefinitionParser()); // Queue Store registerMuleBeanDefinitionParser("queue-store", new ParentDefinitionParser()) .addAlias(AbstractMuleBeanDefinitionParser.ATTRIBUTE_REF, "queue-store"); registerMuleBeanDefinitionParser("custom-queue-store", new QueueStoreDefinitionParser()).addIgnored("name"); registerBeanDefinitionParser("default-in-memory-queue-store", new QueueStoreDefinitionParser(DefaultMemoryQueueStoreFactoryBean.class)); registerBeanDefinitionParser("default-persistent-queue-store", new QueueStoreDefinitionParser(DefaultPersistentQueueStoreFactoryBean.class)); registerBeanDefinitionParser("pooling-profile", new PoolingProfileDefinitionParser()); registerBeanDefinitionParser("queue-profile", new ChildDefinitionParser("queueProfile", QueueProfileFactoryBean.class)); registerMuleBeanDefinitionParser("notifications", new NamedDefinitionParser(MuleProperties.OBJECT_NOTIFICATION_MANAGER)) .addAlias("dynamic", "notificationDynamic"); registerBeanDefinitionParser("notification", new NotificationDefinitionParser()); registerBeanDefinitionParser("disable-notification", new NotificationDisableDefinitionParser()); registerMuleBeanDefinitionParser("notification-listener", new ChildDefinitionParser("allListenerSubscriptionPair", ListenerSubscriptionPair.class)) .addAlias("ref", "listener").addReference("listener"); // Transformer elements registerMuleBeanDefinitionParser("transformer", new ParentDefinitionParser()) .addAlias(AbstractMuleBeanDefinitionParser.ATTRIBUTE_REF, "messageProcessor"); registerBeanDefinitionParser("custom-transformer", new TransformerMessageProcessorDefinitionParser()); registerBeanDefinitionParser("auto-transformer", new TransformerMessageProcessorDefinitionParser(AutoTransformer.class)); registerMuleBeanDefinitionParser("set-property", new MessageProcessorWithDataTypeDefinitionParser(AddPropertyProcessor.class)) .addAlias(PROPERTY_NAME_ATTRIBUTE, IDENTIFIER_PROPERTY); registerMuleBeanDefinitionParser("remove-property", new MessageProcessorDefinitionParser(RemovePropertyProcessor.class)) .addAlias(PROPERTY_NAME_ATTRIBUTE, IDENTIFIER_PROPERTY); registerBeanDefinitionParser("copy-properties", new MessageProcessorDefinitionParser(CopyPropertiesProcessor.class)); registerMuleBeanDefinitionParser("set-variable", new MessageProcessorWithDataTypeDefinitionParser(AddFlowVariableProcessor.class)) .addAlias(VARIABLE_NAME_ATTRIBUTE, IDENTIFIER_PROPERTY); registerMuleBeanDefinitionParser("remove-variable", new MessageProcessorDefinitionParser(RemoveFlowVariableProcessor.class)) .addAlias(VARIABLE_NAME_ATTRIBUTE, IDENTIFIER_PROPERTY); registerMuleBeanDefinitionParser("expression-transformer", new ExpressionTransformerDefinitionParser(ExpressionTransformer.class)); registerBeanDefinitionParser("return-argument", new ChildDefinitionParser("argument", ExpressionArgument.class)); registerBeanDefinitionParser("bean-builder-transformer", new TransformerMessageProcessorDefinitionParser(BeanBuilderTransformer.class)); final ChildDefinitionParser beanPropertyParser = new ChildDefinitionParser("argument", ExpressionArgument.class); beanPropertyParser.addAlias("property-name", "name"); registerBeanDefinitionParser("bean-property", beanPropertyParser); registerBeanDefinitionParser("base64-encoder-transformer", new TransformerMessageProcessorDefinitionParser(Base64Encoder.class)); registerBeanDefinitionParser("base64-decoder-transformer", new TransformerMessageProcessorDefinitionParser(Base64Decoder.class)); registerBeanDefinitionParser("xml-entity-encoder-transformer", new TransformerMessageProcessorDefinitionParser(XmlEntityEncoder.class)); registerBeanDefinitionParser("xml-entity-decoder-transformer", new TransformerMessageProcessorDefinitionParser(XmlEntityDecoder.class)); registerBeanDefinitionParser("gzip-compress-transformer", new TransformerMessageProcessorDefinitionParser(GZipCompressTransformer.class)); registerBeanDefinitionParser("gzip-uncompress-transformer", new TransformerMessageProcessorDefinitionParser(GZipUncompressTransformer.class)); registerBeanDefinitionParser("encrypt-transformer", new TransformerMessageProcessorDefinitionParser(EncryptionTransformer.class)); registerBeanDefinitionParser("decrypt-transformer", new TransformerMessageProcessorDefinitionParser(DecryptionTransformer.class)); registerBeanDefinitionParser("byte-array-to-hex-string-transformer", new TransformerMessageProcessorDefinitionParser(ByteArrayToHexString.class)); registerBeanDefinitionParser("hex-string-to-byte-array-transformer", new TransformerMessageProcessorDefinitionParser(HexStringToByteArray.class)); registerBeanDefinitionParser("byte-array-to-object-transformer", new TransformerMessageProcessorDefinitionParser(ByteArrayToObject.class)); registerBeanDefinitionParser("object-to-byte-array-transformer", new TransformerMessageProcessorDefinitionParser(ObjectToByteArray.class)); registerBeanDefinitionParser("object-to-string-transformer", new TransformerMessageProcessorDefinitionParser(ObjectToString.class)); registerBeanDefinitionParser("byte-array-to-serializable-transformer", new TransformerMessageProcessorDefinitionParser(ByteArrayToSerializable.class)); registerBeanDefinitionParser("serializable-to-byte-array-transformer", new TransformerMessageProcessorDefinitionParser(SerializableToByteArray.class)); registerBeanDefinitionParser("byte-array-to-string-transformer", new TransformerMessageProcessorDefinitionParser(ObjectToString.class)); registerBeanDefinitionParser("string-to-byte-array-transformer", new TransformerMessageProcessorDefinitionParser(ObjectToByteArray.class)); registerBeanDefinitionParser("parse-template", new MessageProcessorDefinitionParser(ParseTemplateTransformer.class)); registerBeanDefinitionParser("set-payload", new MessageProcessorWithDataTypeDefinitionParser(SetPayloadMessageProcessor.class)); registerBeanDefinitionParser("append-string-transformer", new TransformerMessageProcessorDefinitionParser(StringAppendTransformer.class)); registerBeanDefinitionParser("map-to-bean-transformer", new TransformerMessageProcessorDefinitionParser(MapToBean.class)); registerBeanDefinitionParser("bean-to-map-transformer", new TransformerMessageProcessorDefinitionParser(BeanToMap.class)); registerMuleBeanDefinitionParser("combine-collections-transformer", new TransformerMessageProcessorDefinitionParser(CombineCollectionsTransformer.class)) .addIgnored("name"); // Transaction Managers registerBeanDefinitionParser("custom-transaction-manager", new TransactionManagerDefinitionParser()); registerBeanDefinitionParser("custom-transaction", new TransactionDefinitionParser()); registerBeanDefinitionParser("xa-transaction", new XaTransactionDefinitionParser(XaTransactionFactory.class)); registerBeanDefinitionParser("redelivery-policy", new ChildDefinitionParser("redeliveryPolicy", IdempotentRedeliveryPolicy.class)); // Message Processors registerMuleBeanDefinitionParser("processor", new ParentDefinitionParser()) .addAlias(AbstractMuleBeanDefinitionParser.ATTRIBUTE_REF, "messageProcessor"); registerMuleBeanDefinitionParser("custom-processor", new MessageProcessorDefinitionParser()).addIgnored("name"); registerBeanDefinitionParser("processor-chain", new MessageProcessorChainDefinitionParser()); registerBeanDefinitionParser("sub-flow", new MuleOrphanDefinitionParser(SubflowMessageProcessorChainFactoryBean.class, false)); registerBeanDefinitionParser("response", new ResponseDefinitionParser()); registerMuleBeanDefinitionParser("message-filter", new MessageFilterDefinitionParser()); registerMuleBeanDefinitionParser("invoke", new MessageProcessorDefinitionParser(InvokerMessageProcessor.class)) .addAlias("method", "methodName").addAlias("methodArguments", "argumentExpressionsString") .addAlias("methodArgumentTypes", "ArgumentTypes"); 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", "http://www.mulesoft.org/schema/mule/core")) .addCollection("enrichExpressionPairs"); registerMuleBeanDefinitionParser("enrich", new ChildDefinitionParser("enrichExpressionPair", EnrichExpressionPair.class)); registerBeanDefinitionParser("async", new AsyncMessageProcessorsDefinitionParser()); registerBeanDefinitionParser("transactional", new ChildDefinitionParser("messageProcessor", TryProcessorFactoryBean.class)); registerMuleBeanDefinitionParser("logger", new ChildDefinitionParser("messageProcessor", LoggerMessageProcessor.class)); registerMuleBeanDefinitionParser("expression-component", new ExpressionComponentDefintionParser("messageProcessor", ExpressionLanguageComponent.class)) .registerPreProcessor(new CheckExclusiveAttributeAndText("file")); // Message Sources registerBeanDefinitionParser("custom-source", new ChildDefinitionParser("messageSource", null, MessageSource.class)); registerBeanDefinitionParser("composite-source", new ChildDefinitionParser("messageSource", CompositeMessageSourceFactoryBean.class)); registerBeanDefinitionParser("scheduler", new ChildEmbeddedDefinitionParser(SchedulingMessageSourceFactoryBean.class)); registerBeanDefinitionParser("fixed-frequency-scheduler", new ChildDefinitionParser("scheduler", FixedFrequencyScheduler.class)); 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()); // Flow Constructs registerBeanDefinitionParser("flow", new FlowDefinitionParser()); registerBeanDefinitionParser("flow-ref", new FlowRefDefinitionParser()); // Processing Strategies registerMuleBeanDefinitionParser("custom-processing-strategy", new OrphanDefinitionParser(false)).addIgnored("name"); // Components registerBeanDefinitionParser("component", new ComponentDelegatingDefinitionParser(DefaultJavaComponent.class)); registerBeanDefinitionParser("pooled-component", new ComponentDelegatingDefinitionParser(PooledJavaComponent.class)); // Simple Components 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")); // Routing: Intercepting Message Processors registerMuleBeanDefinitionParser("idempotent-message-validator", new MessageFilterDefinitionParser(IdempotentMessageValidator.class)); registerMuleBeanDefinitionParser("idempotent-secure-hash-message-validator", new MessageFilterDefinitionParser(IdempotentSecureHashMessageValidator.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(Splitter.class)); registerBeanDefinitionParser("message-chunk-splitter", new SplitterDefinitionParser(MessageChunkSplitter.class)); registerBeanDefinitionParser("custom-splitter", new SplitterDefinitionParser()); registerMuleBeanDefinitionParser("foreach", new ChildDefinitionParser("messageProcessor", Foreach.class)) .addAlias("collection", "collectionExpression"); // 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("scatter-gather", new ChildDefinitionParser("messageProcessor", ScatterGatherRouterFactoryBean.class)); registerBeanDefinitionParser("custom-aggregation-strategy", new AggregationStrategyDefinitionParser()); registerBeanDefinitionParser("request-reply", new ChildDefinitionParser("messageProcessor", SimpleAsyncRequestReplyRequester.class)); registerBeanDefinitionParser("first-successful", new ChildDefinitionParser("messageProcessor", FirstSuccessful.class)); registerBeanDefinitionParser("until-successful", new ChildDefinitionParser("messageProcessor", UntilSuccessful.class)); registerBeanDefinitionParser("round-robin", new ChildDefinitionParser("messageProcessor", RoundRobin.class)); registerMuleBeanDefinitionParser("dead-letter-queue", new ParentDefinitionParser()).addAlias("messageProcessor", "deadLetterQueue"); registerBeanDefinitionParser("custom-router", new ChildDefinitionParser("messageProcessor")); // Message Info Mappings registerBeanDefinitionParser("custom-message-info-mapping", new ChildDefinitionParser("messageInfoMapping")); // Common Filters registerMuleBeanDefinitionParser("filter", new FilterRefDefinitionParser()); registerBeanDefinitionParser("and-filter", new FilterDefinitionParser(AndFilter.class)); registerBeanDefinitionParser("or-filter", new FilterDefinitionParser(OrFilter.class)); registerBeanDefinitionParser("not-filter", new FilterDefinitionParser(NotFilter.class)); registerBeanDefinitionParser("regex-filter", new RegExFilterDefinitionParser()); registerBeanDefinitionParser("exception-type-filter", new FilterDefinitionParser(ExceptionTypeFilter.class)); registerBeanDefinitionParser("message-property-filter", new FilterDefinitionParser(MessagePropertyFilter.class)); registerBeanDefinitionParser("payload-type-filter", new FilterDefinitionParser(PayloadTypeFilter.class)); registerBeanDefinitionParser("wildcard-filter", new FilterDefinitionParser(WildcardFilter.class)); registerBeanDefinitionParser("equals-filter", new FilterDefinitionParser(EqualsFilter.class)); registerBeanDefinitionParser("expression-filter", new FilterDefinitionParser(ExpressionFilter.class)); registerBeanDefinitionParser("custom-filter", new FilterDefinitionParser()); // Utils / Standard Types registerMuleBeanDefinitionParser("properties", new ChildMapDefinitionParser("properties")).addCollection("properties"); registerMuleBeanDefinitionParser("property", new ChildMapEntryDefinitionParser("properties")).addCollection("properties"); registerMuleBeanDefinitionParser("add-message-properties", new ChildMapDefinitionParser("addProperties")) .addCollection("addProperties"); registerMuleBeanDefinitionParser("add-message-property", new TypedPropertyMapEntryDefinitionParser("addTypedProperties")) .addCollection("addTypedProperties"); registerMuleBeanDefinitionParser("rename-message-property", new ChildMapEntryDefinitionParser("renameProperties")) .addCollection("renameProperties"); registerBeanDefinitionParser("delete-message-property", new ChildListEntryDefinitionParser("deleteProperties", ChildMapEntryDefinitionParser.KEY)); registerMuleBeanDefinitionParser("jndi-provider-properties", new ChildMapDefinitionParser("jndiProviderProperties")) .addCollection("jndiProviderProperties"); registerMuleBeanDefinitionParser("jndi-provider-property", new ChildMapEntryDefinitionParser("jndiProviderProperties")) .addCollection("jndiProviderProperties"); registerBeanDefinitionParser("environment", new ChildMapDefinitionParser("environment")); registerBeanDefinitionParser("expression", new ChildDefinitionParser("expression", ExpressionConfig.class)); // Security registerMuleBeanDefinitionParser("security-manager", new NamedDefinitionParser(MuleProperties.OBJECT_SECURITY_MANAGER)) .addIgnored("type").addIgnored("name"); registerBeanDefinitionParser("custom-security-provider", new NameTransferDefinitionParser("providers")); registerMuleBeanDefinitionParser("custom-encryption-strategy", new NameTransferDefinitionParser("encryptionStrategies")) .addAlias("strategy", "encryptionStrategy"); registerBeanDefinitionParser("password-encryption-strategy", new ChildDefinitionParser("encryptionStrategy", PasswordBasedEncryptionStrategy.class)); registerMuleBeanDefinitionParser("secret-key-encryption-strategy", new ChildDefinitionParser("encryptionStrategy", SecretKeyEncryptionStrategy.class)) .registerPreProcessor(new CheckExclusiveAttributes(new String[][] {new String[] {"key"}, new String[] {"keyFactory-ref"}})); registerBeanDefinitionParser("encryption-security-filter", new SecurityFilterDefinitionParser(MuleEncryptionEndpointSecurityFilter.class)); registerBeanDefinitionParser("custom-security-filter", new SecurityFilterDefinitionParser()); registerBeanDefinitionParser("username-password-filter", new SecurityFilterDefinitionParser(UsernamePasswordAuthenticationFilter.class)); // Interceptors registerMuleBeanDefinitionParser("interceptor-stack", new InterceptorStackDefinitionParser()); registerBeanDefinitionParser("custom-interceptor", new InterceptorDefinitionParser()); registerBeanDefinitionParser("timer-interceptor", new InterceptorDefinitionParser(TimerInterceptor.class)); registerBeanDefinitionParser("logging-interceptor", new InterceptorDefinitionParser(LoggingInterceptor.class)); } }