Author: scamp Date: Wed Jan 26 11:19:32 2005 New Revision: 126531 URL: http://svn.apache.org/viewcvs?view=rev&rev=126531 Log: roughed out getCurrentMessage Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java
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&rev=126531&p1=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java&r1=126530&p2=incubator/hermes/trunk/src/java/org/apache/ws/notification/base/v1_2/porttype/impl/NotificationProducerPortTypeImpl.java&r2=126531 ============================================================================== --- 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 Wed Jan 26 11:19:32 2005 @@ -52,6 +52,7 @@ import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; +import javax.naming.directory.SchemaViolationException; import java.util.Calendar; import java.util.Collection; import java.util.Iterator; @@ -115,18 +116,8 @@ Subscription subscription = subscriptionHome.create(Subscription1_2Resource.class, consumerEPR, producerEPR, initialTerminationTime,subPolicy, precondition, selector,getResourceKey(), ((AbstractResourceContext)getResourceContext()).getResourceHomeLocation(),topicExpr,useNotify ); epr = subscription.getEpr(); - NotificationProducerResource resource = (NotificationProducerResource) getResource(); - TopicSpaceSet topicSpaceSet = resource.getTopicSpaceSet(); + Collection collection = evaluateTopicExpression(topicExpr); - Collection collection = null; - try - { - collection = topicSpaceSet.evaluateExpression(topicExpr,getResourceContext().getSOAPMessage().getSOAPPart().getEnvelope()); - } - catch (TopicExpressionException e) - { - throw new JAXRPCException("An exception occurred during subscription. ", e); - } //add listeners for (Iterator iterator = collection.iterator(); iterator.hasNext();) { @@ -146,6 +137,24 @@ return subscribeResponseDocument; } + private Collection evaluateTopicExpression(TopicExpression topicExpr) + throws SOAPException + { + NotificationProducerResource resource = (NotificationProducerResource) getResource(); + TopicSpaceSet topicSpaceSet = resource.getTopicSpaceSet(); + + Collection collection = null; + try + { + collection = topicSpaceSet.evaluateExpression(topicExpr,getResourceContext().getSOAPMessage().getSOAPPart().getEnvelope()); + } + catch (TopicExpressionException e) + { + throw new JAXRPCException("An exception occurred during subscription. ", e); + } + return collection; + } + private static EndpointReferenceType buildEPR( ResourceContext resourceContext ) { EndpointReferenceDocument eprDoc = EndpointReferenceDocument.Factory.newInstance(); @@ -168,11 +177,35 @@ public GetCurrentMessageResponseDocument getCurrentMessage( GetCurrentMessageDocument requestDoc ) { GetCurrentMessageDocument.GetCurrentMessage request = requestDoc.getGetCurrentMessage(); - TopicExpressionType topicExpr = request.getTopic(); + TopicExpressionType topicExprMess = request.getTopic(); + Collection collection = null; + try + { + TopicExpression topicExpr = new XmlBeansTopicExpression( topicExprMess ); + collection = evaluateTopicExpression(topicExpr); + } + catch (Exception e) + { + throw new JAXRPCException("An exception occurred: ",e); + } + + GetCurrentMessageResponseDocument message = GetCurrentMessageResponseDocument.Factory.newInstance(); + GetCurrentMessageResponseDocument.GetCurrentMessageResponse response = message.addNewGetCurrentMessageResponse(); + if(collection.size() > 1) + { + throw new JAXRPCException("The topicexpression for GetCurrentMessage return more than 1 value! This is an invalid request."); + } + else + { + Topic topic = (Topic) collection.iterator().next(); + XmlObject currentMessage = (XmlObject) topic.getCurrentMessage(); + + XmlBeanUtils.addChildElement(response, currentMessage); + } //run over topic collection to find topic of interest //should only eval to 1 topic! //get last message from topic // TODO - return null; + return message; } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
