Return-Path: Delivered-To: apmail-cocoon-cvs-archive@www.apache.org Received: (qmail 10865 invoked from network); 27 Sep 2003 13:21:14 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 27 Sep 2003 13:21:14 -0000 Received: (qmail 76744 invoked by uid 500); 27 Sep 2003 13:21:08 -0000 Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 76688 invoked by uid 500); 27 Sep 2003 13:21:08 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 76677 invoked by uid 500); 27 Sep 2003 13:21:08 -0000 Delivered-To: apmail-cocoon-2.1-cvs@apache.org Received: (qmail 76673 invoked from network); 27 Sep 2003 13:21:08 -0000 Received: from unknown (HELO minotaur.apache.org) (209.237.227.194) by daedalus.apache.org with SMTP; 27 Sep 2003 13:21:08 -0000 Received: (qmail 10822 invoked by uid 1672); 27 Sep 2003 13:21:11 -0000 Date: 27 Sep 2003 13:21:11 -0000 Message-ID: <20030927132111.10821.qmail@minotaur.apache.org> From: joerg@apache.org To: cocoon-2.1-cvs@apache.org Subject: cvs commit: cocoon-2.1/src/blocks/lucene/java/org/apache/cocoon/generation SearchGenerator.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N joerg 2003/09/27 06:21:11 Modified: src/blocks/lucene/java/org/apache/cocoon/generation SearchGenerator.java Log: fixed namespace output (bug 23434, thanks to Conal Tuohy) Revision Changes Path 1.4 +91 -51 cocoon-2.1/src/blocks/lucene/java/org/apache/cocoon/generation/SearchGenerator.java Index: SearchGenerator.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/lucene/java/org/apache/cocoon/generation/SearchGenerator.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- SearchGenerator.java 4 Sep 2003 09:38:38 -0000 1.3 +++ SearchGenerator.java 27 Sep 2003 13:21:11 -0000 1.4 @@ -128,6 +128,7 @@ * @author Bernhard Huber * @author Vadim Gritsenko * @author Jeremy Quinn + * @author Conal Tuohy * @version CVS $Id$ */ public class SearchGenerator extends ServiceableGenerator @@ -137,12 +138,17 @@ /** * The XML namespace for the output document. */ - protected final static String namespace = "http://apache.org/cocoon/search/1.0"; + protected final static String NAMESPACE = "http://apache.org/cocoon/search/1.0"; + + /** + * The XML namespace prefix for the output document. + */ + protected final static String PREFIX = "search"; /** * The XML namespace for xlink */ - protected final static String xlinkNamespace = "http://www.w3.org/1999/xlink"; + protected final static String XLINK_NAMESPACE = "http://www.w3.org/1999/xlink"; /** * Description of the Field @@ -150,11 +156,17 @@ protected final static String CDATA = "CDATA"; /** - * Root element of generated xml content, ie results. + * Name of root element of generated xml content, ie results. */ protected final static String RESULTS_ELEMENT = "results"; /** + * Qualified name of root element of generated xml content, ie search:results. + */ + protected final static String Q_RESULTS_ELEMENT = PREFIX + ":" + RESULTS_ELEMENT; + + + /** * Attribute date of results element. * It contains the date a long value, indicating when a search * generated this xml content. @@ -169,23 +181,34 @@ /** * Attribute start-index of results element. - * Echos the startIndex query parameter. + * Echoes the startIndex query parameter. */ protected final static String START_INDEX_ATTRIBUTE = "start-index"; /** * Attribute page-length of results element. - * Echos the pageLenth query parameter. + * Echoes the pageLenth query parameter. */ protected final static String PAGE_LENGTH_ATTRIBUTE = "page-length"; /** + * Attribute name of hit element. + */ + protected final static String NAME_ATTRIBUTE = "name"; + + /** * Child element of generated xml content, ie hits. * This element describes all hits. */ protected final static String HITS_ELEMENT = "hits"; /** + * QName of child element of generated xml content, ie search:hits. + * This element describes all hits. + */ + protected final static String Q_HITS_ELEMENT = PREFIX + ":" + HITS_ELEMENT; + + /** * Attribute total-count of hits element. * The value describes total number of hits found by the search engine. */ @@ -204,6 +227,12 @@ protected final static String HIT_ELEMENT = "hit"; /** + * QName of child element of generated xml content, ie search:hit. + * This element describes a single hit. + */ + protected final static String Q_HIT_ELEMENT = PREFIX + ":" + HIT_ELEMENT; + + /** * Attribute rank of hit element. * The value describes the count index of this hits, ranging between 0, and * total-count minus 1. @@ -231,18 +260,34 @@ protected final static String FIELD_ELEMENT = "field"; /** + * QName of child element search:field of the hit element. + */ + protected final static String Q_FIELD_ELEMENT = PREFIX + ":" + FIELD_ELEMENT; + + /** * Child element of generated xml content, ie navigation. * This element describes some hints for easier navigation. */ protected final static String NAVIGATION_ELEMENT = "navigation"; /** - * Child element of generated xml content, ie navigation. + * QName of child element of generated xml content, ie search:navigation. + */ + protected final static String Q_NAVIGATION_ELEMENT = PREFIX + ":" + NAVIGATION_ELEMENT; + + /** + * Child element of generated xml content, ie navigation-page. * This element describes the start-index of page containing hits. */ protected final static String NAVIGATION_PAGE_ELEMENT = "navigation-page"; /** + * QName of child element of generated xml content, ie search:navigation-page. + * This element describes the start-index of page containing hits. + */ + protected final static String Q_NAVIGATION_PAGE_ELEMENT = PREFIX + ":" + NAVIGATION_PAGE_ELEMENT; + + /** * Attribute has-next of navigation-page element. * The value is true if a next navigation control should be presented. */ @@ -438,16 +483,15 @@ // try getting the queryString from the generator sitemap params - queryString = ""; queryString = par.getParameter(QUERY_PARAM, ""); // try getting the queryString from the request params if (queryString.equals("")) { - param_name = par.getParameter(QUERY_STRING_PARAM, QUERY_STRING_PARAM_DEFAULT); - if (request.getParameter(param_name) != null) { - queryString = request.getParameter(param_name); - } - } + param_name = par.getParameter(QUERY_STRING_PARAM, QUERY_STRING_PARAM_DEFAULT); + if (request.getParameter(param_name) != null) { + queryString = request.getParameter(param_name); + } + } // always try lookup the start index from the request params // get startIndex startIndex = null; @@ -523,14 +567,14 @@ // Start the document and set the namespace. this.contentHandler.startDocument(); - this.contentHandler.startPrefixMapping("search", namespace); - this.contentHandler.startPrefixMapping("xlink", xlinkNamespace); + this.contentHandler.startPrefixMapping(PREFIX, NAMESPACE); + this.contentHandler.startPrefixMapping("xlink", XLINK_NAMESPACE); generateResults(); // End the document. this.contentHandler.endPrefixMapping("xlink"); - this.contentHandler.endPrefixMapping(""); + this.contentHandler.endPrefixMapping(PREFIX); this.contentHandler.endDocument(); } @@ -538,7 +582,7 @@ /** * Create an Integer. *

