You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by mn...@apache.org on 2009/12/08 15:41:30 UTC

svn commit: r888411 - in /incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint: ParserService.java container/Parser.java container/ParserServiceImpl.java

Author: mnuttall
Date: Tue Dec  8 14:41:30 2009
New Revision: 888411

URL: http://svn.apache.org/viewvc?rev=888411&view=rev
Log:
ARIES-74: Extend Parser and ParserService to also accept an InputStream

Modified:
    incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ParserService.java
    incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/Parser.java
    incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ParserServiceImpl.java

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ParserService.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ParserService.java?rev=888411&r1=888410&r2=888411&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ParserService.java (original)
+++ incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ParserService.java Tue Dec  8 14:41:30 2009
@@ -17,15 +17,71 @@
 
 package org.apache.aries.blueprint;
 
+import java.io.InputStream;
 import java.net.URL;
 import java.util.List;
 
 import org.osgi.framework.Bundle;
 
 public interface ParserService {
-
+  
+  /**
+   * Parse a single InputStream containing blueprint xml. No validation will be performed. The caller
+   * is responsible for closing the InputStream afterwards.  
+   * @param is           InputStream containing blueprint xml. 
+   * @param clientBundle The client's bundle 
+   * @return             ComponentDefinitionRegistry containing metadata generated by the parser. 
+   * @throws Exception
+   */
+  ComponentDefinitionRegistry parse (InputStream is, Bundle clientBundle) throws Exception;
+  
+  /**
+   * Parse a single InputStream containing blueprint xml. The caller is responsible for 
+   * closing the InputStream afterwards.  
+   * @param is           Input stream containing blueprint xml
+   * @param clientBundle The client's bundle 
+   * @param validate     Indicates whether or not to validate the blueprint xml
+   * @return             ComponentDefinitionRegistry containing metadata generated by the parser. 
+   * @throws Exception
+   */
+  ComponentDefinitionRegistry parse (InputStream is, Bundle clientBundle, boolean validate) throws Exception;
+  
+  /**
+   * Parse blueprint xml referred to by a single URL. No validation will be performed. 
+   * @param url          URL reference to the blueprint xml to parse
+   * @param clientBundle The client's bundle
+   * @return             ComponentDefinitionRegistry containing metadata generated by the parser.
+   * @throws Exception
+   */
+  ComponentDefinitionRegistry parse (URL url, Bundle clientBundle) throws Exception;
+  
+  /**
+   * Parse blueprint xml referred to by a single URL.
+   * @param url          URL reference to the blueprint xml to parse
+   * @param clientBundle The client's bundle
+   * @param validate     Indicates whether or not to validate the blueprint xml
+   * @return             ComponentDefinitionRegistry containing metadata generated by the parser.
+   * @throws Exception
+   */
+  ComponentDefinitionRegistry parse (URL url, Bundle clientBundle, boolean validate) throws Exception;
+  
+  /**
+   * Parse blueprint xml referred to by a list of URLs. No validation will be performed. 
+   * @param urls         URL reference to the blueprint xml to parse
+   * @param clientBundle The client's bundle
+   * @return             ComponentDefinitionRegistry containing metadata generated by the parser.
+   * @throws Exception
+   */
 	ComponentDefinitionRegistry parse (List<URL> urls, Bundle clientBundle) throws Exception;
 	
+  /**
+   * Parse blueprint xml referred to by a list of URLs.
+   * @param urls         URL reference to the blueprint xml to parse
+   * @param clientBundle The client's bundle
+   * @param validate     Indicates whether or not to validate the blueprint xml
+   * @return             ComponentDefinitionRegistry containing metadata generated by the parser.
+   * @throws Exception
+   */
 	ComponentDefinitionRegistry parse (List<URL> urls, Bundle clientBundle, boolean validate) throws Exception;
 	
 }

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/Parser.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/Parser.java?rev=888411&r1=888410&r2=888411&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/Parser.java (original)
+++ incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/Parser.java Tue Dec  8 14:41:30 2009
@@ -181,7 +181,7 @@
 
     private static DocumentBuilderFactory documentBuilderFactory;
 
-    private List<Document> documents;
+    private List<Document> documents = new ArrayList<Document>();
     private ComponentDefinitionRegistry registry;
     private NamespaceHandlerRegistry.NamespaceHandlerSet handlers;
     private String idPrefix = "component-";
@@ -199,22 +199,34 @@
         this.idPrefix = idPrefix;
     }
 
