diff --git a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/cli/ListDomainsCommand.java b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/cli/ListDomainsCommand.java index 4aa6dd2aeaf..b994410130a 100644 --- a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/cli/ListDomainsCommand.java +++ b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/cli/ListDomainsCommand.java @@ -37,10 +37,13 @@ * only if the new code is made subject to such option by the copyright * holder. */ + +// Portions Copyright [2017] Payara Foundation and/or its affiliates package com.sun.enterprise.admin.servermgmt.cli; import com.sun.enterprise.admin.cli.remote.RemoteCLICommand; import com.sun.enterprise.admin.servermgmt.DomainConfig; +import com.sun.enterprise.admin.servermgmt.DomainException; import com.sun.enterprise.admin.servermgmt.DomainsManager; import com.sun.enterprise.admin.servermgmt.pe.PEDomainsManager; import com.sun.enterprise.universal.i18n.LocalStringsImpl; @@ -49,6 +52,8 @@ import com.sun.enterprise.util.io.DomainDirs; import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import org.glassfish.api.Param; import org.glassfish.api.admin.*; import org.glassfish.hk2.api.PerLookup; @@ -60,16 +65,17 @@ @Service(name = "list-domains") @PerLookup public final class ListDomainsCommand extends LocalDomainCommand { - private static final LocalStringsImpl strings = - new LocalStringsImpl(ListDomainsCommand.class); + + private static final LocalStringsImpl strings + = new LocalStringsImpl(ListDomainsCommand.class); private String domainsRoot = null; - @Param(name="long", shortName="l", optional=true) + @Param(name = "long", shortName = "l", optional = true) boolean longOpt; - - @Param(shortName="h", optional=true, defaultValue="true") + + @Param(shortName = "h", optional = true, defaultValue = "true") boolean header; - + /* * Override the validate method because super.validate() calls initDomain, * and since we don't have a domain name yet, we aren't ready to call that. @@ -92,16 +98,16 @@ protected int executeCommand() throws CommandException, CommandValidationExcepti if (domainsList.length > 0) { if (longOpt) { String headings[] = {"DOMAIN", "ADMIN_HOST", "ADMIN_PORT", "RUNNING", "RESTART_REQUIRED"}; - ColumnFormatter cf = header ? new ColumnFormatter(headings) : - new ColumnFormatter(); + ColumnFormatter cf = header ? new ColumnFormatter(headings) + : new ColumnFormatter(); for (String dn : domainsList) { DomainInfo di = getStatus(dn); - cf.addRow(new Object[] { - dn, - di.adminAddr.getHost(), - di.adminAddr.getPort(), + cf.addRow(new Object[]{ + dn, + di.adminAddr.getHost(), + di.adminAddr.getPort(), di.status, - di.restartRequired + di.restartRequired }); } logger.info(cf.toString()); @@ -109,25 +115,39 @@ protected int executeCommand() throws CommandException, CommandValidationExcepti for (String dn : domainsList) { logger.info(getStatus(dn).statusMsg); } - } - } - else { + } + } else { logger.fine(strings.get("NoDomainsToList")); } - } - catch (Exception ex) { + } catch (Exception ex) { throw new CommandException(ex.getLocalizedMessage()); } return 0; } + protected List getRunningDomains() throws IOException, DomainException, CommandException { + List runningDomains = new ArrayList<>(); + File domainsDirFile = ok(domainDirParam) ? new File(domainDirParam) : DomainDirs.getDefaultDomainsDir(); + DomainConfig domainConfig = new DomainConfig(null, domainsDirFile.getAbsolutePath()); + DomainsManager manager = new PEDomainsManager(); + String[] domainsList = manager.listDomains(domainConfig); + programOpts.setInteractive(false); // no prompting for passwords + for (String domain : domainsList) { + if (getStatus(domain).status) { + runningDomains.add(domain); + } + } + return runningDomains; + } + static class DomainInfo { + public HostAndPort adminAddr; public boolean status; public String statusMsg; public boolean restartRequired; } - + private DomainInfo getStatus(String dn) throws IOException, CommandException { setDomainName(dn); initDomain(); @@ -135,24 +155,22 @@ private DomainInfo getStatus(String dn) throws IOException, CommandException { di.adminAddr = getAdminAddress(); programOpts.setHostAndPort(di.adminAddr); di.status = isThisDAS(getDomainRootDir()); - + if (di.status) { di.statusMsg = strings.get("list.domains.StatusRunning", dn); try { - RemoteCLICommand cmd = - new RemoteCLICommand("_get-restart-required", - programOpts, env); - String restartRequired = - cmd.executeAndReturnOutput("_get-restart-required"); + RemoteCLICommand cmd + = new RemoteCLICommand("_get-restart-required", + programOpts, env); + String restartRequired + = cmd.executeAndReturnOutput("_get-restart-required"); di.restartRequired = Boolean.parseBoolean(restartRequired.trim()); if (di.restartRequired) { di.statusMsg = strings.get("list.domains.StatusRestartRequired", dn); } + } catch (Exception ex) { } - catch (Exception ex) { - } - } - else { + } else { di.statusMsg = strings.get("list.domains.StatusNotRunning", dn); } return di; diff --git a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/cli/StopDomainCommand.java b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/cli/StopDomainCommand.java index 13a195f5c57..2829789dbd6 100644 --- a/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/cli/StopDomainCommand.java +++ b/nucleus/admin/server-mgmt/src/main/java/com/sun/enterprise/admin/servermgmt/cli/StopDomainCommand.java @@ -55,9 +55,11 @@ import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; +import javax.inject.Inject; import org.glassfish.api.Param; import org.glassfish.api.admin.*; import org.glassfish.hk2.api.PerLookup; +import org.glassfish.hk2.api.ServiceLocator; import org.jvnet.hk2.annotations.*; /** @@ -70,6 +72,9 @@ @PerLookup public class StopDomainCommand extends LocalDomainCommand { + @Inject + ServiceLocator serviceLocator; + @Param(name = "domain_name", primary = true, optional = true) private String userArgDomainName; @Param(name = "force", optional = true, defaultValue = "true") @@ -161,8 +166,8 @@ protected int dasNotRunning() throws CommandException { if (kill) { if (isLocal()) { return kill(); - } else // remote. We can NOT kill and we can't ask it to kill itself. - { + } else { + // remote. We can NOT kill and we can't ask it to kill itself. throw new CommandException(Strings.get("StopDomain.dasNotRunningRemotely")); } } @@ -170,63 +175,20 @@ protected int dasNotRunning() throws CommandException { // by definition this is not an error // https://glassfish.dev.java.net/issues/show_bug.cgi?id=8387 if (isLocal()) { + ListDomainsCommand listDomains = serviceLocator.getService(ListDomainsCommand.class); + String runningDomains = ""; try { - logger.warning(Strings.get("StopDomain.dasNotRunning", getDomainRootDir(), getRunningDomains())); - } catch (IOException | DomainException ex) { - Logger.getLogger(StopDomainCommand.class.getName()).log(Level.SEVERE, null, ex); - } - } else { - logger.warning(Strings.get("StopDomain.dasNotRunningRemotely")); - } - // If it has gotten this far, the domain has failed to be stopped and as such the command has failed - return 1; - } - - /** - * Gets the currently running domains. Code lifted with alteration from ListDomainsCommand. - * @return String representation of the currently running domains, with newlines ("\n") appended after each. - * @throws IOException - * @throws DomainException - * @throws CommandException - */ - private String getRunningDomains() throws IOException, DomainException, CommandException { - File domainsDirFile = ok(domainDirParam) ? new File(domainDirParam) : DomainDirs.getDefaultDomainsDir(); - DomainConfig domainConfig = new DomainConfig(null, domainsDirFile.getAbsolutePath()); - DomainsManager manager = new PEDomainsManager(); - String[] domainsList = manager.listDomains(domainConfig); - programOpts.setInteractive(false); // no prompting for passwords - String runningDomains = ""; - if (domainsList.length > 0) { - for (String domain : domainsList) { - ListDomainsCommand.DomainInfo di = getStatus(domain); - if (di.status) { + for (String domain : listDomains.getRunningDomains()) { runningDomains = runningDomains + domain + "\n"; } + } catch(Exception e) { } - } - return runningDomains; - } - - private ListDomainsCommand.DomainInfo getStatus(String dn) throws IOException, CommandException { - setDomainName(dn); - initDomain(); - ListDomainsCommand.DomainInfo di = new ListDomainsCommand.DomainInfo(); - di.adminAddr = getAdminAddress(); - programOpts.setHostAndPort(di.adminAddr); - di.status = isThisDAS(getDomainRootDir()); - - if (di.status) { - di.statusMsg = Strings.get("list.domains.StatusRunning", dn); - RemoteCLICommand cmd = new RemoteCLICommand("_get-restart-required", programOpts, env); - String restartRequired = cmd.executeAndReturnOutput("_get-restart-required"); - di.restartRequired = Boolean.parseBoolean(restartRequired.trim()); - if (di.restartRequired) { - di.statusMsg = Strings.get("list.domains.StatusRestartRequired", dn); - } + logger.warning(Strings.get("StopDomain.dasNotRunning", getDomainRootDir(), runningDomains)); } else { - di.statusMsg = Strings.get("list.domains.StatusNotRunning", dn); + logger.warning(Strings.get("StopDomain.dasNotRunningRemotely")); } - return di; + // If it has gotten this far, the domain has failed to be stopped so the command has failed + return 1; } /**