[ 
https://issues.apache.org/jira/browse/OODT-449?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13271120#comment-13271120
 ] 

Ross Laidlaw commented on OODT-449:
-----------------------------------

I've been experimenting with some ideas to implement Paul's suggestion for 
namespaces.  I have a solution that appears to be working.  Here are the steps 
I took:

1) Added Paul's namespace tags to the georss-config.xml file, as follows:

{code}
<namespace prefix="geo" uri="http://www.w3.org/2003/01/geo/wgs84_pos#"; />
<namespace prefix="georss" uri="http://www.georss.org/georss"; />
<namespace prefix="gml" uri="http://www.opengis.net/gml"; />
{code}


2) Created a new RSSNamespace class, which is very similar to the RSSTag class:

{code}
package org.apache.oodt.cas.product.rss;

public class RSSNamespace 
{
  private String prefix;
  private String uri;

  public RSSNamespace() { }

  public String getPrefix() { return prefix; }
  public void setPrefix(String prefix) { this.prefix = prefix;}

  public String getUri() { return uri; }
  public void setUri(String uri) { this.uri = uri; }
}
{code}


3) Modified the RSSConfig class to add a list to store namespaces:

* added new instance variable namespaces:

{code}
private List<RSSNamespace> namespaces;
{code}


* added assignment to the constructor:

{code}
this.namespaces = new Vector<RSSNamespace>();
{code}


* added getter and setter methods for the namespaces instance variable:

{code}
public List<RSSNamespace> getNamespaces() { return namespaces; }
public void setNamespaces(List<RSSNamespace> namespaces) { this.namespaces = 
namespaces; }
{code}


4) Added new constants to the RSSConfigReaderMetKeys interface:

{code}
public static final String NAMESPACE_TAG = "namespace";
public static final String NAMESPACE_ATTR_PREFIX = "prefix";
public static final String NAMESPACE_ATTR_URI = "uri";
{code}


5) Updated the RSSConfigReader class to read in the namespace tags:

* added readNamespaces() method to RSSConfigReader

{code}
protected static void readNamespaces(Element root, RSSConfig conf) {
  NodeList namespaceList = root.getElementsByTagName(NAMESPACE_TAG);
  if (namespaceList != null && namespaceList.getLength() > 0) {
    for (int i = 0; i < namespaceList.getLength(); i++) {
      Element namespaceElem = (Element) namespaceList.item(i);
      RSSNamespace namespace = new RSSNamespace();
      namespace.setPrefix(namespaceElem.getAttribute(NAMESPACE_ATTR_PREFIX));
      namespace.setUri(namespaceElem.getAttribute(NAMESPACE_ATTR_URI));
      conf.getNamespaces().add(namespace);
    }
  }
}
{code}


* added call to readNamespaces before the call to readTags in the readConfig 
method

{code}
public static RSSConfig readConfig(File file) throws FileNotFoundException {
  ...
  readNamespaces(rootElem, conf);
  readTags(rootElem, conf);
  ...
}
{code}


6) Updated the doIt() method in the RSSProductServlet class to process the list 
of namespace tags and add any namespaces to the rss tag of the output:

{code}
public void doIt(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, java.io.IOException 
{
  ...

  if (products != null && products.size() > 0) 
  {
    ...
    try 
    {
      ...
      Element rss = XMLUtils.addNode(doc, doc, "rss");
      XMLUtils.addAttribute(doc, rss, "version", "2.0");
      XMLUtils.addAttribute(doc, rss, "xmlns:cas", (String) NS_MAP.get("cas"));
        
      for (RSSNamespace namespace : this.conf.getNamespaces()) 
      {
        XMLUtils.addAttribute(doc, rss, "xmlns:" + namespace.getPrefix(), 
namespace.getUri());
      }
      ...
    }
  }
}
{code}


7) Tested the output:

The results showed that the namespaces defined in georss-config.xml are now 
being added to the 'rss' tag of the output, as follows:

{code}
<rss xmlns:cas="http://oodt.jpl.nasa.gov/1.0/cas"; 
     xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"; 
     xmlns:georss="http://www.georss.org/georss"; 
     xmlns:gml="http://www.opengis.net/gml"; version="2.0">
{code}

                
> Create a default GeoRSS configuration file for the fmprod web application
> -------------------------------------------------------------------------
>
>                 Key: OODT-449
>                 URL: https://issues.apache.org/jira/browse/OODT-449
>             Project: OODT
>          Issue Type: Sub-task
>          Components: file manager
>            Reporter: Ross Laidlaw
>              Labels: gsoc2012
>             Fix For: 0.5
>
>
> Create a default GeoRSS configuration file for the fmprod web application of 
> the File Manager component.
> The GeoRSS configuration file will contain all of the information from the 
> default RSS configuration file.  In addition, it will also contain 
> definitions for latitude and longitude GeoRSS XML tags.
> Name the file 'georss-config.xml' and add the file to 
> http://svn.apache.org/repos/asf/oodt/trunk/webapp/fmprod/src/main/resources

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to