public FirewallService getResult() { try { return builder.build(); } finally { builder = FirewallService.builder(); } }
/** @author Kedar Dave */ public class FirewallServiceHandler extends ParseSax.HandlerWithResult<FirewallService> { protected StringBuilder currentText = new StringBuilder(); private FirewallRuleHandler firewallRuleHandler; private FirewallService.Builder builder = FirewallService.builder(); boolean inFirewallService; boolean inFirewallRule; @Inject public FirewallServiceHandler(FirewallRuleHandler firewallRuleHandler) { this.firewallRuleHandler = firewallRuleHandler; } public FirewallService getResult() { try { return builder.build(); } finally { builder = FirewallService.builder(); } } public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXException { if (equalsOrSuffix(qName, "FirewallService")) { inFirewallService = true; } else if (equalsOrSuffix(qName, "FirewallRule")) { inFirewallRule = true; firewallRuleHandler.startElement(uri, localName, qName, attrs); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if (equalsOrSuffix(qName, "FirewallService")) { inFirewallService = false; } else if (equalsOrSuffix(qName, "FirewallRule")) { builder.firewallRule(firewallRuleHandler.getResult()); inFirewallRule = false; } else if (equalsOrSuffix(qName, "isEnabled")) { if (inFirewallService) { String current = currentOrNull(currentText); if (current != null) { builder.isEnabled(Boolean.parseBoolean(current)); } } } if (inFirewallRule) { firewallRuleHandler.endElement(uri, localName, qName); } currentText = new StringBuilder(); } @Override public void characters(char ch[], int start, int length) { currentText.append(ch, start, length); firewallRuleHandler.characters(ch, start, length); } }