void addToOptions(JvmElement jvmElement, List<String> command) { String heap = jvmElement.getHeapSize(); String maxHeap = jvmElement.getMaxHeap(); // FIXME not the correct place to establish defaults if (maxHeap == null && heap != null) { maxHeap = heap; } if (heap == null && maxHeap != null) { heap = maxHeap; } addPermGen(jvmElement, command); // Add to command if (heap != null) { command.add("-Xms" + heap); } if (maxHeap != null) { command.add("-Xmx" + maxHeap); } if (jvmElement.getStack() != null) { command.add("-Xss" + jvmElement.getStack()); } if (jvmElement.getAgentPath() != null) { command.add("-agentpath:" + jvmElement.getAgentPath()); } if (jvmElement.getAgentLib() != null) { command.add("-agentlib:" + jvmElement.getAgentLib()); } if (jvmElement.getJavaagent() != null) { command.add("-javaagent:" + jvmElement.getJavaagent()); } if (jvmElement.isDebugEnabled() != null && jvmElement.isDebugEnabled() && jvmElement.getDebugOptions() != null) { command.add(jvmElement.getDebugOptions()); } List<String> options = jvmElement.getJvmOptions().getOptions(); if (options.size() > 0) { String jvmName = jvmElement.getName(); for (String option : options) { if (!checkOption( heap != null && option.startsWith("-Xms"), jvmName, option, Element.HEAP.toString())) { continue; } if (!checkOption( maxHeap != null && option.startsWith("-Xmx"), jvmName, option, Element.HEAP.toString())) { continue; } if (!checkOption( jvmElement.getStack() != null && option.startsWith("-Xss"), jvmName, option, Element.STACK.toString())) { continue; } if (!checkOption( jvmElement.isDebugEnabled() != null && jvmElement.isDebugEnabled() && jvmElement.getDebugOptions() != null && (option.startsWith("-Xrunjdwp") || option.startsWith("-agentlib:jdwp")), jvmName, option, Attribute.DEBUG_OPTIONS.toString())) { continue; } if (!checkOption( jvmElement.getAgentPath() != null && option.startsWith("-agentpath:"), jvmName, option, Element.AGENT_PATH.toString())) { continue; } if (!checkOption( jvmElement.getAgentLib() != null && option.startsWith("-agentlib:"), jvmName, option, Element.AGENT_LIB.toString())) { continue; } if (!checkOption( jvmElement.getAgentLib() != null && option.startsWith("-javaagent:"), jvmName, option, Element.AGENT_LIB.toString())) { continue; } if (!checkOption( jvmElement.getJavaagent() != null && option.startsWith("-Xmx"), jvmName, option, Element.JAVA_AGENT.toString())) { continue; } if (!checkOption( jvmElement.getJavaagent() != null && option.startsWith("-XX:PermSize"), jvmName, option, Element.PERMGEN.toString())) { continue; } if (!checkOption( jvmElement.getJavaagent() != null && option.startsWith("-XX:MaxPermSize"), jvmName, option, Element.PERMGEN.toString())) { continue; } command.add(option); } } }