private void validateArtifacts() throws Exception { for (ArtifactData data : m_artifacts) { String pid = data.getProcessorPid(); boolean found = false; for (ArtifactData processor : m_processors) { if (pid.equals(processor.getProcessorPid())) { found = true; break; } } if (!found) { throw new Exception("No resource processor found for artifact " + data.getURL() + " with processor PID " + pid); } } }
public static ArtifactData createResourceProcessor(URL url, String filename, String bundleSymbolicName, String bundleVersion, String processorPID) { ArtifactData data = new ArtifactData(url, filename); data.setBundleMetadata(bundleSymbolicName, bundleVersion); data.setResourceProcessor(processorPID); return data; }
public static ArtifactData createBundle(URL url, String filename, String bundleSymbolicName, String bundleVersion) { ArtifactData data = new ArtifactData(url, filename); data.setBundleMetadata(bundleSymbolicName, bundleVersion); return data; }
public static ArtifactData createArtifact(URL url, String filename, String processorPID) { ArtifactData data = new ArtifactData(url, filename); data.setArtifactResourceProcessor(processorPID); return data; }
@Test() public void testCreateResourceProcessorWithParametersOk() throws Exception { ArtifactData artifact = ArtifactData.createResourceProcessor(m_fakeURL, m_filename, "my.bundle.name;singleton:=true, foo:=bar", "1.0.0", "rp;qux:=quu"); assertNotNull(artifact); assertEquals(artifact.getSymbolicName(), "my.bundle.name"); assertEquals(artifact.getVersion(), "1.0.0"); assertEquals(artifact.getProcessorPid(), "rp"); assertTrue(artifact.isCustomizer()); assertTrue(artifact.isBundle()); } }
@Test() public void testCreateBundleWithoutParametersOk() throws Exception { ArtifactData artifact = ArtifactData.createBundle(m_fakeURL, m_filename, "my.bundle.name", "1.0.0"); assertNotNull(artifact); assertEquals(artifact.getSymbolicName(), "my.bundle.name"); assertEquals(artifact.getVersion(), "1.0.0"); assertNull(artifact.getProcessorPid()); assertFalse(artifact.isCustomizer()); assertTrue(artifact.isBundle()); }
@Test() public void testCreateArtifactWithoutParametersOk() throws Exception { ArtifactData artifact = ArtifactData.createArtifact(m_fakeURL, m_filename, "rp"); assertNotNull(artifact); assertNull(artifact.getSymbolicName()); assertNull(artifact.getVersion()); assertEquals(artifact.getProcessorPid(), "rp"); assertFalse(artifact.isCustomizer()); assertFalse(artifact.isBundle()); }
private Manifest createManifest(List<ArtifactData> files) throws Exception { Manifest manifest = new Manifest(); Attributes main = manifest.getMainAttributes(); main.putValue("Manifest-Version", "1.0"); main.putValue("DeploymentPackage-SymbolicName", m_symbolicName); main.putValue("DeploymentPackage-Version", m_version); for (ArtifactData file : files) { if (file.isBundle()) { Attributes a = new Attributes(); a.putValue("Bundle-SymbolicName", file.getSymbolicName()); a.putValue("Bundle-Version", file.getVersion()); if (file.isCustomizer()) { a.putValue("DeploymentPackage-Customizer", "true"); a.putValue("Deployment-ProvidesResourceProcessor", file.getProcessorPid()); } manifest.getEntries().put(file.getFilename(), a); } else { Attributes a = new Attributes(); a.putValue("Resource-Processor", file.getProcessorPid()); manifest.getEntries().put(file.getFilename(), a); } } return manifest; }
m_processors.add(ArtifactData.createResourceProcessor(url, name, bundleSymbolicName, bundleVersion, processorPID)); m_bundles.add(ArtifactData.createBundle(url, name, bundleSymbolicName, bundleVersion));
private void writeStream(List<ArtifactData> files, Manifest manifest, OutputStream outputStream) throws Exception { JarOutputStream output = null; InputStream fis = null; try { output = new JarOutputStream(outputStream, manifest); byte[] buffer = new byte[BUFFER_SIZE]; for (ArtifactData file : files) { output.putNextEntry(new ZipEntry(file.getFilename())); fis = file.getURL().openStream(); int bytes = fis.read(buffer); while (bytes != -1) { output.write(buffer, 0, bytes); bytes = fis.read(buffer); } fis.close(); output.closeEntry(); fis = null; } } finally { if (fis != null) { fis.close(); } if (output != null) { output.close(); } } } }
/** * Adds an artifact to the deployment package. * * @param url * a url that refers to the artifact * @param processorPID * the PID of the processor for this artifact * @return a builder to further add data to the deployment package * @throws Exception * if something goes wrong while building */ public DeploymentPackageBuilder addArtifact(URL url, String processorPID) throws Exception { String path = url.getPath(); int i = path.lastIndexOf('/'); if (i > 0 && i < (path.length() - 1)) { path = path.substring(i + 1); } String name = PREFIX_ARTIFACT + getUniqueID() + "-" + path; m_artifacts.add(ArtifactData.createArtifact(url, name, processorPID)); return this; }
@Test() public void testCreateResourceProcessorWithoutParametersOk() throws Exception { ArtifactData artifact = ArtifactData.createResourceProcessor(m_fakeURL, m_filename, "my.bundle.name", "1.0.0", "rp"); assertNotNull(artifact); assertEquals(artifact.getSymbolicName(), "my.bundle.name"); assertEquals(artifact.getVersion(), "1.0.0"); assertEquals(artifact.getProcessorPid(), "rp"); assertTrue(artifact.isCustomizer()); assertTrue(artifact.isBundle()); }
@Test() public void testCreateBundleWithParametersOk() throws Exception { ArtifactData artifact = ArtifactData.createBundle(m_fakeURL, m_filename, "my.bundle.name;singleton:=true, foo:=bar", "1.0.0"); assertNotNull(artifact); assertEquals(artifact.getSymbolicName(), "my.bundle.name"); assertEquals(artifact.getVersion(), "1.0.0"); assertNull(artifact.getProcessorPid()); assertFalse(artifact.isCustomizer()); assertTrue(artifact.isBundle()); }