Author: chamikara
Date: Tue Jul 11 17:57:14 2006
New Revision: 421059

URL: http://svn.apache.org/viewvc?rev=421059&view=rev
Log:
Updated the savan-config to include filters. The filters defined here can be 
used b any protocol.
Removed createFilter method from the UtilFactory

Modified:
    webservices/axis2/trunk/java/modules/savan/conf/savan-config.xml
    
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/configuration/ConfigurationManager.java
    
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingConstants.java
    
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingSubscriptionProcessor.java
    
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingUtilFactory.java
    
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/client/EventingClient.java
    
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/client/SubscriptionStatus.java
    
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/module/SavanModule.java
    
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/util/UtilFactory.java
    
webservices/axis2/trunk/java/modules/savan/test-resources/savan-config-test.xml
    
webservices/axis2/trunk/java/modules/savan/test/org/apache/axis2/savan/EventingSubscripitonProcessorTest.java

Modified: webservices/axis2/trunk/java/modules/savan/conf/savan-config.xml
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/savan/conf/savan-config.xml?rev=421059&r1=421058&r2=421059&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/savan/conf/savan-config.xml (original)
+++ webservices/axis2/trunk/java/modules/savan/conf/savan-config.xml Tue Jul 11 
17:57:14 2006
@@ -20,14 +20,11 @@
        </subscriberStore>
     </subscriberStores>
     
-    <!--
     <filters>
        <filter>
-               <name>xpath</name>
-               
<identifier>org.apache.savan.storage.DefaultSubscriberStore</identifier>
-               <class>org.apache.savan.storage.DefaultSubscriberStore</class>
+               
<identifier>http://www.w3.org/TR/1999/REC-xpath-19991116</identifier>
+               <class>org.apache.savan.filters.XPathBasedFilter</class>
        </filter>
     </filters>
-    -->
     
 </savan-config>

Modified: 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/configuration/ConfigurationManager.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/configuration/ConfigurationManager.java?rev=421059&r1=421058&r2=421059&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/configuration/ConfigurationManager.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/configuration/ConfigurationManager.java
 Tue Jul 11 17:57:14 2006
@@ -35,6 +35,7 @@
 import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;
 import org.apache.savan.SavanConstants;
 import org.apache.savan.SavanException;
+import org.apache.savan.filters.Filter;
 import org.apache.savan.storage.SubscriberStore;
 import org.apache.savan.util.UtilFactory;
 
@@ -46,6 +47,7 @@
        
        private HashMap protocolMap = null;
        private HashMap subscriberStoreNamesMap = null;
+       private HashMap filterMap = null;
        
        private final String SavanConfig = "savan-config";
        private final String Protocols = "protocols";
@@ -57,12 +59,16 @@
        private final String SOAPAction = "mapping-rules";
        private final String SubscriberStores = "subscriberStores";
        private final String SubscriberStore = "subscriberStore";
+       private final String Filters = "filters";
+       private final String Filter = "filter";
        private final String Key = "key";
        private final String Clazz = "class";
