001 /* 002 * Copyright (C) The Apache Software Foundation. All rights reserved. 003 * 004 * This software is published under the terms of the Apache Software License 005 * version 1.1, a copy of which has been included with this distribution in 006 * the LICENSE file. 007 * 008 * $Id: MessengerDigester.java 155459 2005-02-26 13:24:44Z dirkv $ 009 */ 010 package org.apache.commons.messenger; 011 012 import org.apache.commons.digester.Digester; 013 014 /** <p><code>MessengerDigester</code> is a digester of Messenger objects so 015 * that JMS Messengers can be created from an XML config file.</p> 016 * 017 * @author <a href="mailto:jstrachan@apache.org">James Strachan</a> 018 * @version $Revision: 155459 $ 019 */ 020 public class MessengerDigester extends Digester { 021 022 // default implementation classes 023 private String messengerManagerClass = "org.apache.commons.messenger.MessengerManager"; 024 private String messengerClass = "org.apache.commons.messenger.DefaultMessenger"; 025 private String xaMessengerClass = "org.apache.commons.messenger.XAMessenger"; 026 private String sessionFactory = "org.apache.commons.messenger.SessionFactory"; 027 private String connectionFactory = "org.apache.commons.messenger.DummyConnectionFactory"; 028 private String jndiSessionFactory = "org.apache.commons.messenger.JNDISessionFactory"; 029 030 031 public MessengerDigester() { 032 } 033 034 // Implementation methods 035 //------------------------------------------------------------------------- 036 037 /** Configure the parsing rules that will be used to process 038 * the cache config file 039 */ 040 protected void configure() { 041 if (configured) { 042 return; 043 } 044 else { 045 configured = true; 046 } 047 048 addObjectCreate( "manager", messengerManagerClass, "className" ); 049 addSetProperties( "manager" ); 050 051 String path = "manager/messenger"; 052 addObjectCreate( path, messengerClass, "className" ); 053 addSetProperties( path ); 054 055 addSetNext( path, "addMessenger", 056 "org.apache.commons.messenger.Messenger" 057 ); 058 059 addMessengerPaths(path); 060 061 path = "manager/xaMessenger"; 062 addObjectCreate( path, xaMessengerClass, "className" ); 063 addSetProperties( path ); 064 065 addSetNext( path, "addMessenger", 066 "org.apache.commons.messenger.Messenger" 067 ); 068 069 addMessengerPaths(path); 070 } 071 072 protected void addMessengerPaths(String root) { 073 074 String path = root + "/factory"; 075 addObjectCreate( path, sessionFactory, "className" ); 076 addSetProperties( path ); 077 addSetNext( path, "setSessionFactory", 078 "org.apache.commons.messenger.SessionFactory" 079 ); 080 addCallMethod( path + "/property", "addProperty", 2); 081 addCallParam( path + "/property/name", 0 ); 082 addCallParam( path + "/property/value", 1 ); 083 084 path = root + "/factory/connectionFactory"; 085 addObjectCreate( path, connectionFactory, "className" ); 086 addSetProperties( path ); 087 addSetNext( path, "setConnectionFactory", 088 "javax.jms.ConnectionFactory" 089 ); 090 091 path = root + "/jndi"; 092 addObjectCreate( path, jndiSessionFactory, "className" ); 093 addSetProperties( path ); 094 095 addSetNext( path, "setSessionFactory", 096 "org.apache.commons.messenger.SessionFactory" 097 ); 098 099 addCallMethod( path + "/property", "addProperty", 2); 100 addCallParam( path + "/property/name", 0 ); 101 addCallParam( path + "/property/value", 1 ); 102 } 103 }