You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by jw...@apache.org on 2012/10/24 02:36:08 UTC
svn commit: r1401521 - in /aries/trunk/subsystem:
subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/
subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/
subsystem-itests/src/test/resources/compositeDir/ subsystem-itest...
Author: jwross
Date: Wed Oct 24 00:36:07 2012
New Revision: 1401521
URL: http://svn.apache.org/viewvc?rev=1401521&view=rev
Log:
ARIES-942: Support for installing subsystems as nested directories.
Added:
aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/
aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/OSGI-INF/
aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/OSGI-INF/SUBSYSTEM.MF
aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/
aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/OSGI-INF/
aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/OSGI-INF/SUBSYSTEM.MF
aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/featureDir/
aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/featureDir/OSGI-INF/
aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/featureDir/OSGI-INF/SUBSYSTEM.MF
Modified:
aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/RawSubsystemResource.java
aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/InstallTest.java
Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/RawSubsystemResource.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/RawSubsystemResource.java?rev=1401521&r1=1401520&r2=1401521&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/RawSubsystemResource.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/RawSubsystemResource.java Wed Oct 24 00:36:07 2012
@@ -56,7 +56,7 @@ import org.osgi.service.subsystem.Subsys
import org.osgi.service.subsystem.SubsystemConstants;
public class RawSubsystemResource implements Resource {
- private static final Pattern PATTERN = Pattern.compile("([^@]+)(?:@(.+))?.esa");
+ private static final Pattern PATTERN = Pattern.compile("([^@/\\\\]+)(?:@(.+))?.esa");
private static SubsystemManifest computeExistingSubsystemManifest(IDirectory directory) throws IOException {
Manifest manifest = ManifestProcessor.obtainManifestFromAppDir(directory, "OSGI-INF/SUBSYSTEM.MF");
@@ -101,24 +101,25 @@ public class RawSubsystemResource implem
private final SubsystemManifest subsystemManifest;
public RawSubsystemResource(String location, InputStream content) throws URISyntaxException, IOException, ResolutionException, ModellerException {
+ this(location, content == null ? null : FileSystem.getFSRoot(content));
+ }
+
+ public RawSubsystemResource(String location, IDirectory content) throws URISyntaxException, IOException, ResolutionException, ModellerException {
this.location = new Location(location);
- IDirectory idir;
if (content == null)
- idir = this.location.open();
- else
- idir = FileSystem.getFSRoot(content);
+ content = this.location.open();
try {
- resources = computeResources(idir);
+ resources = computeResources(content);
localRepository = computeLocalRepository();
- SubsystemManifest manifest = computeSubsystemManifest(idir);
+ SubsystemManifest manifest = computeSubsystemManifest(content);
manifest = computeSubsystemManifestBeforeRequirements(manifest);
requirements = computeRequirements(manifest);
subsystemManifest = computeSubsystemManifestAfterRequirements(manifest);
capabilities = computeCapabilities();
- deploymentManifest = computeDeploymentManifest(idir);
+ deploymentManifest = computeDeploymentManifest(content);
}
finally {
- IOUtils.close(idir.toCloseable());
+ IOUtils.close(content.toCloseable());
}
}
@@ -323,10 +324,16 @@ public class RawSubsystemResource implem
ArrayList<Resource> result = new ArrayList<Resource>(files.size());
for (IFile file : directory.listFiles()) {
String name = file.getName();
- if (name.endsWith(".jar"))
- result.add(new BundleResource(file.toURL()));
- else if (name.endsWith(".esa"))
- result.add(new RawSubsystemResource(convertFileToLocation(file), file.open()));
+ if (file.isFile()) {
+ if (name.endsWith(".jar"))
+ result.add(new BundleResource(file.toURL()));
+ else if (name.endsWith(".esa"))
+ result.add(new RawSubsystemResource(convertFileToLocation(file), file.open()));
+ }
+ else {
+ if (name.endsWith(".esa"))
+ result.add(new RawSubsystemResource(convertFileToLocation(file), file.convert()));
+ }
}
result.trimToSize();
return result;
Modified: aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/InstallTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/InstallTest.java?rev=1401521&r1=1401520&r2=1401521&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/InstallTest.java (original)
+++ aries/trunk/subsystem/subsystem-itests/src/test/java/org/apache/aries/subsystem/itests/InstallTest.java Wed Oct 24 00:36:07 2012
@@ -23,7 +23,11 @@ import static org.junit.Assert.assertSam
import static org.junit.Assert.fail;
import java.io.File;
+import java.io.FileOutputStream;
+import org.apache.aries.subsystem.itests.util.Utils;
+import org.apache.aries.unittest.fixture.ArchiveFixture;
+import org.apache.aries.unittest.fixture.ArchiveFixture.ZipFixture;
import org.apache.aries.util.filesystem.FileSystem;
import org.apache.aries.util.filesystem.IDirectory;
import org.apache.aries.util.io.IOUtils;
@@ -43,7 +47,26 @@ public class InstallTest extends Subsyst
if (createdApplications) {
return;
}
- createApplication("emptySubsystem", new String[0]);
+
+ ZipFixture feature = ArchiveFixture
+ .newZip()
+ .binary("OSGI-INF/SUBSYSTEM.MF",
+ SubsystemTest.class.getClassLoader().getResourceAsStream(
+ "compositeDir" + "/OSGI-INF/SUBSYSTEM.MF"))
+ .binary("applicationDir.esa/OSGI-INF/SUBSYSTEM.MF",
+ SubsystemTest.class.getClassLoader().getResourceAsStream(
+ "compositeDir" + "/applicationDir/OSGI-INF/SUBSYSTEM.MF"))
+ .binary("applicationDir.esa/featureDir.esa/OSGI-INF/SUBSYSTEM.MF",
+ SubsystemTest.class.getClassLoader().getResourceAsStream(
+ "compositeDir" + "/applicationDir/featureDir/OSGI-INF/SUBSYSTEM.MF"));
+ feature.end();
+ FileOutputStream fos = new FileOutputStream("compositeDir" + ".esa");
+ try {
+ feature.writeOut(fos);
+ } finally {
+ Utils.closeQuietly(fos);
+ }
+
createApplication("feature3", new String[]{"tb3.jar"});
createApplication("feature2", new String[]{"tb3.jar", "tb2.jar"});
createdApplications = true;
@@ -53,9 +76,9 @@ public class InstallTest extends Subsyst
super.setUp();
File userDir = new File(System.getProperty("user.dir"));
IDirectory idir = FileSystem.getFSRoot(userDir);
- File emptySubsystem = new File(userDir, "emptySubsystem");
- emptySubsystem.mkdir();
- IOUtils.unpackZip(idir.getFile("emptySubsystem.esa"), emptySubsystem);
+ File compositeDir = new File(userDir, "compositeDir");
+ compositeDir.mkdir();
+ IOUtils.unpackZip(idir.getFile("compositeDir.esa"), compositeDir);
}
@Test
@@ -76,11 +99,20 @@ public class InstallTest extends Subsyst
*/
@Test
public void testLocationAsDirectoryUrl() throws Exception {
- File file = new File("emptySubsystem");
+ File file = new File("compositeDir");
try {
Subsystem subsystem = installSubsystem(getRootSubsystem(), file.toURI().toString(), null);
try {
- assertEmptySubsystem(subsystem);
+ assertSymbolicName("org.apache.aries.subsystem.itests.composite.dir", subsystem);
+ assertChildren(1, subsystem);
+ Subsystem child = subsystem.getChildren().iterator().next();
+ assertSymbolicName(
+ "org.apache.aries.subsystem.itests.application.dir",
+ child);
+ assertChildren(1, child);
+ assertSymbolicName(
+ "org.apache.aries.subsystem.itests.feature.dir",
+ child.getChildren().iterator().next());
}
finally {
uninstallSubsystemSilently(subsystem);
Added: aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/OSGI-INF/SUBSYSTEM.MF
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/OSGI-INF/SUBSYSTEM.MF?rev=1401521&view=auto
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/OSGI-INF/SUBSYSTEM.MF (added)
+++ aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/OSGI-INF/SUBSYSTEM.MF Wed Oct 24 00:36:07 2012
@@ -0,0 +1,3 @@
+Subsystem-SymbolicName: org.apache.aries.subsystem.itests.composite.dir
+Subsystem-Type: org.osgi.subsystem.composite
+Subsystem-Content: org.apache.aries.subsystem.itests.application.dir;version="[0,0]";type=osgi.subsystem.application
Added: aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/OSGI-INF/SUBSYSTEM.MF
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/OSGI-INF/SUBSYSTEM.MF?rev=1401521&view=auto
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/OSGI-INF/SUBSYSTEM.MF (added)
+++ aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/OSGI-INF/SUBSYSTEM.MF Wed Oct 24 00:36:07 2012
@@ -0,0 +1 @@
+Subsystem-SymbolicName: org.apache.aries.subsystem.itests.application.dir
\ No newline at end of file
Added: aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/featureDir/OSGI-INF/SUBSYSTEM.MF
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/featureDir/OSGI-INF/SUBSYSTEM.MF?rev=1401521&view=auto
==============================================================================
--- aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/featureDir/OSGI-INF/SUBSYSTEM.MF (added)
+++ aries/trunk/subsystem/subsystem-itests/src/test/resources/compositeDir/applicationDir/featureDir/OSGI-INF/SUBSYSTEM.MF Wed Oct 24 00:36:07 2012
@@ -0,0 +1,2 @@
+Subsystem-SymbolicName: org.apache.aries.subsystem.itests.feature.dir
+Subsystem-Type: osgi.subsystem.feature