Author: mnuttall
Date: Fri Dec  4 13:49:32 2009
New Revision: 887194

URL: http://svn.apache.org/viewvc?rev=887194&view=rev
Log:
ARIES-69 Expose ParserService

Added:
    
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/ParserServiceImpl.java
Modified:
    
incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java

Added: 
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=887194&view=auto
==============================================================================
--- 
incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ParserService.java
 (added)
+++ 
incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ParserService.java
 Fri Dec  4 13:49:32 2009
@@ -0,0 +1,14 @@
+package org.apache.aries.blueprint;
+
+import java.net.URL;
+import java.util.List;
+
+import org.osgi.framework.Bundle;
+
+public interface ParserService {
+
+       ComponentDefinitionRegistry parse (List<URL> urls, Bundle clientBundle) 
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/BlueprintExtender.java
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java?rev=887194&r1=887193&r2=887194&view=diff
==============================================================================
--- 
incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java
 (original)
+++ 
incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java
 Fri Dec  4 13:49:32 2009
@@ -26,12 +26,14 @@
 import java.util.Comparator;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 
 import org.apache.aries.blueprint.BlueprintConstants;
+import org.apache.aries.blueprint.ParserService;
 import org.apache.aries.blueprint.namespace.NamespaceHandlerRegistryImpl;
 import org.apache.aries.blueprint.utils.HeaderParser;
 import org.apache.aries.blueprint.utils.HeaderParser.PathElement;
@@ -42,10 +44,10 @@
 import org.osgi.framework.BundleEvent;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
 import org.osgi.framework.SynchronousBundleListener;
 import org.osgi.service.blueprint.container.BlueprintContainer;
 import org.osgi.service.blueprint.container.BlueprintEvent;
-import org.osgi.service.framework.CompositeBundle;
 import org.osgi.util.tracker.BundleTracker;
 import org.osgi.util.tracker.BundleTrackerCustomizer;
 import org.slf4j.Logger;
@@ -67,6 +69,9 @@
     private BlueprintEventDispatcher eventDispatcher;
     private NamespaceHandlerRegistry handlers;
     private BundleTracker bt;
+    
+    // MN adding new bits
+    private ServiceRegistration parserServiceReg;
 
     public void start(BundleContext context) {
         LOGGER.debug("Starting blueprint extender...");
@@ -108,14 +113,24 @@
                 checkBundle(b);
             }
         }
-
+        
+        // Create and publish a ParserService
+        parserServiceReg = 
context.registerService(ParserService.class.getName(), 
+            new ParserServiceImpl (handlers), 
+            new Hashtable<Object, Object>()); 
+        
+        LOGGER.debug("Blueprint extender started");
     }
-    
+
+
     public void stop(BundleContext context) {
         LOGGER.debug("Stopping blueprint extender...");
         if (bt != null) {
                bt.close();
         }
+        
+        parserServiceReg.unregister();
+
 
         // Orderly shutdown of containers
         while (!containers.isEmpty()) {
@@ -373,7 +388,7 @@
         }
 
         public Object addingBundle(Bundle b, BundleEvent event) {
-
+            
             super.addingBundle(b, event);
             
             if (event == null) {

Added: 
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=887194&view=auto
==============================================================================
--- 
incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ParserServiceImpl.java
 (added)
+++ 
incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ParserServiceImpl.java
 Fri Dec  4 13:49:32 2009
@@ -0,0 +1,37 @@
+package org.apache.aries.blueprint.container;
+
+import java.net.URI;
+import java.net.URL;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.aries.blueprint.ComponentDefinitionRegistry;
+import org.apache.aries.blueprint.ParserService;
+import 
org.apache.aries.blueprint.container.NamespaceHandlerRegistry.NamespaceHandlerSet;
+import org.apache.aries.blueprint.namespace.ComponentDefinitionRegistryImpl;
+import org.osgi.framework.Bundle;
+
+public class ParserServiceImpl implements ParserService {
+
+       NamespaceHandlerRegistry _namespaceHandlerRegistry;
+       
+       public ParserServiceImpl (NamespaceHandlerRegistry nhr) { 
+               _namespaceHandlerRegistry = nhr;
+       }
+       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;             
+       }
+}


Reply via email to