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;
+ }
+
}