- * Create an Integer from String s, iff conversion fails return null. + * Create an Integer from String s, if conversion fails return null. *

* * @param s Converting s to an Integer @@ -579,24 +623,20 @@ long time = System.currentTimeMillis(); atts.clear(); - atts.addAttribute(namespace, DATE_ATTRIBUTE, - DATE_ATTRIBUTE, CDATA, String.valueOf(time)); + atts.addAttribute("", DATE_ATTRIBUTE, DATE_ATTRIBUTE, CDATA, String.valueOf(time)); if (queryString != null && queryString.length() > 0) - atts.addAttribute(namespace, QUERY_STRING_ATTRIBUTE, - QUERY_STRING_ATTRIBUTE, CDATA, String.valueOf(queryString)); - atts.addAttribute(namespace, START_INDEX_ATTRIBUTE, - START_INDEX_ATTRIBUTE, CDATA, String.valueOf(startIndex)); - atts.addAttribute(namespace, PAGE_LENGTH_ATTRIBUTE, - PAGE_LENGTH_ATTRIBUTE, CDATA, String.valueOf(pageLength)); + atts.addAttribute("", QUERY_STRING_ATTRIBUTE, QUERY_STRING_ATTRIBUTE, CDATA, String.valueOf(queryString)); + atts.addAttribute("", START_INDEX_ATTRIBUTE, START_INDEX_ATTRIBUTE, CDATA, String.valueOf(startIndex)); + atts.addAttribute("", PAGE_LENGTH_ATTRIBUTE, PAGE_LENGTH_ATTRIBUTE, CDATA, String.valueOf(pageLength)); - contentHandler.startElement(namespace, RESULTS_ELEMENT, RESULTS_ELEMENT, atts); + contentHandler.startElement(NAMESPACE, RESULTS_ELEMENT, Q_RESULTS_ELEMENT, atts); // build xml from the hits generateHits(pager); generateNavigation(pager); // End root element. - contentHandler.endElement(namespace, "results", "results"); + contentHandler.endElement(NAMESPACE, RESULTS_ELEMENT, Q_RESULTS_ELEMENT); } @@ -610,13 +650,13 @@ private void generateHits(LuceneCocoonPager pager) throws SAXException { if (pager != null && pager.hasNext()) { atts.clear(); - atts.addAttribute(namespace, TOTAL_COUNT_ATTRIBUTE, TOTAL_COUNT_ATTRIBUTE, + atts.addAttribute("", TOTAL_COUNT_ATTRIBUTE, TOTAL_COUNT_ATTRIBUTE, CDATA, String.valueOf(pager.getCountOfHits())); - atts.addAttribute(namespace, COUNT_OF_PAGES_ATTRIBUTE, COUNT_OF_PAGES_ATTRIBUTE, + atts.addAttribute("", COUNT_OF_PAGES_ATTRIBUTE, COUNT_OF_PAGES_ATTRIBUTE, CDATA, String.valueOf(pager.getCountOfPages())); - contentHandler.startElement(namespace, HITS_ELEMENT, HITS_ELEMENT, atts); + contentHandler.startElement(NAMESPACE, HITS_ELEMENT, Q_HITS_ELEMENT, atts); generateHit(pager); - contentHandler.endElement(namespace, HITS_ELEMENT, HITS_ELEMENT); + contentHandler.endElement(NAMESPACE, HITS_ELEMENT, Q_HITS_ELEMENT); } } @@ -642,13 +682,13 @@ String uri = doc.get(LuceneXMLIndexer.URL_FIELD); atts.clear(); - atts.addAttribute(namespace, RANK_ATTRIBUTE, RANK_ATTRIBUTE, CDATA, + atts.addAttribute("", RANK_ATTRIBUTE, RANK_ATTRIBUTE, CDATA, String.valueOf(counter)); - atts.addAttribute(namespace, SCORE_ATTRIBUTE, SCORE_ATTRIBUTE, CDATA, + atts.addAttribute("", SCORE_ATTRIBUTE, SCORE_ATTRIBUTE, CDATA, String.valueOf(score)); - atts.addAttribute(namespace, URI_ATTRIBUTE, URI_ATTRIBUTE, CDATA, + atts.addAttribute("", URI_ATTRIBUTE, URI_ATTRIBUTE, CDATA, String.valueOf(uri)); - contentHandler.startElement(namespace, HIT_ELEMENT, HIT_ELEMENT, atts); + contentHandler.startElement(NAMESPACE, HIT_ELEMENT, Q_HIT_ELEMENT, atts); // fix me, add here a summary of this hit for (Enumeration e = doc.fields(); e.hasMoreElements(); ) { Field field = (Field)e.nextElement(); @@ -656,15 +696,15 @@ if (LuceneXMLIndexer.URL_FIELD.equals(field.name())) continue; atts.clear(); - atts.addAttribute(namespace, "name", "name", CDATA, field.name()); - contentHandler.startElement(namespace, FIELD_ELEMENT, FIELD_ELEMENT, atts); + atts.addAttribute("", NAME_ATTRIBUTE, NAME_ATTRIBUTE, CDATA, field.name()); + contentHandler.startElement(NAMESPACE, FIELD_ELEMENT, Q_FIELD_ELEMENT, atts); String value = field.stringValue(); contentHandler.characters(value.toCharArray(), 0, value.length()); - contentHandler.endElement(namespace, FIELD_ELEMENT, FIELD_ELEMENT); + contentHandler.endElement(NAMESPACE, FIELD_ELEMENT, Q_FIELD_ELEMENT); } } - contentHandler.endElement(namespace, HIT_ELEMENT, HIT_ELEMENT); + contentHandler.endElement(NAMESPACE, HIT_ELEMENT, Q_HIT_ELEMENT); } } @@ -681,31 +721,31 @@ if (pager != null) { // generate navigation element atts.clear(); - atts.addAttribute(namespace, TOTAL_COUNT_ATTRIBUTE, TOTAL_COUNT_ATTRIBUTE, + atts.addAttribute("", TOTAL_COUNT_ATTRIBUTE, TOTAL_COUNT_ATTRIBUTE, CDATA, String.valueOf(pager.getCountOfHits())); - atts.addAttribute(namespace, COUNT_OF_PAGES_ATTRIBUTE, COUNT_OF_PAGES_ATTRIBUTE, + atts.addAttribute("", COUNT_OF_PAGES_ATTRIBUTE, COUNT_OF_PAGES_ATTRIBUTE, CDATA, String.valueOf(pager.getCountOfPages())); - atts.addAttribute(namespace, HAS_NEXT_ATTRIBUTE, HAS_NEXT_ATTRIBUTE, + atts.addAttribute("", HAS_NEXT_ATTRIBUTE, HAS_NEXT_ATTRIBUTE, CDATA, String.valueOf(pager.hasNext())); - atts.addAttribute(namespace, HAS_PREVIOUS_ATTRIBUTE, HAS_PREVIOUS_ATTRIBUTE, + atts.addAttribute("", HAS_PREVIOUS_ATTRIBUTE, HAS_PREVIOUS_ATTRIBUTE, CDATA, String.valueOf(pager.hasPrevious())); - atts.addAttribute(namespace, NEXT_INDEX_ATTRIBUTE, NEXT_INDEX_ATTRIBUTE, + atts.addAttribute("", NEXT_INDEX_ATTRIBUTE, NEXT_INDEX_ATTRIBUTE, CDATA, String.valueOf(pager.nextIndex())); - atts.addAttribute(namespace, PREVIOUS_INDEX_ATTRIBUTE, PREVIOUS_INDEX_ATTRIBUTE, + atts.addAttribute("", PREVIOUS_INDEX_ATTRIBUTE, PREVIOUS_INDEX_ATTRIBUTE, CDATA, String.valueOf(pager.previousIndex())); - contentHandler.startElement(namespace, NAVIGATION_ELEMENT, NAVIGATION_ELEMENT, atts); + contentHandler.startElement(NAMESPACE, NAVIGATION_ELEMENT, Q_NAVIGATION_ELEMENT, atts); int count_of_pages = pager.getCountOfPages(); for (int i = 0, page_start_index = 0; i < count_of_pages; i++, page_start_index += pageLength.intValue()) { atts.clear(); - atts.addAttribute(namespace, START_INDEX_ATTRIBUTE, START_INDEX_ATTRIBUTE, + atts.addAttribute("", START_INDEX_ATTRIBUTE, START_INDEX_ATTRIBUTE, CDATA, String.valueOf(page_start_index)); - contentHandler.startElement(namespace, NAVIGATION_PAGE_ELEMENT, NAVIGATION_PAGE_ELEMENT, atts); - contentHandler.endElement(namespace, NAVIGATION_PAGE_ELEMENT, NAVIGATION_PAGE_ELEMENT); + contentHandler.startElement(NAMESPACE, NAVIGATION_PAGE_ELEMENT, Q_NAVIGATION_PAGE_ELEMENT, atts); + contentHandler.endElement(NAMESPACE, NAVIGATION_PAGE_ELEMENT, Q_NAVIGATION_PAGE_ELEMENT); } // navigation is EMPTY element - contentHandler.endElement(namespace, NAVIGATION_ELEMENT, NAVIGATION_ELEMENT); + contentHandler.endElement(NAMESPACE, NAVIGATION_ELEMENT, Q_NAVIGATION_ELEMENT); } } @@ -714,7 +754,7 @@ * Build hits from a query input, and setup paging object. * * @since - * @throws ProcessingException iff an error occurs + * @throws ProcessingException if an error occurs */ private LuceneCocoonPager buildHits() throws ProcessingException {