aries-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jwr...@apache.org
Subject svn commit: r1158976 - in /aries/trunk/subsystem: subsystem-api/ subsystem-api/src/main/java/org/apache/aries/ subsystem-core/ subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/ subsystem-core/src/main/java/org/apache/aries/subsystem...
Date Thu, 18 Aug 2011 00:02:32 GMT
Author: jwross
Date: Thu Aug 18 00:02:31 2011
New Revision: 1158976

URL: http://svn.apache.org/viewvc?rev=1158976&view=rev
Log:
ARIES-730: Generation of the osgi.identity requirement must support version ranges.

Added:
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/Clause.java
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/GenericClause.java
    aries/trunk/subsystem/subsystem-itests/src/test/resources/META-INF/platform-equinox/definition-3.8.0-SNAPSHOT.xml
Removed:
    aries/trunk/subsystem/subsystem-api/src/main/java/org/apache/aries/
    aries/trunk/subsystem/subsystem-itests/src/test/resources/application1/tb1.jar
    aries/trunk/subsystem/subsystem-itests/src/test/resources/feature1/tb1.jar
    aries/trunk/subsystem/subsystem-itests/src/test/resources/feature2/tb2.jar
    aries/trunk/subsystem/subsystem-itests/src/test/resources/subsystem1/
Modified:
    aries/trunk/subsystem/subsystem-api/pom.xml
    aries/trunk/subsystem/subsystem-core/pom.xml
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/DeploymentManifest.java
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/Grammar.java
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/ProvisionResourceHeader.java
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/SubsystemContentHeader.java
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/TypeAttribute.java
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/VersionRangeAttribute.java
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/Activator.java
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/AriesSubsystem.java
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/OsgiIdentityRequirement.java
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/obr/SubsystemEnvironment.java
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/resource/BundleRuntimeResource.java
    aries/trunk/subsystem/subsystem-itests/pom.xml
    aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/FeatureTest.java
    aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/SubsystemTest.java
    aries/trunk/subsystem/subsystem-itests/src/test/java/org/ops4j/pax/runner/platform/equinox/internal/SsActivator.java
    aries/trunk/subsystem/subsystem-itests/src/test/resources/feature1/OSGI-INF/SUBSYSTEM.MF
    aries/trunk/subsystem/subsystem-itests/src/test/resources/ss-runner.properties

Modified: aries/trunk/subsystem/subsystem-api/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-api/pom.xml?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-api/pom.xml (original)
+++ aries/trunk/subsystem/subsystem-api/pom.xml Thu Aug 18 00:02:31 2011
@@ -21,7 +21,7 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.aries</groupId>
-        <artifactId>java5-parent</artifactId>
+        <artifactId>java6-parent</artifactId>
         <version>0.4</version>
         <relativePath />
     </parent>

Modified: aries/trunk/subsystem/subsystem-core/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/pom.xml?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/pom.xml (original)
+++ aries/trunk/subsystem/subsystem-core/pom.xml Thu Aug 18 00:02:31 2011
@@ -21,7 +21,7 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.aries</groupId>
-        <artifactId>java5-parent</artifactId>
+        <artifactId>java6-parent</artifactId>
         <version>0.4</version>
         <relativePath />
     </parent>

Added: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/Clause.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/Clause.java?rev=1158976&view=auto
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/Clause.java (added)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/Clause.java Thu Aug 18 00:02:31 2011
@@ -0,0 +1,32 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.subsystem.core.archive;
+
+import java.util.Collection;
+
+public interface Clause {
+	Attribute getAttribute(String name);
+	
+	Collection<Attribute> getAttributes();
+	
+	Directive getDirective(String name);
+	
+	Collection<Directive> getDirectives();
+	
+	Parameter getParameter(String name);
+	
+	Collection<Parameter> getParameters();
+	
+	String getPath();
+}

Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/DeploymentManifest.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/DeploymentManifest.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/DeploymentManifest.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/DeploymentManifest.java Thu Aug 18 00:02:31 2011
@@ -34,7 +34,7 @@ public class DeploymentManifest extends 
 		result.headers.put(ManifestVersionHeader.NAME, manifest.getManifestVersion());
 		Collection<Requirement> requirements = new ArrayList<Requirement>();
 		for (SubsystemContentHeader.Content content : manifest.getSubsystemContent().getContents()) {
-			Requirement requirement = OsgiIdentityRequirement.newInstance(content);
+			Requirement requirement = new OsgiIdentityRequirement(content.getName(), content.getVersionRange(), content.getType(), false);
 			requirements.add(requirement);
 		}
 		// TODO This does not validate that all content bundles were found.

