View Javadoc

1   /*
2    * $Id: MuleNamespaceHandler.java 12058 2008-06-16 12:02:56Z rossmason $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  package org.mule.config.spring.handlers;
11  
12  import org.mule.DefaultExceptionStrategy;
13  import org.mule.util.store.InMemoryObjectStore;
14  import org.mule.util.store.TextFileObjectStore;
15  import org.mule.api.config.MuleProperties;
16  import org.mule.component.DefaultJavaComponent;
17  import org.mule.component.PooledJavaComponent;
18  import org.mule.component.SimpleCallableJavaComponent;
19  import org.mule.component.simple.EchoComponent;
20  import org.mule.component.simple.LogComponent;
21  import org.mule.component.simple.NullComponent;
22  import org.mule.component.simple.PassThroughComponent;
23  import org.mule.config.QueueProfile;
24  import org.mule.config.spring.factories.InboundEndpointFactoryBean;
25  import org.mule.config.spring.factories.OutboundEndpointFactoryBean;
26  import org.mule.config.spring.parsers.collection.ChildListDefinitionParser;
27  import org.mule.config.spring.parsers.collection.ChildListEntryDefinitionParser;
28  import org.mule.config.spring.parsers.collection.ChildMapDefinitionParser;
29  import org.mule.config.spring.parsers.collection.ChildMapEntryDefinitionParser;
30  import org.mule.config.spring.parsers.delegate.InheritDefinitionParser;
31  import org.mule.config.spring.parsers.generic.ChildDefinitionParser;
32  import org.mule.config.spring.parsers.generic.MuleOrphanDefinitionParser;
33  import org.mule.config.spring.parsers.generic.NameTransferDefinitionParser;
34  import org.mule.config.spring.parsers.generic.NamedDefinitionParser;
35  import org.mule.config.spring.parsers.generic.OrphanDefinitionParser;
36  import org.mule.config.spring.parsers.generic.ParentDefinitionParser;
37  import org.mule.config.spring.parsers.processors.CheckExclusiveAttributes;
38  import org.mule.config.spring.parsers.specific.BindingDefinitionParser;
39  import org.mule.config.spring.parsers.specific.ComponentDefinitionParser;
40  import org.mule.config.spring.parsers.specific.ComponentDelegatingDefinitionParser;
41  import org.mule.config.spring.parsers.specific.ConfigurationDefinitionParser;
42  import org.mule.config.spring.parsers.specific.DefaultThreadingProfileDefinitionParser;
43  import org.mule.config.spring.parsers.specific.ExceptionTXFilterDefinitionParser;
44  import org.mule.config.spring.parsers.specific.FilterDefinitionParser;
45  import org.mule.config.spring.parsers.specific.GlobalPropertyDefinitionParser;
46  import org.mule.config.spring.parsers.specific.IgnoreObjectMethodsDefinitionParser;
47  import org.mule.config.spring.parsers.specific.ModelDefinitionParser;
48  import org.mule.config.spring.parsers.specific.NotificationDefinitionParser;
49  import org.mule.config.spring.parsers.specific.NotificationDisableDefinitionParser;
50  import org.mule.config.spring.parsers.specific.ObjectFactoryDefinitionParser;
51  import org.mule.config.spring.parsers.specific.PoolingProfileDefinitionParser;
52  import org.mule.config.spring.parsers.specific.RouterDefinitionParser;
53  import org.mule.config.spring.parsers.specific.ServiceDefinitionParser;
54  import org.mule.config.spring.parsers.specific.ServiceOverridesDefinitionParser;
55  import org.mule.config.spring.parsers.specific.SimpleComponentDefinitionParser;
56  import org.mule.config.spring.parsers.specific.ThreadingProfileDefinitionParser;
57  import org.mule.config.spring.parsers.specific.TransactionDefinitionParser;
58  import org.mule.config.spring.parsers.specific.TransactionManagerDefinitionParser;
59  import org.mule.config.spring.parsers.specific.TransformerDefinitionParser;
60  import org.mule.config.spring.parsers.specific.TransformerRefDefinitionParser;
61  import org.mule.config.spring.parsers.specific.endpoint.EndpointRefParser;
62  import org.mule.config.spring.parsers.specific.endpoint.GenericEndpointDefinitionParser;
63  import org.mule.config.spring.parsers.specific.endpoint.support.OrphanEndpointDefinitionParser;
64  import org.mule.config.spring.util.SpringBeanLookup;
65  import org.mule.context.notification.ListenerSubscriptionPair;
66  import org.mule.endpoint.EndpointURIEndpointBuilder;
67  import org.mule.model.resolvers.ArrayEntryPointResolver;
68  import org.mule.model.resolvers.CallableEntryPointResolver;
69  import org.mule.model.resolvers.DefaultEntryPointResolverSet;
70  import org.mule.model.resolvers.ExplicitMethodEntryPointResolver;
71  import org.mule.model.resolvers.LegacyEntryPointResolverSet;
72  import org.mule.model.resolvers.MethodHeaderPropertyEntryPointResolver;
73  import org.mule.model.resolvers.NoArgumentsEntryPointResolver;
74  import org.mule.model.resolvers.ReflectionEntryPointResolver;
75  import org.mule.model.seda.SedaModel;
76  import org.mule.model.seda.SedaService;
77  import org.mule.object.PrototypeObjectFactory;
78  import org.mule.object.SingletonObjectFactory;
79  import org.mule.routing.ExpressionMessageInfoMapping;
80  import org.mule.routing.ForwardingCatchAllStrategy;
81  import org.mule.routing.LoggingCatchAllStrategy;
82  import org.mule.routing.filters.EqualsFilter;
83  import org.mule.routing.filters.ExceptionTypeFilter;
84  import org.mule.routing.filters.ExpressionFilter;
85  import org.mule.routing.filters.MessagePropertyFilter;
86  import org.mule.routing.filters.PayloadTypeFilter;
87  import org.mule.routing.filters.RegExFilter;
88  import org.mule.routing.filters.WildcardFilter;
89  import org.mule.routing.filters.logic.AndFilter;
90  import org.mule.routing.filters.logic.NotFilter;
91  import org.mule.routing.filters.logic.OrFilter;
92  import org.mule.routing.inbound.CorrelationEventResequencer;
93  import org.mule.routing.inbound.DefaultInboundRouterCollection;
94  import org.mule.routing.inbound.ForwardingConsumer;
95  import org.mule.routing.inbound.IdempotentReceiver;
96  import org.mule.routing.inbound.IdempotentSecureHashReceiver;
97  import org.mule.routing.inbound.InboundPassThroughRouter;
98  import org.mule.routing.inbound.MessageChunkingAggregator;
99  import org.mule.routing.inbound.SelectiveConsumer;
100 import org.mule.routing.inbound.SimpleCollectionAggregator;
101 import org.mule.routing.inbound.WireTap;
102 import org.mule.routing.nested.DefaultNestedRouter;
103 import org.mule.routing.outbound.ChainingRouter;
104 import org.mule.routing.outbound.DefaultOutboundRouterCollection;
105 import org.mule.routing.outbound.EndpointSelector;
106 import org.mule.routing.outbound.ExceptionBasedRouter;
107 import org.mule.routing.outbound.FilteringListMessageSplitter;
108 import org.mule.routing.outbound.FilteringOutboundRouter;
109 import org.mule.routing.outbound.MessageChunkingRouter;
110 import org.mule.routing.outbound.MulticastingRouter;
111 import org.mule.routing.outbound.OutboundPassThroughRouter;
112 import org.mule.routing.outbound.StaticRecipientList;
113 import org.mule.routing.outbound.TemplateEndpointRouter;
114 import org.mule.routing.response.DefaultResponseRouterCollection;
115 import org.mule.routing.response.SimpleCollectionResponseAggregator;
116 import org.mule.routing.response.SingleResponseRouter;
117 import org.mule.security.PasswordBasedEncryptionStrategy;
118 import org.mule.security.SecretKeyEncryptionStrategy;
119 import org.mule.security.filters.MuleEncryptionEndpointSecurityFilter;
120 import org.mule.service.DefaultServiceExceptionStrategy;
121 import org.mule.transaction.lookup.GenericTransactionManagerLookupFactory;
122 import org.mule.transaction.lookup.JBossTransactionManagerLookupFactory;
123 import org.mule.transaction.lookup.JRunTransactionManagerLookupFactory;
124 import org.mule.transaction.lookup.Resin3TransactionManagerLookupFactory;
125 import org.mule.transaction.lookup.WeblogicTransactionManagerLookupFactory;
126 import org.mule.transaction.lookup.WebsphereTransactionManagerLookupFactory;
127 import org.mule.transformer.NoActionTransformer;
128 import org.mule.transformer.codec.Base64Decoder;
129 import org.mule.transformer.codec.Base64Encoder;
130 import org.mule.transformer.codec.XmlEntityDecoder;
131 import org.mule.transformer.codec.XmlEntityEncoder;
132 import org.mule.transformer.compression.GZipCompressTransformer;
133 import org.mule.transformer.compression.GZipUncompressTransformer;
134 import org.mule.transformer.encryption.DecryptionTransformer;
135 import org.mule.transformer.encryption.EncryptionTransformer;
136 import org.mule.transformer.simple.AutoTransformer;
137 import org.mule.transformer.simple.ByteArrayToHexString;
138 import org.mule.transformer.simple.ByteArrayToObject;
139 import org.mule.transformer.simple.ByteArrayToSerializable;
140 import org.mule.transformer.simple.ExpressionTransformer;
141 import org.mule.transformer.simple.HexStringToByteArray;
142 import org.mule.transformer.simple.MessagePropertiesTransformer;
143 import org.mule.transformer.simple.ObjectToByteArray;
144 import org.mule.transformer.simple.ObjectToString;
145 import org.mule.transformer.simple.SerializableToByteArray;
146 import org.mule.transformer.simple.StringAppendTransformer;
147 
148 /**
149  * This is the core namespace handler for Mule and configures all Mule configuration elements under the
150  * <code>http://www.mulesource.org/schema/mule/core/2.0</code> Namespace.
151  */
152 public class MuleNamespaceHandler extends AbstractMuleNamespaceHandler
153 {
154 
155     public void init()
156     {
157         registerIgnoredElement("mule");
158         registerIgnoredElement("description");
159 
160         //Common elements
161         registerBeanDefinitionParser("configuration", new ConfigurationDefinitionParser());
162         registerBeanDefinitionParser("global-property", new GlobalPropertyDefinitionParser());
163         registerBeanDefinitionParser("default-threading-profile", new DefaultThreadingProfileDefinitionParser(MuleProperties.OBJECT_DEFAULT_THREADING_PROFILE));
164         registerBeanDefinitionParser("default-dispatcher-threading-profile", new DefaultThreadingProfileDefinitionParser(MuleProperties.OBJECT_DEFAULT_MESSAGE_DISPATCHER_THREADING_PROFILE));
165         registerBeanDefinitionParser("default-receiver-threading-profile", new DefaultThreadingProfileDefinitionParser(MuleProperties.OBJECT_DEFAULT_MESSAGE_RECEIVER_THREADING_PROFILE));
166         registerBeanDefinitionParser("default-component-threading-profile", new DefaultThreadingProfileDefinitionParser(MuleProperties.OBJECT_DEFAULT_COMPONENT_THREADING_PROFILE));
167         registerBeanDefinitionParser("component-threading-profile", new ThreadingProfileDefinitionParser("threadingProfile", MuleProperties.OBJECT_DEFAULT_COMPONENT_THREADING_PROFILE));
168         registerBeanDefinitionParser("custom-exception-strategy", new ChildDefinitionParser("exceptionListener", null));
169         registerBeanDefinitionParser("default-service-exception-strategy", new ChildDefinitionParser("exceptionListener", DefaultServiceExceptionStrategy.class));
170         registerBeanDefinitionParser("commit-transaction", new ExceptionTXFilterDefinitionParser("commitTxFilter"));
171         registerBeanDefinitionParser("rollback-transaction", new ExceptionTXFilterDefinitionParser("rollbackTxFilter"));
172 
173         registerBeanDefinitionParser("default-connector-exception-strategy", new ChildDefinitionParser("exceptionListener", DefaultExceptionStrategy.class));
174         registerBeanDefinitionParser("pooling-profile", new PoolingProfileDefinitionParser());
175         registerBeanDefinitionParser("queue-profile", new ChildDefinitionParser("queueProfile", QueueProfile.class));
176         registerMuleBeanDefinitionParser("notifications", new NamedDefinitionParser(MuleProperties.OBJECT_NOTIFICATION_MANAGER)).addAlias("dynamic", "notificationDynamic");
177         registerBeanDefinitionParser("notification", new NotificationDefinitionParser());
178         registerBeanDefinitionParser("disable-notification", new NotificationDisableDefinitionParser());
179         registerMuleBeanDefinitionParser("notification-listener", new ChildDefinitionParser("allListenerSubscriptionPair", ListenerSubscriptionPair.class)).addAlias("ref", "listener").addReference("listener");
180 
181         //Connector elements
182         registerBeanDefinitionParser("dispatcher-threading-profile", new ThreadingProfileDefinitionParser("dispatcherThreadingProfile", MuleProperties.OBJECT_DEFAULT_MESSAGE_DISPATCHER_THREADING_PROFILE));
183         registerBeanDefinitionParser("receiver-threading-profile", new ThreadingProfileDefinitionParser("receiverThreadingProfile", MuleProperties.OBJECT_DEFAULT_MESSAGE_RECEIVER_THREADING_PROFILE));
184         registerBeanDefinitionParser("service-overrides", new ServiceOverridesDefinitionParser());
185         registerBeanDefinitionParser("custom-connector", new MuleOrphanDefinitionParser(true));
186 
187         //Transformer elements
188         registerBeanDefinitionParser("transformers", new ParentDefinitionParser());
189 
190         registerMuleBeanDefinitionParser("response-transformers", new ParentDefinitionParser());
191         registerBeanDefinitionParser("transformer", new TransformerRefDefinitionParser());
192 
193         registerBeanDefinitionParser("custom-transformer", new TransformerDefinitionParser());
194         registerBeanDefinitionParser("auto-transformer", new TransformerDefinitionParser(AutoTransformer.class));
195         registerBeanDefinitionParser("no-action-transformer", new TransformerDefinitionParser(NoActionTransformer.class));
196         registerBeanDefinitionParser("message-properties-transformer", new TransformerDefinitionParser(MessagePropertiesTransformer.class));
197 
198         registerBeanDefinitionParser("expression-transformer", new TransformerDefinitionParser(ExpressionTransformer.class));
199         registerBeanDefinitionParser("return-argument", new ChildDefinitionParser("argument", ExpressionTransformer.Argument.class));
200 
201         registerBeanDefinitionParser("base64-encoder-transformer", new TransformerDefinitionParser(Base64Encoder.class));
202         registerBeanDefinitionParser("base64-decoder-transformer", new TransformerDefinitionParser(Base64Decoder.class));
203 
204         registerBeanDefinitionParser("xml-entity-encoder-transformer", new TransformerDefinitionParser(XmlEntityEncoder.class));
205         registerBeanDefinitionParser("xml-entity-decoder-transformer", new TransformerDefinitionParser(XmlEntityDecoder.class));
206         registerBeanDefinitionParser("gzip-compress-transformer", new TransformerDefinitionParser(GZipCompressTransformer.class));
207         registerBeanDefinitionParser("gzip-uncompress-transformer", new TransformerDefinitionParser(GZipUncompressTransformer.class));
208         registerBeanDefinitionParser("encrypt-transformer", new TransformerDefinitionParser(EncryptionTransformer.class));
209         registerBeanDefinitionParser("decrypt-transformer", new TransformerDefinitionParser(DecryptionTransformer.class));
210         registerBeanDefinitionParser("byte-array-to-hex-string-transformer", new TransformerDefinitionParser(ByteArrayToHexString.class));
211         registerBeanDefinitionParser("hex-string-to-byte-array-transformer", new TransformerDefinitionParser(HexStringToByteArray.class));
212 
213         registerBeanDefinitionParser("byte-array-to-object-transformer", new TransformerDefinitionParser(ByteArrayToObject.class));
214         registerBeanDefinitionParser("object-to-byte-array-transformer", new TransformerDefinitionParser(ObjectToByteArray.class));
215         registerBeanDefinitionParser("object-to-string-transformer", new TransformerDefinitionParser(ObjectToString.class));
216         registerBeanDefinitionParser("byte-array-to-serializable-transformer", new TransformerDefinitionParser(ByteArrayToSerializable.class));
217         registerBeanDefinitionParser("serializable-to-byte-array-transformer", new TransformerDefinitionParser(SerializableToByteArray.class));
218         registerBeanDefinitionParser("byte-array-to-string-transformer", new TransformerDefinitionParser(ObjectToString.class));
219         registerBeanDefinitionParser("string-to-byte-array-transformer", new TransformerDefinitionParser(ObjectToByteArray.class));
220 
221         registerBeanDefinitionParser("append-string-transformer", new TransformerDefinitionParser(StringAppendTransformer.class));
222 
223         //Transaction Managers
224         registerBeanDefinitionParser("custom-transaction-manager", new TransactionManagerDefinitionParser());
225         registerBeanDefinitionParser("jndi-transaction-manager", new TransactionManagerDefinitionParser(GenericTransactionManagerLookupFactory.class));
226         registerBeanDefinitionParser("weblogic-transaction-manager", new TransactionManagerDefinitionParser(WeblogicTransactionManagerLookupFactory.class));
227         registerBeanDefinitionParser("jboss-transaction-manager", new TransactionManagerDefinitionParser(JBossTransactionManagerLookupFactory.class));
228         registerBeanDefinitionParser("jrun-transaction-manager", new TransactionManagerDefinitionParser(JRunTransactionManagerLookupFactory.class));
229         registerBeanDefinitionParser("resin-transaction-manager", new TransactionManagerDefinitionParser(Resin3TransactionManagerLookupFactory.class));
230         registerBeanDefinitionParser("websphere-transaction-manager", new TransactionManagerDefinitionParser(WebsphereTransactionManagerLookupFactory.class));
231 
232         //Endpoint elements
233         registerBeanDefinitionParser("endpoint", new OrphanEndpointDefinitionParser(EndpointURIEndpointBuilder.class));
234         registerBeanDefinitionParser("inbound-endpoint", new GenericEndpointDefinitionParser(InboundEndpointFactoryBean.class));
235         registerBeanDefinitionParser("outbound-endpoint", new GenericEndpointDefinitionParser(OutboundEndpointFactoryBean.class));
236         registerBeanDefinitionParser("custom-transaction", new TransactionDefinitionParser());
237 
238         // Models
239         registerBeanDefinitionParser("model", new ModelDefinitionParser());
240         registerBeanDefinitionParser("seda-model", new InheritDefinitionParser(new OrphanDefinitionParser(SedaModel.class, true), new NamedDefinitionParser()));
241 
242         registerBeanDefinitionParser("entry-point-resolver-set", new ChildDefinitionParser("entryPointResolverSet", DefaultEntryPointResolverSet.class));
243         registerBeanDefinitionParser("legacy-entry-point-resolver-set", new ChildDefinitionParser("entryPointResolverSet", LegacyEntryPointResolverSet.class));
244         registerBeanDefinitionParser("custom-entry-point-resolver-set", new ChildDefinitionParser("entryPointResolverSet"));
245 
246         registerBeanDefinitionParser("custom-entry-point-resolver", new ChildDefinitionParser("entryPointResolver"));
247         registerBeanDefinitionParser("callable-entry-point-resolver", new ChildDefinitionParser("entryPointResolver", CallableEntryPointResolver.class));
248         registerMuleBeanDefinitionParser("property-entry-point-resolver", new ChildDefinitionParser("entryPointResolver", MethodHeaderPropertyEntryPointResolver.class)).addAlias("property", "methodProperty");
249         registerBeanDefinitionParser("method-entry-point-resolver", new ChildDefinitionParser("entryPointResolver", ExplicitMethodEntryPointResolver.class));
250         registerBeanDefinitionParser("reflection-entry-point-resolver", new ChildDefinitionParser("entryPointResolver", ReflectionEntryPointResolver.class));
251         registerBeanDefinitionParser("no-arguments-entry-point-resolver", new ChildDefinitionParser("entryPointResolver", NoArgumentsEntryPointResolver.class));
252         registerBeanDefinitionParser("array-entry-point-resolver", new ChildDefinitionParser("entryPointResolver", ArrayEntryPointResolver.class));
253         registerMuleBeanDefinitionParser("include-entry-point", new ParentDefinitionParser());
254         registerMuleBeanDefinitionParser("exclude-entry-point", new ParentDefinitionParser()).addAlias("method", "ignoredMethod");
255         registerMuleBeanDefinitionParser("exclude-object-methods", new IgnoreObjectMethodsDefinitionParser());
256  
257         // Services
258         registerBeanDefinitionParser("seda-service", new ServiceDefinitionParser(SedaService.class));
259         registerBeanDefinitionParser("service", new ServiceDefinitionParser(SedaService.class));
260         registerBeanDefinitionParser("custom-service", new ServiceDefinitionParser());
261 
262         // Components
263         registerBeanDefinitionParser("component", new ComponentDelegatingDefinitionParser(DefaultJavaComponent.class));
264         registerBeanDefinitionParser("pooled-component", new ComponentDelegatingDefinitionParser(PooledJavaComponent.class));
265 
266         registerMuleBeanDefinitionParser("binding", new BindingDefinitionParser("nestedRouter.routers", DefaultNestedRouter.class)).addCollection("nestedRouter.routers");
267 
268         // Simple Components
269         registerBeanDefinitionParser("bridge-component", new ComponentDefinitionParser(PassThroughComponent.class));
270         registerBeanDefinitionParser("pass-through-component", new ComponentDefinitionParser(PassThroughComponent.class));
271         registerBeanDefinitionParser("log-component", new SimpleComponentDefinitionParser(SimpleCallableJavaComponent.class, LogComponent.class));
272         registerBeanDefinitionParser("null-component",new SimpleComponentDefinitionParser(SimpleCallableJavaComponent.class, NullComponent.class));
273         
274         // We need to use DefaultJavaComponent for the echo comonent because some tests invoke EchoComponent with method name and therefore we need an entry point resolver
275         registerBeanDefinitionParser("echo-component", new SimpleComponentDefinitionParser(DefaultJavaComponent.class, EchoComponent.class));
276 
277         // Object Factories
278         registerBeanDefinitionParser("singleton-object", new ObjectFactoryDefinitionParser(SingletonObjectFactory.class, "objectFactory"));
279         registerBeanDefinitionParser("prototype-object", new ObjectFactoryDefinitionParser(PrototypeObjectFactory.class, "objectFactory"));
280         registerBeanDefinitionParser("spring-object", new ObjectFactoryDefinitionParser(SpringBeanLookup.class, "objectFactory"));
281 
282         // Life-cycle Adapters Factories
283         registerBeanDefinitionParser("custom-lifecycle-adapter-factory", new ChildDefinitionParser("lifecycleAdapterFactory"));
284 
285         //Stores
286         registerBeanDefinitionParser("in-memory-store", new ChildDefinitionParser("store", InMemoryObjectStore.class));
287         registerBeanDefinitionParser("simple-text-file-store", new ChildDefinitionParser("store", TextFileObjectStore.class));
288 
289         //Routers
290         registerBeanDefinitionParser("inbound", new ChildDefinitionParser("inboundRouter", DefaultInboundRouterCollection.class));
291         registerBeanDefinitionParser("outbound", new ChildDefinitionParser("outboundRouter", DefaultOutboundRouterCollection.class));
292         registerBeanDefinitionParser("async-reply", new ChildDefinitionParser("responseRouter", DefaultResponseRouterCollection.class));
293 
294         //Inbound Routers
295         registerBeanDefinitionParser("forwarding-router", new RouterDefinitionParser(ForwardingConsumer.class));
296         registerBeanDefinitionParser("inbound-pass-through-router", new RouterDefinitionParser(InboundPassThroughRouter.class));
297         registerBeanDefinitionParser("idempotent-receiver-router", new RouterDefinitionParser(IdempotentReceiver.class));
298         registerBeanDefinitionParser("idempotent-secure-hash-receiver-router", new RouterDefinitionParser(IdempotentSecureHashReceiver.class));
299         registerBeanDefinitionParser("selective-consumer-router", new RouterDefinitionParser(SelectiveConsumer.class));
300         registerBeanDefinitionParser("wire-tap-router", new RouterDefinitionParser(WireTap.class));
301         registerBeanDefinitionParser("custom-correlation-aggregator-router", new RouterDefinitionParser());
302         registerBeanDefinitionParser("collection-aggregator-router", new RouterDefinitionParser(SimpleCollectionAggregator.class));
303         registerBeanDefinitionParser("message-chunking-aggregator-router", new RouterDefinitionParser(MessageChunkingAggregator.class));
304         registerBeanDefinitionParser("correlation-resequencer-router", new RouterDefinitionParser(CorrelationEventResequencer.class));
305         registerBeanDefinitionParser("custom-inbound-router", new RouterDefinitionParser(null));
306 
307         //Outbound Routers
308         registerBeanDefinitionParser("outbound-pass-through-router", new RouterDefinitionParser(OutboundPassThroughRouter.class));
309         registerBeanDefinitionParser("filtering-router", new RouterDefinitionParser(FilteringOutboundRouter.class));
310         registerBeanDefinitionParser("chaining-router", new RouterDefinitionParser(ChainingRouter.class));
311         registerBeanDefinitionParser("endpoint-selector-router", new RouterDefinitionParser(EndpointSelector.class));
312         registerBeanDefinitionParser("exception-based-router", new RouterDefinitionParser(ExceptionBasedRouter.class));
313         registerBeanDefinitionParser("list-message-splitter-router", new RouterDefinitionParser(FilteringListMessageSplitter.class));
314         registerBeanDefinitionParser("message-chunking-router", new RouterDefinitionParser(MessageChunkingRouter.class));
315         registerBeanDefinitionParser("multicasting-router", new RouterDefinitionParser(MulticastingRouter.class));
316         registerBeanDefinitionParser("static-recipient-list-router", new RouterDefinitionParser(StaticRecipientList.class));
317         registerBeanDefinitionParser("recipients", new ChildListDefinitionParser("recipients"));
318         registerBeanDefinitionParser("template-endpoint-router", new RouterDefinitionParser(TemplateEndpointRouter.class));
319         registerBeanDefinitionParser("custom-outbound-router", new RouterDefinitionParser(null));
320         registerBeanDefinitionParser("reply-to", new EndpointRefParser("replyTo"));
321 
322         //Response Routers
323         registerBeanDefinitionParser("custom-async-reply-router", new RouterDefinitionParser(null));
324         registerBeanDefinitionParser("single-async-reply-router", new RouterDefinitionParser(SingleResponseRouter.class));
325         registerBeanDefinitionParser("collection-async-reply-router", new RouterDefinitionParser(SimpleCollectionResponseAggregator.class));
326 
327         //Message Info Mappings
328         registerBeanDefinitionParser("expression-message-info-mapping", new ChildDefinitionParser("messageInfoMapping", ExpressionMessageInfoMapping.class));
329         registerBeanDefinitionParser("custom-message-info-mapping", new ChildDefinitionParser("messageInfoMapping"));
330 
331         //Catch all Strategies
332         registerBeanDefinitionParser("logging-catch-all-strategy", new ChildDefinitionParser("catchAllStrategy", LoggingCatchAllStrategy.class));
333         registerBeanDefinitionParser("custom-catch-all-strategy", new ChildDefinitionParser("catchAllStrategy", null));
334         registerBeanDefinitionParser("forwarding-catch-all-strategy", new ChildDefinitionParser("catchAllStrategy", ForwardingCatchAllStrategy.class));
335         registerBeanDefinitionParser("custom-forwarding-catch-all-strategy", new ChildDefinitionParser("catchAllStrategy", null));
336 
337         //Common Filters
338         registerMuleBeanDefinitionParser("filter", new ParentDefinitionParser()).addAlias("ref", "filter");
339         registerBeanDefinitionParser("and-filter", new FilterDefinitionParser(AndFilter.class));
340         registerBeanDefinitionParser("or-filter", new FilterDefinitionParser(OrFilter.class));
341         registerBeanDefinitionParser("not-filter", new FilterDefinitionParser(NotFilter.class));
342         registerBeanDefinitionParser("regex-filter", new FilterDefinitionParser(RegExFilter.class));
343         registerBeanDefinitionParser("exception-type-filter", new FilterDefinitionParser(ExceptionTypeFilter.class));
344         registerBeanDefinitionParser("message-property-filter", new FilterDefinitionParser(MessagePropertyFilter.class));
345         registerBeanDefinitionParser("payload-type-filter", new FilterDefinitionParser(PayloadTypeFilter.class));
346         registerBeanDefinitionParser("wildcard-filter", new FilterDefinitionParser(WildcardFilter.class));
347         registerBeanDefinitionParser("equals-filter", new FilterDefinitionParser(EqualsFilter.class));
348         registerBeanDefinitionParser("expression-filter", new FilterDefinitionParser(ExpressionFilter.class));
349         registerBeanDefinitionParser("custom-filter", new FilterDefinitionParser());
350 
351         //Utils / Standard Types
352         registerMuleBeanDefinitionParser("properties", new ChildMapDefinitionParser("properties")).addCollection("properties");
353         registerMuleBeanDefinitionParser("property", new ChildMapEntryDefinitionParser("properties")).addCollection("properties");
354         registerMuleBeanDefinitionParser("add-message-properties", new ChildMapDefinitionParser("addProperties")).addCollection("addProperties");
355         registerMuleBeanDefinitionParser("add-message-property", new ChildMapEntryDefinitionParser("addProperties")).addCollection("addProperties");
356         registerBeanDefinitionParser("delete-message-property", new ChildListEntryDefinitionParser("deleteProperties", ChildMapEntryDefinitionParser.KEY));
357         registerMuleBeanDefinitionParser("jndi-provider-properties", new ChildMapDefinitionParser("jndiProviderProperties")).addCollection("jndiProviderProperties");
358         registerMuleBeanDefinitionParser("jndi-provider-property", new ChildMapEntryDefinitionParser("jndiProviderProperties")).addCollection("jndiProviderProperties");
359         registerBeanDefinitionParser("environment", new ChildMapDefinitionParser("environment"));
360 
361         //Security
362         registerMuleBeanDefinitionParser("security-manager", new NamedDefinitionParser(MuleProperties.OBJECT_SECURITY_MANAGER)).addIgnored("type").addIgnored("name");
363         registerBeanDefinitionParser("custom-security-provider", new NameTransferDefinitionParser("providers"));
364         registerMuleBeanDefinitionParser("custom-encryption-strategy", new NameTransferDefinitionParser("encryptionStrategies")).addAlias("strategy", "encryptionStrategy");
365         registerBeanDefinitionParser("password-encryption-strategy", new ChildDefinitionParser("encryptionStrategy", PasswordBasedEncryptionStrategy.class));
366         registerMuleBeanDefinitionParser("secret-key-encryption-strategy", new ChildDefinitionParser("encryptionStrategy", SecretKeyEncryptionStrategy.class)).registerPreProcessor(new CheckExclusiveAttributes(new String[][]{new String[]{"key"}, new String[]{"keyFactory-ref"}}));
367         registerBeanDefinitionParser("encryption-security-filter", new ChildDefinitionParser("securityFilter", MuleEncryptionEndpointSecurityFilter.class));
368     }
369     
370 }