You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pubscribe-dev@ws.apache.org by sc...@apache.org on 2005/02/02 17:53:22 UTC

svn commit: r149533 - in incubator/hermes/trunk/src/java/org/apache/ws/pubsub: emitter/EmitterException.java emitter/NotificationEmitterTask.java emitter/file/ emitter/http/ i18n/Keys.java i18n/MessagesImpl.java i18n/resource.properties

Author: scamp
Date: Wed Feb  2 08:53:21 2005
New Revision: 149533

URL: http://svn.apache.org/viewcvs?view=rev&rev=149533
Log:
Added Emitter stuff from Muse

Added:
    incubator/hermes/trunk/src/java/org/apache/ws/pubsub/emitter/EmitterException.java
    incubator/hermes/trunk/src/java/org/apache/ws/pubsub/emitter/NotificationEmitterTask.java
    incubator/hermes/trunk/src/java/org/apache/ws/pubsub/emitter/file/
    incubator/hermes/trunk/src/java/org/apache/ws/pubsub/emitter/http/
    incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/Keys.java
    incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/MessagesImpl.java
    incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/resource.properties

Added: incubator/hermes/trunk/src/java/org/apache/ws/pubsub/emitter/EmitterException.java
URL: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/pubsub/emitter/EmitterException.java?view=auto&rev=149533
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/pubsub/emitter/EmitterException.java (added)
+++ incubator/hermes/trunk/src/java/org/apache/ws/pubsub/emitter/EmitterException.java Wed Feb  2 08:53:21 2005
@@ -0,0 +1,65 @@
+/*=============================================================================*
+ *  Copyright 2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *=============================================================================*/
+package org.apache.ws.pubsub.emitter;
+
+
+/**
+ * An exception thrown by a notification emitter indicating a problem when
+ * attempting to send a notification to a subscriber.
+ */
+public class EmitterException
+   extends Exception
+{
+   /**
+    * Constructor for {@link EmitterException}.
+    */
+   public EmitterException(  )
+   {
+      super(  );
+   }
+
+   /**
+    * Constructor for {@link EmitterException}.
+    *
+    * @param message
+    */
+   public EmitterException( String message )
+   {
+      super( message );
+   }
+
+   /**
+    * Constructor for {@link EmitterException}.
+    *
+    * @param message
+    * @param cause
+    */
+   public EmitterException( String    message,
+                            Throwable cause )
+   {
+      super( message, cause );
+   }
+
+   /**
+    * Constructor for {@link EmitterException}.
+    *
+    * @param cause
+    */
+   public EmitterException( Throwable cause )
+   {
+      super( cause );
+   }
+}
\ No newline at end of file

