Skip to content

Commit

Permalink
PAYARA-2113 Reworked on Matts advice to rely less on shaded code and …
Browse files Browse the repository at this point in the history
…more on HK2 magic
  • Loading branch information
michaelranaldo committed Nov 21, 2017
1 parent 4346205 commit deece11
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 82 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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.
Expand All @@ -92,67 +98,79 @@ 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());
} else {
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<String> getRunningDomains() throws IOException, DomainException, CommandException {
List<String> 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();
DomainInfo di = new DomainInfo();
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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.*;

/**
Expand All @@ -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")
Expand Down Expand Up @@ -161,72 +166,29 @@ 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"));
}
}

// 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;
}

/**
Expand Down

0 comments on commit deece11

Please sign in to comment.