[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