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