+       private final String Identifier = "identifier";
        
        public ConfigurationManager () {
                protocolMap = new HashMap ();
                subscriberStoreNamesMap = new HashMap ();
+               filterMap = new HashMap ();
        }
        
        /**
@@ -139,6 +145,12 @@
                        throw new SavanException ("'subscriberStores' element 
should be present, as a sub-element of the 'savan-config' element");
                }
                processSubscriberStores(subscriberStoresElement);
+               
+               OMElement filtersElement = element.getFirstChildWithName(new 
QName (Filters));
+               if (subscriberStoresElement==null) {
+                       throw new SavanException ("'Filters' element should be 
present, as a sub-element of the 'savan-config' element");
+               }
+               processFilters (filtersElement);
        }
        
        private void processProtocols (OMElement element) throws SavanException 
{
@@ -230,6 +242,14 @@
                return (SubscriberStore) getObject(name);
        }
        
+       public Filter getFilterInstance (String key) throws SavanException {
+               String filterClass = (String) filterMap.get(key);
+               if (filterClass==null)
+                       return null;
+               
+               return (Filter) getObject(filterClass);
+       }
+       
        private Object getObject (String className) throws SavanException {
        
                Object obj;
@@ -242,6 +262,29 @@
                }
                 
                return obj;
+       }
+       
+       private void processFilters (OMElement element) throws SavanException {
+               Iterator filterElementsIterator = 
element.getChildrenWithName(new QName (Filter));
+               while (filterElementsIterator.hasNext()) {
+                       OMElement filterElement = (OMElement) 
filterElementsIterator.next();
+                       processFilter (filterElement);
+               }
+       }
+       
+       private void processFilter (OMElement element) throws SavanException {
+               OMElement identifierElement = element.getFirstChildWithName(new 
QName (Identifier));
+               OMElement classElement = element.getFirstChildWithName(new 
QName (Clazz));
+               
+               if (identifierElement==null)
+                       throw new SavanException ("Identifier element is not 
present within the Filter");
+               if (classElement==null)
+                       throw new SavanException ("Class element is not present 
within the Filter");
+               
+               String identifier = identifierElement.getText();
+               String clazz = classElement.getText();
+               
+               filterMap.put(identifier,clazz);
        }
        
 }

Modified: 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingConstants.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingConstants.java?rev=421059&r1=421058&r2=421059&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingConstants.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingConstants.java
 Tue Jul 11 17:57:14 2006
@@ -22,7 +22,7 @@
        String EVENTING_NAMESPACE = 
"http://schemas.xmlsoap.org/ws/2004/08/eventing";;
        String EVENTING_PREFIX = "wse";
        String DEFAULT_DELIVERY_MODE = 
"http://schemas.xmlsoap.org/ws/2004/08/eventing/DeliveryModes/Push";;
-       String DEFAULT_FILTER_DIALECT = FilterDialects.XPath;
+       String DEFAULT_FILTER_IDENTIFIER = FilterDialects.XPath;
        
        interface TransferedProperties {
                String SUBSCRIBER_UUID = "SAVAN_EVENTING_SUBSCRIBER_UUID";

Modified: 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingSubscriptionProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingSubscriptionProcessor.java?rev=421059&r1=421058&r2=421059&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingSubscriptionProcessor.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingSubscriptionProcessor.java
 Tue Jul 11 17:57:14 2006
@@ -35,8 +35,10 @@
 import org.apache.axis2.databinding.types.Duration;
 import org.apache.axis2.databinding.utils.ConverterUtil;
 import org.apache.axis2.util.UUIDGenerator;
+import org.apache.savan.SavanConstants;
 import org.apache.savan.SavanException;
 import org.apache.savan.SavanMessageContext;
+import org.apache.savan.configuration.ConfigurationManager;
 import org.apache.savan.configuration.Protocol;
 import org.apache.savan.filters.Filter;
 import org.apache.savan.subscribers.Subscriber;
@@ -58,6 +60,10 @@
        
        public Subscriber getSubscriberFromMessage(SavanMessageContext smc) 
throws SavanException {
 
+               ConfigurationManager configurationManager = 
(ConfigurationManager) 
smc.getConfigurationContext().getProperty(SavanConstants.CONFIGURATION_MANAGER);
+               if (configurationManager==null)
+                       throw new SavanException ("Configuration Manager not 
set");
+               
                Protocol protocol = smc.getProtocol();
                if (protocol==null)
                        throw new SavanException ("Protocol not found");
@@ -112,6 +118,10 @@
                        deliveryMode = EventingConstants.DEFAULT_DELIVERY_MODE;
                }
                
+               if (!deliveryModesupported()) {
+                       //TODO throw unsupported delivery mode fault.
+               }
+               
                Delivery delivery = new Delivery ();
                delivery.setDeliveryEPR(notifyToEPr);
                delivery.setDeliveryMode(deliveryMode);
@@ -152,13 +162,14 @@
                        OMNode filterNode = filterElement.getFirstOMChild();
                        OMAttribute dialectAttr = 
filterElement.getAttribute(new QName (EventingConstants.ElementNames.Dialect));
                        Filter filter = null;
-                       if (dialectAttr==null) {
-                               filter = utilFactory.createFilter 
(EventingConstants.DEFAULT_FILTER_DIALECT);
-                       } else {
-                               filter = utilFactory.createFilter 
(dialectAttr.getAttributeValue());
+                       
+                       String filterKey = 
EventingConstants.DEFAULT_FILTER_IDENTIFIER;
+                       if (dialectAttr!=null) {
+                               filterKey = dialectAttr.getAttributeValue();
                        }
+                       filter = 
configurationManager.getFilterInstance(filterKey);
                        if (filter==null)
-                               throw new SavanException ("Cant find a suitable 
message filter");
+                               throw new SavanException ("The Filter defined 
by the dialect is not available");
                        
                        filter.setUp (filterNode);
                        
@@ -253,6 +264,19 @@
                        }
                }
                
+               boolean invalidExpirationTime = false;
+               if (bean.isDuration()) {
+                       if (isInvalidDiration (bean.getDurationValue()))
+                               invalidExpirationTime = true;
+               } else {
+                       if (isDateInThePast (bean.getDateValue())) 
+                               invalidExpirationTime = true;
+               }
+               
+               if (invalidExpirationTime) {
+                       //TODO throw Invalid Expiration Time fault
+               }
+               
                return bean;
        }
 
@@ -270,7 +294,22 @@
                        throw new SavanException ("The subscriber has a unknown 
SOAP version property set");
                
                SOAPEnvelope envelope = factory.getDefaultEnvelope();
-               
-               
        }
+       
+       private boolean deliveryModesupported() {
+               return true;
+       }
+       
+       private boolean isInvalidDiration (Duration duration) {
+               return false;
+       }
+       
+       private boolean isDateInThePast (Date date) {
+               return false;
+       }
+       
+       private boolean filterDilalectSupported (String filterDialect){ 
+               return true;
+       }
+       
 }

Modified: 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingUtilFactory.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingUtilFactory.java?rev=421059&r1=421058&r2=421059&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingUtilFactory.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/EventingUtilFactory.java
 Tue Jul 11 17:57:14 2006
@@ -20,8 +20,6 @@
 import org.apache.axis2.context.MessageContext;
 import org.apache.savan.SavanConstants;
 import org.apache.savan.SavanMessageContext;
-import org.apache.savan.filters.Filter;
-import org.apache.savan.filters.XPathBasedFilter;
 import org.apache.savan.messagereceiver.MessageReceiverDeligater;
 import org.apache.savan.subscribers.Subscriber;
 import org.apache.savan.subscription.SubscriptionProcessor;
@@ -63,13 +61,6 @@
        
        public MessageReceiverDeligater createMessageReceiverDeligater() {
                return new EventingMessageReceiverDeligater ();
-       }
-
-       public Filter createFilter (String dialect) {
-               if (EventingConstants.FilterDialects.XPath.equals(dialect))
-                       return new XPathBasedFilter ();
-               else
-                       return null;
        }
 
        public Subscriber createSubscriber() {

Modified: 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/client/EventingClient.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/client/EventingClient.java?rev=421059&r1=421058&r2=421059&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/client/EventingClient.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/client/EventingClient.java
 Tue Jul 11 17:57:14 2006
@@ -143,7 +143,8 @@
                options.setTo(managerEPR);
                
                OMElement unsubscribeResponse =  serviceClient.sendReceive 
(envelope.getBody().getFirstElement());
-
+               //TODO process unsubscriber response
+               
                options.setAction(oldAction);
                options.setTo(oldTo);
        }
@@ -217,8 +218,8 @@
                OMElement expiresElementElement = 
getStatusResponseElement.getFirstChildWithName(new QName 
(EventingConstants.EVENTING_NAMESPACE,EventingConstants.ElementNames.Expires));
                if (expiresElementElement!=null) {
                        String valueStr = expiresElementElement.getText();
-                       long expires = Long.parseLong(valueStr);
-                       subscriptionStatus.setExpirationTime(expires);
+//                     long expires = Long.parseLong(valueStr);
+                       subscriptionStatus.setExpirationValue(valueStr);
                }
                
                return subscriptionStatus;

Modified: 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/client/SubscriptionStatus.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/client/SubscriptionStatus.java?rev=421059&r1=421058&r2=421059&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/client/SubscriptionStatus.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/eventing/client/SubscriptionStatus.java
 Tue Jul 11 17:57:14 2006
@@ -18,15 +18,17 @@
 
 public class SubscriptionStatus {
 
-       long expirationTime = -1;
-
-       public long getExpirationTime() {
-               return expirationTime;
+       String expirationValue;
+
+       public String getExpirationValue() {
+               return expirationValue;
+       }
+
+       public void setExpirationValue(String expirationValue) {
+               this.expirationValue = expirationValue;
        }
 
-       public void setExpirationTime(long expirationTime) {
-               this.expirationTime = expirationTime;
-       }
+       
        
        
 }

Modified: 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/module/SavanModule.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/module/SavanModule.java?rev=421059&r1=421058&r2=421059&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/module/SavanModule.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/module/SavanModule.java
 Tue Jul 11 17:57:14 2006
@@ -44,7 +44,7 @@
                try {
                        configurationManager.configure();
                } catch (SavanException e) {
-                       log.debug("Exception thrown while trying to configure 
the Savan module",e);
+                       log.error ("Exception thrown while trying to configure 
the Savan module",e);
                }
                
                
configContext.setProperty(SavanConstants.CONFIGURATION_MANAGER,configurationManager);

Modified: 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/util/UtilFactory.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/util/UtilFactory.java?rev=421059&r1=421058&r2=421059&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/util/UtilFactory.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/savan/src/org/apache/savan/util/UtilFactory.java
 Tue Jul 11 17:57:14 2006
@@ -33,7 +33,6 @@
        public abstract SavanMessageContext initializeMessage 
(SavanMessageContext messageContext);
        public abstract SubscriptionProcessor createSubscriptionProcessor ();
        public abstract MessageReceiverDeligater createMessageReceiverDeligater 
();
-       public abstract Filter createFilter (String dialect);
        public abstract Subscriber createSubscriber ();
        
 }

Modified: 
webservices/axis2/trunk/java/modules/savan/test-resources/savan-config-test.xml
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/savan/test-resources/savan-config-test.xml?rev=421059&r1=421058&r2=421059&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/savan/test-resources/savan-config-test.xml 
(original)
+++ 
webservices/axis2/trunk/java/modules/savan/test-resources/savan-config-test.xml 
Tue Jul 11 17:57:14 2006
@@ -21,4 +21,12 @@
        </subscriberStore>
     </subscriberStores>
     
+    <filters>
+       <filter>
+               
<identifier>http://www.w3.org/TR/1999/REC-xpath-19991116</identifier>
+               <class>org.apache.savan.filters.XPathBasedFilter</class>
+       </filter>
+    </filters>
+    
+    
 </savan-config>

Modified: 
webservices/axis2/trunk/java/modules/savan/test/org/apache/axis2/savan/EventingSubscripitonProcessorTest.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/savan/test/org/apache/axis2/savan/EventingSubscripitonProcessorTest.java?rev=421059&r1=421058&r2=421059&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/savan/test/org/apache/axis2/savan/EventingSubscripitonProcessorTest.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/savan/test/org/apache/axis2/savan/EventingSubscripitonProcessorTest.java
 Tue Jul 11 17:57:14 2006
@@ -11,10 +11,14 @@
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.Options;
+import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.databinding.utils.ConverterUtil;
 import org.apache.axis2.description.AxisService;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.savan.SavanConstants;
 import org.apache.savan.SavanMessageContext;
+import org.apache.savan.configuration.ConfigurationManager;
 import org.apache.savan.configuration.Protocol;
 import org.apache.savan.eventing.EventingConstants;
 import org.apache.savan.eventing.EventingSubscriber;
@@ -27,6 +31,8 @@
 
 public class EventingSubscripitonProcessorTest extends TestCase {
 
+       private final String TEST_SAVAN_CONFIG = "savan-config-test.xml";
+       
        public void testSubscriberExtraction () throws Exception {
                SavanMessageContext smc = getSubscriptionMessage();
                
@@ -76,10 +82,15 @@
 
                SOAPEnvelope envelope = 
CommonUtil.getTestEnvelopeFromFile(testRource,"eventing-subscription.xml");
                
+               AxisConfiguration axisConfiguration = new AxisConfiguration ();
+               ConfigurationContext configurationContext = new 
ConfigurationContext (axisConfiguration);
+               
                MessageContext mc = new MessageContext ();
                SavanMessageContext smc = new SavanMessageContext (mc);
                mc.setEnvelope(envelope);
                
+               mc.setConfigurationContext(configurationContext);
+               
                Options options = new Options ();
                options.setTo(new EndpointReference ("http://DummyToAddress/";));
                
@@ -91,6 +102,16 @@
                mc.setAxisService(new AxisService ("DummyService"));
                
                options.setAction("urn:uuid:DummyAction");
+               
+               String savan_concig_file = testRource + File.separator + 
TEST_SAVAN_CONFIG;
+               File file = new File (savan_concig_file);
+               if (!file.exists())
+                       throw new IOException (TEST_SAVAN_CONFIG + " file is 
not available in test-resources.");
+               
+               ConfigurationManager configurationManager = new 
ConfigurationManager ();
+               configurationManager.configure(file);
+               
+               
configurationContext.setProperty(SavanConstants.CONFIGURATION_MANAGER,configurationManager);
                
                return smc;
        }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to