View Javadoc

1   /*
2    * $Id: ParsersTestNamespaceHandler.java 20321 2010-11-24 15:21:24Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.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  
11  package org.mule.config.spring.parsers;
12  
13  import org.mule.config.spring.factories.InboundEndpointFactoryBean;
14  import org.mule.config.spring.handlers.AbstractMuleNamespaceHandler;
15  import org.mule.config.spring.parsers.beans.ChildBean;
16  import org.mule.config.spring.parsers.beans.OrphanBean;
17  import org.mule.config.spring.parsers.collection.ChildListEntryDefinitionParser;
18  import org.mule.config.spring.parsers.collection.ChildMapDefinitionParser;
19  import org.mule.config.spring.parsers.collection.ChildMapEntryDefinitionParser;
20  import org.mule.config.spring.parsers.collection.ChildSingletonMapDefinitionParser;
21  import org.mule.config.spring.parsers.delegate.InheritDefinitionParser;
22  import org.mule.config.spring.parsers.delegate.MapDefinitionParserMutator;
23  import org.mule.config.spring.parsers.delegate.SingleParentFamilyDefinitionParser;
24  import org.mule.config.spring.parsers.generic.ChildDefinitionParser;
25  import org.mule.config.spring.parsers.generic.NamedDefinitionParser;
26  import org.mule.config.spring.parsers.generic.OrphanDefinitionParser;
27  import org.mule.config.spring.parsers.generic.ParentDefinitionParser;
28  import org.mule.config.spring.parsers.specific.endpoint.TransportEndpointDefinitionParser;
29  import org.mule.config.spring.parsers.specific.endpoint.TransportGlobalEndpointDefinitionParser;
30  import org.mule.config.spring.parsers.specific.endpoint.support.AddressedEndpointDefinitionParser;
31  import org.mule.config.spring.parsers.specific.endpoint.support.ChildAddressDefinitionParser;
32  import org.mule.config.spring.parsers.specific.endpoint.support.ChildEndpointDefinitionParser;
33  import org.mule.config.spring.parsers.specific.endpoint.support.OrphanEndpointDefinitionParser;
34  import org.mule.endpoint.EndpointURIEndpointBuilder;
35  
36  /**
37   * Registers a Bean Definition Parser for handling <code><parsers-test:...></code> elements.
38   *
39   */
40  public class ParsersTestNamespaceHandler extends AbstractMuleNamespaceHandler
41  {
42  
43      public void init()
44      {
45          registerMuleBeanDefinitionParser("orphan", new OrphanDefinitionParser(OrphanBean.class, true)).addAlias("bar", "foo").addIgnored("ignored").addCollection("offspring");
46          registerMuleBeanDefinitionParser("child", new ChildDefinitionParser("child", ChildBean.class)).addAlias("bar", "foo").addIgnored("ignored").addCollection("offspring");
47          registerMuleBeanDefinitionParser("mapped-child", new MapDefinitionParserMutator("map", new ChildDefinitionParser("child", ChildBean.class))).addAlias("bar", "foo").addIgnored("ignored").addCollection("offspring");
48          registerMuleBeanDefinitionParser("kid", new ChildDefinitionParser("kid", ChildBean.class)).addAlias("bar", "foo").addIgnored("ignored");
49          registerMuleBeanDefinitionParser("parent", new ParentDefinitionParser()).addAlias("bar", "foo").addIgnored("ignored").addCollection("offspring");
50          registerMuleBeanDefinitionParser("orphan1", new NamedDefinitionParser("orphan1")).addAlias("bar", "foo").addIgnored("ignored").addCollection("offspring");
51          registerMuleBeanDefinitionParser("orphan2", new NamedDefinitionParser("orphan2")).addAlias("bar", "foo").addIgnored("ignored");
52          registerMuleBeanDefinitionParser("map-entry", new ChildMapEntryDefinitionParser("map", "key", "value")).addCollection("map");
53          registerMuleBeanDefinitionParser("map-entry-combiner", new ChildSingletonMapDefinitionParser("map")).addCollection("map");
54          registerMuleBeanDefinitionParser("properties", new ChildMapDefinitionParser("map")).addCollection("map");
55          registerBeanDefinitionParser("list-entry", new ChildListEntryDefinitionParser("list"));
56          registerMuleBeanDefinitionParser("named", new NamedDefinitionParser()).addAlias("bar", "foo").addIgnored("ignored");
57          registerMuleBeanDefinitionParser("inherit",
58                  new InheritDefinitionParser(
59                          new OrphanDefinitionParser(OrphanBean.class, true),
60                          new NamedDefinitionParser())).addAlias("bar", "foo").addIgnored("ignored").addCollection("offspring");
61  
62          registerMuleBeanDefinitionParser("address", new ChildAddressDefinitionParser("test")).addAlias("address", "host");
63          registerBeanDefinitionParser("orphan-endpoint", new OrphanEndpointDefinitionParser(EndpointURIEndpointBuilder.class));
64          registerBeanDefinitionParser("child-endpoint", new ChildEndpointDefinitionParser(InboundEndpointFactoryBean.class));
65          registerBeanDefinitionParser("unaddressed-orphan-endpoint", new OrphanEndpointDefinitionParser(EndpointURIEndpointBuilder.class));
66          registerBeanDefinitionParser("addressed-orphan-endpoint", new AddressedEndpointDefinitionParser("test", AddressedEndpointDefinitionParser.PROTOCOL, new OrphanEndpointDefinitionParser(EndpointURIEndpointBuilder.class), new String[]{"path"}, new String[]{}));
67          registerBeanDefinitionParser("addressed-child-endpoint", new TransportEndpointDefinitionParser("test", InboundEndpointFactoryBean.class, new String[]{}));
68  
69          registerBeanDefinitionParser("list-element-test-1", new ChildListEntryDefinitionParser("kids", "listAttribute"));
70          registerBeanDefinitionParser("list-element-test-2",
71                  new SingleParentFamilyDefinitionParser(
72                          new OrphanDefinitionParser(OrphanBean.class, true))
73                          .addChildDelegate("kid1", new ChildListEntryDefinitionParser("kids", "kid1"))
74                          .addChildDelegate("kid2", new ChildListEntryDefinitionParser("kids", "kid2")));
75          // simpler list element parser doesn't support dynamic attribute
76  //        registerBeanDefinitionParser("list-element-test-3", new AllAttributeChildDefinitionParser(new ChildListEntryDefinitionParser("kids")));
77  
78          // TODO ComplexComponentDefinitionParser is not longer used, is there any way to rewrite/reuse the "factory" element for testing?
79  //         registerBeanDefinitionParser("factory",
80  //                new ComplexComponentDefinitionParser(
81  //                        new SimpleComponentDefinitionParser(ChildBean.class),
82  //                        (ChildDefinitionParser) new ChildDefinitionParser("child", ChildBean.class).addAlias("bar", "foo").addIgnored("ignored").addCollection("offspring")));
83  
84          registerMuleBeanDefinitionParser("complex-endpoint",
85                  new TransportGlobalEndpointDefinitionParser(
86                          "test", TransportGlobalEndpointDefinitionParser.PROTOCOL,
87                          new String[]{"path"}, new String[]{"string", "bar"})).addAlias("bar", "foo");
88  
89          registerBeanDefinitionParser("no-name", new OrphanDefinitionParser(OrphanBean.class, true));
90          registerBeanDefinitionParser("no-name-2", new IndependentDefinitionParser());
91          registerBeanDefinitionParser("container", new ThirdPartyContainerDefinitionParser());
92      }
93  
94  }