Added: incubator/hermes/trunk/src/java/org/apache/ws/pubsub/emitter/NotificationEmitterTask.java
URL: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/pubsub/emitter/NotificationEmitterTask.java?view=auto&rev=149533
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/pubsub/emitter/NotificationEmitterTask.java (added)
+++ incubator/hermes/trunk/src/java/org/apache/ws/pubsub/emitter/NotificationEmitterTask.java Wed Feb  2 08:53:21 2005
@@ -0,0 +1,253 @@
+/*=============================================================================*
+ *  Copyright 2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *=============================================================================*/
+package org.apache.ws.pubsub.emitter;
+
+import org.apache.ws.pubsub.emitter.file.FileNotificationEmitterTask;
+import org.apache.ws.pubsub.emitter.http.HttpNotificationEmitterTask;
+import org.apache.ws.pubsub.i18n.MessagesImpl;
+import org.apache.ws.pubsub.i18n.Keys;
+import org.apache.ws.util.i18n.Messages;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.xml.sax.SAXException;
+import org.xmlsoap.schemas.ws.x2003.x03.addressing.EndpointReferenceType;
+import javax.xml.soap.SOAPMessage;
+import java.lang.reflect.InvocationTargetException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+
+/**
+ * This task is to be used to send notifications to client subscriber destinations.  This class contains
+ * a factory method, {@link #createEmitterTask(SOAPMessage, EndpointReferenceType)}, that creates a task specific to the
+ * protocol for the given destination; this factory method must be used to create emitter tasks.
+ * All subclasses to this class will be responsible for sending notifications over particular protocol
+ * transports.  Each subclass must have a constructor that takes a XML string (the notification message itself),
+ * a destination URL and a destination EPR as a
+ * {@link org.xmlsoap.schemas.ws.x2003.x03.addressing.EndpointReferenceType}; these constructors are called by this class' factory method.
+ */
+public abstract class NotificationEmitterTask
+   implements Runnable
+{
+   /** object used to obtain I18N messages */
+   private static final Messages MSG = MessagesImpl.getInstance(  );
+
+   /** object used to log messages */
+   private static final Log LOG = LogFactory.getLog( NotificationEmitterTask.class );
+
+   /**
+    * Protocol emitter map: key is protocol name, value is corresponding {@link NotificationEmitterTask} class.
+    */
+   private static final HashMap PROTOCOL_EMITTER_MAP;
+
+   static
+   {
+      PROTOCOL_EMITTER_MAP = new HashMap(  );
+      PROTOCOL_EMITTER_MAP.put( FileNotificationEmitterTask.PROTOCOL, FileNotificationEmitterTask.class );
+      PROTOCOL_EMITTER_MAP.put( HttpNotificationEmitterTask.PROTOCOL, HttpNotificationEmitterTask.class );
+
+      //PROTOCOL_EMITTER_MAP.put( HttpsNotificationEmitterTask.PROTOCOL, HttpsNotificationEmitterTask.class );
+      //PROTOCOL_EMITTER_MAP.put( FtpNotificationEmitterTask.PROTOCOL, FtpNotificationEmitterTask.class );
+      //PROTOCOL_EMITTER_MAP.put( MailtoNotificationEmitterTask.PROTOCOL, MailtoNotificationEmitterTask.class );
+      //PROTOCOL_EMITTER_MAP.put( JdbcNotificationEmitterTask.PROTOCOL, JdbcNotificationEmitterTask.class );
+   }
+
+   /** The notification to send */
+   private final SOAPMessage m_notification;
+
+   /** The destination URL where the notification will be sent */
+   private final URL m_destinationUrl;
+
+   /** The destination EPR of the notification consumer */
+   private final EndpointReferenceType m_destinationEpr;
+
+   /**
+    * Constructor to build the task.  This is protected to enforce that fact that only
+    * {@link #createEmitterTask(javax.xml.soap.SOAPMessage, org.xmlsoap.schemas.ws.x2003.x03.addressing.EndpointReferenceType)}
+    * should be used by clients to create these task objects.
+    *
+    * @param notif notification to send
+    * @param url endpoint URL of notification consumer
+    * @param destination endpoint reference of the notification consumer
+    */
+   protected NotificationEmitterTask( SOAPMessage           notif,
+                                      URL                   url,
+                                      EndpointReferenceType destination )
+   {
+      m_notification      = notif;
+      m_destinationUrl    = url;
+      m_destinationEpr    = destination;
+   }
+
+   /**
+    * Factory method that creates the appropriate emitter task based on the
+    * protocol required to send the notification.
+    *
+    * @param notif notification to send
+    * @param destination notification is to be sent to this destination endpoint
+    *
+    * @return the task to be used to send the notification
+    *
+    * @throws EmitterException if failed to create the task
+    */
+   public static NotificationEmitterTask createEmitterTask( SOAPMessage           notif,
+                                                            EndpointReferenceType destination )
+   throws EmitterException
+   {
+      NotificationEmitterTask task;
+      Class                   task_class = null;
+
+      LOG.debug( MSG.getMessage( Keys.CREATING_NOTIF_EMITTER, destination ) );
+
+      try
+      {
+         URL url;
+
+         try
+         {
+            url = new URL( destination.getAddress(  ).getStringValue(  ) );
+         }
+         catch ( MalformedURLException murle )
+         {
+            LOG.error( MSG.getMessage( Keys.NOTIF_EMITTER_CREATION_FAILURE, destination, murle ) );
+            throw new EmitterException( murle );
+         }
+
+         task_class = (Class) PROTOCOL_EMITTER_MAP.get( url.getProtocol(  ) );
+
+         if ( task_class != null )
+         {
+            Class[] sig = new Class[]
+                          {
+                             SOAPMessage.class,
+                             URL.class,
+                             EndpointReferenceType.class
+                          };
+            Object[] params = new Object[]
+                              {
+                                 notif,
+                                 url,
+                                 destination
+                              };
+
+            task = (NotificationEmitterTask) task_class.getConstructor( sig ).newInstance( params );
+         }
+         else
+         {
+            String err = MSG.getMessage( Keys.UNSUPPORTED_PROTOCOL, destination, notif );
+            LOG.error( err );
+            throw new EmitterException( err );
+         }
+      }
+      catch ( InstantiationException ie )
+      {
+         LOG.error( MSG.getMessage( Keys.BAD_TASK_CLASS_IS_ABSTRACT,
+                                    task_class.getName(  ),
+                                    ie ) );
+         throw new EmitterException( ie );
+      }
+      catch ( IllegalAccessException iae )
+      {
+         LOG.error( MSG.getMessage( Keys.BAD_TASK_CLASS_ACCESS_DENIED,
+                                    task_class.getName(  ),
+                                    iae ) );
+         throw new EmitterException( iae );
+      }
+      catch ( InvocationTargetException ite )
+      {
+         LOG.error( MSG.getMessage( Keys.TASK_CON_EXCEPTION,
+                                    task_class.getName(  ),
+                                    ite ) );
+         throw new EmitterException( ite );
+      }
+      catch ( NoSuchMethodException nsme )
+      {
+         LOG.error( MSG.getMessage( Keys.BAD_TASK_CLASS_NO_CON,
+                                    task_class.getName(  ),
+                                    nsme ) );
+         throw new EmitterException( nsme );
+      }
+
+      return task;
+   }
+
+   /**
+    * This template method runs the task's thread and will call the appropriate
+    * emitter task's {@link #emit()} method to send the notification.
+    *
+    * @see java.lang.Runnable#run()
+    */
+   public void run(  )
+   {
+      LOG.debug( MSG.getMessage( Keys.EMITTING_NOTIFICATION, m_destinationEpr, m_notification ) );
+      try
+      {
+         emit(  );
+      }
+      catch ( Throwable t )
+      {
+         if ( !( t.getCause(  ) instanceof SAXException ) )
+         {
+            LOG.error( MSG.getMessage( Keys.EMISSION_FAILURE,
+                                       this.getClass(  ),
+                                       m_notification,
+                                       t.getCause(  ) ) );
+         }
+         else
+         {
+            // Axis throws a SAXException if the notification consumer returns a response with an invalid HTTP body,
+            // which we can basically ignore.
+            LOG.trace( MSG.getMessage( Keys.EMISSION_FAILURE,
+                                       this.getClass(  ),
+                                       m_notification,
+                                       t.getCause(  ) ) );
+         }
+      }
+   }
+
+   /**
+    * @return the notification consumer's EPR
+    */
+   protected EndpointReferenceType getDestinationEpr(  )
+   {
+      return m_destinationEpr;
+   }
+
+   /**
+    * @return the destination URL where the notification will be sent
+    */
+   protected URL getDestinationUrl(  )
+   {
+      return m_destinationUrl;
+   }
+
+   /**
+    * @return the actual notification object that is to be emitted.
+    */
+   protected SOAPMessage getNotification(  )
+   {
+      return m_notification;
+   }
+
+   /**
+    * Method that will actually send the notification to the destination via
+    * the appropriate protocol transport.
+    *
+    * @throws EmitterException on error attempting to send notification
+    */
+   protected abstract void emit(  )
+   throws EmitterException;
+}
\ No newline at end of file

