From 4578db21c506c3f8eee57a896c9e71154e2065be Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Tue, 22 May 2012 13:46:47 +0000 Subject: [PATCH] Alpha version of SLC Repo: can serve as backend for building Argeo Commons Basic git-svn-id: https://svn.argeo.org/slc/trunk@5313 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../org/argeo/slc/repo/JarFileIndexer.java | 20 ++++++++++++-- .../repo/maven/ImportMavenDependencies.java | 6 +++-- .../slc/repo/maven/MavenConventionsUtils.java | 13 ++++++++-- .../argeo/slc/repo/osgi/NormalizeGroup.java | 26 ++++++++++++++++--- 4 files changed, 55 insertions(+), 10 deletions(-) diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/JarFileIndexer.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/JarFileIndexer.java index 55019c4d4..80c750407 100644 --- a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/JarFileIndexer.java +++ b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/JarFileIndexer.java @@ -18,6 +18,7 @@ package org.argeo.slc.repo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.jar.Attributes; import java.util.jar.Attributes.Name; @@ -47,7 +48,7 @@ import org.osgi.framework.Version; * Indexes jar file, currently supports standard J2SE and OSGi metadata (both * from MANIFEST) */ -public class JarFileIndexer implements NodeIndexer { +public class JarFileIndexer implements NodeIndexer, SlcNames { private final static Log log = LogFactory.getLog(JarFileIndexer.class); public Boolean support(String path) { @@ -78,13 +79,27 @@ public class JarFileIndexer implements NodeIndexer { log.error(fileNode + " has no MANIFEST"); return; } + bo = new ByteArrayOutputStream(); manifest.write(bo); - bi = new ByteArrayInputStream(bo.toByteArray()); + byte[] newManifest = bo.toByteArray(); + if (fileNode.hasProperty(SLC_MANIFEST)) { + byte[] storedManifest = JcrUtils.getBinaryAsBytes(fileNode + .getProperty(SLC_MANIFEST)); + if (Arrays.equals(newManifest, storedManifest)) { + if (log.isTraceEnabled()) + log.trace("Manifest not changed, doing nothing " + + fileNode); + return; + } + } + + bi = new ByteArrayInputStream(newManifest); manifestBinary = jcrSession.getValueFactory().createBinary(bi); // standard jar file fileNode.addMixin(SlcTypes.SLC_JAR_FILE); + fileNode.setProperty(SlcNames.SLC_MANIFEST, manifestBinary); Attributes attrs = manifest.getMainAttributes(); if (log.isTraceEnabled()) @@ -116,6 +131,7 @@ public class JarFileIndexer implements NodeIndexer { if (log.isTraceEnabled()) log.trace("Indexed JAR file " + fileNode); } + } catch (Exception e) { throw new SlcException("Cannot index jar " + fileNode, e); } finally { diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/maven/ImportMavenDependencies.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/maven/ImportMavenDependencies.java index 684e75cda..e6e51741b 100644 --- a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/maven/ImportMavenDependencies.java +++ b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/maven/ImportMavenDependencies.java @@ -56,6 +56,7 @@ public class ImportMavenDependencies implements Runnable { private AetherTemplate aetherTemplate; private String rootCoordinates = "org.argeo.dep:versions-all:pom:1.2.0"; private String distCoordinates = "org.argeo.tp:dist:pom:1.3.0"; + private String parentPomCoordinates = "org.argeo:parent:1.2.0"; private Set excludedArtifacts = new HashSet(); private Repository repository; @@ -88,7 +89,7 @@ public class ImportMavenDependencies implements Runnable { node.remove(); } session.save(); - + // sync syncDistribution(session, artifacts); } catch (Exception e) { @@ -112,7 +113,8 @@ public class ImportMavenDependencies implements Runnable { registeredArtifacts, pomArtifact); Artifact sdkArtifact = new DefaultArtifact(distCoordinates); String sdkPom = MavenConventionsUtils.artifactsAsDependencyPom( - sdkArtifact, registeredArtifacts); + sdkArtifact, registeredArtifacts, new DefaultArtifact( + parentPomCoordinates)); if (log.isDebugEnabled()) log.debug("Gathered " + registeredArtifacts.size() + " artifacts:\n" + sdkPom); diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/maven/MavenConventionsUtils.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/maven/MavenConventionsUtils.java index a19e0725a..2bf08c5b3 100644 --- a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/maven/MavenConventionsUtils.java +++ b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/maven/MavenConventionsUtils.java @@ -89,7 +89,7 @@ public class MavenConventionsUtils { } public static String artifactsAsDependencyPom(Artifact pomArtifact, - Set artifacts) { + Set artifacts, Artifact parent) { StringBuffer p = new StringBuffer(); // XML header @@ -98,7 +98,16 @@ public class MavenConventionsUtils { p.append("4.0.0"); // Artifact - p.append("org.argeoparent1.2.0\n"); + if (parent != null) { + p.append("\n"); + p.append("").append(parent.getGroupId()) + .append("\n"); + p.append("").append(parent.getArtifactId()) + .append("\n"); + p.append("").append(parent.getVersion()) + .append("\n"); + p.append("\n"); + } p.append("").append(pomArtifact.getGroupId()) .append("\n"); p.append("").append(pomArtifact.getArtifactId()) diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/NormalizeGroup.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/NormalizeGroup.java index 4c9a3d592..57cc1145c 100644 --- a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/NormalizeGroup.java +++ b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/NormalizeGroup.java @@ -60,6 +60,7 @@ public class NormalizeGroup implements Runnable, SlcNames { private String groupId; private String artifactBasePath = "/"; private String version = "1.3.0"; + private String parentPomCoordinates = "org.argeo:parent:1.3.0"; private ArtifactIndexer artifactIndexer = new ArtifactIndexer(); private JarFileIndexer jarFileIndexer = new JarFileIndexer(); @@ -155,10 +156,15 @@ public class NormalizeGroup implements Runnable, SlcNames { Artifact artifact = new DefaultArtifact(groupId, artifactId, "pom", version); String pom = MavenConventionsUtils.artifactsAsDependencyPom(artifact, - artifacts); + artifacts, new DefaultArtifact(parentPomCoordinates)); Node node = RepoUtils.copyBytesAsArtifact( session.getNode(artifactBasePath), artifact, pom.getBytes()); artifactIndexer.index(node); + + // FIXME factorize + String pomSha = JcrUtils.checksumFile(node, "SHA-1"); + JcrUtils.copyBytesAsFile(node.getParent(), node.getName() + ".sha1", + pomSha.getBytes()); session.save(); return artifact; } @@ -203,7 +209,7 @@ public class NormalizeGroup implements Runnable, SlcNames { String bundleSha = JcrUtils.checksumFile(bundleNode, "SHA-1"); JcrUtils.copyBytesAsFile(artifactFolder, bundleNode.getName() + ".sha1", bundleSha.getBytes()); - String pomSha = JcrUtils.checksumFile(bundleNode, "SHA-1"); + String pomSha = JcrUtils.checksumFile(pomNode, "SHA-1"); JcrUtils.copyBytesAsFile(artifactFolder, pomNode.getName() + ".sha1", pomSha.getBytes()); } @@ -254,7 +260,7 @@ public class NormalizeGroup implements Runnable, SlcNames { dependenciesSymbolicNames.add(dependencySymbolicName); } else { if (!JcrUtils.check(importPackage, SLC_OPTIONAL) - && !systemPackages.contains(importPackage)) + && !systemPackages.contains(pkg)) log.warn("No bundle found for pkg " + pkg); } } @@ -317,7 +323,15 @@ public class NormalizeGroup implements Runnable, SlcNames { // Dependency management p.append("\n"); p.append("\n"); - // TODO import SDK + p.append("\n"); + p.append("\t").append(groupId).append("\n"); + p.append("\t") + .append(ownSymbolicName.endsWith(".source") ? SOURCES_ARTIFACT_ID + : BINARIES_ARTIFACT_ID).append("\n"); + p.append("\t").append(version).append("\n"); + p.append("\tpom\n"); + p.append("\timport\n"); + p.append("\n"); p.append("\n"); p.append("\n"); @@ -337,4 +351,8 @@ public class NormalizeGroup implements Runnable, SlcNames { this.groupId = groupId; } + public void setParentPomCoordinates(String parentPomCoordinates) { + this.parentPomCoordinates = parentPomCoordinates; + } + } -- 2.39.2