Added: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/GenericClause.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/GenericClause.java?rev=1158976&view=auto
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/GenericClause.java (added)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/GenericClause.java Thu Aug 18 00:02:31 2011
@@ -0,0 +1,98 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.subsystem.core.archive;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class GenericClause implements Clause {
+	private static final String REGEX = '(' + Grammar.PATH + "(?:;" + Grammar.PATH + ")*)(?:;(" + Grammar.PARAMETER + "))*";
+	
+	private static final Pattern PATTERN = Pattern.compile(REGEX);
+	private static final Pattern PATTERN_PARAMETER = Pattern.compile(Grammar.PARAMETER);
+	
+	private final Map<String, Parameter> parameters = new HashMap<String, Parameter>();
+	private final String path;
+	
+	public GenericClause(String clause) {
+		Matcher matcher = PATTERN.matcher(clause);
+		if (!matcher.matches()) {
+			throw new IllegalArgumentException("Invalid clause: " + clause);
+		}
+		path = matcher.group(1);
+		matcher = PATTERN_PARAMETER.matcher(clause);
+		while(matcher.find()) {
+			String group = matcher.group();
+			if (group == null || group.length() == 0)
+				continue;
+			Parameter parameter = ParameterFactory.create(group);
+			parameters.put(parameter.getName(), parameter);
+		}
+	}
+	
+	public Attribute getAttribute(String name) {
+		Parameter result = parameters.get(name);
+		if (result instanceof Attribute) {
+			return (Attribute)result;
+		}
+		return null;
+	}
+	
+	public Collection<Attribute> getAttributes() {
+		ArrayList<Attribute> attributes = new ArrayList<Attribute>(parameters.size());
+		for (Parameter parameter : parameters.values()) {
+			if (parameter instanceof Attribute) {
+				attributes.add((Attribute)parameter);
+			}
+		}
+		attributes.trimToSize();
+		return attributes;
+	}
+	
+	public Directive getDirective(String name) {
+		Parameter result = parameters.get(name);
+		if (result instanceof Directive) {
+			return (Directive)result;
+		}
+		return null;
+	}
+	
+	public Collection<Directive> getDirectives() {
+		ArrayList<Directive> directives = new ArrayList<Directive>(parameters.size());
+		for (Parameter parameter : parameters.values()) {
+			if (parameter instanceof Directive) {
+				directives.add((Directive)parameter);
+			}
+		}
+		directives.trimToSize();
+		return directives;
+	}
+	
+	public Parameter getParameter(String name) {
+		return parameters.get(name);
+	}
+	
+	public Collection<Parameter> getParameters() {
+		return Collections.unmodifiableCollection(parameters.values());
+	}
+	
+	public String getPath() {
+		return path;
+	}
+}

Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/Grammar.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/Grammar.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/Grammar.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/Grammar.java Thu Aug 18 00:02:31 2011
@@ -60,26 +60,26 @@ public interface Grammar {
 //	digit ::= [0..9]
 //	alpha ::= [a..zA..Z]
 //	alphanum ::= alpha | digit
-//	extended ::= ( alphanum | ’_’ | ’-’ | ’.’ )+
-//	quoted-string ::= ’"’ ( ~["\#x0D#x0A#x00] | ’\"’|’\\’)* ’"’
+//	extended ::= ( alphanum | _ | - | . )+
+//	quoted-string ::= " ( ~["\#x0D#x0A#x00] | \"|\\)* "
 //	argument ::= extended | quoted-string
 //	parameter ::= directive | attribute
-//	directive ::= extended ’:=’ argument
-//	attribute ::= extended ’=’ argument
-//	path ::= path-unquoted | (’"’ path-unquoted ’"’)
+//	directive ::= extended := argument
+//	attribute ::= extended = argument
+//	path ::= path-unquoted | (" path-unquoted ")
 //	path-unquoted ::= path-sep | path-sep? path-element (path-sep path-element)*
 //	path-element ::= ~[/"\#x0D#x0A#x00]+
-//	path-sep ::= ’/’
-//	header ::= clause ( ’,’ clause ) *
-//	clause ::= path ( ’;’ path ) * ( ’;’ parameter ) *
+//	path-sep ::= /
+//	header ::= clause ( , clause ) *
+//	clause ::= path ( ; path ) * ( ; parameter ) *
 	
 	public static final String DIGIT = "[0-9]";
 	public static final String ALPHA = "[A-Za-z]";
 	public static final String ALPHANUM = DIGIT + '|' + ALPHA;
 	public static final String TOKEN = "(?:" + ALPHANUM + "|_|-)+";
 	public static final String EXTENDED = "(?:" + ALPHANUM + "|_|-|\\.)+";
-	public static final String QUOTED_STRING = "\"(?:[^\"\r\n\u0000]|\\\\\"|\\\\\\\\)*\"";
-	public static final String ARGUMENT = EXTENDED /*+ '|' + QUOTED_STRING*/;
+	public static final String QUOTED_STRING = "\"(?:[^\\\\\"\r\n\u0000]|\\\\\"|\\\\\\\\)*\"";
+	public static final String ARGUMENT = EXTENDED + '|' + QUOTED_STRING;
 	public static final String DIRECTIVE = EXTENDED + ":=(?:" + ARGUMENT + ')';
 	public static final String ATTRIBUTE = EXTENDED + "=(?:" + ARGUMENT + ')';
 	public static final String PARAMETER = "(?:" + DIRECTIVE + ")|(?:" + ATTRIBUTE + ')';
@@ -88,7 +88,7 @@ public interface Grammar {
 	public static final String PATH_SEP = "/";
 	public static final String PATH_UNQUOTED = PATH_SEP + '|' + PATH_SEP + '?' + PATH_ELEMENT + "(?:" + PATH_SEP + PATH_ELEMENT + ")*";
 	public static final String PATH_UNQUOTED_NT = PATH_SEP + '|' + PATH_SEP + '?' + PATH_ELEMENT_NT + "(?:" + PATH_SEP + PATH_ELEMENT_NT + ")*";
-	public static final String PATH = "(?:" + PATH_UNQUOTED_NT + ")|(?:\"" + PATH_UNQUOTED + "\")";
+	public static final String PATH = "(?:" + PATH_UNQUOTED_NT + ")|\"(?:" + PATH_UNQUOTED + ")\"";
 	public static final String CLAUSE = "(?:" + PATH + ")(?:;" + PATH + ")*(?:;(?:" + PARAMETER + "))*";
 	public static final String HEADERCHAR = ALPHANUM + "|_|-";
 	public static final String NAME = ALPHANUM + "(?:" + HEADERCHAR + ")*";

Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/ProvisionResourceHeader.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/ProvisionResourceHeader.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/ProvisionResourceHeader.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/ProvisionResourceHeader.java Thu Aug 18 00:02:31 2011
@@ -51,11 +51,13 @@ public class ProvisionResourceHeader ext
 	
 	public static ProvisionResourceHeader newInstance(Collection<Resource> resources) {
 		StringBuilder builder = new StringBuilder();
-		appendResource(resources.iterator().next(), builder);
 		for (Resource resource : resources) {
-			builder.append(',');
 			appendResource(resource, builder);
+			builder.append(',');
 		}
+		// Remove the trailing comma.
+		// TODO Intentionally letting the exception propagate since there must be at least one resource.
+		builder.deleteCharAt(builder.length() - 1);
 		return new ProvisionResourceHeader(builder.toString());
 	}
 	

Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/SubsystemContentHeader.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/SubsystemContentHeader.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/SubsystemContentHeader.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/SubsystemContentHeader.java Thu Aug 18 00:02:31 2011
@@ -19,19 +19,20 @@ import java.util.Collections;
 
 import org.osgi.framework.Constants;
 import org.osgi.framework.Version;
+import org.osgi.framework.VersionRange;
 
 public class SubsystemContentHeader extends AbstractHeader {
 	public static class Content {
 		private final boolean mandatory;
 		private final String name;
 		private final String type;
-		private final Version version;
+		private final VersionRange versionRange;
 		
-		public Content(boolean mandatory, String name, String type, Version version) {
+		public Content(boolean mandatory, String name, String type, VersionRange versionRange) {
 			this.mandatory = mandatory;
 			this.name = name;
 			this.type = type;
-			this.version = version;
+			this.versionRange = versionRange;
 		}
 		
 		public String getName() {
@@ -42,8 +43,8 @@ public class SubsystemContentHeader exte
 			return type;
 		}
 		
-		public Version getVersion() {
-			return version;
+		public VersionRange getVersionRange() {
+			return versionRange;
 		}
 		
 		public boolean isMandatory() {
@@ -55,7 +56,7 @@ public class SubsystemContentHeader exte
 				.append(';')
 				.append(VersionAttribute.NAME)
 				.append('=')
-				.append(getVersion())
+				.append(getVersionRange())
 				.append(';')
 				.append(TypeAttribute.NAME)
 				.append("=")
@@ -87,11 +88,12 @@ public class SubsystemContentHeader exte
 			Attribute attribute = clause.getAttribute(TypeAttribute.NAME);
 			if (attribute != null)
 				type = ((TypeAttribute)attribute).getType();
-			Version version = Version.emptyVersion;
+			VersionRange versionRange = new VersionRange(Version.emptyVersion.toString());
 			attribute = clause.getAttribute(Constants.VERSION_ATTRIBUTE);
-			if (attribute != null)
-				version = ((VersionAttribute)attribute).getVersion();
-			contents.add(new Content(mandatory, name, type, version));
+			if (attribute != null) {
+				versionRange = new VersionRange(attribute.getValue());
+			}
+			contents.add(new Content(mandatory, name, type, versionRange));
 		}
 	}
 

Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/TypeAttribute.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/TypeAttribute.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/TypeAttribute.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/TypeAttribute.java Thu Aug 18 00:02:31 2011
@@ -20,6 +20,12 @@ public class TypeAttribute extends Abstr
 	// TODO Add to constants.
 	public static final String NAME = "type";
 	
+	public static TypeAttribute newInstance(String value) {
+		if (value == null || value.length() == 0)
+			return DEFAULT;
+		return new TypeAttribute(value);
+	}
+	
 	public TypeAttribute() {
 		this(DEFAULT_VALUE);
 	}

Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/VersionRangeAttribute.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/VersionRangeAttribute.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/VersionRangeAttribute.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/VersionRangeAttribute.java Thu Aug 18 00:02:31 2011
@@ -13,115 +13,28 @@
  */
 package org.apache.aries.subsystem.core.archive;
 
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 import org.osgi.framework.Constants;
 import org.osgi.framework.Version;
+import org.osgi.framework.VersionRange;
 
 public class VersionRangeAttribute extends AbstractAttribute {
-	public static class RangedVersion extends Version {
-		private final boolean inclusive;
-		
-		public RangedVersion() {
-			super(Version.emptyVersion.toString());
-			inclusive = true;
-		}
-		
-		public RangedVersion(String value) {
-			this(value, true);
-		}
-		
-		public RangedVersion(String value, boolean inclusive) {
-			super(value);
-			this.inclusive = inclusive;
-		}
-		
-		public boolean isExclusive() {
-			return !inclusive;
-		}
-		
-		public boolean isInclusive() {
-			return inclusive;
-		}
-	}
-	
-	public static class Range {
-		private static final String INTERVAL = "([\\[\\(])(" + Grammar.FLOOR + "),(" + Grammar.CEILING + ")([\\[\\)])";
-		private static final String REGEX = INTERVAL + "|(" + Grammar.ATLEAST + ')';
-		private static final Pattern PATTERN = Pattern.compile(REGEX);
-		
-		private final RangedVersion ceiling;
-		private final RangedVersion floor;
-		
-		public Range() {
-			ceiling = null;
-			floor = new RangedVersion();
-		}
-		
-		public Range(String value) {
-			Matcher matcher = PATTERN.matcher(value);
-			if (!matcher.matches()) {
-				throw new IllegalArgumentException("Invalid " + Constants.VERSION_ATTRIBUTE + " attribute value: " + value);
-			}
-			String floorSymbol = matcher.group(1);
-			String floorStr = matcher.group(2);
-			String ceilingStr = matcher.group(3);
-			String ceilingSymbol = matcher.group(4);
-			String atLeastStr = matcher.group(5);
-			if (atLeastStr != null) {
-				floor = new RangedVersion(atLeastStr);
-				ceiling = null;
-			}
-			else {
-				floor = new RangedVersion(floorStr, floorSymbol.equals("("));
-				if (ceilingStr != null) {
-					ceiling = new RangedVersion(ceilingStr, ceilingSymbol.equals("("));
-				}
-				else {
-					ceiling = null;
-				}
-			}
-		}
-		
-		public RangedVersion getCeiling() {
-			return ceiling;
-		}
-		
-		public RangedVersion getFloor() {
-			return floor;
-		}
-	}
-	
-	private static final String REGEX = '(' + Grammar.INTERVAL + ")|(" + Grammar.ATLEAST + ')';
-	private static final Pattern PATTERN = Pattern.compile(REGEX);
-	
-	private final Range range;
+	private final VersionRange range;
 	
 	public VersionRangeAttribute() {
 		super(Constants.VERSION_ATTRIBUTE, Version.emptyVersion.toString());
-		range = new Range();
+		range = new VersionRange(getValue());
 	}
 			
 	public VersionRangeAttribute(String value) {
 		super(Constants.VERSION_ATTRIBUTE, value);
-		Matcher matcher = PATTERN.matcher(value);
-		if (!matcher.matches()) {
-			throw new IllegalArgumentException("Invalid " + Constants.VERSION_ATTRIBUTE + " attribute value: " + value);
-		}
-		range = new Range(matcher.group(1));
+		range = new VersionRange(getValue());
 	}
 	
 	public StringBuilder appendToFilter(StringBuilder builder) {
-		Range range = getRange();
-		builder.append(getName()).append(">=").append(range.getFloor());
-		if (range.getCeiling() != null) {
-			builder.append(")(!(").append(getName()).append(">=").append(range.getCeiling()).append(')');
-		}
-		return builder;
+		return builder.append(range.toFilterString(Constants.VERSION_ATTRIBUTE));
 	}
 
-	public Range getRange() {
+	public VersionRange getVersionRange() {
 		return range;
 	}
 }

Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/Activator.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/Activator.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/Activator.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/Activator.java Thu Aug 18 00:02:31 2011
@@ -150,13 +150,13 @@ public class Activator implements Bundle
 		        	for (org.apache.felix.bundlerepository.Resource resource : resolver.getRequiredResources()) {
 		        		Resource r = new FelixResourceAdapter(resource);
 		        		// Make the environment aware of the resource and its URL.
-		        		environment.findProviders(new OsgiIdentityRequirement(r, resource.getSymbolicName(), resource.getVersion()));
+		        		environment.findProviders(new OsgiIdentityRequirement(r, true));
 		            	resources.add(r);
 		        	}
 		        	for (org.apache.felix.bundlerepository.Resource resource : resolver.getOptionalResources()) {
 		        		Resource r = new FelixResourceAdapter(resource);
 		        		// Make the environment aware of the resource and its URL.
-		        		environment.findProviders(new OsgiIdentityRequirement(r, resource.getSymbolicName(), resource.getVersion()));
+		        		environment.findProviders(new OsgiIdentityRequirement(r, true));
 		            	resources.add(r);
 		        	}
 		        }

Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/AriesSubsystem.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/AriesSubsystem.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/AriesSubsystem.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/AriesSubsystem.java Thu Aug 18 00:02:31 2011
@@ -171,6 +171,10 @@ public class AriesSubsystem implements S
 		
 	}
 	
+	public void addConstituent(Resource resource) {
+		constituents.add(resource);
+	}
+	
 	@Override
 	public void cancel() throws SubsystemException {
 		// TODO Auto-generated method stub
@@ -317,6 +321,13 @@ public class AriesSubsystem implements S
 		return "osgi.feature".equals(archive.getSubsystemManifest().getSubsystemType().getValue());
 	}
 	
+	public boolean isTransitive(Resource resource) {
+		SubsystemEnvironment environment = getEnvironment();
+		if (environment == null)
+			return true;
+		return !environment.isContentResource(resource);
+	}
+	
 	/* INSTALLING	Wait, Start
 	 * INSTALLED	-
 	 * RESOLVING	Wait, Start
@@ -450,10 +461,6 @@ public class AriesSubsystem implements S
 		}
 	}
 	
-	protected void addConstituent(Resource resource) {
-		constituents.add(resource);
-	}
-	
 	protected boolean contains(Resource resource) {
 		return constituents.contains(resource);
 	}
@@ -534,6 +541,8 @@ public class AriesSubsystem implements S
 	}
 	
 	private Region createRegion() throws BundleException {
+		if (isRoot())
+			return Activator.getRegionDigraph().getRegion(0);
 		return Activator.getRegionDigraph().createRegion(getSymbolicName() + ';' + getVersion());
 	}
 	
@@ -541,40 +550,40 @@ public class AriesSubsystem implements S
 //		String content = ResourceHelper.getContentAttribute(resource);
 //		String location = getSubsystemId() + '@' + getSymbolicName() + '@' + content;
 		try {
-			final RuntimeResource runtimeResource;
+//			final RuntimeResource runtimeResource;
 //			final Bundle bundle;
-			if (transitive) {
+//			if (transitive) {
 				// Transitive dependencies should be provisioned into the highest possible level.
 				// Transitive dependencies do not become a constituent.
 				// TODO Assumes root is always the appropriate level.
-				AriesSubsystem subsystem = this;
-				while (subsystem.parent != null)
-					subsystem = subsystem.parent;
-				runtimeResource = new RuntimeResourceFactoryImpl().create(resource, null, subsystem);
+//				AriesSubsystem subsystem = this;
+//				while (subsystem.parent != null)
+//					subsystem = subsystem.parent;
+				RuntimeResource runtimeResource = new RuntimeResourceFactoryImpl().create(resource, null, this);
 				runtimeResource.install(coordination);
-				subsystem.constituents.add(runtimeResource);
+//				subsystem.constituents.add(runtimeResource);
 //				bundle = subsystem.region.installBundle(location, new URL(content).openStream());
-			}
-			else if (region == null) {
+//			}
+//			else if (region == null) {
 				// Feature resources should be provisioned into the parent, unless the parent is also a feature.
 				// TODO Assumes parent is always highest possible level.
 //				AriesSubsystem subsystem = this.parent;
 //				while (subsystem.region == null)
 //					subsystem = subsystem.parent;
-				runtimeResource = new RuntimeResourceFactoryImpl().create(resource, null, this);
-				runtimeResource.install(coordination);
+//				runtimeResource = new RuntimeResourceFactoryImpl().create(resource, null, this);
+//				runtimeResource.install(coordination);
 //				bundle = subsystem.region.installBundle(location, new URL(content).openStream());
 				// Features retain their constituents.
-				constituents.add(runtimeResource);
-			}
-			else {
+//				constituents.add(runtimeResource);
+//			}
+//			else {
 				// Constituent (non-transitive) resources must be provisioned into the owning subsystem, except for features.
 				// We know this isn't a feature because the region was not null.
-				runtimeResource = new RuntimeResourceFactoryImpl().create(resource, null, this);
-				runtimeResource.install(coordination);
+//				runtimeResource = new RuntimeResourceFactoryImpl().create(resource, null, this);
+//				runtimeResource.install(coordination);
 //				bundle = region.installBundle(location, new URL(content).openStream());
-				constituents.add(runtimeResource);
-			}
+//				constituents.add(runtimeResource);
+//			}
 //			coordination.addParticipant(new Participant() {
 //				public void ended(Coordination coordination) throws Exception {
 //					// noop
@@ -610,7 +619,7 @@ public class AriesSubsystem implements S
 		DeployedContentHeader contentHeader = manifest.getDeployedContent();
 		for (DeployedContent content : contentHeader.getDeployedContents()) {
 			Collection<Capability> capabilities = environment.findProviders(
-					new OsgiIdentityRequirement(null, content.getName(), content.getDeployedVersion(), content.getNamespace()));
+					new OsgiIdentityRequirement(content.getName(), content.getDeployedVersion(), content.getNamespace(), false));
 			if (capabilities.isEmpty())
 				throw new SubsystemException("Subsystem content resource does not exist: " + content.getName() + ";version=" + content.getDeployedVersion());
 			Resource resource = capabilities.iterator().next().getResource();
@@ -626,7 +635,7 @@ public class AriesSubsystem implements S
 		if (resourceHeader != null) {
 			for (ProvisionedResource content : resourceHeader.getProvisionedResources()) {
 				Collection<Capability> capabilities = environment.findProviders(
-						new OsgiIdentityRequirement(null, content.getName(), content.getDeployedVersion(), content.getNamespace()));
+						new OsgiIdentityRequirement(content.getName(), content.getDeployedVersion(), content.getNamespace(), true));
 				if (capabilities.isEmpty())
 					throw new SubsystemException("Subsystem content resource does not exist: " + content.getName() + ";version=" + content.getDeployedVersion());
 				Resource resource = capabilities.iterator().next().getResource();
@@ -683,11 +692,17 @@ public class AriesSubsystem implements S
 			return;
 		}
 		if (isApplication()) {
+			// TODO Implement import isolation policy for applications.
+			// Applications have an implicit import policy equating to "import everything that I require", which is not the same as features.
+			// This must be computed from the application requirements and will be done using the Wires returned by the Resolver, when one is available.
 			region.connectRegion(
 					parent.getRegion(), 
 					region.getRegionDigraph().createRegionFilterBuilder().allowAll(RegionFilter.VISIBLE_ALL_NAMESPACE).build());
 		}
-		// TODO Implement import isolation policy for composites.
+		else if (isComposite()) {
+			// TODO Implement import isolation policy for composites.
+			// Composites specify an explicit import policy in their subsystem and deployment manifests.
+		}
 	}
 	
 //	private void start(Resource resource, Coordination coordination) throws BundleException {

Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/OsgiIdentityRequirement.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/OsgiIdentityRequirement.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/OsgiIdentityRequirement.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/OsgiIdentityRequirement.java Thu Aug 18 00:02:31 2011
@@ -17,12 +17,12 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.aries.subsystem.core.archive.SubsystemContentHeader;
 import org.osgi.framework.Constants;
 import org.osgi.framework.Filter;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.Version;
+import org.osgi.framework.VersionRange;
 import org.osgi.framework.wiring.Capability;
 import org.osgi.framework.wiring.Requirement;
 import org.osgi.framework.wiring.Resource;
@@ -30,60 +30,107 @@ import org.osgi.framework.wiring.Resourc
 import org.osgi.service.subsystem.SubsystemException;
 
 public class OsgiIdentityRequirement implements Requirement {
-	public static OsgiIdentityRequirement newInstance(SubsystemContentHeader.Content content) {
-		return new OsgiIdentityRequirement(null, content.getName(), content.getVersion(), content.getType());
+	private static Filter createFilter(String symbolicName, Version version, String type) {
+		return createFilter(
+				symbolicName,
+				new StringBuilder()
+					.append('(')
+					.append(ResourceConstants.IDENTITY_VERSION_ATTRIBUTE)
+					.append('=')
+					.append(version)
+					.append(')')
+					.toString(),
+				type);
 	}
 	
-	private final Map<String, String> directives = new HashMap<String, String>();
-	private final Filter filter;
-	private final Resource resource;
+	private static Filter createFilter(String symbolicName, VersionRange versionRange, String type) {
+		return createFilter(
+				symbolicName,
+				versionRange.toFilterString(ResourceConstants.IDENTITY_VERSION_ATTRIBUTE),
+				type);
+	}
 	
-	public OsgiIdentityRequirement(Resource resource, String symbolicName, Version version) {
-		this(resource, symbolicName, version, ResourceConstants.IDENTITY_TYPE_BUNDLE);
+	private static Filter createFilter(Resource resource) {
+		Map<String, Object> attributes = resource.getCapabilities(ResourceConstants.IDENTITY_NAMESPACE).get(0).getAttributes();
+		String symbolicName = String.valueOf(attributes.get(ResourceConstants.IDENTITY_NAMESPACE));
+		Version version = Version.parseVersion(String.valueOf(attributes.get(ResourceConstants.IDENTITY_VERSION_ATTRIBUTE)));
+		String type = String.valueOf(attributes.get(ResourceConstants.IDENTITY_TYPE_ATTRIBUTE));
+		return createFilter(symbolicName, version, type);
 	}
 	
-	public OsgiIdentityRequirement(Resource resource, String symbolicName, Version version, String type) {
-		this.resource = resource;
-		StringBuilder builder = new StringBuilder("(&(")
+	private static Filter createFilter(String symbolicName, String versionFilter, String type) {
+		try {
+			return FrameworkUtil.createFilter(createFilterString(symbolicName, versionFilter, type));
+		}
+		catch (InvalidSyntaxException e) {
+			throw new SubsystemException(e);
+		}
+	}
+	
+	private static String createFilterString(String symbolicName, String versionFilter, String type) {
+		return new StringBuilder("(&(")
 			.append(ResourceConstants.IDENTITY_NAMESPACE)
 			.append('=')
 			.append(symbolicName)
-			.append(")(")
-			.append(ResourceConstants.IDENTITY_VERSION_ATTRIBUTE)
-			.append('=')
-			// TODO This does not take into account version ranges.
-			.append(version)
-			.append(")(")
+			.append(')')
+			.append(versionFilter)
+			.append('(')
 			.append(ResourceConstants.IDENTITY_TYPE_ATTRIBUTE)
 			.append('=')
 			.append(type)
-			.append("))");
-		try {
-			filter = FrameworkUtil.createFilter(builder.toString());
-		}
-		catch (InvalidSyntaxException e) {
-			throw new SubsystemException(e);
-		}
+			.append("))").toString();
+	}
+	
+	private final Map<String, String> directives = new HashMap<String, String>();
+	private final Filter filter;
+	private final Resource resource;
+	private final boolean transitive;
+	
+	public OsgiIdentityRequirement(String symbolicName, VersionRange versionRange, String type, boolean transitive) {
+		this(createFilter(symbolicName, versionRange, type), null, transitive);
+	}
+	
+	public OsgiIdentityRequirement(String symbolicName, Version version, String type, boolean transitive) {
+		this(createFilter(symbolicName, version, type), null, transitive);
+	}
+	
+	public OsgiIdentityRequirement(Resource resource, boolean transitive) {
+		this(createFilter(resource), resource, transitive);
+	}
+	
+	private OsgiIdentityRequirement(Filter filter, Resource resource, boolean transitive) {
+		this.filter = filter;
+		this.resource = resource;
+		this.transitive = transitive;
 		directives.put(ResourceConstants.IDENTITY_SINGLETON_DIRECTIVE, Boolean.FALSE.toString());
 		directives.put(Constants.EFFECTIVE_DIRECTIVE, Constants.EFFECTIVE_RESOLVE);
 	}
 
+	@Override
 	public Map<String, Object> getAttributes() {
 		return Collections.emptyMap();
 	}
 
+	@Override
 	public Map<String, String> getDirectives() {
 		return Collections.unmodifiableMap(directives);
 	}
 
+	@Override
 	public String getNamespace() {
 		return ResourceConstants.IDENTITY_NAMESPACE;
 	}
 
+	@Override
 	public Resource getResource() {
 		return resource;
 	}
+	
+	public boolean isTransitiveDependency() {
+		return transitive;
+	}
 
+	@Override
 	public boolean matches(Capability capability) {
 		if (capability == null) return false;
 		if (!capability.getNamespace().equals(getNamespace())) return false;
@@ -91,5 +138,4 @@ public class OsgiIdentityRequirement imp
 		// TODO Check directives.
 		return true;
 	}
-
 }

Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/obr/SubsystemEnvironment.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/obr/SubsystemEnvironment.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/obr/SubsystemEnvironment.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/obr/SubsystemEnvironment.java Thu Aug 18 00:02:31 2011
@@ -111,7 +111,7 @@ public class SubsystemEnvironment implem
 	
 	private void findContentProviders(Collection<Capability> capabilities, OsgiIdentityRequirement requirement) {
 		findArchiveProviders(capabilities, requirement);
-		findRepositoryServiceProviders(capabilities, requirement, true);
+		findRepositoryServiceProviders(capabilities, requirement, !requirement.isTransitiveDependency());
 	}
 	
 	private void findFeatureContentProviders(Collection<Capability> capabilities, OsgiIdentityRequirement requirement) {
@@ -149,7 +149,6 @@ public class SubsystemEnvironment implem
 				if (content)
 					resources.add(capability.getResource());
 			}
-			capabilities.addAll(repository.findProviders(requirement));
 		}
 	}
 	

Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/resource/BundleRuntimeResource.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/resource/BundleRuntimeResource.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/resource/BundleRuntimeResource.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/resource/BundleRuntimeResource.java Thu Aug 18 00:02:31 2011
@@ -36,12 +36,27 @@ public class BundleRuntimeResource exten
 
 	@Override
 	protected void doInstall(Coordination coordination) throws BundleException, IOException {
-		URL content = subsystem.getEnvironment().getContent(resource);
 		AriesSubsystem subsystem = this.subsystem;
-		if (subsystem.isFeature()) {
+		URL content = subsystem.getEnvironment().getContent(resource);
+		if (subsystem.isTransitive(resource)) {
+			// Transitive dependencies should be provisioned into the highest possible level.
+			// Transitive dependencies become constituents of the susbsytem into which they were provisioned.
+			// TODO Assumes root is always the appropriate level.
+			while (subsystem.getParent() != null)
+				subsystem = subsystem.getParent();
+			subsystem.addConstituent(this);
+		}
+		else if (subsystem.isFeature()) {
 			// Feature resources should be provisioned into the first parent that's not a feature.
+			// Feature resources become constituents of the feature.
 			while (subsystem.getRegion() == null)
 				subsystem = subsystem.getParent();
+			this.subsystem.addConstituent(this);
+		}
+		else {
+			// Application and composite resources are provisioned into the application or composite;
+			// Application and composite resources become constituents of the application or composite.
+			subsystem.addConstituent(this);
 		}
 		String location = subsystem.getSubsystemId() + '@' + subsystem.getSymbolicName() + '@' + content;
 		bundle = subsystem.getRegion().installBundle(location, content.openStream());
@@ -53,6 +68,7 @@ public class BundleRuntimeResource exten
 			}
 
 			public void failed(Coordination coordination) throws Exception {
+				// TODO Remove the constituent?
 				bundle.uninstall();
 			}
 		});

Modified: aries/trunk/subsystem/subsystem-itests/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/pom.xml?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/pom.xml (original)
+++ aries/trunk/subsystem/subsystem-itests/pom.xml Thu Aug 18 00:02:31 2011
@@ -13,7 +13,7 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.aries</groupId>
-        <artifactId>java5-parent</artifactId>
+        <artifactId>java6-parent</artifactId>
         <version>0.4</version>
         <relativePath />
     </parent>

Modified: aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/FeatureTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/FeatureTest.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/FeatureTest.java (original)
+++ aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/FeatureTest.java Thu Aug 18 00:02:31 2011
@@ -74,7 +74,7 @@ public class FeatureTest extends Subsyst
 		try {
 			assertSymbolicName("org.apache.aries.subsystem.feature1", subsystem);
 			assertVersion("1.0.0", subsystem);
-			assertConstituents(2, subsystem);
+			assertConstituents(3, subsystem);
 			// TODO Test internal events for installation.
 			startSubsystem(subsystem);
 			// TODO Test internal events for starting.

Modified: aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/SubsystemTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/SubsystemTest.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/SubsystemTest.java (original)
+++ aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/SubsystemTest.java Thu Aug 18 00:02:31 2011
@@ -101,7 +101,7 @@ public abstract class SubsystemTest exte
 				mavenBundle("org.apache.aries.subsystem", "org.apache.aries.subsystem.executor"),
 //				org.ops4j.pax.exam.container.def.PaxRunnerOptions.vmOption("-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"),
 				PaxRunnerOptions.rawPaxRunnerOption("config", "classpath:ss-runner.properties"),
-				equinox().version("3.8.0.v20110621"));
+				equinox().version("3.8.0-SNAPSHOT"));
 		options = updateOptions(options);
 		return options;
 	}

Modified: aries/trunk/subsystem/subsystem-itests/src/test/java/org/ops4j/pax/runner/platform/equinox/internal/SsActivator.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/ops4j/pax/runner/platform/equinox/internal/SsActivator.java?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/java/org/ops4j/pax/runner/platform/equinox/internal/SsActivator.java (original)
+++ aries/trunk/subsystem/subsystem-itests/src/test/java/org/ops4j/pax/runner/platform/equinox/internal/SsActivator.java Thu Aug 18 00:02:31 2011
@@ -27,6 +27,7 @@ public class SsActivator extends Abstrac
             new EquinoxPlatformBuilder( bundleContext, "3.7.0.V20110110" ),
             new EquinoxPlatformBuilder( bundleContext, "3.7.0.V20110221" ),
             new EquinoxPlatformBuilder( bundleContext, "3.8.0.V20110621" ),
+            new EquinoxPlatformBuilder( bundleContext, "3.8.0-SNAPSHOT" ),
             new EquinoxPlatformBuilderSnapshot( bundleContext )
         };
     }

Added: aries/trunk/subsystem/subsystem-itests/src/test/resources/META-INF/platform-equinox/definition-3.8.0-SNAPSHOT.xml
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/resources/META-INF/platform-equinox/definition-3.8.0-SNAPSHOT.xml?rev=1158976&view=auto
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/resources/META-INF/platform-equinox/definition-3.8.0-SNAPSHOT.xml (added)
+++ aries/trunk/subsystem/subsystem-itests/src/test/resources/META-INF/platform-equinox/definition-3.8.0-SNAPSHOT.xml Thu Aug 18 00:02:31 2011
@@ -0,0 +1,8 @@
+<platform>
+
+  <name>Equinox 3.8.0</name>
+  <system>mvn:org.eclipse/osgi/3.8.0-SNAPSHOT</system>
+
+  <profile name="minimal" default="true"/>
+
+</platform>

Modified: aries/trunk/subsystem/subsystem-itests/src/test/resources/feature1/OSGI-INF/SUBSYSTEM.MF
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/resources/feature1/OSGI-INF/SUBSYSTEM.MF?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/resources/feature1/OSGI-INF/SUBSYSTEM.MF (original)
+++ aries/trunk/subsystem/subsystem-itests/src/test/resources/feature1/OSGI-INF/SUBSYSTEM.MF Thu Aug 18 00:02:31 2011
@@ -4,5 +4,5 @@ Subsystem-SymbolicName: org.apache.aries
 Subsystem-Version: 1.0.0
 Subsystem-Name: %feature1.name
 Subsystem-Description: %feature1.description
-Subsystem-Content: org.apache.aries.subsystem.itests.tb1;version=1.0.0,derby;version=10.5.3000000.802917
+Subsystem-Content: org.apache.aries.subsystem.itests.tb1,derby;version=10.5.0,org.apache.felix.fileinstall;version="[2.0,3.0)"
 Subsystem-Type: osgi.feature

Modified: aries/trunk/subsystem/subsystem-itests/src/test/resources/ss-runner.properties
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/resources/ss-runner.properties?rev=1158976&r1=1158975&r2=1158976&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/resources/ss-runner.properties (original)
+++ aries/trunk/subsystem/subsystem-itests/src/test/resources/ss-runner.properties Thu Aug 18 00:02:31 2011
@@ -66,6 +66,7 @@ platform.equinox.SNAPSHOT=org.ops4j.pax.
 platform.equinox.3.7.0.V20110110=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
 platform.equinox.3.7.0.V20110221=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
 platform.equinox.3.8.0.V20110621=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
+platform.equinox.3.8.0-SNAPSHOT=org.ops4j.pax.runner.platform.equinox.internal.SsActivator
 # Felix
 platform.felix.1.0.0=org.ops4j.pax.runner.platform.felix.internal.Activator
 platform.felix.1.0.1=org.ops4j.pax.runner.platform.felix.internal.Activator



Mime
View raw message