X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.repo%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Frepo%2FArtifactIndexer.java;h=acb05b48395206f615efe3bb1308524faee1df95;hb=69e05b37a4e6cbf25290953d28a8b776c8f85277;hp=841f22d38b8e9713340494cc989bd1c25c791fb8;hpb=4663b42433ba4a16c81d90927aecff2a923cd7a4;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/ArtifactIndexer.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/ArtifactIndexer.java index 841f22d38..acb05b483 100644 --- a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/ArtifactIndexer.java +++ b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/ArtifactIndexer.java @@ -1,3 +1,18 @@ +/* + * 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.Node; @@ -58,6 +73,20 @@ public class ArtifactIndexer implements NodeIndexer { artifact.getClassifier()); JcrUtils.updateLastModified(fileNode); + // make sure there are checksums + String shaNodeName = fileNode.getName() + ".sha1"; + if (!fileNode.getParent().hasNode(shaNodeName)) { + String sha = JcrUtils.checksumFile(fileNode, "SHA-1"); + JcrUtils.copyBytesAsFile(fileNode.getParent(), shaNodeName, + sha.getBytes()); + } + String md5NodeName = fileNode.getName() + ".md5"; + if (!fileNode.getParent().hasNode(md5NodeName)) { + String md5 = JcrUtils.checksumFile(fileNode, "MD5"); + JcrUtils.copyBytesAsFile(fileNode.getParent(), md5NodeName, + md5.getBytes()); + } + // set higher levels Node artifactVersionBase = fileNode.getParent(); if (!artifactVersionBase @@ -70,8 +99,14 @@ public class ArtifactIndexer implements NodeIndexer { artifact.getArtifactId()); artifactVersionBase.setProperty(SlcNames.SLC_GROUP_ID, artifact.getGroupId()); - JcrUtils.updateLastModified(artifactVersionBase); } + JcrUtils.updateLastModified(artifactVersionBase); + + // pom + if (artifact.getExtension().equals("pom")) { + // TODO read to make it a distribution + } + Node artifactBase = artifactVersionBase.getParent(); if (!artifactBase.isNodeType(SlcTypes.SLC_ARTIFACT_BASE)) { artifactBase.addMixin(SlcTypes.SLC_ARTIFACT_BASE); @@ -79,10 +114,9 @@ public class ArtifactIndexer implements NodeIndexer { artifact.getArtifactId()); artifactBase.setProperty(SlcNames.SLC_GROUP_ID, artifact.getGroupId()); - JcrUtils.updateLastModified(artifactBase); } - - // TODO do we really need group base? + JcrUtils.updateLastModified(artifactBase); + Node groupBase = artifactBase.getParent(); if (!groupBase.isNodeType(SlcTypes.SLC_GROUP_BASE)) { // if (groupBase.isNodeType(SlcTypes.SLC_ARTIFACT_BASE)) { @@ -92,8 +126,9 @@ public class ArtifactIndexer implements NodeIndexer { groupBase.addMixin(SlcTypes.SLC_GROUP_BASE); groupBase.setProperty(SlcNames.SLC_GROUP_BASE_ID, artifact.getGroupId()); - JcrUtils.updateLastModified(groupBase); } + JcrUtils.updateLastModifiedAndParents(groupBase, + RepoConstants.DEFAULT_ARTIFACTS_BASE_PATH); if (log.isTraceEnabled()) log.trace("Indexed artifact " + artifact + " on " + fileNode); @@ -104,7 +139,7 @@ public class ArtifactIndexer implements NodeIndexer { } private String getRelativePath(String nodePath) { - String basePath = RepoConstants.ARTIFACTS_BASE_PATH; + String basePath = RepoConstants.DEFAULT_ARTIFACTS_BASE_PATH; if (!nodePath.startsWith(basePath)) return null; String relativePath = nodePath.substring(basePath.length());