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/04/11 21:22:43 UTC
svn commit: r160940 - in
incubator/hermes/trunk/src/java/org/apache/ws/notification: base/impl/
base/impl/faults/ base/v1_2/porttype/impl/ topics/impl/ topics/impl/faults/
Author: scamp
Date: Mon Apr 11 12:22:41 2005
New Revision: 160940
URL: http://svn.apache.org/viewcvs?view=rev&rev=160940
Log: (empty)
Added:
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/faults/
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/faults/
Modified:
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/AbstractSubscription.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansTopicExpression.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/SubscriptionManagerPortTypeImpl.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/ConcreteTopicExpressionEvaluator.java
incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicExpressionEngineImpl.java
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/AbstractSubscription.java
URL: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/AbstractSubscription.java?view=diff&r1=160939&r2=160940
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/AbstractSubscription.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/AbstractSubscription.java Mon Apr 11 12:22:41 2005
@@ -34,6 +34,7 @@
import org.apache.ws.resource.ResourceException;
import org.apache.ws.resource.ResourceHome;
import org.apache.ws.resource.ResourceKey;
+import org.apache.ws.resource.PropertiesResource;
import org.apache.ws.resource.lifetime.ResourceTerminationEvent;
import org.apache.ws.resource.lifetime.ResourceTerminationListener;
import org.apache.ws.resource.lifetime.impl.ResourceTerminationEventImpl;
@@ -55,7 +56,7 @@
/**
* TODO
*/
-public abstract class AbstractSubscription implements Subscription
+public abstract class AbstractSubscription implements Subscription, PropertiesResource
{
private static final Log LOG =
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansTopicExpression.java
URL: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansTopicExpression.java?view=diff&r1=160939&r2=160940
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansTopicExpression.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/base/impl/XmlBeansTopicExpression.java Mon Apr 11 12:22:41 2005
@@ -20,6 +20,10 @@
import org.apache.commons.logging.LogFactory;
import org.apache.ws.notification.topics.TopicExpression;
import org.apache.ws.notification.topics.TopicExpression;
+import org.apache.ws.notification.topics.TopicExpressionEngine;
+import org.apache.ws.notification.topics.impl.TopicExpressionEngineImpl;
+import org.apache.ws.notification.topics.impl.faults.TopicPathDialectUnknownFaultException;
+import org.apache.ws.notification.base.v1_2.impl.WsnNamespaceVersionHolderImpl;
import org.apache.ws.resource.i18n.Keys;
import org.apache.ws.resource.i18n.MessagesImpl;
import org.apache.ws.resource.properties.query.impl.XmlBeansQueryExpression;
@@ -65,6 +69,12 @@
throws SchemaViolationException
{
m_topicExprXBean = topicExprXBean;
+
+ if( !isSupportedDialect(topicExprXBean.getDialect()))
+ {
+ throw new TopicPathDialectUnknownFaultException(new WsnNamespaceVersionHolderImpl(),"The dialect: " + topicExprXBean.getDialect() + " is unsupported.");
+ }
+
try
{
m_dialect = new URI( topicExprXBean.getDialect() );
@@ -97,6 +107,25 @@
{
LOG.debug( MSG.getMessage( Keys.QUERY_EXPR, toString() ) );
}
+ }
+
+ /**
+ * Determines if the given dialect is supported
+ *
+ * @param dialect
+ * @return
+ */
+ private boolean isSupportedDialect(String dialect)
+ {
+ String[] supportedDialects = TopicExpressionEngineImpl.getInstance().getSupportedDialects();
+ for (int i = 0; i < supportedDialects.length; i++)
+ {
+ if(dialect.equals(supportedDialects[i]))
+ {
+ return true;
+ }
+ }
+ return false;
}
/**
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java
URL: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java?view=diff&r1=160939&r2=160940
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java Mon Apr 11 12:22:41 2005
@@ -22,12 +22,15 @@
import org.apache.ws.notification.base.Subscription;
import org.apache.ws.notification.base.impl.SubscriptionHome;
import org.apache.ws.notification.base.impl.XmlBeansTopicExpression;
+import org.apache.ws.notification.base.impl.faults.SubscribeCreationFailedFaultException;
import org.apache.ws.notification.base.v1_2.impl.Subscription1_2Resource;
+import org.apache.ws.notification.base.v1_2.impl.WsnNamespaceVersionHolderImpl;
import org.apache.ws.notification.base.v1_2.porttype.NotificationProducerPortType;
import org.apache.ws.notification.topics.Topic;
import org.apache.ws.notification.topics.TopicExpression;
import org.apache.ws.notification.topics.TopicSpaceSet;
import org.apache.ws.notification.topics.impl.SimpleSubscriptionTopicListener;
+import org.apache.ws.notification.topics.impl.faults.NoCurrentMessageOnTopicFaultException;
import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionException;
import org.apache.ws.pubsub.DeliveryMode;
import org.apache.ws.pubsub.Filter;
@@ -57,6 +60,7 @@
import javax.naming.Context;
import javax.naming.InitialContext;
+import javax.naming.directory.SchemaViolationException;
import javax.xml.rpc.JAXRPCException;
import java.util.Calendar;
import java.util.Collection;
@@ -79,8 +83,6 @@
public SubscribeResponseDocument subscribe( SubscribeDocument requestDoc )
{
SubscribeDocument.Subscribe request = requestDoc.getSubscribe();
- // TODO: use an EPR facade instead of the XMLBean EPR type
- EndpointReferenceType consumerEPR = request.getConsumerReference();
//make sure to check if optional elements are set in request...
Calendar initialTerminationTime = null;
@@ -118,7 +120,7 @@
Context initialContext = new InitialContext( );
SubscriptionHome subscriptionHome = (SubscriptionHome) initialContext.lookup( SubscriptionHome.HOME_LOCATION );
- Subscription subscription = subscriptionHome.create(Subscription1_2Resource.class, new XmlBeansEndpointReference(consumerEPR), producerEPR, initialTerminationTime,subPolicy, precondition, selector,getResourceKey(), ((AbstractResourceContext)getResourceContext()).getResourceHomeLocation(),topicExpr,useNotify );
+ Subscription subscription = subscriptionHome.create(Subscription1_2Resource.class, new XmlBeansEndpointReference(request.getConsumerReference()), producerEPR, initialTerminationTime,subPolicy, precondition, selector,getResourceKey(), ((AbstractResourceContext)getResourceContext()).getResourceHomeLocation(),topicExpr,useNotify );
subscription.setNotificationProducer(this);
epr = (EndpointReferenceType) ((XmlObjectWrapper)subscription.getEpr()).getXmlObject();
@@ -133,7 +135,7 @@
}
catch (Exception e)
{
- throw new JAXRPCException("An exception occurred during subscribing. ", e);
+ throw new SubscribeCreationFailedFaultException(new WsnNamespaceVersionHolderImpl(),"Subscribe failed, reason: " + e.getLocalizedMessage());
}
@@ -155,8 +157,10 @@
}
catch (TopicExpressionException e)
{
- throw new JAXRPCException("An exception occurred during subscription. ", e);
+ throw new JAXRPCException("An exception occurred evaluating a TopicExpression. ", e);
}
+
+
return collection;
}
@@ -189,9 +193,14 @@
TopicExpression topicExpr = new XmlBeansTopicExpression( topicExprMess );
collection = evaluateTopicExpression(topicExpr);
}
- catch (Exception e)
+ catch ( SchemaViolationException e)
{
throw new JAXRPCException("An exception occurred: ",e);
+ }
+
+ if(collection.size() < 1)
+ {
+ throw new NoCurrentMessageOnTopicFaultException(new WsnNamespaceVersionHolderImpl(),"There was no current message to retrieve.");
}
GetCurrentMessageResponseDocument message = GetCurrentMessageResponseDocument.Factory.newInstance();
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/SubscriptionManagerPortTypeImpl.java
URL: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/SubscriptionManagerPortTypeImpl.java?view=diff&r1=160939&r2=160940
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/SubscriptionManagerPortTypeImpl.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/SubscriptionManagerPortTypeImpl.java Mon Apr 11 12:22:41 2005
@@ -16,7 +16,10 @@
package org.apache.ws.notification.base.v1_2.porttype.impl;
import org.apache.ws.notification.base.Subscription;
+import org.apache.ws.notification.base.impl.faults.PauseFailedFaultException;
+import org.apache.ws.notification.base.impl.faults.ResumeFailedFaultException;
import org.apache.ws.notification.base.v1_2.porttype.SubscriptionManagerPortType;
+import org.apache.ws.notification.base.v1_2.impl.WsnNamespaceVersionHolderImpl;
import org.apache.ws.resource.ResourceContext;
import org.apache.ws.resource.properties.NamespaceVersionHolder;
import org.apache.ws.resource.properties.impl.AbstractResourcePropertiesPortType;
@@ -48,7 +51,7 @@
}
catch ( Exception e )
{
- // TODO: throw PauseFailedFaultException
+ throw new PauseFailedFaultException(new WsnNamespaceVersionHolderImpl(),"Pause failed on subscription: " + subscription.getID());
}
return createPauseSubscriptionResponseDocument();
}
@@ -62,7 +65,7 @@
}
catch ( Exception e )
{
- // TODO: throw ResumeFailedFaultException
+ throw new ResumeFailedFaultException(new WsnNamespaceVersionHolderImpl(),"Resume failed on subscription: " + subscription.getID());
}
return createResumeSubscriptionResponseDocument();
}
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/ConcreteTopicExpressionEvaluator.java
URL: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/ConcreteTopicExpressionEvaluator.java?view=diff&r1=160939&r2=160940
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/ConcreteTopicExpressionEvaluator.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/ConcreteTopicExpressionEvaluator.java Mon Apr 11 12:22:41 2005
@@ -19,11 +19,14 @@
import org.apache.ws.notification.topics.TopicExpression;
import org.apache.ws.notification.topics.TopicSpace;
import org.apache.ws.notification.topics.Topic;
+import org.apache.ws.notification.topics.impl.faults.InvalidTopicExpressionFaultException;
+import org.apache.ws.notification.topics.impl.faults.TopicNotSupportedFaultException;
import org.apache.ws.notification.topics.topicexpression.impl.UnsupportedTopicExpressionDialectException;
import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionResolutionException;
import org.apache.ws.notification.topics.topicexpression.impl.InvalidTopicExpressionException;
import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionException;
import org.apache.ws.notification.topics.v1_2.Topics1_2Constants;
+import org.apache.ws.notification.base.v1_2.impl.WsnNamespaceVersionHolderImpl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Text;
@@ -65,7 +68,7 @@
}
else
{
- throw new TopicExpressionException("Topic expression: " + expr.getContent() + " did not return a valid Topic.");
+ throw new TopicNotSupportedFaultException(new WsnNamespaceVersionHolderImpl(), "Topic expression: " + expr.getContent() + " did not return a valid Topic.");
}
return result;
}
@@ -87,7 +90,7 @@
StringTokenizer tokenizer = new StringTokenizer( exprValue, "/" );
if ( tokenizer.countTokens() == 0 )
{
- throw new InvalidTopicExpressionException( "Topic expression must contain at least one path element." );
+ throw new InvalidTopicExpressionFaultException(new WsnNamespaceVersionHolderImpl(), "Topic expression must contain at least one path element." );
}
while ( tokenizer.hasMoreTokens() )
{
Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicExpressionEngineImpl.java
URL: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicExpressionEngineImpl.java?view=diff&r1=160939&r2=160940
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicExpressionEngineImpl.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/TopicExpressionEngineImpl.java Mon Apr 11 12:22:41 2005
@@ -21,10 +21,12 @@
import org.apache.ws.notification.topics.TopicExpressionEvaluator;
import org.apache.ws.notification.topics.TopicExpression;
import org.apache.ws.notification.topics.TopicSpace;
+import org.apache.ws.notification.topics.impl.faults.TopicPathDialectUnknownFaultException;
import org.apache.ws.notification.topics.topicexpression.impl.UnsupportedTopicExpressionDialectException;
import org.apache.ws.notification.topics.topicexpression.impl.InvalidTopicExpressionException;
import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionException;
import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionResolutionException;
+import org.apache.ws.notification.base.v1_2.impl.WsnNamespaceVersionHolderImpl;
import org.apache.ws.util.jndi.JNDIUtils;
import org.apache.ws.resource.JndiConstants;
@@ -180,7 +182,7 @@
LOG.debug( "HashCode of dialect: " + String.valueOf( dialect.toString().hashCode() ) );
LOG.debug( "Object stored for key: " + this.m_evaluators.get( key ) );
}
- throw new UnsupportedTopicExpressionDialectException();
+ throw new TopicPathDialectUnknownFaultException(new WsnNamespaceVersionHolderImpl(), "The dialect: " + dialect + " was unrecognized.");
}
return evaluator.resolve( topicExpression, topicSpace );
}
---------------------------------------------------------------------
To unsubscribe, e-mail: hermes-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: hermes-dev-help@ws.apache.org