+    /**
+     * Parse an input stream for blueprint xml. 
+     * @param inputStream The data to parse. The caller is responsible for closing the stream afterwards. 
+     * @throws Exception
+     */
+    public void parse(InputStream inputStream) throws Exception { 
+      InputSource inputSource = new InputSource(inputStream);
+      DocumentBuilder builder = getDocumentBuilderFactory().newDocumentBuilder();
+      Document doc = builder.parse(inputSource);
+      documents.add(doc);
+    }
+    
+    /**
+     * Parse blueprint xml referred to by a list of URLs
+     * @param urls URLs to blueprint xml to parse
+     * @throws Exception
+     */
     public void parse(List<URL> urls) throws Exception {
-        List<Document> documents = new ArrayList<Document>();
         // Create document builder factory
         // Load documents
         for (URL url : urls) {
             InputStream inputStream = url.openStream();
             try {
-                InputSource inputSource = new InputSource(inputStream);
-                DocumentBuilder builder = getDocumentBuilderFactory().newDocumentBuilder();
-                Document doc = builder.parse(inputSource);
-                documents.add(doc);
+                parse (inputStream);
             } finally {
                 inputStream.close();
             }
         }
-        this.documents = documents;
     }
 
     public Set<URI> getNamespaces() {

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ParserServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ParserServiceImpl.java?rev=888411&r1=888410&r2=888411&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ParserServiceImpl.java (original)
+++ incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ParserServiceImpl.java Tue Dec  8 14:41:30 2009
@@ -1,7 +1,10 @@
 package org.apache.aries.blueprint.container;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.net.URI;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
@@ -10,6 +13,7 @@
 import org.apache.aries.blueprint.container.NamespaceHandlerRegistry.NamespaceHandlerSet;
 import org.apache.aries.blueprint.namespace.ComponentDefinitionRegistryImpl;
 import org.osgi.framework.Bundle;
+import org.xml.sax.SAXException;
 
 public class ParserServiceImpl implements ParserService {
 
@@ -18,20 +22,48 @@
 	public ParserServiceImpl (NamespaceHandlerRegistry nhr) { 
 		_namespaceHandlerRegistry = nhr;
 	}
-	public ComponentDefinitionRegistry parse(List<URL> urls, Bundle clientBundle) throws Exception {
-		return parse(urls, clientBundle, false);
-	}
 	
+	public ComponentDefinitionRegistry parse(URL url, Bundle clientBundle) throws Exception {
+    return parse (url, clientBundle, false);
+  }
+
+  public ComponentDefinitionRegistry parse(URL url, Bundle clientBundle, boolean validate)
+      throws Exception {
+    List<URL> urls = new ArrayList<URL>();
+    urls.add(url);
+    return parse (urls, clientBundle, validate);
+  }
+  
+  public ComponentDefinitionRegistry parse(List<URL> urls, Bundle clientBundle) throws Exception {
+    return parse(urls, clientBundle, false);
+  }
+  
 	public ComponentDefinitionRegistry parse(List<URL> urls, Bundle clientBundle, boolean validate) throws Exception {
-		Parser parser = new Parser();   
-		parser.parse(urls);
-		Set<URI> nsuris = parser.getNamespaces();
-		NamespaceHandlerSet nshandlers = _namespaceHandlerRegistry.getNamespaceHandlers(nsuris, clientBundle);
-		if (validate) { 
-		  parser.validate( nshandlers.getSchema());
-		}
-		ComponentDefinitionRegistry cdr = new ComponentDefinitionRegistryImpl();
-		parser.populate(nshandlers, cdr);
-		return cdr;		
+	  Parser parser = new Parser();   
+	  parser.parse(urls);
+	  return validateAndPopulate (parser, clientBundle, validate);
 	}
+	
+  public ComponentDefinitionRegistry parse(InputStream is, Bundle clientBundle) throws Exception {
+    return parse (is, clientBundle, false);
+  }
+  
+  public ComponentDefinitionRegistry parse(InputStream is, Bundle clientBundle, boolean validate) throws Exception {
+    Parser parser = new Parser();
+    parser.parse(is);
+    return validateAndPopulate (parser, clientBundle, validate);
+  }
+    
+  private ComponentDefinitionRegistry validateAndPopulate (Parser parser, Bundle clientBundle, boolean validate) 
+  throws IOException, SAXException { 
+    Set<URI> nsuris = parser.getNamespaces();
+    NamespaceHandlerSet nshandlers = _namespaceHandlerRegistry.getNamespaceHandlers(nsuris, clientBundle);
+    if (validate) { 
+      parser.validate( nshandlers.getSchema());
+    }
+    ComponentDefinitionRegistry cdr = new ComponentDefinitionRegistryImpl();
+    parser.populate(nshandlers, cdr);
+    return cdr;   
+  }
+
 }