Added: incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/Keys.java
URL: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/Keys.java?view=auto&rev=149533
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/Keys.java (added)
+++ incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/Keys.java Wed Feb  2 08:53:21 2005
@@ -0,0 +1,101 @@
+/*=============================================================================*
+ *  Copyright 2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *=============================================================================*/
+package org.apache.ws.pubsub.i18n;
+
+
+/**
+ * i18n message keys for the <code>org.apache.ws.notification</code> package.
+ */
+public interface Keys
+{
+   /** DOCUMENT_ME */
+   String CREATE_SUB_TABLE = "CREATE_SUB_TABLE";
+
+   /** DOCUMENT_ME */
+   String CREATING_SUB_TABLE_MGR = "CREATING_SUB_TABLE_MGR";
+
+   /** DOCUMENT_ME */
+   String EMITTING_MESSAGE = "EMITTING_MESSAGE";
+
+   /** DOCUMENT_ME */
+   String INVALID_SUBMGR_TABLE_TYPE = "INVALID_SUBMGR_TABLE_TYPE";
+
+   /** DOCUMENT_ME */
+   String MESSAGE_NOT_AVAILABLE_FOR_TOPIC = "MESSAGE_NOT_AVAILABLE_FOR_TOPIC";
+
+   /** DOCUMENT_ME */
+   String NULL_PROP_QNAME = "NULL_PROP_QNAME";
+
+   /** DOCUMENT_ME */
+   String NULL_SUBID_NOT_ALLOWED = "NULL_SUBID_NOT_ALLOWED";
+
+   /** DOCUMENT_ME */
+   String TOPIC_NOT_AVAILABLE_FOR_SUBSCRIPTION = "TOPIC_NOT_AVAILABLE_FOR_SUBSCRIPTION";
+
+   /** CREATING_NOTIF_EMITTER=Creating a notification emitter to destination=[{0}] */
+   String CREATING_NOTIF_EMITTER = "CREATING_NOTIF_EMITTER";
+
+   /** NOTIF_EMITTER_CREATION_FAILURE=Failed to create a notification emitter for destination [{0}]. Cause: {1} */
+   String NOTIF_EMITTER_CREATION_FAILURE = "NOTIF_EMITTER_CREATION_FAILURE";
+
+   /** UNSUPPORTED_PROTOCOL=Destination requires an unsupported protocol [{0}]; it will not receive notification [{1}] */
+   String UNSUPPORTED_PROTOCOL = "UNSUPPORTED_PROTOCOL";
+
+   /** BAD_TASK_CLASS_IS_ABSTRACT=Bad task class [{0}]; it must not be abstract. Cause: {1} */
+   String BAD_TASK_CLASS_IS_ABSTRACT = "BAD_TASK_CLASS_IS_ABSTRACT";
+
+   /** BAD_TASK_CLASS_ACCESS_DENIED=Bad task class [{0}]; access to the constructor was denied. Cause: {1} */
+   String BAD_TASK_CLASS_ACCESS_DENIED = "BAD_TASK_CLASS_ACCESS_DENIED";
+
+   /** TASK_CON_EXCEPTION=Task [{0}] constructor threw an exception: {1} */
+   String TASK_CON_EXCEPTION = "TASK_CON_EXCEPTION";
+
+   /** BAD_TASK_CLASS_NO_CON=Bad task class [{0}], missing required constructor. Cause: {1} */
+   String BAD_TASK_CLASS_NO_CON = "BAD_TASK_CLASS_NO_CON";
+
+   /** EMITTING_NOTIFICATION=Emitting notification: destination=[{0}], notification=[{1}] */
+   String EMITTING_NOTIFICATION = "EMITTING_NOTIFICATION";
+
+   /** RESPONSE_TO_EMIT=Notification emission complete, server response follows: [{0}] */
+   String RESPONSE_TO_EMIT = "RESPONSE_TO_EMIT";
+
+   /** EMISSION_FAILURE={0} failed to emit notification [{1}]. Cause: {2} */
+   String EMISSION_FAILURE = "EMISSION_FAILURE";
+
+   /** EX_NO_NOTIFICATIONS=No Notifications to emit! */
+   String EX_NO_NOTIFICATIONS = "EX_NO_NOTIFICATIONS";
+
+   /** EMITTING_TO_FILE=Emitting notification to file [{0}] */
+   String EMITTING_TO_FILE = "EMITTING_TO_FILE";
+
+   /** EX_FAILED_TO_STORE_NOTIFICATION_TO_FILE_BAD_URL=Failed to store notification to file, bad destination URL: [{0}] */
+   String EX_FAILED_TO_STORE_NOTIFICATION_TO_FILE_BAD_URL = "EX_FAILED_TO_STORE_NOTIFICATION_TO_FILE_BAD_URL";
+
+   /** EX_FAILED_TO_STORE_NOTIFICATION_TO_FILE=Failed to store notification to file: [{0}] */
+   String EX_FAILED_TO_STORE_NOTIFICATION_TO_FILE = "EX_FAILED_TO_STORE_NOTIFICATION_TO_FILE";
+
+   /** EMITTING_TO_HTTP_DEST=Emitting notification to HTTP destination [{0}] */
+   String EMITTING_TO_HTTP_DEST = "EMITTING_TO_HTTP_DEST";
+
+   /** EX_FAILED_TO_SEND_HTTP_NOTIFICATION_BAD_URL=Failed to send HTTP notification, bad destination URL: [{0}] */
+   String EX_FAILED_TO_SEND_HTTP_NOTIFICATION_BAD_URL = "EX_FAILED_TO_SEND_HTTP_NOTIFICATION_BAD_URL";
+
+   /** EX_FAILED_TO_SEND_HTTP_NOTIFICATION=Failed to send notification via HTTP: [{0}] */
+   String EX_FAILED_TO_SEND_HTTP_NOTIFICATION = "EX_FAILED_TO_SEND_HTTP_NOTIFICATION";
+
+   /** GETTING_SUBSCRIBERS=Getting subscribers on topic [{0}] */
+   String GETTING_SUBSCRIBERS = "GETTING_SUBSCRIBERS";
+}
\ No newline at end of file

