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