View Javadoc

1   /*
2    * Copyright (C) The Apache Software Foundation. All rights reserved.
3    *
4    * This software is published under the terms of the Apache Software License
5    * version 1.1, a copy of which has been included with this distribution in
6    * the LICENSE file.
7    * 
8    * $Id: MessengerDigester.java 155459 2005-02-26 13:24:44Z dirkv $
9    */
10  package org.apache.commons.messenger;
11  
12  import org.apache.commons.digester.Digester;
13  
14  /** <p><code>MessengerDigester</code> is a digester of Messenger objects so 
15    * that JMS Messengers can be created from an XML config file.</p>
16    *
17    * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
18    * @version $Revision: 155459 $
19    */
20  public class MessengerDigester extends Digester {
21  
22      // default implementation classes
23      private String messengerManagerClass = "org.apache.commons.messenger.MessengerManager";
24      private String messengerClass = "org.apache.commons.messenger.DefaultMessenger";
25      private String xaMessengerClass = "org.apache.commons.messenger.XAMessenger";
26      private String sessionFactory = "org.apache.commons.messenger.SessionFactory";
27      private String connectionFactory = "org.apache.commons.messenger.DummyConnectionFactory";
28      private String jndiSessionFactory = "org.apache.commons.messenger.JNDISessionFactory";
29  
30      
31      public MessengerDigester() {
32      }
33      
34      // Implementation methods
35      //-------------------------------------------------------------------------    
36  
37      /** Configure the parsing rules that will be used to process 
38       * the cache config file
39       */
40      protected void configure() {
41          if (configured) {
42              return;
43          }
44          else {
45              configured = true;
46          }
47          
48          addObjectCreate( "manager", messengerManagerClass, "className" );
49          addSetProperties( "manager" );
50  
51  		String path = "manager/messenger";    
52          addObjectCreate( path, messengerClass, "className" );
53          addSetProperties( path );
54          
55          addSetNext( path, "addMessenger",
56             "org.apache.commons.messenger.Messenger"
57          );        
58  
59  		addMessengerPaths(path);
60  		
61  		path = "manager/xaMessenger";    
62          addObjectCreate( path, xaMessengerClass, "className" );
63          addSetProperties( path );
64          
65          addSetNext( path, "addMessenger",
66             "org.apache.commons.messenger.Messenger"
67          );        
68  
69  		addMessengerPaths(path);
70      }
71      
72      protected void addMessengerPaths(String root) {
73  
74  		String path = root + "/factory";        
75          addObjectCreate( path, sessionFactory, "className" );
76          addSetProperties( path );
77          addSetNext( path, "setSessionFactory",
78             "org.apache.commons.messenger.SessionFactory"
79          );
80          addCallMethod( path + "/property", "addProperty", 2);
81          addCallParam( path + "/property/name", 0 );
82          addCallParam( path + "/property/value", 1 );
83          
84          path = root + "/factory/connectionFactory";       
85          addObjectCreate( path, connectionFactory, "className" );
86          addSetProperties( path );
87          addSetNext( path, "setConnectionFactory",
88             "javax.jms.ConnectionFactory"
89          );
90  
91          path = root + "/jndi";        
92          addObjectCreate( path, jndiSessionFactory, "className" );
93          addSetProperties( path );
94          
95          addSetNext( path, "setSessionFactory",
96             "org.apache.commons.messenger.SessionFactory"
97          );
98                  
99          addCallMethod( path + "/property", "addProperty", 2);
100         addCallParam( path + "/property/name", 0 );
101         addCallParam( path + "/property/value", 1 );
102     }
103 }