Added: incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/MessagesImpl.java
URL: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/MessagesImpl.java?view=auto&rev=149533
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/MessagesImpl.java (added)
+++ incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/MessagesImpl.java Wed Feb  2 08:53:21 2005
@@ -0,0 +1,66 @@
+/*=============================================================================*
+ *  Copyright 2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *=============================================================================*/
+package org.apache.ws.pubsub.i18n;
+
+import org.apache.ws.util.i18n.AbstractMessages;
+import org.apache.ws.util.i18n.Messages;
+
+/**
+ * Singleton used by all classes below the {@link org.apache.ws.pubsub} package
+ * for retrieving i18n messages.
+ *
+ * @author Ian P. Springer
+ */
+public class MessagesImpl
+   extends AbstractMessages
+{
+   /** the package name of the project */
+   public static final String PROJECT_PACKAGE_NAME = "org.apache.ws.pubsub";
+
+   /** package where the i18n stuff can be found */
+   public static final String RESOURCE_PACKAGE_NAME = "org.apache.ws.pubsub.i18n";
+   private static Messages    s_ourInstance = new MessagesImpl(  );
+
+   /**
+    * Returns this singleton.
+    *
+    * @return the singleton
+    */
+   public static Messages getInstance(  )
+   {
+      return s_ourInstance;
+   }
+
+   /**
+    * Returns the project's package name.
+    *
+    * @return project package name
+    */
+   protected String getProjectPackageName(  )
+   {
+      return PROJECT_PACKAGE_NAME;
+   }
+
+   /**
+    * Returns the package name where the i18n stuff can be found.
+    *
+    * @return resource package name
+    */
+   protected String getResourcePackageName(  )
+   {
+      return RESOURCE_PACKAGE_NAME;
+   }
+}
\ No newline at end of file

