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]

Reply via email to