package org.argeo.slc.client.ui.dist.commands;
import javax.jcr.Node;
-import javax.jcr.Repository;
import javax.jcr.RepositoryException;
-import javax.jcr.RepositoryFactory;
import javax.jcr.Session;
-import org.argeo.jcr.ArgeoNames;
import org.argeo.jcr.JcrUtils;
import org.argeo.slc.SlcException;
import org.argeo.slc.client.ui.dist.DistPlugin;
-import org.argeo.slc.client.ui.dist.editors.ArtifactEditor;
+import org.argeo.slc.client.ui.dist.RepoService;
+import org.argeo.slc.client.ui.dist.editors.ArtifactVersionEditor;
+import org.argeo.slc.client.ui.dist.editors.ModularDistVersionEditor;
import org.argeo.slc.client.ui.dist.editors.ModuleEditorInput;
-import org.argeo.slc.client.ui.dist.editors.DistributionEditor;
import org.argeo.slc.jcr.SlcTypes;
-import org.argeo.slc.repo.RepoUtils;
-import org.argeo.util.security.Keyring;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
// relevant repository
public final static String PARAM_REPO_URI = "param.repoUri";
public final static String PARAM_WORKSPACE_NAME = "param.workspaceName";
- public final static String PARAM_ARTIFACT_PATH = "param.artifactPath";
+ public final static String PARAM_MODULE_PATH = "param.modulePath";
/* DEPENDENCY INJECTION */
- private Repository localRepository;
- // We must log in the corresponding repository to get the node and be able
- // to decide which editor to open depending on its mixin
- private RepositoryFactory repositoryFactory;
- private Keyring keyring;
+ private RepoService repoService;
public Object execute(ExecutionEvent event) throws ExecutionException {
String repoNodePath = event.getParameter(PARAM_REPO_NODE_PATH);
String repoUri = event.getParameter(PARAM_REPO_URI);
String workspaceName = event.getParameter(PARAM_WORKSPACE_NAME);
- String artifactPath = event.getParameter(PARAM_ARTIFACT_PATH);
+ String modulePath = event.getParameter(PARAM_MODULE_PATH);
- Session localSession = null;
Session businessSession = null;
- Node repoNode = null;
-
try {
- if (repoNodePath != null && repoUri == null) {
- try {
- localSession = localRepository.login();
- if (repoNodePath != null
- && localSession.nodeExists(repoNodePath))
- repoNode = localSession.getNode(repoNodePath);
-
- businessSession = RepoUtils.getCorrespondingSession(
- repositoryFactory, keyring, repoNode, repoUri,
- workspaceName);
- repoUri = repoNode.getProperty(ArgeoNames.ARGEO_URI)
- .getString();
-
- } catch (RepositoryException e) {
- throw new SlcException("Cannot log to workspace "
- + workspaceName + " for repo defined in "
- + repoNodePath, e);
- } finally {
- JcrUtils.logoutQuietly(localSession);
- }
+ businessSession = repoService.getRemoteSession(repoNodePath,
+ repoUri, workspaceName);
- }
+ Node module = businessSession.getNode(modulePath);
+ ModuleEditorInput mei = new ModuleEditorInput(repoNodePath,
+ repoUri, workspaceName, modulePath);
- ModuleEditorInput wei = new ModuleEditorInput(repoNodePath,
- repoUri, workspaceName, artifactPath);
- Node artifact = businessSession.getNode(artifactPath);
-
- // Choose correct editor based on the artifact mixin
- if (artifact.isNodeType(SlcTypes.SLC_MODULAR_DISTRIBUTION))
+ // Choose correct editor based on its mixin
+ if (module.isNodeType(SlcTypes.SLC_MODULAR_DISTRIBUTION))
HandlerUtil.getActiveWorkbenchWindow(event).getActivePage()
- .openEditor(wei, DistributionEditor.ID);
+ .openEditor(mei, ModularDistVersionEditor.ID);
else
HandlerUtil.getActiveWorkbenchWindow(event).getActivePage()
- .openEditor(wei, ArtifactEditor.ID);
+ .openEditor(mei, ArtifactVersionEditor.ID);
} catch (RepositoryException e) {
throw new SlcException("Unexpected error while "
+ "getting repoNode info for repoNode at path "
+ "opening editor for workspace " + workspaceName
+ " with URI " + repoUri + " and repoNode at path "
+ repoNodePath, e);
+ } finally {
+ JcrUtils.logoutQuietly(businessSession);
}
return null;
}
/* DEPENDENCY INJECTION */
- public void setLocalRepository(Repository localRepository) {
- this.localRepository = localRepository;
+ public void setRepoService(RepoService repoService) {
+ this.repoService = repoService;
}
-
- public void setRepositoryFactory(RepositoryFactory repositoryFactory) {
- this.repositoryFactory = repositoryFactory;
- }
-
- public void setKeyring(Keyring keyring) {
- this.keyring = keyring;
- }
-
}
\ No newline at end of file