Added: incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/resource.properties
URL: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/resource.properties?view=auto&rev=149533
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/resource.properties (added)
+++ incubator/hermes/trunk/src/java/org/apache/ws/pubsub/i18n/resource.properties Wed Feb  2 08:53:21 2005
@@ -0,0 +1,43 @@
+# Resource properties for the WS-Notification Framework implementation (org.apache.ws.notification)
+#
+# Translation instructions.
+# 1.  Each message line is of the form key=value.
+#     Translate the value, DO NOT translate the key.
+# 2.  The messages may contain arguments that will be filled in
+#     by the runtime.  These are of the form: {0}, {1}, etc.
+#     These must appear as is in the message, though the order
+#     may be changed to support proper language syntax.
+# 3.  If a single quote character is to appear in the resulting
+#     message, it must appear in this file as two consecutive
+#     single quote characters.
+# 4.  Lines beginning with "#" (like this one) are comment lines
+#     and may contain translation instructions.  They need not be
+#     translated unless your translated file, rather than this file,
+#     will serve as a base for other translators.
+
+NULL_PROP_QNAME=The resource property QName must not be null.
+TOPIC_NOT_AVAILABLE_FOR_SUBSCRIPTION=Cannot subscribe to topic [{0}]
+MESSAGE_NOT_AVAILABLE_FOR_TOPIC=No message for topic [{0}]
+EMITTING_MESSAGE=Sending the following Notification to: [{0}]
+CREATING_SUB_TABLE_MGR=Creating subscription manager of type [{0}]
+INVALID_SUBMGR_TABLE_TYPE=Cannot create subscription table manager - invalid type: [{0}]
+NULL_SUBID_NOT_ALLOWED=Subscription ID must not be null
+CREATE_SUB_TABLE=Created SubscriptionTable [{0}]
+CREATING_NOTIF_EMITTER=Creating a notification emitter to destination=[{0}]
+NOTIF_EMITTER_CREATION_FAILURE=Failed to create a notification emitter for destination [{0}]. Cause: {1}
+UNSUPPORTED_PROTOCOL=Destination requires an unsupported protocol [{0}]; it will not receive notification [{1}]
+BAD_TASK_CLASS_IS_ABSTRACT=Bad task class [{0}]; it must not be abstract. Cause: {1}
+BAD_TASK_CLASS_ACCESS_DENIED=Bad task class [{0}]; access to the constructor was denied. Cause: {1}
+TASK_CON_EXCEPTION=Task [{0}] constructor threw an exception: {1}
+BAD_TASK_CLASS_NO_CON=Bad task class [{0}], missing required constructor. Cause: {1}
+EMITTING_NOTIFICATION=Emitting notification: id=[{0}], type=[{1}], source=[{2}], destination=[{3}]
+EMISSION_FAILURE=Failed to emit notification [{0}]. Cause: {1}
+EX_NO_NOTIFICATIONS=No Notifications to emit!
+EMITTING_TO_FILE=Emitting notification to file [{0}]
+EX_FAILED_TO_STORE_NOTIFICATION_TO_FILE_BAD_URL=Failed to store notification to file, bad destination URL: [{0}]
+EX_FAILED_TO_STORE_NOTIFICATION_TO_FILE=Failed to store notification to file: [{0}]
+EMITTING_TO_HTTP_DEST=Emitting notification to HTTP destination [{0}]
+EX_FAILED_TO_SEND_HTTP_NOTIFICATION_BAD_URL=Failed to send HTTP notification, bad destination URL: [{0}]
+EX_FAILED_TO_SEND_HTTP_NOTIFICATION=Failed to send notification via HTTP: [{0}]
+GETTING_SUBSCRIBERS=Getting subscribers on topic [{0}]
+RESPONSE_TO_EMIT=Notification emission complete, server response follows: [{0}]
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: hermes-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: hermes-dev-help@ws.apache.org