/******************************************************************************* * Copyright (c) 2008, 2010 VMware Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VMware Inc. - initial contribution *******************************************************************************/ package org.eclipse.virgo.shell.internal.commands; import java.util.Arrays; import java.util.List; import javax.management.InstanceNotFoundException; import org.osgi.framework.Version; import org.osgi.service.cm.ConfigurationAdmin; import org.eclipse.equinox.region.RegionDigraph; import org.eclipse.virgo.kernel.model.management.ManageableArtifact; import org.eclipse.virgo.kernel.model.management.RuntimeArtifactModelObjectNameCreator; import org.eclipse.virgo.shell.Command; import org.eclipse.virgo.shell.internal.formatting.ConfigInstallArtifactCommandFormatter; /** * Commands for config artifacts. * * <p /> * * <strong>Concurrent Semantics</strong><br /> * * Thread-safe. * */ @Command("config") final class ConfigCommands extends AbstractInstallArtifactBasedCommands<ManageableArtifact> { private static final String UNABLE_TO_EXAMINE_CONFIGURATION_IN_NON_ACTIVE_STATE = String.format("Unable to examine configuration in non-active state"); private static final String EMPTY_VERSION_STRING = Version.emptyVersion.toString(); private static final String GLOBAL_REGION_NAME = "global"; private static final String TYPE = "configuration"; private static final String STATE_ACTIVE = "ACTIVE"; public ConfigCommands(RuntimeArtifactModelObjectNameCreator objectNameCreator, ConfigurationAdmin configurationAdmin, RegionDigraph regionDigraph) { super(TYPE, objectNameCreator, new ConfigInstallArtifactCommandFormatter(configurationAdmin), ManageableArtifact.class, regionDigraph); } @Command("examine") public List<String> examine(String name) { return examine(name, EMPTY_VERSION_STRING, GLOBAL_REGION_NAME); } @Command("examine") public List<String> examine(String name, String version) { return examine(name, version, GLOBAL_REGION_NAME); } @Override public List<String> examine(String name, String versionString, String regionName) { ManageableArtifact artifact; try { artifact = getArtifactRetriever().getArtifact(name, convertToVersion(versionString), convertToRegion(regionName)); } catch (IllegalArgumentException iae) { return Arrays.asList(iae.getMessage()); } catch (InstanceNotFoundException e) { return getDoesNotExistMessage(TYPE, name, versionString, regionName); } if (STATE_ACTIVE.equals(artifact.getState())) { return super.examine(name, versionString, regionName); } return Arrays.asList(UNABLE_TO_EXAMINE_CONFIGURATION_IN_NON_ACTIVE_STATE); } @Command("start") public List<String> start(String name) { return start(name, EMPTY_VERSION_STRING, GLOBAL_REGION_NAME); } @Command("start") public List<String> start(String name, String version) { return start(name, version, GLOBAL_REGION_NAME); } @Command("stop") public List<String> stop(String name) { return stop(name, EMPTY_VERSION_STRING, GLOBAL_REGION_NAME); } @Command("stop") public List<String> stop(String name, String version) { return stop(name, version, GLOBAL_REGION_NAME); } @Command("refresh") public List<String> refresh(String name) { return refresh(name, EMPTY_VERSION_STRING, GLOBAL_REGION_NAME); } @Command("refresh") public List<String> refresh(String name, String version) { return refresh(name, version, GLOBAL_REGION_NAME); } @Command("uninstall") public List<String> uninstall(String name) { return uninstall(name, EMPTY_VERSION_STRING, GLOBAL_REGION_NAME); } @Command("uninstall") public List<String> uninstall(String name, String version) { return uninstall(name, version, GLOBAL_REGION_NAME); } }