Hi Mark,

If you haven't added it, don't forget ASL license header for adding
new files...

Thx

Lin

On Fri, Dec 4, 2009 at 8:49 AM,  <[email protected]> wrote:
> 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