You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nutch.apache.org by cu...@apache.org on 2005/04/13 00:52:20 UTC

svn commit: r161133 - incubator/nutch/trunk/src/java/org/apache/nutch/searcher/OpenSearchServlet.java

Author: cutting
Date: Tue Apr 12 15:52:20 2005
New Revision: 161133

URL: http://svn.apache.org/viewcvs?view=rev&rev=161133
Log:
Hacked to generate properly namespace-qualified output.  I don't think
this should be required, but it seems to be...

Modified:
    incubator/nutch/trunk/src/java/org/apache/nutch/searcher/OpenSearchServlet.java

Modified: incubator/nutch/trunk/src/java/org/apache/nutch/searcher/OpenSearchServlet.java
URL: http://svn.apache.org/viewcvs/incubator/nutch/trunk/src/java/org/apache/nutch/searcher/OpenSearchServlet.java?view=diff&r1=161132&r2=161133
==============================================================================
--- incubator/nutch/trunk/src/java/org/apache/nutch/searcher/OpenSearchServlet.java (original)
+++ incubator/nutch/trunk/src/java/org/apache/nutch/searcher/OpenSearchServlet.java Tue Apr 12 15:52:20 2005
@@ -20,6 +20,8 @@
 import java.net.URL;
 import java.net.URLEncoder;
 import java.util.logging.Level;
+import java.util.Map;
+import java.util.HashMap;
 
 import javax.servlet.ServletException;
 import javax.servlet.ServletConfig;
@@ -45,11 +47,12 @@
 /** Present search results using A9's OpenSearch extensions to RSS, plus a few
  * Nutch-specific extensions. */   
 public class OpenSearchServlet extends HttpServlet {
-  private static final String OPENSEARCH_NS =
-    "http://a9.com/-/spec/opensearchrss/1.0/";
+  private static final Map NS_MAP = new HashMap();
 
-  private static final String NUTCH_NS =
-    "http://www.nutch.org/opensearchrss/1.0/";
+  static {
+    NS_MAP.put("opensearch", "http://a9.com/-/spec/opensearchrss/1.0/");
+    NS_MAP.put("nutch", "http://www.nutch.org/opensearchrss/1.0/");
+  }
 
   private NutchBean bean;
 
@@ -114,11 +117,14 @@
     String base = requestUrl.substring(0, requestUrl.lastIndexOf('/'));
 
     try {
-      Document doc = DocumentBuilderFactory.newInstance()
-        .newDocumentBuilder().newDocument();
+      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+      factory.setNamespaceAware(true);
+      Document doc = factory.newDocumentBuilder().newDocument();
  
       Element rss = addNode(doc, doc, "rss");
       addAttribute(doc, rss, "version", "2.0");
+      addAttribute(doc, rss, "xmlns:os", (String)NS_MAP.get("opensearch"));
+      addAttribute(doc, rss, "xmlns:nutch", (String)NS_MAP.get("nutch"));
 
       Element channel = addNode(doc, rss, "channel");
     
@@ -132,9 +138,9 @@
               +"&hitsPerPage="+hitsPerPage
               +"&hitsPerSite="+hitsPerSite);
 
-      addNode(doc, channel, OPENSEARCH_NS, "totalResults", ""+hits.getTotal());
-      addNode(doc, channel, OPENSEARCH_NS, "startIndex", ""+start);
-      addNode(doc, channel, OPENSEARCH_NS, "itemsPerPage", ""+hitsPerPage);
+      addNode(doc, channel, "opensearch", "totalResults", ""+hits.getTotal());
+      addNode(doc, channel, "opensearch", "startIndex", ""+start);
+      addNode(doc, channel, "opensearch", "itemsPerPage", ""+hitsPerPage);
     
       for (int i = 0; i < length; i++) {
         Hit hit = show[i];
@@ -152,12 +158,12 @@
         addNode(doc, item, "description", summaries[i]);
         addNode(doc, item, "link", url);
 
-        addNode(doc, channel, NUTCH_NS, "cache", base+"/cached.jsp?"+id);
-        addNode(doc, channel, NUTCH_NS, "explain", base+"/explain.jsp?"+id
+        addNode(doc, channel, "nutch", "cache", base+"/cached.jsp?"+id);
+        addNode(doc, channel, "nutch", "explain", base+"/explain.jsp?"+id
                 +"&query="+URLEncoder.encode(queryString));
 
         if (hit.moreFromSiteExcluded()) {
-          addNode(doc, channel, NUTCH_NS, "moreFromSite", base+"/search.jsp"
+          addNode(doc, channel, "nutch", "moreFromSite", base+"/search.jsp"
                   +"?query="
                   +URLEncoder.encode("site:"+hit.getSite()+" "+queryString)
                   +"&hitsPerPage="+hitsPerPage+"&hitsPerSite="+0);
@@ -196,8 +202,8 @@
   }
 
   private static void addNode(Document doc, Node parent,
-                              String nameSpace, String name, String text) {
-    Element child = doc.createElementNS(nameSpace, name);
+                              String ns, String name, String text) {
+    Element child = doc.createElementNS((String)NS_MAP.get(ns), ns+":"+name);
     child.appendChild(doc.createTextNode(text));
     parent.appendChild(child);
   }