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: SubscriptionDigester.java 155459 2005-02-26 13:24:44Z dirkv $
009 */
010 package org.apache.commons.messagelet.model;
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 SubscriptionDigester extends Digester {
021
022 // default implementation classes
023 private String subscriptionsClass = "org.apache.commons.messagelet.model.SubscriptionList";
024 private String subscriptionClass = "org.apache.commons.messagelet.model.Subscription";
025 private String listenerClass = "org.apache.commons.messagelet.impl.MessageServletDispatcher";
026 private String bridgeClass = "org.apache.commons.messagelet.BridgeMDO";
027 private String distributeBridgeClass = "org.apache.commons.messagelet.DistributeBridgeMDO";
028 private String stopWatchClass = "org.apache.commons.messenger.tool.StopWatchMessageListener";
029 private String consumerThreadClass = "org.apache.commons.messagelet.ConsumerThread";
030
031 public SubscriptionDigester() {
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 String path = "subscriptions";
049
050 addObjectCreate( path, subscriptionsClass, "className" );
051 addSetProperties( path );
052
053 path = "subscriptions/subscription";
054 addObjectCreate( path, subscriptionClass, "className" );
055 addSetProperties( path );
056 addSetNext( path, "addSubscription",
057 "org.apache.commons.messagelet.model.Subscription"
058 );
059
060 addCallMethod( "subscriptions/subscription/servlet", "setServlet", 0);
061
062 path = "subscriptions/subscription/consumerThread";
063 addObjectCreate( path, consumerThreadClass, "className" );
064 addSetProperties( path );
065 addSetNext( path, "setConsumerThread",
066 consumerThreadClass
067 );
068
069 path = "subscriptions/subscription/listener";
070 addObjectCreate( path, listenerClass, "className" );
071 addSetProperties( path );
072 addSetNext( path, "setMessageListener",
073 "javax.jms.MessageListener"
074 );
075
076
077
078 path = "subscriptions/subscription/stopWatch";
079 addObjectCreate( path, stopWatchClass, "className" );
080 addSetProperties( path );
081 addSetNext( path, "setMessageListener",
082 "javax.jms.MessageListener"
083 );
084
085
086 path = "subscriptions/subscription/bridge";
087 addObjectCreate( path, bridgeClass, "className" );
088 addSetProperties( path );
089 addSetNext( path, "setMessageListener",
090 "javax.jms.MessageListener"
091 );
092
093 path = "subscriptions/subscription/distributeBridge";
094 addObjectCreate( path, distributeBridgeClass, "className" );
095 addSetProperties( path );
096 addSetNext( path, "setMessageListener",
097 "javax.jms.MessageListener"
098 );
099
100 addCallMethod("subscriptions/subscription/distributeBridge/subject", "addOutputSubject", 0);
101 }
102 }