package com.ibm.nmon.parser.gc.state;
import com.ibm.nmon.parser.gc.GCParserContext;
final class Initialized extends GCStateWithParent {
Initialized(GCState parent) {
super("initialized", parent);
}
public GCState startElement(GCParserContext context, String elementName, String unparsedAttributes) {
if ("attribute".equals(elementName)) {
// save attributes directly as metadata
context.parseAttributes(unparsedAttributes);
String name = context.getAttribute("name");
String value = context.getAttribute("value");
if (name == null) {
context.logMissingAttribute("name");
}
else if (value == null) {
context.logMissingAttribute("value");
}
else {
context.getData().setMetadata(name, value);
if ("gcPolicy".equals(name)) {
context.setGencon("-Xgcpolicy:gencon".equals(value) || "-Xgcpolicy:balanced".equals(value));
}
}
}
else if ("vmarg".equals(elementName)) {
// parse vmargs and save the values to a single string
context.parseAttributes(unparsedAttributes);
String name = context.getAttribute("name");
if (name == null) {
context.logMissingAttribute("name");
}
else {
String vmargs = context.getData().getMetadata("vmargs");
if (vmargs == null) {
vmargs = name;
}
else {
vmargs += "\n\t" + name;
}
context.getData().setMetadata("vmargs", vmargs);
}
}
return this;
}
@Override
public GCState endElement(GCParserContext context, String elementName) {
if (transitionElement.equals(elementName)) {
return parent;
}
else {
return this;
}
}
}