import javax.jcr.Property;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
+import javax.jcr.RepositoryFactory;
import javax.jcr.Session;
import javax.jcr.nodetype.NodeType;
import javax.jcr.query.Query;
import org.argeo.slc.SlcException;
import org.argeo.slc.aether.AetherUtils;
import org.argeo.slc.client.ui.dist.DistPlugin;
-import org.argeo.slc.client.ui.dist.views.DistributionsView;
-import org.argeo.slc.client.ui.dist.views.DistributionsView.DistributionViewSelectedElement;
import org.argeo.slc.jcr.SlcNames;
import org.argeo.slc.jcr.SlcTypes;
import org.argeo.slc.repo.ArtifactIndexer;
import org.argeo.slc.repo.RepoUtils;
import org.argeo.slc.repo.maven.MavenConventionsUtils;
import org.argeo.slc.repo.osgi.NormalizeGroup;
+import org.argeo.util.security.Keyring;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.handlers.HandlerUtil;
import org.sonatype.aether.artifact.Artifact;
import org.sonatype.aether.util.artifact.DefaultArtifact;
public final static String ID = DistPlugin.ID + ".normalizeDistribution";
public final static String DEFAULT_LABEL = "Normalize...";
public final static String DEFAULT_ICON_PATH = "icons/normalize.gif";
+ public final static String PARAM_WORKSPACE_NAME = "workspaceName";
+ public final static String PARAM_TARGET_REPO_PATH = "targetRepoPath";
private final static Log log = LogFactory
.getLog(NormalizeDistribution.class);
- private Repository repository;
- private Credentials credentials;
- private String wkspName;
private String artifactBasePath = "/";
private ArtifactIndexer artifactIndexer = new ArtifactIndexer();
private JarFileIndexer jarFileIndexer = new JarFileIndexer();
- public Object execute(ExecutionEvent event) throws ExecutionException {
+ // DEPENDENCY INJECTION
+ private RepositoryFactory repositoryFactory;
+ private Keyring keyring;
+ private Repository nodeRepository;
- IWorkbenchWindow iww = DistPlugin.getDefault().getWorkbench()
- .getActiveWorkbenchWindow();
- IWorkbenchPart view = iww.getActivePage().getActivePart();
- if (view instanceof DistributionsView) {
- DistributionViewSelectedElement dvse = ((DistributionsView) view)
- .getSelectedElement();
- if (dvse != null && (dvse.isWorkspace)) {
- repository = dvse.repository;
- credentials = dvse.credentials;
- wkspName = dvse.wkspName;
- }
- }
- if (repository == null || wkspName == null)
- return null;
-
- NormalizationDialog dialog = new NormalizationDialog(
- HandlerUtil.getActiveShell(event));
- if (dialog.open() != Dialog.OK)
- return null;
+ public Object execute(ExecutionEvent event) throws ExecutionException {
- String version = dialog.getVersion();
- Boolean overridePoms = dialog.getOverridePoms();
+ String targetRepoPath = event.getParameter(PARAM_TARGET_REPO_PATH);
+ String wkspName = event.getParameter(PARAM_WORKSPACE_NAME);
+ Session nodeSession = null;
NormalizeJob job;
try {
+
+ NormalizationDialog dialog = new NormalizationDialog(
+ HandlerUtil.getActiveShell(event));
+ if (dialog.open() != Dialog.OK)
+ return null;
+
+ nodeSession = nodeRepository.login();
+ Node repoNode = nodeSession.getNode(targetRepoPath);
+ Repository repository = RepoUtils.getRepository(repositoryFactory,
+ keyring, repoNode);
+ Credentials credentials = RepoUtils.getRepositoryCredentials(
+ keyring, repoNode);
+
+ String version = dialog.getVersion();
+ Boolean overridePoms = dialog.getOverridePoms();
+
job = new NormalizeJob(repository.login(credentials, wkspName),
version, overridePoms);
+ job.setUser(true);
+ job.schedule();
} catch (RepositoryException e) {
throw new SlcException("Cannot normalize " + wkspName, e);
+ } finally {
+ JcrUtils.logoutQuietly(nodeSession);
}
- job.setUser(true);
- job.schedule();
return null;
}
}
- public void setRepository(Repository repository) {
- this.repository = repository;
- }
-
private class NormalizeJob extends Job {
private Session session;
private String version;
}
}
+
+ /* DEPENDENCY INJECTION */
+ public void setNodeRepository(Repository nodeRepository) {
+ this.nodeRepository = nodeRepository;
+ }
+
+ public void setRepositoryFactory(RepositoryFactory repositoryFactory) {
+ this.repositoryFactory = repositoryFactory;
+ }
+
+ public void setKeyring(Keyring keyring) {
+ this.keyring = keyring;
+ }
}
\ No newline at end of file