You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ch...@apache.org on 2006/07/12 02:57:15 UTC
svn commit: r421059 - in /webservices/axis2/trunk/java/modules/savan: conf/
src/org/apache/savan/configuration/ src/org/apache/savan/eventing/
src/org/apache/savan/eventing/client/ src/org/apache/savan/module/
src/org/apache/savan/util/ test-resources/...
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: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org