Author: jwross
Date: Mon Aug  6 19:50:37 2012
New Revision: 1369953

URL: http://svn.apache.org/viewvc?rev=1369953&view=rev
Log:
ARIES-901: All packages in the same path will now be associated with the 
specified version attribute or 0.0 if none.

Added:
    
aries/trunk/subsystem/subsystem-core/src/test/java/org/apache/aries/subsystem/core/archive/
    
aries/trunk/subsystem/subsystem-core/src/test/java/org/apache/aries/subsystem/core/archive/ImportPackageHeaderTest.java
Removed:
    
aries/trunk/subsystem/subsystem-core/src/test/java/org/apache/aries/subsystem/core/Temp.java
Modified:
    
aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/ImportPackageHeader.java
    
aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/SubsystemResource.java

Modified: 
aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/ImportPackageHeader.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/ImportPackageHeader.java?rev=1369953&r1=1369952&r2=1369953&view=diff
==============================================================================
--- 
aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/ImportPackageHeader.java
 (original)
+++ 
aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/archive/ImportPackageHeader.java
 Mon Aug  6 19:50:37 2012
@@ -178,14 +178,10 @@ public class ImportPackageHeader impleme
        public static final String RESOLUTION_MANDATORY = 
PackageNamespace.RESOLUTION_MANDATORY;
        public static final String RESOLUTION_OPTIONAL = 
PackageNamespace.RESOLUTION_OPTIONAL;
        
-       private static final String REGEX = Grammar.IMPORT + "(?=,|\\z)";
-       private static final Pattern PATTERN = Pattern.compile(REGEX);
-       
        private static Collection<Clause> processHeader(String header) {
-               Matcher matcher = PATTERN.matcher(header);
                Set<Clause> clauses = new HashSet<Clause>();
-               while (matcher.find())
-                       clauses.add(new Clause(matcher.group()));
+               for (String clause : new ClauseTokenizer(header).getClauses())
+                       clauses.add(new Clause(clause));
                return clauses;
        }
        

Modified: 
aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/SubsystemResource.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/SubsystemResource.java?rev=1369953&r1=1369952&r2=1369953&view=diff
==============================================================================
--- 
aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/SubsystemResource.java
 (original)
+++ 
aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/SubsystemResource.java
 Mon Aug  6 19:50:37 2012
@@ -257,6 +257,7 @@ public class SubsystemResource implement
        }
        
        private boolean addDependenciesFromContentRepository(Requirement 
requirement, List<Capability> capabilities) throws BundleException, 
IOException, InvalidSyntaxException, URISyntaxException {
+               // TODO Why create this with each method call? What not cache 
it as an instance variable?
                Repository repository = new 
ContentRepository(installableContent, sharedContent);
                return addDependencies(repository, requirement, capabilities);
        }

Added: 
aries/trunk/subsystem/subsystem-core/src/test/java/org/apache/aries/subsystem/core/archive/ImportPackageHeaderTest.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/test/java/org/apache/aries/subsystem/core/archive/ImportPackageHeaderTest.java?rev=1369953&view=auto
==============================================================================
--- 
aries/trunk/subsystem/subsystem-core/src/test/java/org/apache/aries/subsystem/core/archive/ImportPackageHeaderTest.java
 (added)
+++ 
aries/trunk/subsystem/subsystem-core/src/test/java/org/apache/aries/subsystem/core/archive/ImportPackageHeaderTest.java
 Mon Aug  6 19:50:37 2012
@@ -0,0 +1,48 @@
+package org.apache.aries.subsystem.core.archive;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import org.junit.Test;
+import org.osgi.framework.VersionRange;
+
+public class ImportPackageHeaderTest {
+       @Test
+       public void testVersionAttributeWithMultiplePackages() {
+               String headerStr = "org.foo;org.bar;org.foo.bar;version=1.3";
+               ImportPackageHeader header = new ImportPackageHeader(headerStr);
+               assertClauses(header, 1);
+               assertVersionAttribute(header, "org.foo;org.bar;org.foo.bar", 
"1.3");
+       }
+       
+       @Test
+       public void testVersionAttributeWithoutMultiplePackages() {
+               String headerStr = "org.foo,org.bar,org.foo.bar;version=1.3";
+               ImportPackageHeader header = new ImportPackageHeader(headerStr);
+               assertClauses(header, 3);
+               assertVersionAttribute(header, "org.foo", "0");
+               assertVersionAttribute(header, "org.bar", "0.0");
+               assertVersionAttribute(header, "org.foo.bar", "1.3");
+       }
+       
+       private void assertClauses(ImportPackageHeader header, int 
expectedClauses) {
+               assertEquals("Wrong number of clauses", expectedClauses, 
header.getClauses().size());
+       }
+       
+       private void assertVersionAttribute(ImportPackageHeader header, String 
path, String expectedVersion) {
+               for (ImportPackageHeader.Clause clause : header.getClauses())
+                       if (path.equals(clause.getPath())) {
+                               assertVersionAttribute(clause, expectedVersion);
+                               return;
+                       }
+               fail("Path not found: " + path);
+       }
+       
+       private void assertVersionAttribute(ImportPackageHeader.Clause clause, 
String expectedVersion) {
+               assertVersionAttribute(clause, new 
VersionRange(expectedVersion));
+       }
+       
+       private void assertVersionAttribute(ImportPackageHeader.Clause clause, 
VersionRange expectedVersion) {
+               assertEquals("Wrong version attribute", expectedVersion, 
clause.getVersionRangeAttribute().getVersionRange());
+       }
+}


Reply via email to