You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ds...@apache.org on 2009/07/21 20:51:41 UTC
svn commit: r796467 [3/25] - in /felix/trunk/sigil:
common/core.tests/src/org/apache/felix/sigil/core/
common/core/src/org/apache/felix/sigil/bnd/
common/core/src/org/apache/felix/sigil/config/
common/core/src/org/apache/felix/sigil/core/ common/core/s...
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/BldProject.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/BldProject.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/BldProject.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/BldProject.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
package org.apache.felix.sigil.config;
+
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
@@ -56,7 +57,9 @@
import org.apache.felix.sigil.model.osgi.IPackageImport.OSGiImport;
import org.osgi.framework.Version;
-public class BldProject implements IBldProject, IRepositoryConfig {
+
+public class BldProject implements IBldProject, IRepositoryConfig
+{
private static final String OVERRIDE_PREFIX = "sigil.";
private static final int MAX_HEADER = 10240;
// cache to avoid loading the same default config for each project
@@ -73,132 +76,152 @@
private TreeSet<String> packageWildDefaults;
private long lastModified;
- /* package */BldProject(URI relLoc) {
+
+ /* package */BldProject( URI relLoc )
+ {
config = new BldConfig();
- convert = new BldConverter(config);
- loc = new File(".").toURI().resolve(relLoc).normalize();
- File f = new File(loc);
+ convert = new BldConverter( config );
+ loc = new File( "." ).toURI().resolve( relLoc ).normalize();
+ File f = new File( loc );
lastModified = f.lastModified();
baseDir = f.getParentFile();
}
- /* package */void load() throws IOException {
+
+ /* package */void load() throws IOException
+ {
// allow System property overrides, e.g.
// ANT_OPTS='-Dsigil.option\;addMissingImports=false' ant
- config.merge(getOverrides());
+ config.merge( getOverrides() );
InputStream in = null;
- try {
- in = loc.toURL().openStream();
- BufferedInputStream bis = new BufferedInputStream(in);
- bis.mark(MAX_HEADER);
- readHeader(bis);
- bis.reset();
-
- Properties p = new Properties();
- p.load(bis);
- config.merge(p);
-
- Properties unknown = config.getUnknown();
- if (!unknown.isEmpty())
- System.err.println("WARN: unknown keys " + unknown.keySet() + " in " + loc);
-
- loadDefaults(p);
- requirements = parseRequirements();
- }
- finally {
- if ( in != null ) {
- in.close();
- }
+ try
+ {
+ in = loc.toURL().openStream();
+ BufferedInputStream bis = new BufferedInputStream( in );
+ bis.mark( MAX_HEADER );
+ readHeader( bis );
+ bis.reset();
+
+ Properties p = new Properties();
+ p.load( bis );
+ config.merge( p );
+
+ Properties unknown = config.getUnknown();
+ if ( !unknown.isEmpty() )
+ System.err.println( "WARN: unknown keys " + unknown.keySet() + " in " + loc );
+
+ loadDefaults( p );
+ requirements = parseRequirements();
+ }
+ finally
+ {
+ if ( in != null )
+ {
+ in.close();
+ }
}
}
- /* package */void loadDefaults(Properties p) throws IOException {
- BldConfig c = loadDefaults(p, baseDir, null);
- config.setDefault(c);
- Properties options = config.getProps(null, BldConfig.P_OPTION);
+ /* package */void loadDefaults( Properties p ) throws IOException
+ {
+ BldConfig c = loadDefaults( p, baseDir, null );
+ config.setDefault( c );
- if (!options.containsKey(BldAttr.OPTION_ADD_IMPORTS))
- c.setProp(null, BldConfig.P_OPTION, BldAttr.OPTION_ADD_IMPORTS, "true");
+ Properties options = config.getProps( null, BldConfig.P_OPTION );
+
+ if ( !options.containsKey( BldAttr.OPTION_ADD_IMPORTS ) )
+ c.setProp( null, BldConfig.P_OPTION, BldAttr.OPTION_ADD_IMPORTS, "true" );
// default omitUnusedImports option depends on number of bundles...
// we set it here to avoid it being written by save(),
// but as this may alter cached defaults, once set we have to reset it
// for each project.
- boolean omitSet = options.containsKey("__omit_set__");
+ boolean omitSet = options.containsKey( "__omit_set__" );
boolean multiple = getBundleIds().size() > 1;
- if (multiple || omitSet) {
- if (!options.containsKey(BldAttr.OPTION_OMIT_IMPORTS) || omitSet) {
- c.setProp(null, BldConfig.P_OPTION, BldAttr.OPTION_OMIT_IMPORTS, multiple + "");
- c.setProp(null, BldConfig.P_OPTION, "__omit_set__", "true");
+ if ( multiple || omitSet )
+ {
+ if ( !options.containsKey( BldAttr.OPTION_OMIT_IMPORTS ) || omitSet )
+ {
+ c.setProp( null, BldConfig.P_OPTION, BldAttr.OPTION_OMIT_IMPORTS, multiple + "" );
+ c.setProp( null, BldConfig.P_OPTION, "__omit_set__", "true" );
}
}
}
- private synchronized BldConfig loadDefaults(Properties props, File base, BldConfig dflt)
- throws IOException {
- boolean cached = false;
- String defaults = props.getProperty(BldConfig.S_DEFAULTS, "-"
- + IBldProject.PROJECT_DEFAULTS);
-
- if (base != null && defaults.length() > 0) {
- boolean ignore = defaults.startsWith("-");
- if (ignore)
- defaults = defaults.substring(1);
+ private synchronized BldConfig loadDefaults( Properties props, File base, BldConfig dflt ) throws IOException
+ {
+ boolean cached = false;
+ String defaults = props.getProperty( BldConfig.S_DEFAULTS, "-" + IBldProject.PROJECT_DEFAULTS );
- try {
- File file = new File(base, defaults).getCanonicalFile();
+ if ( base != null && defaults.length() > 0 )
+ {
+ boolean ignore = defaults.startsWith( "-" );
+
+ if ( ignore )
+ defaults = defaults.substring( 1 );
+
+ try
+ {
+ File file = new File( base, defaults ).getCanonicalFile();
URL url = file.toURL();
- if (dflt == null) {
- dflt = defaultsCache.get(url);
- if (dflt != null)
+ if ( dflt == null )
+ {
+ dflt = defaultsCache.get( url );
+ if ( dflt != null )
return dflt;
dflt = new BldConfig();
- defaultsCache.put(url, dflt);
+ defaultsCache.put( url, dflt );
cached = true;
}
Properties p = new Properties();
- p.load(url.openStream());
- dflt.merge(p);
+ p.load( url.openStream() );
+ dflt.merge( p );
ignore = false;
- loadDefaults(p, file.getParentFile(), dflt);
- } catch (IOException e) {
- if (!ignore)
+ loadDefaults( p, file.getParentFile(), dflt );
+ }
+ catch ( IOException e )
+ {
+ if ( !ignore )
throw e;
}
}
- if (dflt == null)
+ if ( dflt == null )
return new BldConfig();
- if (cached) {
+ if ( cached )
+ {
Properties unknown = dflt.getUnknown();
- if (!unknown.isEmpty())
- System.err.println("WARN: unknown keys " + unknown.keySet() + " in defaults for "
- + loc);
+ if ( !unknown.isEmpty() )
+ System.err.println( "WARN: unknown keys " + unknown.keySet() + " in defaults for " + loc );
}
return dflt;
}
- private static Properties getOverrides() {
- if (overrides == null) {
+
+ private static Properties getOverrides()
+ {
+ if ( overrides == null )
+ {
overrides = new Properties();
Properties sysProps = System.getProperties();
- for (Object okey : sysProps.keySet()) {
- String key = (String) okey;
- if (key.startsWith(OVERRIDE_PREFIX)) {
- overrides.setProperty(key.substring(OVERRIDE_PREFIX.length()), sysProps
- .getProperty(key));
+ for ( Object okey : sysProps.keySet() )
+ {
+ String key = ( String ) okey;
+ if ( key.startsWith( OVERRIDE_PREFIX ) )
+ {
+ overrides.setProperty( key.substring( OVERRIDE_PREFIX.length() ), sysProps.getProperty( key ) );
}
}
}
@@ -206,78 +229,101 @@
return overrides;
}
- private void readHeader(InputStream in) throws IOException {
- BufferedReader r = new BufferedReader(new InputStreamReader(in));
+
+ private void readHeader( InputStream in ) throws IOException
+ {
+ BufferedReader r = new BufferedReader( new InputStreamReader( in ) );
StringBuffer header = new StringBuffer();
String line;
- while ((line = r.readLine()) != null) {
- if (line.startsWith("#")) {
- header.append(line);
- header.append("\n");
- } else {
- config.setComment(header.toString());
+ while ( ( line = r.readLine() ) != null )
+ {
+ if ( line.startsWith( "#" ) )
+ {
+ header.append( line );
+ header.append( "\n" );
+ }
+ else
+ {
+ config.setComment( header.toString() );
break;
}
}
}
- public File resolve(String path) {
- File file = new File(path);
- if (!file.isAbsolute()) {
+
+ public File resolve( String path )
+ {
+ File file = new File( path );
+ if ( !file.isAbsolute() )
+ {
// can't use loc.resolve(value), as value may not be valid URI.
- file = new File(baseDir, path);
+ file = new File( baseDir, path );
}
return file;
}
- public String getVersion() {
- String version = config.getString(null, BldConfig.S_VERSION);
+
+ public String getVersion()
+ {
+ String version = config.getString( null, BldConfig.S_VERSION );
return version == null ? "0" : version;
}
- public IBundleModelElement getDependencies() {
+
+ public IBundleModelElement getDependencies()
+ {
IBundleModelElement dependencies = new BundleModelElement();
- for (IModelElement element : getRequirements().children()) {
- if (element instanceof IPackageImport) {
- IPackageImport import1 = (IPackageImport) element;
- if (!import1.isDependency())
+ for ( IModelElement element : getRequirements().children() )
+ {
+ if ( element instanceof IPackageImport )
+ {
+ IPackageImport import1 = ( IPackageImport ) element;
+ if ( !import1.isDependency() )
continue;
- IPackageImport pi = (IPackageImport) (element.clone());
- pi.setParent(null);
- dependencies.addImport(pi);
- } else {
- IRequiredBundle rb = (IRequiredBundle) (element.clone());
- rb.setParent(null);
- dependencies.addRequiredBundle(rb);
+ IPackageImport pi = ( IPackageImport ) ( element.clone() );
+ pi.setParent( null );
+ dependencies.addImport( pi );
+ }
+ else
+ {
+ IRequiredBundle rb = ( IRequiredBundle ) ( element.clone() );
+ rb.setParent( null );
+ dependencies.addRequiredBundle( rb );
}
}
boolean containsComposite = false;
- for (IBldBundle bundle : getBundles()) {
- if (!bundle.getComposites().isEmpty()) {
+ for ( IBldBundle bundle : getBundles() )
+ {
+ if ( !bundle.getComposites().isEmpty() )
+ {
containsComposite = true;
break;
}
}
// add dependency on component activator
- if (containsComposite) {
+ if ( containsComposite )
+ {
PackageImport pi = new PackageImport();
- pi.setPackageName(BundleBuilder.COMPONENT_ACTIVATOR_PKG);
- pi.setOSGiImport(OSGiImport.NEVER);
- dependencies.addImport(pi);
+ pi.setPackageName( BundleBuilder.COMPONENT_ACTIVATOR_PKG );
+ pi.setOSGiImport( OSGiImport.NEVER );
+ dependencies.addImport( pi );
}
return dependencies;
}
- private IBundleModelElement getRequirements() {
+
+ private IBundleModelElement getRequirements()
+ {
return requirements;
}
+
/*
* private boolean globMatch(String pkg, Set<String> set) { // exact match
* if (set.contains(pkg)) return true;
@@ -296,75 +342,98 @@
* auto runtime ignore
*
*/
- private void setResolve(IPackageImport pi, String resolve) throws IOException {
- if (pi.isOptional())
- pi.setDependency(false);
-
- if (BldAttr.RESOLVE_COMPILE.equals(resolve)) {
- if (pi.isOptional())
- pi.setDependency(true);
+ private void setResolve( IPackageImport pi, String resolve ) throws IOException
+ {
+ if ( pi.isOptional() )
+ pi.setDependency( false );
+
+ if ( BldAttr.RESOLVE_COMPILE.equals( resolve ) )
+ {
+ if ( pi.isOptional() )
+ pi.setDependency( true );
else
- pi.setOSGiImport(OSGiImport.NEVER);
- } else if (BldAttr.RESOLVE_RUNTIME.equals(resolve)) {
- pi.setDependency(false);
- pi.setOSGiImport(OSGiImport.ALWAYS);
- } else if (BldAttr.RESOLVE_AUTO.equals(resolve)) {
- pi.setDependency(false);
- } else if (BldAttr.RESOLVE_IGNORE.equals(resolve)) {
- pi.setDependency(false);
- pi.setOSGiImport(OSGiImport.NEVER);
- } else if (resolve != null) {
- throw new IOException("Bad attribute value: " + BldAttr.RESOLVE_ATTRIBUTE + "="
- + resolve);
+ pi.setOSGiImport( OSGiImport.NEVER );
+ }
+ else if ( BldAttr.RESOLVE_RUNTIME.equals( resolve ) )
+ {
+ pi.setDependency( false );
+ pi.setOSGiImport( OSGiImport.ALWAYS );
+ }
+ else if ( BldAttr.RESOLVE_AUTO.equals( resolve ) )
+ {
+ pi.setDependency( false );
+ }
+ else if ( BldAttr.RESOLVE_IGNORE.equals( resolve ) )
+ {
+ pi.setDependency( false );
+ pi.setOSGiImport( OSGiImport.NEVER );
+ }
+ else if ( resolve != null )
+ {
+ throw new IOException( "Bad attribute value: " + BldAttr.RESOLVE_ATTRIBUTE + "=" + resolve );
}
}
+
/**
* get external resolve= attribute from internal PackageImport flags. This
* is called from BldConverter.setBundle().
*/
- public static String getResolve(IPackageImport pi, boolean isDependency) {
+ public static String getResolve( IPackageImport pi, boolean isDependency )
+ {
OSGiImport osgiImport = pi.getOSGiImport();
String resolve = null;
- if (isDependency) {
- if (osgiImport.equals(OSGiImport.NEVER) || pi.isOptional())
+ if ( isDependency )
+ {
+ if ( osgiImport.equals( OSGiImport.NEVER ) || pi.isOptional() )
resolve = BldAttr.RESOLVE_COMPILE;
- } else {
- switch (osgiImport) {
- case ALWAYS:
- resolve = BldAttr.RESOLVE_RUNTIME;
- break;
- case AUTO:
- resolve = BldAttr.RESOLVE_AUTO;
- break;
- case NEVER:
- resolve = BldAttr.RESOLVE_IGNORE;
- break;
+ }
+ else
+ {
+ switch ( osgiImport )
+ {
+ case ALWAYS:
+ resolve = BldAttr.RESOLVE_RUNTIME;
+ break;
+ case AUTO:
+ resolve = BldAttr.RESOLVE_AUTO;
+ break;
+ case NEVER:
+ resolve = BldAttr.RESOLVE_IGNORE;
+ break;
}
}
return resolve;
}
- public String getDefaultPackageVersion(String name) {
- if (packageDefaults == null) {
- packageDefaults = config.getProps(null, BldConfig.P_PACKAGE_VERSION);
+
+ public String getDefaultPackageVersion( String name )
+ {
+ if ( packageDefaults == null )
+ {
+ packageDefaults = config.getProps( null, BldConfig.P_PACKAGE_VERSION );
packageWildDefaults = new TreeSet<String>();
- for (Object key : packageDefaults.keySet()) {
- String pkg = (String) key;
- if (pkg.endsWith("*")) {
- packageWildDefaults.add(pkg.substring(0, pkg.length() - 1));
+ for ( Object key : packageDefaults.keySet() )
+ {
+ String pkg = ( String ) key;
+ if ( pkg.endsWith( "*" ) )
+ {
+ packageWildDefaults.add( pkg.substring( 0, pkg.length() - 1 ) );
}
}
}
- String version = packageDefaults.getProperty(name);
+ String version = packageDefaults.getProperty( name );
- if (version == null) {
- for (String pkg : packageWildDefaults) {
- if (name.startsWith(pkg)) {
- version = packageDefaults.getProperty(pkg + "*");
+ if ( version == null )
+ {
+ for ( String pkg : packageWildDefaults )
+ {
+ if ( name.startsWith( pkg ) )
+ {
+ version = packageDefaults.getProperty( pkg + "*" );
// break; -- don't break, as we want the longest match
}
}
@@ -373,399 +442,511 @@
return version;
}
- private synchronized BundleModelElement parseRequirements() throws IOException {
+
+ private synchronized BundleModelElement parseRequirements() throws IOException
+ {
BundleModelElement reqs = new BundleModelElement();
List<String> sourceContents = getSourcePkgs();
HashSet<String> exports = new HashSet<String>();
- for (IBldBundle bundle : getBundles()) {
- for (IPackageExport export : bundle.getExports()) {
- exports.add(export.getPackageName());
+ for ( IBldBundle bundle : getBundles() )
+ {
+ for ( IPackageExport export : bundle.getExports() )
+ {
+ exports.add( export.getPackageName() );
}
}
- Map<String, Map<String, String>> imports = config.getMap(null, BldConfig.M_IMPORTS);
+ Map<String, Map<String, String>> imports = config.getMap( null, BldConfig.M_IMPORTS );
- for (String name : imports.keySet()) {
- Map<String, String> attr = imports.get(name);
+ for ( String name : imports.keySet() )
+ {
+ Map<String, String> attr = imports.get( name );
- String resolve = attr.get(BldAttr.RESOLVE_ATTRIBUTE);
- String resolution = attr.get(BldAttr.RESOLUTION_ATTRIBUTE);
- String versions = attr.containsKey(BldAttr.VERSION_ATTRIBUTE) ? attr
- .get(BldAttr.VERSION_ATTRIBUTE) : getDefaultPackageVersion(name);
+ String resolve = attr.get( BldAttr.RESOLVE_ATTRIBUTE );
+ String resolution = attr.get( BldAttr.RESOLUTION_ATTRIBUTE );
+ String versions = attr.containsKey( BldAttr.VERSION_ATTRIBUTE ) ? attr.get( BldAttr.VERSION_ATTRIBUTE )
+ : getDefaultPackageVersion( name );
PackageImport pi = new PackageImport();
- pi.setPackageName(name);
+ pi.setPackageName( name );
// avoid dependency on self-exports
// XXX: BldConverter.setBundle contains similar logic
- if (exports.contains(name)
- && (sourceContents.contains(name) || sourceContents.isEmpty())) {
- pi.setDependency(false);
- if (versions == null)
+ if ( exports.contains( name ) && ( sourceContents.contains( name ) || sourceContents.isEmpty() ) )
+ {
+ pi.setDependency( false );
+ if ( versions == null )
versions = getVersion();
}
- if (!checkVersionRange(versions)) {
- throw new IOException("Failed to parse version range for " + resolve
- + " missing \"'s around version range?");
+ if ( !checkVersionRange( versions ) )
+ {
+ throw new IOException( "Failed to parse version range for " + resolve
+ + " missing \"'s around version range?" );
}
- pi.setVersions(VersionRange.parseVersionRange(versions));
+ pi.setVersions( VersionRange.parseVersionRange( versions ) );
- if (BldAttr.RESOLUTION_OPTIONAL.equals(resolution)) {
- pi.setOptional(true);
- } else if (resolution != null) {
- throw new IOException("Bad attribute value: " + BldAttr.RESOLUTION_ATTRIBUTE + "="
- + resolution);
+ if ( BldAttr.RESOLUTION_OPTIONAL.equals( resolution ) )
+ {
+ pi.setOptional( true );
+ }
+ else if ( resolution != null )
+ {
+ throw new IOException( "Bad attribute value: " + BldAttr.RESOLUTION_ATTRIBUTE + "=" + resolution );
}
- setResolve(pi, resolve);
+ setResolve( pi, resolve );
- reqs.addImport(pi);
+ reqs.addImport( pi );
}
- Map<String, Map<String, String>> requires = config.getMap(null, BldConfig.M_REQUIRES);
- Properties bundleDefaults = config.getProps(null, BldConfig.P_BUNDLE_VERSION);
+ Map<String, Map<String, String>> requires = config.getMap( null, BldConfig.M_REQUIRES );
+ Properties bundleDefaults = config.getProps( null, BldConfig.P_BUNDLE_VERSION );
- if (requires != null) {
- for (String name : requires.keySet()) {
- Map<String, String> attr = requires.get(name);
- String versions = attr.containsKey(BldAttr.VERSION_ATTRIBUTE) ? attr
- .get(BldAttr.VERSION_ATTRIBUTE) : bundleDefaults.getProperty(name);
+ if ( requires != null )
+ {
+ for ( String name : requires.keySet() )
+ {
+ Map<String, String> attr = requires.get( name );
+ String versions = attr.containsKey( BldAttr.VERSION_ATTRIBUTE ) ? attr.get( BldAttr.VERSION_ATTRIBUTE )
+ : bundleDefaults.getProperty( name );
RequiredBundle rb = new RequiredBundle();
- rb.setSymbolicName(name);
- rb.setVersions(VersionRange.parseVersionRange(versions));
+ rb.setSymbolicName( name );
+ rb.setVersions( VersionRange.parseVersionRange( versions ) );
- reqs.addRequiredBundle(rb);
+ reqs.addRequiredBundle( rb );
}
}
- for (IBldBundle bundle : getBundles()) {
+ for ( IBldBundle bundle : getBundles() )
+ {
IRequiredBundle fh = bundle.getFragmentHost();
- if (fh != null)
- reqs.addRequiredBundle(fh);
+ if ( fh != null )
+ reqs.addRequiredBundle( fh );
}
return reqs;
}
- private boolean checkVersionRange(String versions) {
- if (versions == null || versions.length() == 0) {
+
+ private boolean checkVersionRange( String versions )
+ {
+ if ( versions == null || versions.length() == 0 )
+ {
return true;
- } else {
- switch (versions.charAt(0)) {
- case '(':
- case '[':
- switch (versions.charAt(versions.length() - 1)) {
- case ')':
- case ']':
- return true;
+ }
+ else
+ {
+ switch ( versions.charAt( 0 ) )
+ {
+ case '(':
+ case '[':
+ switch ( versions.charAt( versions.length() - 1 ) )
+ {
+ case ')':
+ case ']':
+ return true;
+ default:
+ return false;
+ }
default:
- return false;
- }
- default:
- return true;
+ return true;
}
}
}
- public List<String> getBundleIds() {
- List<String> ids = config.getList(null, BldConfig.C_BUNDLES);
- if (ids == null)
+
+ public List<String> getBundleIds()
+ {
+ List<String> ids = config.getList( null, BldConfig.C_BUNDLES );
+ if ( ids == null )
return Collections.emptyList();
return ids;
}
- public List<IBldBundle> getBundles() {
+
+ public List<IBldBundle> getBundles()
+ {
ArrayList<IBldBundle> list = new ArrayList<IBldBundle>();
- for (String id : getBundleIds()) {
- list.add(new BldBundle(id));
+ for ( String id : getBundleIds() )
+ {
+ list.add( new BldBundle( id ) );
}
return list;
}
+
// Implement IBldConfig: getRepositoryConfig
- public Map<String, Properties> getRepositoryConfig() {
+ public Map<String, Properties> getRepositoryConfig()
+ {
HashMap<String, Properties> map = new HashMap<String, Properties>();
final Map<String, String> env = System.getenv();
final Properties props = new Properties();
- try {
+ try
+ {
// supports ${.} and ${..} expansions
- props.setProperty(".", resolve(".").getCanonicalPath());
- props.setProperty("..", resolve("..").getCanonicalPath());
- } catch (IOException e) {
+ props.setProperty( ".", resolve( "." ).getCanonicalPath() );
+ props.setProperty( "..", resolve( ".." ).getCanonicalPath() );
+ }
+ catch ( IOException e )
+ {
}
- for (String name : config.getList(null, BldConfig.C_REPOSITORIES)) {
- Properties repo = config.getProps(null, name);
-
- for (Object k : repo.keySet()) {
- String key = (String) k;
- String value = repo.getProperty(key);
-
- String expand = BldUtil.expand(value, new Properties() {
- public String getProperty(String name) {
- return props.getProperty(name, env.get(name));
+ for ( String name : config.getList( null, BldConfig.C_REPOSITORIES ) )
+ {
+ Properties repo = config.getProps( null, name );
+
+ for ( Object k : repo.keySet() )
+ {
+ String key = ( String ) k;
+ String value = repo.getProperty( key );
+
+ String expand = BldUtil.expand( value, new Properties()
+ {
+ public String getProperty( String name )
+ {
+ return props.getProperty( name, env.get( name ) );
}
- });
+ } );
- if (!value.equals(expand)) {
+ if ( !value.equals( expand ) )
+ {
value = expand;
- repo.setProperty(key, value);
+ repo.setProperty( key, value );
}
// backwards compatible support before ${.} and ${..} was added
- if (value.startsWith("./") || value.startsWith("../")) {
- try {
+ if ( value.startsWith( "./" ) || value.startsWith( "../" ) )
+ {
+ try
+ {
// need canonical path, to normalise
- value = resolve(value).getCanonicalPath();
- } catch (IOException e) {
+ value = resolve( value ).getCanonicalPath();
+ }
+ catch ( IOException e )
+ {
}
- repo.setProperty(key, value);
+ repo.setProperty( key, value );
}
}
- map.put(name, repo);
+ map.put( name, repo );
}
return map;
}
- public Properties getOptions() {
- return config.getProps(null, BldConfig.P_OPTION);
+
+ public Properties getOptions()
+ {
+ return config.getProps( null, BldConfig.P_OPTION );
}
- public Properties getDefaultPackageVersions() {
- return config.getProps(null, BldConfig.P_PACKAGE_VERSION);
+
+ public Properties getDefaultPackageVersions()
+ {
+ return config.getProps( null, BldConfig.P_PACKAGE_VERSION );
}
- public ISigilBundle getDefaultBundle() {
+
+ public ISigilBundle getDefaultBundle()
+ {
List<String> bundles = getBundleIds();
- if (bundles.isEmpty())
+ if ( bundles.isEmpty() )
return null;
- String id = bundles.get(0);
- return getSigilBundle(id);
+ String id = bundles.get( 0 );
+ return getSigilBundle( id );
}
- public ISigilBundle getSigilBundle(String id) {
- BldBundle bundle = new BldBundle(id);
- return convert.getBundle(id, bundle);
+
+ public ISigilBundle getSigilBundle( String id )
+ {
+ BldBundle bundle = new BldBundle( id );
+ return convert.getBundle( id, bundle );
}
- public void setDefaultBundle(ISigilBundle bundle) {
- setSigilBundle(null, bundle);
+
+ public void setDefaultBundle( ISigilBundle bundle )
+ {
+ setSigilBundle( null, bundle );
}
- public void setSigilBundle(String id, ISigilBundle bundle) {
+
+ public void setSigilBundle( String id, ISigilBundle bundle )
+ {
List<String> ids = getBundleIds();
- if (ids.isEmpty()) {
+ if ( ids.isEmpty() )
+ {
ArrayList<String> list = new ArrayList<String>();
- list.add(id == null ? bundle.getBundleInfo().getSymbolicName() : id);
- config.setList(null, BldConfig.C_BUNDLES, list);
- } else if (id == null) {
- id = ids.get(0);
- } else if (!ids.contains(id)) {
- List<String> list = config.getList(null, BldConfig.C_BUNDLES);
- list.add(id);
- config.setList(null, BldConfig.C_BUNDLES, list);
+ list.add( id == null ? bundle.getBundleInfo().getSymbolicName() : id );
+ config.setList( null, BldConfig.C_BUNDLES, list );
+ }
+ else if ( id == null )
+ {
+ id = ids.get( 0 );
+ }
+ else if ( !ids.contains( id ) )
+ {
+ List<String> list = config.getList( null, BldConfig.C_BUNDLES );
+ list.add( id );
+ config.setList( null, BldConfig.C_BUNDLES, list );
}
- if (ids.size() == 1)
+ if ( ids.size() == 1 )
id = null; // don't prefix default bundle with id
- convert.setBundle(id, bundle);
+ convert.setBundle( id, bundle );
}
- public void save() throws IOException {
- saveAs(new File(loc));
+
+ public void save() throws IOException
+ {
+ saveAs( new File( loc ) );
}
- public void saveAs(File path) throws IOException {
- File part = new File(path.getPath() + ".part");
- saveTo(new FileOutputStream((part)));
+
+ public void saveAs( File path ) throws IOException
+ {
+ File part = new File( path.getPath() + ".part" );
+ saveTo( new FileOutputStream( ( part ) ) );
path.delete();
- if (!part.renameTo(path))
- throw new IOException("failed to rename " + part + " to " + path);
+ if ( !part.renameTo( path ) )
+ throw new IOException( "failed to rename " + part + " to " + path );
}
- public void saveTo(OutputStream out) {
- PrintWriter writer = new PrintWriter(new OutputStreamWriter(out));
- config.write(writer);
+
+ public void saveTo( OutputStream out )
+ {
+ PrintWriter writer = new PrintWriter( new OutputStreamWriter( out ) );
+ config.write( writer );
writer.close();
}
- public List<String> getSourceDirs() {
- List<String> list = config.getList(null, BldConfig.L_SRC_CONTENTS);
+
+ public List<String> getSourceDirs()
+ {
+ List<String> list = config.getList( null, BldConfig.L_SRC_CONTENTS );
return list != null ? list : Collections.<String> emptyList();
}
- public List<String> getSourcePkgs() {
- if (sourcePkgs == null) {
+
+ public List<String> getSourcePkgs()
+ {
+ if ( sourcePkgs == null )
+ {
sourcePkgs = new ArrayList<String>();
- for (String src : getSourceDirs()) {
- File dir = resolve(src);
- if (!dir.isDirectory()) {
- System.err.println("WARN: sourcedir does not exist: " + dir);
+ for ( String src : getSourceDirs() )
+ {
+ File dir = resolve( src );
+ if ( !dir.isDirectory() )
+ {
+ System.err.println( "WARN: sourcedir does not exist: " + dir );
continue;
// throw new RuntimeException("sourcedir: " + dir +
// " : is not a directory.");
}
- findSrcPkgs(dir, null, sourcePkgs);
+ findSrcPkgs( dir, null, sourcePkgs );
}
}
return sourcePkgs;
}
- private void findSrcPkgs(File dir, String pkg, List<String> result) {
+
+ private void findSrcPkgs( File dir, String pkg, List<String> result )
+ {
ArrayList<File> dirs = new ArrayList<File>();
boolean found = false;
- for (String name : dir.list()) {
- if (name.endsWith(".java")) {
+ for ( String name : dir.list() )
+ {
+ if ( name.endsWith( ".java" ) )
+ {
found = true;
- } else if (!name.equals(".svn")) {
- File d = new File(dir, name);
- if (d.isDirectory())
- dirs.add(d);
+ }
+ else if ( !name.equals( ".svn" ) )
+ {
+ File d = new File( dir, name );
+ if ( d.isDirectory() )
+ dirs.add( d );
}
}
- if (pkg == null) {
+ if ( pkg == null )
+ {
pkg = "";
- } else if (pkg.equals("")) {
+ }
+ else if ( pkg.equals( "" ) )
+ {
pkg = dir.getName();
- } else {
+ }
+ else
+ {
pkg = pkg + "." + dir.getName();
}
- if (found)
- result.add(pkg);
+ if ( found )
+ result.add( pkg );
- for (File d : dirs)
- findSrcPkgs(d, pkg, result);
+ for ( File d : dirs )
+ findSrcPkgs( d, pkg, result );
}
/**
* BldBundle
*
*/
- class BldBundle implements IBldBundle {
+ class BldBundle implements IBldBundle
+ {
private String id;
- public BldBundle(String id) {
+
+ public BldBundle( String id )
+ {
this.id = id;
}
- public File resolve(String path) {
- return BldProject.this.resolve(path);
+
+ public File resolve( String path )
+ {
+ return BldProject.this.resolve( path );
}
- private String getString(String key) {
- return config.getString(id, key);
+
+ private String getString( String key )
+ {
+ return config.getString( id, key );
}
- private List<String> getList(String key) {
- List<String> list = config.getList(id, key);
+
+ private List<String> getList( String key )
+ {
+ List<String> list = config.getList( id, key );
return list != null ? list : Collections.<String> emptyList();
}
- private Map<String, Map<String, String>> getMap(String key) {
- Map<String, Map<String, String>> map = config.getMap(id, key);
+
+ private Map<String, Map<String, String>> getMap( String key )
+ {
+ Map<String, Map<String, String>> map = config.getMap( id, key );
return map != null ? map : Collections.<String, Map<String, String>> emptyMap();
}
- public String getActivator() {
- return getString(BldConfig.S_ACTIVATOR);
+
+ public String getActivator()
+ {
+ return getString( BldConfig.S_ACTIVATOR );
}
- public String getId() {
- String name = getString("id");
+
+ public String getId()
+ {
+ String name = getString( "id" );
return name != null ? name : id;
}
- public String getVersion() {
- String ver = getString(BldConfig.S_VERSION);
- if (ver == null) {
+
+ public String getVersion()
+ {
+ String ver = getString( BldConfig.S_VERSION );
+ if ( ver == null )
+ {
ver = BldProject.this.getVersion();
}
return ver;
}
- public String getSymbolicName() {
- String name = getString(BldConfig.S_SYM_NAME);
+
+ public String getSymbolicName()
+ {
+ String name = getString( BldConfig.S_SYM_NAME );
return name != null ? name : getId();
}
- public List<IPackageExport> getExports() {
+
+ public List<IPackageExport> getExports()
+ {
ArrayList<IPackageExport> list = new ArrayList<IPackageExport>();
- Map<String, Map<String, String>> exports = getMap(BldConfig.M_EXPORTS);
+ Map<String, Map<String, String>> exports = getMap( BldConfig.M_EXPORTS );
- if (exports != null) {
- for (String name : exports.keySet()) {
- Map<String, String> attrs = exports.get(name);
+ if ( exports != null )
+ {
+ for ( String name : exports.keySet() )
+ {
+ Map<String, String> attrs = exports.get( name );
PackageExport pkgExport = new PackageExport();
- pkgExport.setPackageName(name);
+ pkgExport.setPackageName( name );
- String version = attrs.get(BldAttr.VERSION_ATTRIBUTE);
+ String version = attrs.get( BldAttr.VERSION_ATTRIBUTE );
// only default export version from local packages
- if (version == null
- && (getSourcePkgs().isEmpty() || getSourcePkgs().contains(name))) {
+ if ( version == null && ( getSourcePkgs().isEmpty() || getSourcePkgs().contains( name ) ) )
+ {
version = getVersion();
}
- if (version != null)
- pkgExport.setVersion(new Version(version));
+ if ( version != null )
+ pkgExport.setVersion( new Version( version ) );
- list.add(pkgExport);
+ list.add( pkgExport );
}
}
return list;
}
- public List<IPackageImport> getImports() {
+
+ public List<IPackageImport> getImports()
+ {
ArrayList<IPackageImport> list = new ArrayList<IPackageImport>();
- for (IPackageImport import1 : getRequirements().childrenOfType(IPackageImport.class)) {
- list.add(import1);
+ for ( IPackageImport import1 : getRequirements().childrenOfType( IPackageImport.class ) )
+ {
+ list.add( import1 );
}
return list;
}
- public List<IRequiredBundle> getRequires() {
+
+ public List<IRequiredBundle> getRequires()
+ {
ArrayList<IRequiredBundle> list = new ArrayList<IRequiredBundle>();
- list.addAll(Arrays.asList(getRequirements().childrenOfType(IRequiredBundle.class)));
+ list.addAll( Arrays.asList( getRequirements().childrenOfType( IRequiredBundle.class ) ) );
- for (IBldBundle bundle : getBundles()) {
+ for ( IBldBundle bundle : getBundles() )
+ {
IRequiredBundle fh = bundle.getFragmentHost();
- if (fh != null)
- list.remove(fh);
+ if ( fh != null )
+ list.remove( fh );
}
return list;
}
- public IRequiredBundle getFragmentHost() {
+
+ public IRequiredBundle getFragmentHost()
+ {
IRequiredBundle fragment = null;
- Map<String, Map<String, String>> fragments = getMap(BldConfig.M_FRAGMENT);
- if (fragments != null) {
- for (String name : fragments.keySet()) {
- Map<String, String> attr = fragments.get(name);
- String versions = attr.isEmpty() ? null : attr.get(BldAttr.VERSION_ATTRIBUTE);
+ Map<String, Map<String, String>> fragments = getMap( BldConfig.M_FRAGMENT );
+ if ( fragments != null )
+ {
+ for ( String name : fragments.keySet() )
+ {
+ Map<String, String> attr = fragments.get( name );
+ String versions = attr.isEmpty() ? null : attr.get( BldAttr.VERSION_ATTRIBUTE );
fragment = new RequiredBundle();
- fragment.setSymbolicName(name);
- fragment.setVersions(VersionRange.parseVersionRange(versions));
+ fragment.setSymbolicName( name );
+ fragment.setVersions( VersionRange.parseVersionRange( versions ) );
break;
}
}
@@ -773,50 +954,67 @@
return fragment;
}
- public Map<String, Map<String, String>> getLibs() {
- Map<String, Map<String, String>> libs = getMap(BldConfig.M_LIBS);
- return (libs != null) ? libs : Collections.<String, Map<String, String>> emptyMap();
+
+ public Map<String, Map<String, String>> getLibs()
+ {
+ Map<String, Map<String, String>> libs = getMap( BldConfig.M_LIBS );
+ return ( libs != null ) ? libs : Collections.<String, Map<String, String>> emptyMap();
}
- public List<String> getContents() {
- return getList(BldConfig.L_CONTENTS);
+
+ public List<String> getContents()
+ {
+ return getList( BldConfig.L_CONTENTS );
}
- public List<String> getDownloadContents() {
- return getList(BldConfig.L_DL_CONTENTS);
+
+ public List<String> getDownloadContents()
+ {
+ return getList( BldConfig.L_DL_CONTENTS );
}
- public List<String> getComposites() {
+
+ public List<String> getComposites()
+ {
ArrayList<String> list = new ArrayList<String>();
- for (String composite : getList(BldConfig.L_COMPOSITES)) {
- list.add(composite);
+ for ( String composite : getList( BldConfig.L_COMPOSITES ) )
+ {
+ list.add( composite );
}
return list;
}
- public Map<String, String> getResources() {
+
+ public Map<String, String> getResources()
+ {
HashMap<String, String> map = new HashMap<String, String>();
- List<String> resources = getList(BldConfig.L_RESOURCES);
+ List<String> resources = getList( BldConfig.L_RESOURCES );
- if (resources != null) {
- for (String resource : resources) {
- String[] paths = resource.split("=", 2);
- String fsPath = (paths.length > 1 ? paths[1] : "");
- map.put(paths[0], fsPath);
+ if ( resources != null )
+ {
+ for ( String resource : resources )
+ {
+ String[] paths = resource.split( "=", 2 );
+ String fsPath = ( paths.length > 1 ? paths[1] : "" );
+ map.put( paths[0], fsPath );
}
}
return map;
}
- public Properties getHeaders() {
- Properties headers = config.getProps(id, BldConfig.P_HEADER);
+
+ public Properties getHeaders()
+ {
+ Properties headers = config.getProps( id, BldConfig.P_HEADER );
return headers;
}
}
- public long getLastModified() {
+
+ public long getLastModified()
+ {
return lastModified;
}
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/BldUtil.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/BldUtil.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/BldUtil.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/BldUtil.java Tue Jul 21 18:51:33 2009
@@ -19,14 +19,17 @@
package org.apache.felix.sigil.config;
+
import java.util.Map;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+
// taken from Newton Launcher
-public class BldUtil {
+public class BldUtil
+{
/**
* expands property references embedded in strings. Each occurrence of ${name} is replaced with the value of
* p.getProperty("name"); If the property is not set, then the original reference, is returned as follows "?<name>".
@@ -54,72 +57,86 @@
* with word as the message.
* </pre>
*/
- public static String expand(String s, Properties p) {
+ public static String expand( String s, Properties p )
+ {
// regex to match property references e.g. ${name}
// TODO this is very simplistic, so strings to be expanded should not
// contain $ or }, except where substitution is expected.
- // Update: propRef regex now allows substitutions to contain $,
- // e.g. where a Windows ${user.name} is $Admin or similar.
- final Pattern propRef = Pattern.compile("\\$\\{(((\\$[^\\{\\}])|[^\\$\\}])+\\$?)\\}");
- final Pattern backslash = Pattern.compile("\\\\");
- final Pattern dollar = Pattern.compile("\\$");
+ // Update: propRef regex now allows substitutions to contain $,
+ // e.g. where a Windows ${user.name} is $Admin or similar.
+ final Pattern propRef = Pattern.compile( "\\$\\{(((\\$[^\\{\\}])|[^\\$\\}])+\\$?)\\}" );
+ final Pattern backslash = Pattern.compile( "\\\\" );
+ final Pattern dollar = Pattern.compile( "\\$" );
- if (s == null) {
+ if ( s == null )
+ {
return null;
}
- if (s.indexOf("${") == -1) { // shortcut if no expansions
+ if ( s.indexOf( "${" ) == -1 )
+ { // shortcut if no expansions
return s;
}
- for (int i = 0; i < 20; i++) { // avoids self-referencing expansions
+ for ( int i = 0; i < 20; i++ )
+ { // avoids self-referencing expansions
// System.out.println("XXX expand[" + i + "] = [" + s + "]");
- Matcher matcher = propRef.matcher(s);
+ Matcher matcher = propRef.matcher( s );
- if (!matcher.find()) {
+ if ( !matcher.find() )
+ {
// replace unmatched items
- s = s.replaceAll("\\Q??[\\E", "\\${");
- s = s.replaceAll("\\Q??]\\E", "}");
+ s = s.replaceAll( "\\Q??[\\E", "\\${" );
+ s = s.replaceAll( "\\Q??]\\E", "}" );
// debug("expanded: " + s);
- if (s.indexOf("${") != -1) {
- throw new RuntimeException("Can't expand: " + s);
+ if ( s.indexOf( "${" ) != -1 )
+ {
+ throw new RuntimeException( "Can't expand: " + s );
}
return s;
}
- String key = matcher.group(1);
- String[] keydef = key.split(":[=+-?@]", 2);
+ String key = matcher.group( 1 );
+ String[] keydef = key.split( ":[=+-?@]", 2 );
String replace;
- if (keydef.length != 2) {
- replace = key.length() == 0 ? null : p.getProperty(key);
+ if ( keydef.length != 2 )
+ {
+ replace = key.length() == 0 ? null : p.getProperty( key );
}
- else {
- replace = keydef[0].length() == 0 ? null : p.getProperty(keydef[0]);
+ else
+ {
+ replace = keydef[0].length() == 0 ? null : p.getProperty( keydef[0] );
- if (replace != null && (replace.length() == 0 || replace.indexOf("${") != -1)) {
+ if ( replace != null && ( replace.length() == 0 || replace.indexOf( "${" ) != -1 ) )
+ {
// don't want unexpanded replacement, as it may stop ${...:-default}
replace = null;
}
- if (key.indexOf(":+") != -1) {
- replace = ((replace == null) ? "" : keydef[1]);
+ if ( key.indexOf( ":+" ) != -1 )
+ {
+ replace = ( ( replace == null ) ? "" : keydef[1] );
}
- else if (replace == null) {
+ else if ( replace == null )
+ {
replace = keydef[1];
- if (key.indexOf(":?") != -1) {
+ if ( key.indexOf( ":?" ) != -1 )
+ {
String msg = "${" + keydef[0] + ":?" + keydef[1] + "} property not set";
- throw new RuntimeException(msg);
+ throw new RuntimeException( msg );
}
- if (key.indexOf(":=") != -1) {
- p.setProperty(keydef[0], keydef[1]);
+ if ( key.indexOf( ":=" ) != -1 )
+ {
+ p.setProperty( keydef[0], keydef[1] );
}
}
}
- if (replace == null) {
+ if ( replace == null )
+ {
// TODO: this is a hack to avoid looping on unmatched references
// should really leave unchanged and process rest of string.
// We use "]" as delimiter to avoid non-matched "}"
@@ -138,23 +155,27 @@
// to
// escape literal characters in the replacement string.
// escape any \ or $ in replacement string
- replace = backslash.matcher(replace).replaceAll("\\\\\\\\");
- replace = dollar.matcher(replace).replaceAll("\\\\\\$");
+ replace = backslash.matcher( replace ).replaceAll( "\\\\\\\\" );
+ replace = dollar.matcher( replace ).replaceAll( "\\\\\\$" );
- s = s.replaceAll("\\Q${" + key + "}\\E", replace);
+ s = s.replaceAll( "\\Q${" + key + "}\\E", replace );
}
- throw new RuntimeException("expand: loop expanding: " + s);
+ throw new RuntimeException( "expand: loop expanding: " + s );
}
- public static String expand(String s) {
+
+ public static String expand( String s )
+ {
final Map<String, String> env = System.getenv();
- return expand(s, new Properties() {
- public String getProperty(String name) {
- return System.getProperty(name, env.get(name));
+ return expand( s, new Properties()
+ {
+ public String getProperty( String name )
+ {
+ return System.getProperty( name, env.get( name ) );
}
- });
+ } );
}
}
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/IBldProject.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/IBldProject.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/IBldProject.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/IBldProject.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
package org.apache.felix.sigil.config;
+
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
@@ -32,176 +33,211 @@
import org.apache.felix.sigil.model.osgi.IPackageImport;
import org.apache.felix.sigil.model.osgi.IRequiredBundle;
-public interface IBldProject {
-
- static final String PROJECT_FILE = "sigil.properties";
- static final String PROJECT_DEFAULTS = "../sigil-defaults.properties";
-
- void save() throws IOException;
-
- void saveAs(File path) throws IOException;
-
- void saveTo(OutputStream out) throws IOException;
-
- /**
- * gets default package version ranges.
- */
- Properties getDefaultPackageVersions();
-
- /**
- * gets default package version range for named package.
- * Also handles wildcards in defaults.
- */
- String getDefaultPackageVersion(String name);
-
- /**
- * get project options.
- */
- Properties getOptions();
-
- /**
- * get project version.
- */
- String getVersion();
-
- /**
- * gets dependencies (Package-Import and Require-Bundle) needed to compile.
- */
- IBundleModelElement getDependencies();
-
- /**
- * gets project source directories.
- * This is a convenient way to specify bundle contents
- * when the project doesn't contains multiple bundles.
- */
- List<String> getSourceDirs();
-
- /**
- * gets the list of packages represented by getSourceDirs().
- * @throws IOException
- */
- List<String> getSourcePkgs();
-
- /**
- * gets bundle ids.
- */
- List<String> getBundleIds();
-
- /**
- * gets bundles.
- */
- List<IBldBundle> getBundles();
-
- /**
- * convert specified bundle to SigilBundle.
- */
- ISigilBundle getSigilBundle(String id);
-
- /**
- * convert SigilBundle to specified bundle.
- */
- void setSigilBundle(String id, ISigilBundle sb);
-
- /**
- * converts default bundle to SigilBundle.
- */
- ISigilBundle getDefaultBundle();
-
- /**
- * converts SigilBundle to default bundle.
- */
- void setDefaultBundle(ISigilBundle sb);
-
- /**
- * resolves a relative path against the project file location.
- */
- File resolve(String path);
-
- /**
- * gets the last modification date of the project file.
- */
- long getLastModified();
-
- interface IBldBundle {
- /**
- * gets bundle activator
- */
- String getActivator();
-
- /**
- * gets bundle id within project.
- */
- String getId();
-
- /**
- * gets bundle version.
- */
- String getVersion();
-
- /**
- * gets the Bundle-SymbolicName.
- */
- String getSymbolicName();
-
- /**
- * gets bundles export-packages.
- */
- List<IPackageExport> getExports();
-
- /**
- * gets project import-packages.
- */
- List<IPackageImport> getImports();
-
- /**
- * gets project require-bundles.
- */
- List<IRequiredBundle> getRequires();
-
- /**
- * get bundle fragment-host.
- */
- IRequiredBundle getFragmentHost();
-
- /**
- * gets bundle libs.
- */
- Map<String, Map<String, String>> getLibs();
-
- /**
- * gets the bundle contents
- * @return list of package patterns.
- */
- List<String> getContents();
-
- /**
- * gets the bundle's associated dljar contents.
- * This is a convenience which avoids having to define another bundle
- * just for the dljar, which is then added to the parent bundle.
- * @return list of package patterns.
- */
- List<String> getDownloadContents();
-
- /**
- * gets SCA composites.
- */
- List<String> getComposites();
-
- /**
- * gets the additional resources.
- * @return map with key as path in bundle, value as path in file system.
- * Paths are resolved relative to location of project file and also from classpath.
- */
- Map<String,String> getResources();
-
- /**
- * gets additional bundle headers.
- */
- Properties getHeaders();
-
- /**
- * resolves a relative path against the project file location.
- */
- File resolve(String path);
- }
+
+public interface IBldProject
+{
+
+ static final String PROJECT_FILE = "sigil.properties";
+ static final String PROJECT_DEFAULTS = "../sigil-defaults.properties";
+
+
+ void save() throws IOException;
+
+
+ void saveAs( File path ) throws IOException;
+
+
+ void saveTo( OutputStream out ) throws IOException;
+
+
+ /**
+ * gets default package version ranges.
+ */
+ Properties getDefaultPackageVersions();
+
+
+ /**
+ * gets default package version range for named package.
+ * Also handles wildcards in defaults.
+ */
+ String getDefaultPackageVersion( String name );
+
+
+ /**
+ * get project options.
+ */
+ Properties getOptions();
+
+
+ /**
+ * get project version.
+ */
+ String getVersion();
+
+
+ /**
+ * gets dependencies (Package-Import and Require-Bundle) needed to compile.
+ */
+ IBundleModelElement getDependencies();
+
+
+ /**
+ * gets project source directories.
+ * This is a convenient way to specify bundle contents
+ * when the project doesn't contains multiple bundles.
+ */
+ List<String> getSourceDirs();
+
+
+ /**
+ * gets the list of packages represented by getSourceDirs().
+ * @throws IOException
+ */
+ List<String> getSourcePkgs();
+
+
+ /**
+ * gets bundle ids.
+ */
+ List<String> getBundleIds();
+
+
+ /**
+ * gets bundles.
+ */
+ List<IBldBundle> getBundles();
+
+
+ /**
+ * convert specified bundle to SigilBundle.
+ */
+ ISigilBundle getSigilBundle( String id );
+
+
+ /**
+ * convert SigilBundle to specified bundle.
+ */
+ void setSigilBundle( String id, ISigilBundle sb );
+
+
+ /**
+ * converts default bundle to SigilBundle.
+ */
+ ISigilBundle getDefaultBundle();
+
+
+ /**
+ * converts SigilBundle to default bundle.
+ */
+ void setDefaultBundle( ISigilBundle sb );
+
+
+ /**
+ * resolves a relative path against the project file location.
+ */
+ File resolve( String path );
+
+
+ /**
+ * gets the last modification date of the project file.
+ */
+ long getLastModified();
+
+ interface IBldBundle
+ {
+ /**
+ * gets bundle activator
+ */
+ String getActivator();
+
+
+ /**
+ * gets bundle id within project.
+ */
+ String getId();
+
+
+ /**
+ * gets bundle version.
+ */
+ String getVersion();
+
+
+ /**
+ * gets the Bundle-SymbolicName.
+ */
+ String getSymbolicName();
+
+
+ /**
+ * gets bundles export-packages.
+ */
+ List<IPackageExport> getExports();
+
+
+ /**
+ * gets project import-packages.
+ */
+ List<IPackageImport> getImports();
+
+
+ /**
+ * gets project require-bundles.
+ */
+ List<IRequiredBundle> getRequires();
+
+
+ /**
+ * get bundle fragment-host.
+ */
+ IRequiredBundle getFragmentHost();
+
+
+ /**
+ * gets bundle libs.
+ */
+ Map<String, Map<String, String>> getLibs();
+
+
+ /**
+ * gets the bundle contents
+ * @return list of package patterns.
+ */
+ List<String> getContents();
+
+
+ /**
+ * gets the bundle's associated dljar contents.
+ * This is a convenience which avoids having to define another bundle
+ * just for the dljar, which is then added to the parent bundle.
+ * @return list of package patterns.
+ */
+ List<String> getDownloadContents();
+
+
+ /**
+ * gets SCA composites.
+ */
+ List<String> getComposites();
+
+
+ /**
+ * gets the additional resources.
+ * @return map with key as path in bundle, value as path in file system.
+ * Paths are resolved relative to location of project file and also from classpath.
+ */
+ Map<String, String> getResources();
+
+
+ /**
+ * gets additional bundle headers.
+ */
+ Properties getHeaders();
+
+
+ /**
+ * resolves a relative path against the project file location.
+ */
+ File resolve( String path );
+ }
}
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/IRepositoryConfig.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/IRepositoryConfig.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/IRepositoryConfig.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/config/IRepositoryConfig.java Tue Jul 21 18:51:33 2009
@@ -19,18 +19,22 @@
package org.apache.felix.sigil.config;
+
import java.util.Map;
import java.util.Properties;
-public interface IRepositoryConfig {
- static final String REPOSITORY_PROVIDER = "provider";
- static final String REPOSITORY_LEVEL = "level";
-
- /**
- * get properties with which to instantiate repositories.
- * The key REPOSITORY_PROVIDER will be set to the fully qualified class name of the IRepositoryProvider.
- * The key REPOSITORY_LEVEL indicates repository search order.
- * @return
- */
- Map<String,Properties> getRepositoryConfig();
+
+public interface IRepositoryConfig
+{
+ static final String REPOSITORY_PROVIDER = "provider";
+ static final String REPOSITORY_LEVEL = "level";
+
+
+ /**
+ * get properties with which to instantiate repositories.
+ * The key REPOSITORY_PROVIDER will be set to the fully qualified class name of the IRepositoryProvider.
+ * The key REPOSITORY_LEVEL indicates repository search order.
+ * @return
+ */
+ Map<String, Properties> getRepositoryConfig();
}
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/BldCore.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/BldCore.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/BldCore.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/BldCore.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
package org.apache.felix.sigil.core;
+
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -46,53 +47,64 @@
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
-public class BldCore implements BundleActivator {
- private static LicenseManager licenceManager = new LicenseManager();
-
- private static final Logger log = Logger.getLogger(BldCore.class.getName());
-
- public static void error(String string, Throwable e) {
- // TODO
- log.log( Level.WARNING, string, e );
- }
-
- public static void error(String string) {
- log.log( Level.WARNING, string );
- }
-
- public static ILicenseManager getLicenseManager() {
- return licenceManager;
- }
-
- public void start(BundleContext context) throws Exception {
- init();
- }
-
- public static void init() throws Exception {
- String uri = "http://sigil.codecauldron.org/xml/sigil-namespace";
- ModelElementFactory.getInstance().register(ISigilBundle.class,
- SigilBundle.class, "bundle", "sigil", uri);
- ModelElementFactory.getInstance().register(IDownloadJar.class,
- DownloadJar.class, "download", "sigil", uri);
- ModelElementFactory.getInstance().register(ILibrary.class,
- Library.class, "library", "sigil", uri);
- ModelElementFactory.getInstance().register(ILibraryImport.class,
- LibraryImport.class, "library-import", "sigil", uri);
-
- // osgi elements
- ModelElementFactory.getInstance().register(IBundleModelElement.class,
- BundleModelElement.class, "bundle", null, null);
- ModelElementFactory.getInstance().register(IPackageExport.class,
- PackageExport.class, "package.export", null, null);
- ModelElementFactory.getInstance().register(IPackageImport.class,
- PackageImport.class, "package.import", null, null);
- ModelElementFactory.getInstance().register(IRequiredBundle.class,
- RequiredBundle.class, "required.bundle", null, null);
- }
-
- public void stop(BundleContext context) throws Exception {
- // TODO Auto-generated method stub
-
- }
+
+public class BldCore implements BundleActivator
+{
+ private static LicenseManager licenceManager = new LicenseManager();
+
+ private static final Logger log = Logger.getLogger( BldCore.class.getName() );
+
+
+ public static void error( String string, Throwable e )
+ {
+ // TODO
+ log.log( Level.WARNING, string, e );
+ }
+
+
+ public static void error( String string )
+ {
+ log.log( Level.WARNING, string );
+ }
+
+
+ public static ILicenseManager getLicenseManager()
+ {
+ return licenceManager;
+ }
+
+
+ public void start( BundleContext context ) throws Exception
+ {
+ init();
+ }
+
+
+ public static void init() throws Exception
+ {
+ String uri = "http://sigil.codecauldron.org/xml/sigil-namespace";
+ ModelElementFactory.getInstance().register( ISigilBundle.class, SigilBundle.class, "bundle", "sigil", uri );
+ ModelElementFactory.getInstance().register( IDownloadJar.class, DownloadJar.class, "download", "sigil", uri );
+ ModelElementFactory.getInstance().register( ILibrary.class, Library.class, "library", "sigil", uri );
+ ModelElementFactory.getInstance().register( ILibraryImport.class, LibraryImport.class, "library-import",
+ "sigil", uri );
+
+ // osgi elements
+ ModelElementFactory.getInstance().register( IBundleModelElement.class, BundleModelElement.class, "bundle",
+ null, null );
+ ModelElementFactory.getInstance().register( IPackageExport.class, PackageExport.class, "package.export", null,
+ null );
+ ModelElementFactory.getInstance().register( IPackageImport.class, PackageImport.class, "package.import", null,
+ null );
+ ModelElementFactory.getInstance().register( IRequiredBundle.class, RequiredBundle.class, "required.bundle",
+ null, null );
+ }
+
+
+ public void stop( BundleContext context ) throws Exception
+ {
+ // TODO Auto-generated method stub
+
+ }
}
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/license/LicenseManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/license/LicenseManager.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/license/LicenseManager.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/license/LicenseManager.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
package org.apache.felix.sigil.core.internal.license;
+
import java.util.Collections;
import java.util.HashMap;
import java.util.Set;
@@ -27,43 +28,55 @@
import org.apache.felix.sigil.core.licence.ILicenseManager;
import org.apache.felix.sigil.core.licence.ILicensePolicy;
-public class LicenseManager implements ILicenseManager {
- private HashMap<String, Pattern> licenses = new HashMap<String, Pattern>();
- private HashMap<String, LicensePolicy> policies = new HashMap<String, LicensePolicy>();
- private LicensePolicy defaultPolicy = new LicensePolicy(this);
-
- public void addLicense(String name, Pattern pattern) {
- licenses.put( name, pattern );
- }
-
- public void removeLicense(String name) {
- licenses.remove(name);
- }
-
- public Set<String> getLicenseNames() {
- return Collections.unmodifiableSet(licenses.keySet());
- }
-
- public Pattern getLicensePattern(String name) {
- return licenses.get( name );
- }
-
- public ILicensePolicy getDefaultPolicy() {
- return defaultPolicy;
- }
-
- //public ILicensePolicy getPolicy(ISigilProjectModel project) {
- // synchronized( policies ) {
- // LicensePolicy p = policies.get(project.getName());
- //
- // if ( p == null ) {
- // p = new LicensePolicy(this, project);
- // policies.put( project.getName(), p );
- // }
- //
- // return p;
- // }
- //}
+public class LicenseManager implements ILicenseManager
+{
+
+ private HashMap<String, Pattern> licenses = new HashMap<String, Pattern>();
+ private HashMap<String, LicensePolicy> policies = new HashMap<String, LicensePolicy>();
+ private LicensePolicy defaultPolicy = new LicensePolicy( this );
+
+
+ public void addLicense( String name, Pattern pattern )
+ {
+ licenses.put( name, pattern );
+ }
+
+
+ public void removeLicense( String name )
+ {
+ licenses.remove( name );
+ }
+
+
+ public Set<String> getLicenseNames()
+ {
+ return Collections.unmodifiableSet( licenses.keySet() );
+ }
+
+
+ public Pattern getLicensePattern( String name )
+ {
+ return licenses.get( name );
+ }
+
+
+ public ILicensePolicy getDefaultPolicy()
+ {
+ return defaultPolicy;
+ }
+
+ //public ILicensePolicy getPolicy(ISigilProjectModel project) {
+ // synchronized( policies ) {
+ // LicensePolicy p = policies.get(project.getName());
+ //
+ // if ( p == null ) {
+ // p = new LicensePolicy(this, project);
+ // policies.put( project.getName(), p );
+ // }
+ //
+ // return p;
+ // }
+ //}
}
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/license/LicensePolicy.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/license/LicensePolicy.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/license/LicensePolicy.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/license/LicensePolicy.java Tue Jul 21 18:51:33 2009
@@ -19,35 +19,48 @@
package org.apache.felix.sigil.core.internal.license;
+
import org.apache.felix.sigil.core.licence.ILicensePolicy;
import org.apache.felix.sigil.model.eclipse.ISigilBundle;
import org.eclipse.core.runtime.IProgressMonitor;
-public class LicensePolicy implements ILicensePolicy {
- private LicenseManager licenseManager;
-
- public LicensePolicy(LicenseManager licenseManager) {
- this.licenseManager = licenseManager;
- }
-
- public boolean accept(ISigilBundle bundle) {
- return true;
- }
-
- public void addAllowed(String licenseName) {
- // TODO Auto-generated method stub
-
- }
-
- public void removeAllowed(String licenseName) {
- // TODO Auto-generated method stub
-
- }
-
- public void save(IProgressMonitor monitor) {
- // TODO Auto-generated method stub
-
- }
+public class LicensePolicy implements ILicensePolicy
+{
+
+ private LicenseManager licenseManager;
+
+
+ public LicensePolicy( LicenseManager licenseManager )
+ {
+ this.licenseManager = licenseManager;
+ }
+
+
+ public boolean accept( ISigilBundle bundle )
+ {
+ return true;
+ }
+
+
+ public void addAllowed( String licenseName )
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+
+ public void removeAllowed( String licenseName )
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+
+ public void save( IProgressMonitor monitor )
+ {
+ // TODO Auto-generated method stub
+
+ }
}
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/model/eclipse/DownloadJar.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/model/eclipse/DownloadJar.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/model/eclipse/DownloadJar.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/model/eclipse/DownloadJar.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
package org.apache.felix.sigil.core.internal.model.eclipse;
+
import java.util.HashSet;
import java.util.Set;
@@ -26,29 +27,41 @@
import org.apache.felix.sigil.model.eclipse.IDownloadJar;
import org.eclipse.core.runtime.IPath;
-public class DownloadJar extends AbstractCompoundModelElement implements IDownloadJar {
- private static final long serialVersionUID = 1L;
+public class DownloadJar extends AbstractCompoundModelElement implements IDownloadJar
+{
+
+ private static final long serialVersionUID = 1L;
+
+ private Set<IPath> entries = new HashSet<IPath>();
+
+
+ public DownloadJar()
+ {
+ super( "RMI Classpath Download Jar" );
+ }
+
+
+ public void addEntry( IPath entry )
+ {
+ entries.add( entry );
+ }
+
+
+ public void removeEntry( IPath entry )
+ {
+ entries.remove( entry );
+ }
+
+
+ public Set<IPath> getEntrys()
+ {
+ return entries;
+ }
+
- private Set<IPath> entries = new HashSet<IPath>();
-
- public DownloadJar() {
- super("RMI Classpath Download Jar");
- }
-
- public void addEntry(IPath entry) {
- entries.add( entry );
- }
-
- public void removeEntry(IPath entry) {
- entries.remove( entry );
- }
-
- public Set<IPath> getEntrys() {
- return entries;
- }
-
- public void clearEntries() {
- entries.clear();
- }
+ public void clearEntries()
+ {
+ entries.clear();
+ }
}
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/model/eclipse/Library.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/model/eclipse/Library.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/model/eclipse/Library.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/model/eclipse/Library.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
package org.apache.felix.sigil.core.internal.model.eclipse;
+
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
@@ -29,58 +30,82 @@
import org.apache.felix.sigil.model.osgi.IRequiredBundle;
import org.osgi.framework.Version;
-public class Library extends AbstractCompoundModelElement implements ILibrary {
- private static final long serialVersionUID = 1L;
-
- private String name;
- private Version version;
- private Set<IRequiredBundle> bundles;
- private Set<IPackageImport> imports;
-
- public Library() {
- super("Library");
- bundles = new HashSet<IRequiredBundle>();
- imports = new HashSet<IPackageImport>();
- }
-
- public void addBundle(IRequiredBundle bundle) {
- bundles.add(bundle);
- }
-
- public void addImport(IPackageImport pi) {
- imports.add(pi);
- }
-
- public Collection<IRequiredBundle> getBundles() {
- return bundles;
- }
-
- public Collection<IPackageImport> getImports() {
- return imports;
- }
-
- public String getName() {
- return name;
- }
-
- public Version getVersion() {
- return version;
- }
-
- public void removeBundle(IRequiredBundle bundle) {
- bundles.remove(bundle);
- }
-
- public void removeImport(IPackageImport pi) {
- imports.remove(pi);
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public void setVersion(Version version) {
- this.version = version;
- }
+public class Library extends AbstractCompoundModelElement implements ILibrary
+{
+
+ private static final long serialVersionUID = 1L;
+
+ private String name;
+ private Version version;
+ private Set<IRequiredBundle> bundles;
+ private Set<IPackageImport> imports;
+
+
+ public Library()
+ {
+ super( "Library" );
+ bundles = new HashSet<IRequiredBundle>();
+ imports = new HashSet<IPackageImport>();
+ }
+
+
+ public void addBundle( IRequiredBundle bundle )
+ {
+ bundles.add( bundle );
+ }
+
+
+ public void addImport( IPackageImport pi )
+ {
+ imports.add( pi );
+ }
+
+
+ public Collection<IRequiredBundle> getBundles()
+ {
+ return bundles;
+ }
+
+
+ public Collection<IPackageImport> getImports()
+ {
+ return imports;
+ }
+
+
+ public String getName()
+ {
+ return name;
+ }
+
+
+ public Version getVersion()
+ {
+ return version;
+ }
+
+
+ public void removeBundle( IRequiredBundle bundle )
+ {
+ bundles.remove( bundle );
+ }
+
+
+ public void removeImport( IPackageImport pi )
+ {
+ imports.remove( pi );
+ }
+
+
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+
+ public void setVersion( Version version )
+ {
+ this.version = version;
+ }
}
Modified: felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/model/eclipse/LibraryImport.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/model/eclipse/LibraryImport.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/model/eclipse/LibraryImport.java (original)
+++ felix/trunk/sigil/common/core/src/org/apache/felix/sigil/core/internal/model/eclipse/LibraryImport.java Tue Jul 21 18:51:33 2009
@@ -19,35 +19,48 @@
package org.apache.felix.sigil.core.internal.model.eclipse;
+
import org.apache.felix.sigil.model.AbstractModelElement;
import org.apache.felix.sigil.model.common.VersionRange;
import org.apache.felix.sigil.model.eclipse.ILibraryImport;
-public class LibraryImport extends AbstractModelElement implements ILibraryImport {
- private static final long serialVersionUID = 1L;
+public class LibraryImport extends AbstractModelElement implements ILibraryImport
+{
+
+ private static final long serialVersionUID = 1L;
+
+
+ public LibraryImport()
+ {
+ super( "Library Import" );
+ }
+
+ private String libraryName;
+ private VersionRange range = VersionRange.ANY_VERSION;
+
+
+ public String getLibraryName()
+ {
+ return libraryName;
+ }
+
+
+ public VersionRange getVersions()
+ {
+ return range;
+ }
+
+
+ public void setLibraryName( String name )
+ {
+ this.libraryName = name;
+ }
+
- public LibraryImport() {
- super("Library Import");
- }
-
- private String libraryName;
- private VersionRange range = VersionRange.ANY_VERSION;
-
- public String getLibraryName() {
- return libraryName;
- }
-
- public VersionRange getVersions() {
- return range;
- }
-
- public void setLibraryName(String name) {
- this.libraryName = name;
- }
-
- public void setVersions(VersionRange range) {
- this.range = range;
- }
+ public void setVersions( VersionRange range )
+ {
+ this.range = range;
+ }
}