View Javadoc

1   /*
2    * $Id: RegistryTransformerLifecycleTestCase.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  package org.mule.transformers.simple;
11  
12  import org.mule.api.lifecycle.Disposable;
13  import org.mule.api.lifecycle.InitialisationException;
14  import org.mule.api.transformer.TransformerException;
15  import org.mule.tck.FunctionalTestCase;
16  import org.mule.transformer.AbstractTransformer;
17  
18  import java.util.ArrayList;
19  import java.util.List;
20  
21  /**
22   * Highlights the issue: MULE-4599 where dispose cannot be called on a transformer since it is a 
23   * prototype in Spring, so spring does not manage the object.
24   */
25  public class RegistryTransformerLifecycleTestCase extends FunctionalTestCase
26  {
27      @Override
28      protected String getConfigResources()
29      {
30          return "simple-transformer-config.xml";
31      }
32  
33      public void testLifecycleInSpring() throws Exception
34      {
35          TransformerLifecycleTracker transformer = 
36              (TransformerLifecycleTracker) muleContext.getRegistry().lookupTransformer("lifecycle");
37          assertNotNull(transformer);
38          
39          muleContext.dispose();
40          assertLifecycle(transformer);
41      }
42  
43      public void testLifecycleInTransientRegistry() throws Exception
44      {
45          TransformerLifecycleTracker transformer = new TransformerLifecycleTracker();
46          transformer.setProperty("foo");
47          muleContext.getRegistry().registerTransformer(transformer);
48          
49          muleContext.dispose();
50          assertLifecycle(transformer);
51      }
52  
53      private void assertLifecycle(TransformerLifecycleTracker transformer)
54      {
55          assertEquals("[setProperty, initialise, dispose]", transformer.getTracker().toString());
56      }
57  
58      public static class TransformerLifecycleTracker extends AbstractTransformer implements Disposable
59      {
60          private final List<String> tracker = new ArrayList<String>();
61  
62          private String property;
63  
64          @Override
65          protected Object doTransform(Object src, String encoding) throws TransformerException
66          {
67              tracker.add("doTransform");
68              return null;
69          }
70  
71          public String getProperty()
72          {
73              return property;
74          }
75  
76          public void setProperty(String property)
77          {
78              tracker.add("setProperty");
79          }
80  
81          public List<String> getTracker()
82          {
83              return tracker;
84          }
85  
86          @Override
87          public void initialise() throws InitialisationException
88          {
89              tracker.add("initialise");
90          }
91  
92          @Override
93          public void dispose()
94          {
95              tracker.add("dispose");
96          }
97      }
98  }