From abc9e68ee9afc994feb923b40388aca83bdb050f Mon Sep 17 00:00:00 2001 From: Bruno Sinou Date: Wed, 12 Mar 2014 13:12:42 +0000 Subject: [PATCH] git-svn-id: https://svn.argeo.org/slc/trunk@6893 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../META-INF/spring/services.xml | 1 + .../commands/OpenGenerateBinariesWizard.java | 33 +++++++++--- .../client/ui/dist/model/WorkspaceElem.java | 5 ++ .../slc/repo/maven/GenerateBinaries.java | 53 ++++++++++++++++--- 4 files changed, 79 insertions(+), 13 deletions(-) diff --git a/modules/org.argeo.slc.server.repo/META-INF/spring/services.xml b/modules/org.argeo.slc.server.repo/META-INF/spring/services.xml index 42f077ae3..93fb545b1 100644 --- a/modules/org.argeo.slc.server.repo/META-INF/spring/services.xml +++ b/modules/org.argeo.slc.server.repo/META-INF/spring/services.xml @@ -27,6 +27,7 @@ + diff --git a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/OpenGenerateBinariesWizard.java b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/OpenGenerateBinariesWizard.java index d9f72d16b..288475f23 100644 --- a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/OpenGenerateBinariesWizard.java +++ b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/OpenGenerateBinariesWizard.java @@ -17,8 +17,14 @@ package org.argeo.slc.client.ui.dist.commands; import java.util.Iterator; +import javax.jcr.Node; +import javax.jcr.RepositoryException; +import javax.jcr.Session; + +import org.argeo.slc.SlcException; import org.argeo.slc.client.ui.dist.DistPlugin; import org.argeo.slc.client.ui.dist.model.ModularDistBaseElem; +import org.argeo.slc.client.ui.dist.model.WorkspaceElem; import org.argeo.slc.client.ui.dist.utils.CommandHelpers; import org.argeo.slc.client.ui.dist.wizards.GenerateBinariesWizard; import org.eclipse.core.commands.AbstractHandler; @@ -56,14 +62,27 @@ public class OpenGenerateBinariesWizard extends AbstractHandler { Object element = it.next(); if (element instanceof ModularDistBaseElem) { ModularDistBaseElem elem = (ModularDistBaseElem) element; + Session newSession = null; + try { + Node cBase = elem.getCategoryBase(); + String path = cBase.getPath(); + newSession = ((WorkspaceElem) elem.getParent()) + .getNewSession(); + GenerateBinariesWizard wizard = new GenerateBinariesWizard( + newSession.getNode(path)); + + WizardDialog dialog = new WizardDialog( + HandlerUtil.getActiveShell(event), wizard); + int result = dialog.open(); - GenerateBinariesWizard wizard = new GenerateBinariesWizard( - elem.getCategoryBase()); - WizardDialog dialog = new WizardDialog( - HandlerUtil.getActiveShell(event), wizard); - int result = dialog.open(); - if (result == Dialog.OK) - CommandHelpers.callCommand(RefreshDistributionsView.ID); + if (result == Dialog.OK) + CommandHelpers + .callCommand(RefreshDistributionsView.ID); + } catch (RepositoryException re) { + throw new SlcException( + "Unable to duplicate session for node " + elem, + re); + } } } diff --git a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/model/WorkspaceElem.java b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/model/WorkspaceElem.java index a16397407..0567b3193 100644 --- a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/model/WorkspaceElem.java +++ b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/model/WorkspaceElem.java @@ -44,6 +44,11 @@ public class WorkspaceElem extends DistParentElem { currSession = repoElem.repositoryLogin(getName()); } + /** Utility to create a new Session with correct credential in this context */ + public Session getNewSession() { + return repoElem.repositoryLogin(getName()); + } + public boolean hasChildren() { try { if (isConnected()) diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/maven/GenerateBinaries.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/maven/GenerateBinaries.java index a1e2a071d..6bcf01a25 100644 --- a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/maven/GenerateBinaries.java +++ b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/maven/GenerateBinaries.java @@ -20,6 +20,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.StringTokenizer; import java.util.TreeSet; import javax.jcr.Credentials; @@ -160,9 +161,9 @@ public class GenerateBinaries implements Runnable, SlcNames { .hasNext();) { Node file = files.nextNode(); if (file.isNodeType(SlcTypes.SLC_BUNDLE_ARTIFACT)) { - preProcessBundleArtifact(file); if (log.isDebugEnabled()) - log.debug("Pre-processed " + file.getName()); + log.debug("Pre-Processing " + file.getName()); + preProcessBundleArtifact(file); } } } @@ -199,11 +200,12 @@ public class GenerateBinaries implements Runnable, SlcNames { int count = 1; for (Node bundleNode : symbolicNamesToNodes.values()) { + if (log.isDebugEnabled()) + log.debug("Processing " + bundleNode.getName() + " ( " + count + + "/" + bundleCount + " )"); + processBundleArtifact(bundleNode); bundleNode.getSession().save(); - if (log.isDebugEnabled()) - log.debug(count + "/" + bundleCount + " Processed " - + bundleNode.getName()); count++; } @@ -268,7 +270,46 @@ public class GenerateBinaries implements Runnable, SlcNames { String rawVersion = artifactVersion.getProperty(SLC_ARTIFACT_VERSION) .getString(); String cleanVersion = rawVersion.replace("-SNAPSHOT", ".SNAPSHOT"); - return new Version(cleanVersion); + Version osgiVersion = null; + // log invalid version value to enable tracking them + try { + osgiVersion = new Version(cleanVersion); + } catch (IllegalArgumentException e) { + log.error("Version string " + cleanVersion + " is invalid "); + String twickedVersion = twickInvalidVersion(cleanVersion); + osgiVersion = new Version(twickedVersion); + log.error("Using " + twickedVersion + " instead"); + // throw e; + } + return osgiVersion; + } + + private String twickInvalidVersion(String tmpVersion) { + String[] tokens = tmpVersion.split("\\."); + if (tokens.length == 3 && tokens[2].lastIndexOf("-") > 0) { + String newSuffix = tokens[2].replaceFirst("-", "."); + tmpVersion = tmpVersion.replaceFirst(tokens[2], newSuffix); + } else if (tokens.length > 4) { + // FIXME manually remove other "." + StringTokenizer st = new StringTokenizer(tmpVersion, ".", true); + StringBuilder builder = new StringBuilder(); + // Major + builder.append(st.nextToken()).append(st.nextToken()); + // Minor + builder.append(st.nextToken()).append(st.nextToken()); + // Micro + builder.append(st.nextToken()).append(st.nextToken()); + // Qualifier + builder.append(st.nextToken()); + while (st.hasMoreTokens()) { + // consume delimiter + st.nextToken(); + if (st.hasMoreTokens()) + builder.append("-").append(st.nextToken()); + } + tmpVersion = builder.toString(); + } + return tmpVersion; } protected void preProcessBundleArtifact(Node bundleNode) -- 2.39.2