Author: hemapani
Date: Sun May 27 21:41:10 2007
New Revision: 542108
URL: http://svn.apache.org/viewvc?view=rev&rev=542108
Log:
make feeds accessible via GET
Added:
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomMessageReceiver.java
Modified:
webservices/savan/trunk/java/modules/core/src/main/config/savan-config.xml
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/SavanConstants.java
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomEventingClient.java
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomSubscriptionProcessor.java
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/Feed.java
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/eventing/EventingConstants.java
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/eventing/EventingUtilFactory.java
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/filters/XPathBasedFilter.java
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/messagereceiver/MessageReceiverDeligater.java
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/subscription/SubscriptionProcessor.java
webservices/savan/trunk/java/modules/mar/module.xml
Modified:
webservices/savan/trunk/java/modules/core/src/main/config/savan-config.xml
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/java/modules/core/src/main/config/savan-config.xml?view=diff&rev=542108&r1=542107&r2=542108
==============================================================================
--- webservices/savan/trunk/java/modules/core/src/main/config/savan-config.xml
(original)
+++ webservices/savan/trunk/java/modules/core/src/main/config/savan-config.xml
Sun May 27 21:41:10 2007
@@ -9,6 +9,7 @@
<action>http://schemas.xmlsoap.org/ws/2004/08/eventing/Renew</action>
<action>http://schemas.xmlsoap.org/ws/2004/08/eventing/GetStatus</action>
<action>http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe</action>
+ <action>http://wso2.com/ws/2007/05/eventing/Publish</action>
</mapping-rules>
<defaultSubscriber>eventing</defaultSubscriber>
<defaultFilter>empty</defaultFilter>
Modified:
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/SavanConstants.java
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/SavanConstants.java?view=diff&rev=542108&r1=542107&r2=542108
==============================================================================
---
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/SavanConstants.java
(original)
+++
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/SavanConstants.java
Sun May 27 21:41:10 2007
@@ -51,11 +51,14 @@
int RENEW_RESPONSE_MESSAGE = 6;
int GET_STATUS_MESSAGE = 7;
int GET_STATUS_RESPONSE_MESSAGE = 8;
+ int PUBLISH = 9;
}
interface Properties {
String SUBSCRIBER_STORE = "SubscriberStore";
}
+
+
Modified:
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomEventingClient.java
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomEventingClient.java?view=diff&rev=542108&r1=542107&r2=542108
==============================================================================
---
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomEventingClient.java
(original)
+++
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomEventingClient.java
Sun May 27 21:41:10 2007
@@ -1,5 +1,6 @@
package org.apache.savan.atom;
+import java.util.Calendar;
import java.util.Iterator;
import javax.xml.namespace.QName;
@@ -10,11 +11,13 @@
import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.ServiceClient;
+import org.apache.savan.filters.XPathBasedFilter;
import org.apache.savan.util.CommonUtil;
import org.apache.xmlbeans.XmlException;
import com.wso2.eventing.atom.CreateFeedDocument;
import com.wso2.eventing.atom.CreateFeedResponseDocument;
+import com.wso2.eventing.atom.FilterType;
import com.wso2.eventing.atom.CreateFeedDocument.CreateFeed;
import com.wso2.eventing.atom.CreateFeedResponseDocument.CreateFeedResponse;
@@ -25,7 +28,11 @@
public AtomEventingClient(ServiceClient serviceClient){
this.serviceClient = serviceClient;
}
+
public CreateFeedResponse createFeed(String title,String author) throws
AxisFault{
+ return createFeed(title, author,null,null);
+ }
+ public CreateFeedResponse createFeed(String title,String
author,Calendar expiredTime,String xpathFilter) throws AxisFault{
try {
serviceClient.getOptions().setAction(AtomConstants.Actions.Subscribe);
@@ -34,7 +41,15 @@
createFeed.setAuthor(author);
createFeed.setTitle(title);
- //createFeed.setId("foo");
+
+ if(expiredTime != null){
+ createFeed.setExpires(expiredTime);
+ }
+ if(xpathFilter != null){
+ FilterType filter = createFeed.addNewFilter();
+
filter.setDialect(XPathBasedFilter.XPATH_BASED_FILTER);
+ filter.setStringValue(xpathFilter);
+ }
OMElement request = CommonUtil.toOM(createFeedDocument);
request.build();
@@ -67,6 +82,7 @@
OMElement request =
OMAbstractFactory.getOMFactory().createOMElement(new
QName(AtomConstants.ATOM_MSG_NAMESPACE,"DeleteFeed"));
serviceClient.sendReceive(request);
}
+
public void deleteFeed()throws AxisFault{
if(feedEpr != null){
Added:
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomMessageReceiver.java
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomMessageReceiver.java?view=auto&rev=542108
==============================================================================
---
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomMessageReceiver.java
(added)
+++
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomMessageReceiver.java
Sun May 27 21:41:10 2007
@@ -0,0 +1,120 @@
+package org.apache.savan.atom;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPProcessingException;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.engine.AxisError;
+import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.util.MessageContextBuilder;
+import org.apache.savan.storage.SubscriberStore;
+import org.apache.savan.util.CommonUtil;
+
+public class AtomMessageReceiver implements MessageReceiver{
+
+ public static final String ATOM_NAME = "atom";
+
+ public void receive(MessageContext messageCtx) throws AxisFault {
+
+ try {
+ //String resourcePath = messageCtx.getTo().getAddress();
+
//http://127.0.0.1:5555/axis2/services/PublisherService/atom?a=urn_uuid_96C2CB953DABC98DFC1179904343537.atom
+
+
+
+ HttpServletRequest request =
(HttpServletRequest)messageCtx.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
+ if(request == null ||
HTTPConstants.HEADER_GET.equals(request.getMethod()) ||
HTTPConstants.HEADER_POST.equals(request.getMethod())){
+ SOAPEnvelope envlope = messageCtx.getEnvelope();
+ OMElement bodyContent =
envlope.getBody().getFirstElement();
+
+ OMElement feedID =
bodyContent.getFirstElement();
+ String pathWRTRepository =
"atom/"+feedID.getText();
+
+ File atomFile =
messageCtx.getConfigurationContext().getRealPath(pathWRTRepository);
+ if(!atomFile.exists()){
+ throw new AxisFault("no feed exisits
for "+feedID.getText());
+ }
+ FileInputStream atomIn = new
FileInputStream(atomFile);
+
+ SOAPFactory fac = getSOAPFactory(messageCtx);
+ SOAPEnvelope envelope = fac.getDefaultEnvelope();
+
+ //add the content of the file to the response
+ XMLStreamReader xmlreader = StAXUtils.createXMLStreamReader
+ (atomIn, MessageContext.DEFAULT_CHAR_SET_ENCODING);
+ StAXBuilder builder = new StAXOMBuilder(fac,xmlreader);
+ OMElement result = (OMElement)
builder.getDocumentElement();
+ envelope.getBody().addChild(result);
+
+ //send beck the response
+ MessageContext outMsgContext =
MessageContextBuilder.createOutMessageContext(messageCtx);
+
outMsgContext.getOperationContext().addMessageContext(outMsgContext);
+ outMsgContext.setEnvelope(envelope);
+
+ AxisEngine engine =
+ new AxisEngine(
+
outMsgContext.getConfigurationContext());
+ engine.send(outMsgContext);
+
+ }else
if(HTTPConstants.HEADER_POST.equals(request.getMethod())){
+ SOAPEnvelope envlope = messageCtx.getEnvelope();
+ OMElement bodyContent =
envlope.getBody().getFirstElement();
+
+ OMElement feedID =
bodyContent.getFirstElement();
+ String pathWRTRepository =
"atom/"+feedID.getText();
+
+ //remove the file
+ File atomFile =
messageCtx.getConfigurationContext().getRealPath(pathWRTRepository);
+ atomFile.delete();
+
+ //remove the feed from subscriber store
+ String feedIDAsUrn =
feedID.getText().replaceAll("_", ":");
+ SubscriberStore store =
CommonUtil.getSubscriberStore(messageCtx.getAxisService());
+ if (store == null)
+ throw new AxisFault ("Cant find the
Savan subscriber store");
+ store.delete(feedIDAsUrn);
+ }
+
+ } catch (SOAPProcessingException e) {
+ throw new AxisFault(e);
+ } catch (OMException e) {
+ throw new AxisFault(e);
+ } catch (FileNotFoundException e) {
+ throw new AxisFault(e);
+ } catch (XMLStreamException e) {
+ throw new AxisFault(e);
+ }
+ }
+
+ public SOAPFactory getSOAPFactory(MessageContext msgContext) throws
AxisFault {
+ String nsURI =
msgContext.getEnvelope().getNamespace().getNamespaceURI();
+ if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(nsURI)) {
+ return OMAbstractFactory.getSOAP12Factory();
+ } else if
(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(nsURI)) {
+ return OMAbstractFactory.getSOAP11Factory();
+ } else {
+ throw new
AxisFault(Messages.getMessage("invalidSOAPversion"));
+ }
+ }
+
+}
Modified:
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomSubscriptionProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomSubscriptionProcessor.java?view=diff&rev=542108&r1=542107&r2=542108
==============================================================================
---
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomSubscriptionProcessor.java
(original)
+++
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/AtomSubscriptionProcessor.java
Sun May 27 21:41:10 2007
@@ -56,6 +56,17 @@
if (id!=null) {
smc.setProperty(AtomConstants.TransferedProperties.SUBSCRIBER_UUID,id);
}
+
+
+
+// AtomSubscriber atomSubscriber = new AtomSubscriber();
+//
smc.setProperty(AtomConstants.TransferedProperties.SUBSCRIBER_UUID,id);
+// atomSubscriber.setId(new URI(id));
+// String atomFeedPath = id.replaceAll(":", "_")+ ".atom";
+// atomSubscriber.setAtomFile(new File(realAtomPath,atomFeedPath));
+// atomSubscriber.setAuthor("DefaultUser");
+// atomSubscriber.setTitle("default Feed");
+
}
/**
@@ -86,8 +97,6 @@
if (envelope==null)
return null;
-// AbstractSubscriber subscriber = utilFactory.createSubscriber();
//eventing only works on leaf subscriber for now.
-
String subscriberName = protocol.getDefaultSubscriber();
Subscriber subscriber =
configurationManager.getSubscriberInstance(subscriberName);
@@ -98,7 +107,7 @@
//find the real path for atom feeds
File repositoryPath =
smc.getConfigurationContext().getRealPath("/");
- File realAtomPath = new
File(repositoryPath.getAbsoluteFile(),"../atom");
+ File realAtomPath = new
File(repositoryPath.getAbsoluteFile(),"atom");
//Get the service URL from request
String serviceAddress =
smc.getMessageContext().getTo().getAddress();
@@ -113,18 +122,18 @@
atomSubscriber.setId(new URI(id));
String atomFeedPath = id.replaceAll(":", "_")+ ".atom";
atomSubscriber.setAtomFile(new
File(realAtomPath,atomFeedPath));
- atomSubscriber.setFeedUrl(serviceAddress +"/atom/"+
atomFeedPath);
+
atomSubscriber.setFeedUrl(serviceAddress+"/services/"+smc.getMessageContext().getServiceContext().getAxisService().getName()
+"/atom?feed="+ atomFeedPath);
SOAPBody body = envelope.getBody();
CreateFeedDocument createFeedDocument =
CreateFeedDocument.Factory.parse(body.getFirstElement().getXMLStreamReader());
CreateFeed createFeed =
createFeedDocument.getCreateFeed();
- //TODO Srinath
-// if(createFeed.getEndTo() != null){
-//
atomSubscriber.setEndToEPr(createFeed.getEndTo());
-// }
-// if(createFeed.getExpires() != null){
-//
atomSubscriber.setSubscriptionEndingTime(createFeed.getExpires().getTime());
-// }
+
+ if(createFeed.getEndTo() != null){
+
atomSubscriber.setEndToEPr(createFeed.getEndTo());
+ }
+ if(createFeed.getExpires() != null){
+
atomSubscriber.setSubscriptionEndingTime(createFeed.getExpires().getTime());
+ }
if (createFeed.getFilter() != null) {
Filter filter = null;
@@ -141,69 +150,12 @@
}
atomSubscriber.setFilter(filter);
}
-
-
-
-
-
//TODO -Srinath
atomSubscriber.setAuthor(createFeed.getAuthor());
atomSubscriber.setTitle(createFeed.getTitle());
smc.setProperty(AtomConstants.Properties.feedUrl,
atomSubscriber.getFeedUrl());
-
return atomSubscriber;
-
-
-// SOAPBody body = envelope.getBody();
-//
-// OMElement createFeed = findElement("createFeed", body,
true) ;
-// OMElement endToElement =
findElement(AtomConstants.ElementNames.EndTo, body, true);
-//
-// EndpointReference endToEPR = null;
-// if(endToElement != null){
-// endToEPR =
EndpointReferenceHelper.fromOM(endToElement);
-// }
-// atomSubscriber.setEndToEPr(endToEPR);
-//
-//
-// String expiresText =
findValue(AtomConstants.EXPIRES_ELEMENT, createFeed, true);
-// if (expiresText==null){
-// String message = "Expires Text is null";
-// throw new SavanException (message);
-// }
-// expiresText = expiresText.trim();
-// Date expiration =
getExpirationBeanFromString(expiresText);
-// if (expiration==null) {
-// String message = "Cannot understand the given
date-time value for the Expiration";
-// throw new SavanException (message);
-// }
-// atomSubscriber.setSubscriptionEndingTime(expiration);
-//
-// OMElement filterElement =
findElement(AtomConstants.ElementNames.Filter, createFeed, true);
-// if (filterElement!= null) {
-// OMNode filterNode =
filterElement.getFirstOMChild();
-// OMAttribute dialectAttr =
filterElement.getAttribute(new QName (AtomConstants.ElementNames.Dialect));
-// Filter filter = null;
-// String filterKey =
AtomConstants.DEFAULT_FILTER_IDENTIFIER;
-// if (dialectAttr!=null) {
-// filterKey =
dialectAttr.getAttributeValue();
-// }
-// filter =
configurationManager.getFilterInstanceFromId(filterKey);
-// if (filter==null)
-// throw new SavanException ("The Filter
defined by the dialect is not available");
-//
-// filter.setUp (filterNode);
-// atomSubscriber.setFilter(filter);
-// }
-//
-//
atomSubscriber.setId(findValue(AtomConstants.ID_ELEMENT, createFeed,true));
-//
atomSubscriber.setAuthor(findValue(AtomConstants.AUTHOR_ELEMENT,
createFeed,true));
-//
atomSubscriber.setTitle(findValue(AtomConstants.TITLE_ELEMENT,
createFeed,true));
-//
-// smc.setProperty(AtomConstants.Properties.feedUrl,
atomSubscriber.getFeedUrl());
-//
-// return atomSubscriber;
} catch (AxisFault e) {
throw new SavanException(e);
} catch (OMException e) {
@@ -215,9 +167,9 @@
}
}
- private String findValue(String localName,OMElement parent,boolean
throwfault) throws SavanException{
- return findValue(AtomConstants.ATOM_NAMESPACE, localName,
parent, throwfault);
- }
+// private String findValue(String localName,OMElement parent,boolean
throwfault) throws SavanException{
+// return findValue(AtomConstants.ATOM_NAMESPACE, localName,
parent, throwfault);
+// }
private String findValue(String nsURI,String localName,OMElement
parent,boolean throwfault) throws SavanException{
QName name = new QName
(nsURI,AtomConstants.IDEDNTIFIER_ELEMENT);
@@ -233,19 +185,19 @@
}
}
- private OMElement findElement(String localName,OMElement parent,boolean
throwfault) throws SavanException{
- QName name = new QName
(AtomConstants.ATOM_NAMESPACE,AtomConstants.ID_ELEMENT);
- OMElement ele = parent.getFirstChildWithName(name);
- if(ele != null){
- return ele;
- }else{
- if(throwfault){
- throw new SavanException (localName + " element
is not defined");
- }else{
- return null;
- }
- }
- }
+// private OMElement findElement(String localName,OMElement parent,boolean
throwfault) throws SavanException{
+// QName name = new QName
(AtomConstants.ATOM_NAMESPACE,AtomConstants.ID_ELEMENT);
+// OMElement ele = parent.getFirstChildWithName(name);
+// if(ele != null){
+// return ele;
+// }else{
+// if(throwfault){
+// throw new SavanException (localName + " element
is not defined");
+// }else{
+// return null;
+// }
+// }
+// }
public void pauseSubscription(SavanMessageContext
pauseSubscriptionMessage) throws SavanException {
throw new UnsupportedOperationException ("Eventing
specification does not support this type of messages");
@@ -298,66 +250,5 @@
return
findValue(AtomConstants.ATOM_NAMESPACE,AtomConstants.IDEDNTIFIER_ELEMENT,
envelope.getHeader(), false);
}
-
-// private Date getExpirationBeanFromString (String expiresStr) throws
SavanException {
-//
-//
-//
-// //expires can be a duration or a date time.
-// //Doing the conversion using the ConverUtil helper class.
-//
-// boolean isDuration = CommonUtil.isDuration(expiresStr);
-// if (isDuration) {
-// try {
-// Date currentTime = new Date();
-// Duration duration =
ConverterUtil.convertToDuration(expiresStr);
-// return new Date(currentTime.getTime()+
(int)(1000* duration.getSeconds()));
-// } catch (IllegalArgumentException e) {
-// String message = "Cannot convert the Expiration
value to a valid duration";
-// throw new SavanException (message,e);
-// }
-// } else {
-// try {
-// Calendar calendar =
ConverterUtil.convertToDateTime(expiresStr);
-// return calendar.getTime();
-// } catch (Exception e) {
-// String message = "Cannot convert the Expiration
value to a valid DATE/TIME";
-// throw new SavanException (message,e);
-// }
-// }
-// }
-
- public void doProtocolSpecificEndSubscription(Subscriber subscriber,
String reason, ConfigurationContext configurationContext) throws SavanException
{
- throw new UnsupportedOperationException();
-// String SOAPVersion = (String)
subscriber.getProperty(AtomConstants.Properties.SOAPVersion);
-// if (SOAPVersion==null)
-// throw new SavanException ("Cant find the SOAP version
of the subscriber");
-//
-// SOAPFactory factory = null;
-// if
(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPVersion))
-// factory = OMAbstractFactory.getSOAP11Factory();
-// else if
(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPVersion))
-// factory = OMAbstractFactory.getSOAP12Factory();
-// else
-// 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/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/Feed.java
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/Feed.java?view=diff&rev=542108&r1=542107&r2=542108
==============================================================================
---
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/Feed.java
(original)
+++
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/atom/Feed.java
Sun May 27 21:41:10 2007
@@ -68,7 +68,7 @@
factory.createOMElement("id",atomNs,feedEle).setText(id);
if(title != null){
-
factory.createOMElement("title",atomNs,feedEle).setText(id);
+
factory.createOMElement("title",atomNs,feedEle).setText(title);
}
factory.createOMElement("updated",atomNs,feedEle).setText( new
SimpleDateFormat("dd-mm-yy'T1'HH:MM:ssZ").format(lastUpdated));
if(author != null){
@@ -81,12 +81,12 @@
lastUpdated = new Date();
OMElement entryEle =
factory.createOMElement("entry",atomNs,document.getOMDocumentElement());
factory.createOMElement("id",atomNs,entryEle).setText(id +"/" +
entryCount);
- factory.createOMElement("title",atomNs,entryEle).setText(id
+"/" + entryCount);
+
factory.createOMElement("title",atomNs,entryEle).setText("entry" + entryCount);
factory.createOMElement("updated",atomNs,entryEle).setText( new
SimpleDateFormat("dd-mm-yy'T1'HH:MM:ssZ").format(lastUpdated));
OMElement contentEle =
factory.createOMElement("content",atomNs,entryEle);
- contentEle.addAttribute("type","xml",null);
+ contentEle.addAttribute("type","text/xml",null);
contentEle.addChild(entry);
Modified:
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/eventing/EventingConstants.java
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/eventing/EventingConstants.java?view=diff&rev=542108&r1=542107&r2=542108
==============================================================================
---
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/eventing/EventingConstants.java
(original)
+++
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/eventing/EventingConstants.java
Sun May 27 21:41:10 2007
@@ -24,6 +24,7 @@
String DEFAULT_DELIVERY_MODE =
"http://schemas.xmlsoap.org/ws/2004/08/eventing/DeliveryModes/Push";
String DEFAULT_FILTER_IDENTIFIER = FilterDialects.XPath;
+
interface TransferedProperties {
String SUBSCRIBER_UUID = "SAVAN_EVENTING_SUBSCRIBER_UUID";
}
@@ -56,6 +57,7 @@
String UnsubscribeResponse =
"http://schemas.xmlsoap.org/ws/2004/08/eventing/UnsubscribeResponse";
String GetStatus =
"http://schemas.xmlsoap.org/ws/2004/08/eventing/GetStatus";
String GetStatusResponse =
"http://schemas.xmlsoap.org/ws/2004/08/eventing/GetStatusResponse";
+ String Publish = "http://wso2.com/ws/2007/05/eventing/Publish";
}
interface Properties {
Modified:
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/eventing/EventingUtilFactory.java
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/eventing/EventingUtilFactory.java?view=diff&rev=542108&r1=542107&r2=542108
==============================================================================
---
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/eventing/EventingUtilFactory.java
(original)
+++
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/eventing/EventingUtilFactory.java
Sun May 27 21:41:10 2007
@@ -51,6 +51,8 @@
smc.setMessageType(SavanConstants.MessageTypes.UNSUBSCRIPTION_RESPONSE_MESSAGE);
else if
(EventingConstants.Actions.GetStatusResponse.equals(action))
smc.setMessageType(SavanConstants.MessageTypes.GET_STATUS_RESPONSE_MESSAGE);
+ else if (EventingConstants.Actions.Publish.equals(action))
+ smc.setMessageType(SavanConstants.MessageTypes.PUBLISH);
else
smc.setMessageType(SavanConstants.MessageTypes.UNKNOWN);
Modified:
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/filters/XPathBasedFilter.java
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/filters/XPathBasedFilter.java?view=diff&rev=542108&r1=542107&r2=542108
==============================================================================
---
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/filters/XPathBasedFilter.java
(original)
+++
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/filters/XPathBasedFilter.java
Sun May 27 21:41:10 2007
@@ -49,6 +49,8 @@
*
*/
public class XPathBasedFilter implements Filter {
+
+ public static String XPATH_BASED_FILTER =
"http://www.w3.org/TR/1999/REC-xpath-19991116";
private String XPathString = null;
Modified:
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/messagereceiver/MessageReceiverDeligater.java
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/messagereceiver/MessageReceiverDeligater.java?view=diff&rev=542108&r1=542107&r2=542108
==============================================================================
---
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/messagereceiver/MessageReceiverDeligater.java
(original)
+++
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/messagereceiver/MessageReceiverDeligater.java
Sun May 27 21:41:10 2007
@@ -77,6 +77,8 @@
processor.unsubscribe(smc);
} else if
(messageType==SavanConstants.MessageTypes.RENEW_MESSAGE) {
processor.renewSubscription(smc);
+ }else if (messageType==SavanConstants.MessageTypes.PUBLISH) {
+ processor.publish(smc);
}
}
Modified:
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/subscription/SubscriptionProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/subscription/SubscriptionProcessor.java?view=diff&rev=542108&r1=542107&r2=542108
==============================================================================
---
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/subscription/SubscriptionProcessor.java
(original)
+++
webservices/savan/trunk/java/modules/core/src/main/java/org/apache/savan/subscription/SubscriptionProcessor.java
Sun May 27 21:41:10 2007
@@ -17,9 +17,11 @@
package org.apache.savan.subscription;
+import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axis2.context.ServiceContext;
import org.apache.savan.SavanException;
import org.apache.savan.SavanMessageContext;
+import org.apache.savan.publication.client.PublicationClient;
import org.apache.savan.storage.SubscriberStore;
import org.apache.savan.subscribers.Subscriber;
import org.apache.savan.util.CommonUtil;
@@ -84,6 +86,16 @@
store.delete(subscriberID);
}
+
+ public void publish(SavanMessageContext publishMessage) throws
SavanException{
+ //TODO handle Topics
+ SOAPEnvelope requestEnvelope = publishMessage.getEnvelope();
+ ServiceContext serviceContext =
publishMessage.getMessageContext().getServiceContext();
+ PublicationClient client = new
PublicationClient(serviceContext.getConfigurationContext());
+
client.sendPublication(requestEnvelope.getBody().getFirstElement(),serviceContext.getAxisService(),null);
+ }
+
+
public abstract void pauseSubscription (SavanMessageContext
pauseSubscriptionMessage) throws SavanException;
Modified: webservices/savan/trunk/java/modules/mar/module.xml
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/java/modules/mar/module.xml?view=diff&rev=542108&r1=542107&r2=542108
==============================================================================
--- webservices/savan/trunk/java/modules/mar/module.xml (original)
+++ webservices/savan/trunk/java/modules/mar/module.xml Sun May 27 21:41:10 2007
@@ -6,10 +6,15 @@
<actionMapping>http://schemas.xmlsoap.org/ws/2004/08/eventing/Renew</actionMapping>
<actionMapping>http://schemas.xmlsoap.org/ws/2004/08/eventing/GetStatus</actionMapping>
<actionMapping>http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe</actionMapping>
+
<actionMapping>http://wso2.com/ws/2007/05/eventing/Publish</actionMapping>
<actionMapping>http://wso2.com/eventing/Subscribe</actionMapping>
<actionMapping>http://wso2.com/eventing/Renew</actionMapping>
<actionMapping>http://wso2.com/eventing/Unsubscribe</actionMapping>
<actionMapping>http://wso2.com/eventing/GetStatus</actionMapping>
+ </operation>
+
+ <operation name="atom" mep="http://www.w3.org/2004/08/wsdl/in-out">
+ <messageReceiver class="org.apache.savan.atom.AtomMessageReceiver"/>
</operation>
</module>