[wsas-java-dev] svn commit r2828 - in
trunk/wsas/java/modules/core/src/org/wso2/wsas: feed
feed/atom feed/rss transport transport/util
svn at wso2.org
svn at wso2.org
Thu May 17 06:59:20 PDT 2007
Author: saminda
Date: Thu May 17 06:58:46 2007
New Revision: 2828
Added:
trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/FeedFactory.java
Removed:
trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/AbstractFeedBuilder.java
trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/atom/AtomFeedFactory.java
trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/rss/RSSFeedFactory.java
Modified:
trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/AbstractFeed.java
trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/FeedListener.java
trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/atom/AtomFeed.java
trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/atom/AtomFeedBuilder.java
trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/rss/RSSFeed.java
trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/rss/RSSFeedBuilder.java
trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/WSASServlet.java
trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/util/AtomProcessor.java
trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/util/RssProcessor.java
Log:
Autodiscovering of context root for RSS and ATOM feeds.
Modified: trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/AbstractFeed.java
==============================================================================
--- trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/AbstractFeed.java (original)
+++ trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/AbstractFeed.java Thu May 17 06:58:46 2007
@@ -16,9 +16,7 @@
package org.wso2.wsas.feed;
import org.apache.axiom.om.OMElement;
-import org.apache.axis2.engine.AxisConfiguration;
import org.wso2.utils.NetworkUtils;
-import org.wso2.wsas.ServerConstants;
import org.wso2.wsas.ServerManager;
import java.net.SocketException;
@@ -27,32 +25,25 @@
*
*/
public abstract class AbstractFeed {
- protected AxisConfiguration axisConfig;
- private String serviceContextPath;
- protected AbstractFeed(AxisConfiguration axisConfig) {
- this.axisConfig = axisConfig;
- init();
- }
- protected String getUrl(String serviceName) throws SocketException {
+ /**
+ *
+ * @param serviceName
+ * @param serviceContextPath : path will be injected when getFeedElement is called
+ * @return
+ * @throws SocketException
+ */
+ protected String getUrl(String serviceName,String serviceContextPath) throws SocketException {
return "http://" + NetworkUtils.getLocalHostname() + ":" + ServerManager.httpPort +
- this.serviceContextPath + "/" + serviceName;
+ serviceContextPath + "/" + serviceName;
}
- public abstract OMElement getFeedElement() throws SocketException;
-
- private void init() {
- String contextRoot =
- (String) axisConfig.
- getParameter(ServerConstants.Axis2ParameterNames.CONTEXT_ROOT).getValue();
- String servicePath =
- (String) axisConfig.
- getParameter(ServerConstants.Axis2ParameterNames.SERVICE_PATH).getValue();
- if (contextRoot != null && contextRoot.trim().length() != 0 && !contextRoot.equals("/")) {
- this.serviceContextPath = contextRoot + "/" + servicePath;
- } else {
- this.serviceContextPath = "/" + servicePath;
- }
- }
+ /**
+ *
+ * @param serviceContextPath : path will be injected when the relavent feeds are called.
+ * @return
+ * @throws SocketException
+ */
+ public abstract OMElement getFeedElement(String serviceContextPath) throws SocketException;
}
Added: trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/FeedFactory.java
==============================================================================
--- (empty file)
+++ trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/FeedFactory.java Thu May 17 06:58:46 2007
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.wso2.wsas.feed;
+
+import org.wso2.wsas.feed.atom.AtomFeed;
+import org.wso2.wsas.feed.rss.RSSFeed;
+
+import java.util.Hashtable;
+import java.util.Map;
+/*
+ *
+ */
+
+public class FeedFactory {
+
+ private static Map rssFeedsMap = new Hashtable();
+ private static Map atomFeedsMap = new Hashtable();
+
+ public static RSSFeed getRSSFeed(String rssSource) {
+ RSSFeed rssFeed = (RSSFeed) rssFeedsMap.get(rssSource);
+ if (rssFeed == null) {
+ rssFeed = new RSSFeed();
+ rssFeedsMap.put(rssSource, rssFeed);
+ }
+ return rssFeed;
+ }
+
+ public static AtomFeed getAtomFeed(String atomSource){
+ AtomFeed atomFeed = (AtomFeed) atomFeedsMap.get(atomSource);
+ if(atomFeed == null){
+ atomFeed = new AtomFeed();
+ atomFeedsMap.put(atomSource, atomFeed);
+ }
+ return atomFeed;
+ }
+}
Modified: trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/FeedListener.java
==============================================================================
--- trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/FeedListener.java (original)
+++ trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/FeedListener.java Thu May 17 06:58:46 2007
@@ -39,8 +39,8 @@
// The initilization code will go here
public void init(AxisConfiguration axisConfig) {
- rssFeedBuilder = new RSSFeedBuilder(axisConfig);
- atomFeedBuilder = new AtomFeedBuilder(axisConfig);
+ rssFeedBuilder = new RSSFeedBuilder();
+ atomFeedBuilder = new AtomFeedBuilder();
services = new ArrayList();
}
Modified: trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/atom/AtomFeed.java
==============================================================================
--- trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/atom/AtomFeed.java (original)
+++ trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/atom/AtomFeed.java Thu May 17 06:58:46 2007
@@ -18,7 +18,6 @@
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
-import org.apache.axis2.engine.AxisConfiguration;
import org.wso2.wsas.feed.AbstractFeed;
import org.wso2.wsas.feed.FeedListener;
import org.wso2.wsas.feed.rss.ServiceElement;
@@ -32,8 +31,7 @@
private List elemenList;
private OMFactory fac;
- public AtomFeed(AxisConfiguration axisConfig) {
- super(axisConfig);
+ public AtomFeed() {
this.elemenList = new ArrayList();
fac = OMAbstractFactory.getOMFactory();
}
@@ -45,11 +43,11 @@
elemenList.add(0, element);
}
- public OMElement getFeedElement() throws SocketException {
+ public OMElement getFeedElement(String serviceContextPath) throws SocketException {
OMElement atomElement = new AtomElement(fac).getElement();
for (int i = 0; i < elemenList.size(); i++) {
ServiceElement serviceElement = (ServiceElement) elemenList.get(i);
- serviceElement.setUrl(getUrl(serviceElement.getName()));
+ serviceElement.setUrl(getUrl(serviceElement.getName(),serviceContextPath));
atomElement.addChild(serviceElement.getOMElement(fac));
}
return atomElement;
Modified: trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/atom/AtomFeedBuilder.java
==============================================================================
--- trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/atom/AtomFeedBuilder.java (original)
+++ trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/atom/AtomFeedBuilder.java Thu May 17 06:58:46 2007
@@ -18,25 +18,23 @@
import org.apache.axis2.description.AxisModule;
import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.description.AxisService;
-import org.apache.axis2.engine.AxisConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.wso2.wsas.feed.AbstractFeedBuilder;
import org.wso2.wsas.feed.FeedConstants;
+import org.wso2.wsas.feed.FeedFactory;
import org.wso2.wsas.feed.rss.ServiceElement;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-public class AtomFeedBuilder extends AbstractFeedBuilder {
+public class AtomFeedBuilder {
private static Log log = LogFactory.getLog(AtomFeedBuilder.class);
private AtomFeed atomFeed;
- public AtomFeedBuilder(AxisConfiguration axisConfig) {
- super(axisConfig);
- atomFeed = AtomFeedFactory.getAtomFeed(FeedConstants.WSO2WSAS_ATOM_FEED, axisConfig);
+ public AtomFeedBuilder() {
+ atomFeed = FeedFactory.getAtomFeed(FeedConstants.WSO2WSAS_ATOM_FEED);
}
public void addService(AxisService serviceDescription, String itemDefualtLink) {
Modified: trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/rss/RSSFeed.java
==============================================================================
--- trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/rss/RSSFeed.java (original)
+++ trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/rss/RSSFeed.java Thu May 17 06:58:46 2007
@@ -18,7 +18,6 @@
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
-import org.apache.axis2.engine.AxisConfiguration;
import org.wso2.wsas.feed.AbstractFeed;
import org.wso2.wsas.feed.FeedListener;
@@ -31,8 +30,7 @@
private List elementList;
private OMFactory fac;
- public RSSFeed(AxisConfiguration axisConfig) {
- super(axisConfig);
+ public RSSFeed() {
this.elementList = new ArrayList();
fac = OMAbstractFactory.getOMFactory();
}
@@ -44,13 +42,13 @@
elementList.add(0, element);
}
- public OMElement getFeedElement() throws SocketException {
+ public OMElement getFeedElement(String serviceContextPath) throws SocketException {
RSSElement rssElement = new RSSElement(fac);
OMElement atomElement = rssElement.getElement();
OMElement channelElement = rssElement.getChannelElement();
for (int i = 0; i < elementList.size(); i++) {
ServiceElement serviceElement = (ServiceElement) elementList.get(i);
- serviceElement.setUrl(getUrl(serviceElement.getName()));
+ serviceElement.setUrl(getUrl(serviceElement.getName(),serviceContextPath));
channelElement.addChild(serviceElement.getOMElement(fac));
}
return atomElement;
Modified: trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/rss/RSSFeedBuilder.java
==============================================================================
--- trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/rss/RSSFeedBuilder.java (original)
+++ trunk/wsas/java/modules/core/src/org/wso2/wsas/feed/rss/RSSFeedBuilder.java Thu May 17 06:58:46 2007
@@ -18,22 +18,20 @@
import org.apache.axis2.description.AxisModule;
import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.description.AxisService;
-import org.apache.axis2.engine.AxisConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.wso2.wsas.feed.AbstractFeedBuilder;
import org.wso2.wsas.feed.FeedConstants;
+import org.wso2.wsas.feed.FeedFactory;
import java.util.ArrayList;
import java.util.Iterator;
-public class RSSFeedBuilder extends AbstractFeedBuilder {
+public class RSSFeedBuilder {
private static Log log = LogFactory.getLog(RSSFeedBuilder.class);
private RSSFeed rssFeed;
- public RSSFeedBuilder(AxisConfiguration axisConfig) {
- super(axisConfig);
- rssFeed = RSSFeedFactory.getRSSFeed(FeedConstants.WSO2WSAS_RSS_FEED, axisConfig);
+ public RSSFeedBuilder() {
+ rssFeed = FeedFactory.getRSSFeed(FeedConstants.WSO2WSAS_RSS_FEED);
}
public void addService(AxisService serviceDescription, String itemDefaultLink) {
Modified: trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/WSASServlet.java
==============================================================================
--- trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/WSASServlet.java (original)
+++ trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/WSASServlet.java Thu May 17 06:58:46 2007
@@ -102,18 +102,20 @@
HttpServletResponse response) throws ServletException, IOException {
initContextRoot(request);
+ boolean isRequestHandled = false;
try {
String requestURI = request.getRequestURI();
if (requestURI.indexOf("rss") >= 0) {
rssProcessor.process(request, response, configContext);
+ isRequestHandled = true;
}
if (requestURI.indexOf("atom") >= 0) {
atomProcessor.process(request, response, configContext);
+ isRequestHandled = true;
}
String queryString = request.getQueryString();
- boolean isRequestHandled = false;
if (queryString != null) {
for (Iterator iter = getRequestProcessors.keySet().iterator(); iter.hasNext();) {
String item = (String) iter.next();
Modified: trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/util/AtomProcessor.java
==============================================================================
--- trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/util/AtomProcessor.java (original)
+++ trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/util/AtomProcessor.java Thu May 17 06:58:46 2007
@@ -16,12 +16,13 @@
package org.wso2.wsas.transport.util;
import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMElement;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.wsas.feed.FeedConstants;
+import org.wso2.wsas.feed.FeedFactory;
import org.wso2.wsas.feed.atom.AtomFeed;
-import org.wso2.wsas.feed.atom.AtomFeedFactory;
import org.wso2.wsas.transport.HttpGetRequestProcessor;
import javax.servlet.http.HttpServletRequest;
@@ -41,16 +42,19 @@
ConfigurationContext configurationContext) throws Exception {
try {
response.setContentType("text/xml; charset=utf-8");
- AtomFeed atomFeed = AtomFeedFactory.getAtomFeed(FeedConstants.WSO2WSAS_ATOM_FEED);
+ AtomFeed atomFeed = FeedFactory.getAtomFeed(FeedConstants.WSO2WSAS_ATOM_FEED);
if (atomFeed != null) {
XMLStreamWriter writer =
XMLOutputFactory.newInstance().
createXMLStreamWriter(response.getOutputStream());
writer.writeProcessingInstruction("xml-stylesheet",
" type=\"text/xsl\" href=\"" +
- configurationContext.getContextRoot() +
+ (configurationContext.getContextRoot().equals("/") ?
+ "" : configurationContext.getContextRoot()) +
"/styles/atom.xsl\"");
- atomFeed.getFeedElement().serialize(writer);
+ OMElement feedElement =
+ atomFeed.getFeedElement(configurationContext.getServiceContextPath());
+ feedElement.serialize(writer);
writer.flush();
}
} catch (OMException e) {
Modified: trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/util/RssProcessor.java
==============================================================================
--- trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/util/RssProcessor.java (original)
+++ trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/util/RssProcessor.java Thu May 17 06:58:46 2007
@@ -16,12 +16,13 @@
package org.wso2.wsas.transport.util;
import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMElement;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.wsas.feed.FeedConstants;
+import org.wso2.wsas.feed.FeedFactory;
import org.wso2.wsas.feed.rss.RSSFeed;
-import org.wso2.wsas.feed.rss.RSSFeedFactory;
import org.wso2.wsas.transport.HttpGetRequestProcessor;
import javax.servlet.http.HttpServletRequest;
@@ -39,16 +40,19 @@
ConfigurationContext configurationContext) throws Exception {
try {
response.setContentType("text/xml; charset=utf-8");
- RSSFeed rssFeed = RSSFeedFactory.getRSSFeed(FeedConstants.WSO2WSAS_RSS_FEED);
+ RSSFeed rssFeed = FeedFactory.getRSSFeed(FeedConstants.WSO2WSAS_RSS_FEED);
if (rssFeed != null) {
XMLStreamWriter writer =
XMLOutputFactory.newInstance()
.createXMLStreamWriter(response.getOutputStream());
writer.writeProcessingInstruction("xml-stylesheet",
" type=\"text/xsl\" href=\"" +
- configurationContext.getContextRoot() +
+ (configurationContext.getContextRoot().equals("/") ?
+ "" : configurationContext.getContextRoot()) +
"/styles/rss.xsl\"");
- rssFeed.getFeedElement().serialize(writer);
+ OMElement feedElement =
+ rssFeed.getFeedElement(configurationContext.getServiceContextPath());
+ feedElement.serialize(writer);
writer.flush();
}
} catch (OMException e) {
More information about the Wsas-java-dev
mailing list