Ouch.. chalk up another victim of eclipse making editor preferences 'per workspace'. I'll revert the change, and have another bash =)
Ozzy. On Thu, Oct 22, 2009 at 2:38 PM, Jarek Gawor <[email protected]> wrote: > I agree with Guillaume plus I think it would be good to keep the > formatting consistent. > > Jarek > > On Thu, Oct 22, 2009 at 6:41 AM, The Dweller <[email protected]> wrote: > > I put the override processing afterward to keep it together logically as > a > > unit. It's certainly more efficient to tie it into the initial list > build, > > at the cost of mixing the two concerns of building a list, and finding > > overrides for items on a list. > > > > I guess if we're happy that the approach of building the list isnt likely > to > > change, or that if it does it will do so in a manner that remains close > > enough the the current, then I'm fine with moving the override check into > > addEntry/addEntries. (or rather into a method invoked from both). > > > > The concern would be mainly that if the list building is modified to call > a > > new 'addXXX' method, that such a change would need to also invoke the > > 'checkOverride' method. > > > > Regards, > > Ozzy > > > > On Wed, Oct 21, 2009 at 5:02 PM, Guillaume Nodet <[email protected]> > wrote: > > > >> Wouldn't it be nicer to do that on the fly in the addEntry / > >> addEntries method instead of iterating after the list has been built ? > >> > >> On Wed, Oct 21, 2009 at 16:24, <[email protected]> wrote: > >> > Author: ozzy > >> > Date: Wed Oct 21 14:24:37 2009 > >> > New Revision: 828032 > >> > > >> > URL: http://svn.apache.org/viewvc?rev=828032&view=rev > >> > Log: > >> > ARIES-25 allow Blueprint extender to find blueprint XML within bundle > >> private storage. > >> > > >> > Modified: > >> > > >> > > incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java > >> > > >> > 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=828032&r1=828031&r2=828032&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 > >> Wed Oct 21 14:24:37 2009 > >> > @@ -18,12 +18,15 @@ > >> > */ > >> > package org.apache.aries.blueprint.container; > >> > > >> > +import java.io.File; > >> > +import java.net.MalformedURLException; > >> > import java.net.URL; > >> > import java.util.ArrayList; > >> > import java.util.Collections; > >> > import java.util.Comparator; > >> > import java.util.Enumeration; > >> > import java.util.HashMap; > >> > +import java.util.Iterator; > >> > import java.util.List; > >> > import java.util.Map; > >> > import java.util.concurrent.Executors; > >> > @@ -38,8 +41,8 @@ > >> > import org.osgi.framework.BundleContext; > >> > import org.osgi.framework.BundleEvent; > >> > import org.osgi.framework.Constants; > >> > -import org.osgi.framework.SynchronousBundleListener; > >> > import org.osgi.framework.ServiceReference; > >> > +import org.osgi.framework.SynchronousBundleListener; > >> > import org.osgi.service.blueprint.container.BlueprintContainer; > >> > import org.osgi.service.blueprint.container.BlueprintEvent; > >> > import org.slf4j.Logger; > >> > @@ -172,6 +175,18 @@ > >> > } > >> > } > >> > > >> > + private String getFilePart(URL url) > >> > + { > >> > + String path = url.getPath(); > >> > + int index = path.lastIndexOf('/'); > >> > + return path.substring(index+1); > >> > + } > >> > + > >> > + private String cachePath(Bundle bundle, String filePath) > >> > + { > >> > + return bundle.getSymbolicName() + "/" + bundle.getVersion() + > "/" > >> + filePath; > >> > + } > >> > + > >> > private void checkBundle(Bundle bundle) { > >> > LOGGER.debug("Scanning bundle {} for blueprint application", > >> bundle.getSymbolicName()); > >> > try { > >> > @@ -202,7 +217,45 @@ > >> > addEntry(bundle, name, pathList); > >> > } > >> > } > >> > - } > >> > + } > >> > + > >> > + //Override bundle specified blueprint XML with > >> > + //XML already in the private storage. > >> > + Iterator<Object> pathIter = > pathList.iterator(); > >> > + List<Object> overridden = new > >> ArrayList<Object>(); > >> > + while (pathIter.hasNext()) { > >> > + Object path = pathIter.next(); > >> > + if (path instanceof URL) { > >> > + URL url = (URL) path; > >> > + File privateDataVersion = > >> context.getDataFile(cachePath( > >> > + bundle, > >> "OSGI-INF/blueprint/" + getFilePart(url))); > >> > + if (privateDataVersion != null > && > >> privateDataVersion.exists()) { > >> > + try { > >> > + > >> overridden.add(privateDataVersion.toURL()); > >> > + > >> pathIter.remove(); > >> > + } catch > >> (MalformedURLException e) { > >> > + > >> LOGGER.error("Unexpected URL Conversion Issue", e); > >> > + } > >> > + } > >> > + } else if (path instanceof String) { > >> > + String s = (String) path; > >> > + File privateDataVersion = > >> context.getDataFile(cachePath( > >> > + bundle, s)); > >> > + if (privateDataVersion != null > >> && privateDataVersion.exists()) { > >> > + try { > >> > + > >> overridden.add(privateDataVersion.toURL()); > >> > + > >> pathIter.remove(); > >> > + } catch > >> (MalformedURLException e) { > >> > + > >> LOGGER.error("Unexpected URL Conversion Issue", e); > >> > + } > >> > + } > >> > + } else { > >> > + throw new > >> IllegalArgumentException("Unexpected path type: " > >> > + + > >> path.getClass()); > >> > + } > >> > + } > >> > + pathList.addAll(overridden); > >> > + > >> > if (!pathList.isEmpty()) { > >> > LOGGER.debug("Found blueprint application in bundle {} > >> with paths: {}", bundle.getSymbolicName(), pathList); > >> > // Check compatibility > >> > > >> > > >> > > >> > >> > >> > >> -- > >> Cheers, > >> Guillaume Nodet > >> ------------------------ > >> Blog: http://gnodet.blogspot.com/ > >> ------------------------ > >> Open Source SOA > >> http://fusesource.com > >> > > >
