X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=inline;f=org.argeo.slc.repo%2Fsrc%2Forg%2Fargeo%2Fslc%2Frepo%2FPdeSourcesIndexer.java;h=6b8aee95eee15fd3d2613c0dfddefc435fe0d229;hb=fbde11e8a342318876a4744c4676d3618bdf8583;hp=bcaa7302ec68b992efc3da7237c8e9de6694565b;hpb=40fb326ca1e1e45f95e3a89c23fc3d07177da20d;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.repo/src/org/argeo/slc/repo/PdeSourcesIndexer.java b/org.argeo.slc.repo/src/org/argeo/slc/repo/PdeSourcesIndexer.java index bcaa7302e..6b8aee95e 100644 --- a/org.argeo.slc.repo/src/org/argeo/slc/repo/PdeSourcesIndexer.java +++ b/org.argeo.slc.repo/src/org/argeo/slc/repo/PdeSourcesIndexer.java @@ -1,18 +1,3 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * 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.argeo.slc.repo; import javax.jcr.Binary; @@ -22,12 +7,11 @@ import javax.jcr.RepositoryException; import javax.jcr.Session; import org.apache.commons.io.FilenameUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; +import org.argeo.api.cms.CmsLog; import org.argeo.jcr.JcrUtils; import org.argeo.slc.NameVersion; import org.argeo.slc.SlcException; -import org.argeo.slc.aether.AetherUtils; +import org.argeo.slc.repo.maven.AetherUtils; import org.argeo.slc.repo.maven.MavenConventionsUtils; import org.eclipse.aether.artifact.Artifact; import org.eclipse.aether.artifact.DefaultArtifact; @@ -37,7 +21,7 @@ import org.eclipse.aether.artifact.DefaultArtifact; * "...-sources.jar" */ public class PdeSourcesIndexer implements NodeIndexer { - private Log log = LogFactory.getLog(PdeSourcesIndexer.class); + private CmsLog log = CmsLog.getLog(PdeSourcesIndexer.class); private String artifactBasePath = RepoConstants.DEFAULT_ARTIFACTS_BASE_PATH; @@ -57,8 +41,7 @@ public class PdeSourcesIndexer implements NodeIndexer { // int lastInd = name.lastIndexOf("["); // if (lastInd != -1) // name = name.substring(0, lastInd); - return name.endsWith("-sources") - && FilenameUtils.getExtension(path).equals("jar"); + return name.endsWith("-sources") && FilenameUtils.getExtension(path).equals("jar"); } public void index(Node sourcesNode) { @@ -68,8 +51,7 @@ public class PdeSourcesIndexer implements NodeIndexer { packageSourcesAsPdeSource(sourcesNode); } catch (Exception e) { - throw new SlcException("Cannot generate pde sources for node " - + sourcesNode, e); + throw new SlcException("Cannot generate pde sources for node " + sourcesNode, e); } } @@ -78,44 +60,34 @@ public class PdeSourcesIndexer implements NodeIndexer { Binary osgiBinary = null; try { Session session = sourcesNode.getSession(); - Artifact sourcesArtifact = AetherUtils.convertPathToArtifact( - sourcesNode.getPath(), null); + Artifact sourcesArtifact = AetherUtils.convertPathToArtifact(sourcesNode.getPath(), null); // read name version from manifest - Artifact osgiArtifact = new DefaultArtifact( - sourcesArtifact.getGroupId(), - sourcesArtifact.getArtifactId(), - sourcesArtifact.getExtension(), - sourcesArtifact.getVersion()); - String osgiPath = MavenConventionsUtils.artifactPath( - artifactBasePath, osgiArtifact); - osgiBinary = session.getNode(osgiPath).getNode(Node.JCR_CONTENT) - .getProperty(Property.JCR_DATA).getBinary(); - - NameVersion nameVersion = RepoUtils.readNameVersion(osgiBinary - .getStream()); + Artifact osgiArtifact = new DefaultArtifact(sourcesArtifact.getGroupId(), sourcesArtifact.getArtifactId(), + sourcesArtifact.getExtension(), sourcesArtifact.getVersion()); + String osgiPath = MavenConventionsUtils.artifactPath(artifactBasePath, osgiArtifact); + osgiBinary = session.getNode(osgiPath).getNode(Node.JCR_CONTENT).getProperty(Property.JCR_DATA).getBinary(); + + NameVersion nameVersion = RepoUtils.readNameVersion(osgiBinary.getStream()); + if (nameVersion == null) { + log.warn("Cannot package PDE sources for " + osgiPath + " as it is probably not an OSGi bundle"); + return; + } // create PDe sources artifact - Artifact pdeSourceArtifact = new DefaultArtifact( - sourcesArtifact.getGroupId(), - sourcesArtifact.getArtifactId() + ".source", - sourcesArtifact.getExtension(), + Artifact pdeSourceArtifact = new DefaultArtifact(sourcesArtifact.getGroupId(), + sourcesArtifact.getArtifactId() + ".source", sourcesArtifact.getExtension(), sourcesArtifact.getVersion()); - String targetSourceParentPath = MavenConventionsUtils - .artifactParentPath(artifactBasePath, pdeSourceArtifact); - String targetSourceFileName = MavenConventionsUtils - .artifactFileName(pdeSourceArtifact); + String targetSourceParentPath = MavenConventionsUtils.artifactParentPath(artifactBasePath, + pdeSourceArtifact); + String targetSourceFileName = MavenConventionsUtils.artifactFileName(pdeSourceArtifact); // String targetSourceJarPath = targetSourceParentPath + '/' // + targetSourceFileName; - Node targetSourceParentNode = JcrUtils.mkfolders(session, - targetSourceParentPath); - origBinary = sourcesNode.getNode(Node.JCR_CONTENT) - .getProperty(Property.JCR_DATA).getBinary(); - byte[] targetJarBytes = RepoUtils.packageAsPdeSource( - origBinary.getStream(), nameVersion); - JcrUtils.copyBytesAsFile(targetSourceParentNode, - targetSourceFileName, targetJarBytes); + Node targetSourceParentNode = JcrUtils.mkfolders(session, targetSourceParentPath); + origBinary = sourcesNode.getNode(Node.JCR_CONTENT).getProperty(Property.JCR_DATA).getBinary(); + byte[] targetJarBytes = RepoUtils.packageAsPdeSource(origBinary.getStream(), nameVersion); + JcrUtils.copyBytesAsFile(targetSourceParentNode, targetSourceFileName, targetJarBytes); // reindex // Automagically done via the various listeners or manually @@ -124,12 +96,10 @@ public class PdeSourcesIndexer implements NodeIndexer { // artifactIndexer.index(targetSourceJarNode); // jarFileIndexer.index(targetSourceJarNode); if (log.isTraceEnabled()) - log.trace("Created pde source artifact " + pdeSourceArtifact - + " from " + sourcesNode); + log.trace("Created pde source artifact " + pdeSourceArtifact + " from " + sourcesNode); } catch (RepositoryException e) { - throw new SlcException("Cannot add PDE sources for " + sourcesNode, - e); + throw new SlcException("Cannot add PDE sources for " + sourcesNode, e); } finally { JcrUtils.closeQuietly(origBinary); JcrUtils.closeQuietly(osgiBinary);