rendered paste bodypublic class ConfigurationParser {
private static final String BRIDGE_CONFIG = "sipxbridge-config/bridge-configuration";
private static final String ITSP_CONFIG = "sipxbridge-config/itsp-account";
/**
* Add the digester rules.
*
* @param digester
*/
private static void addRules(Digester digester) {
digester.addObjectCreate("sipxbridge-config", AccountManagerImpl.class);
digester.addObjectCreate(BRIDGE_CONFIG, BridgeConfiguration.class);
digester.addSetNext(BRIDGE_CONFIG, "setBridgeConfiguration");
digester.addCallMethod(String.format("%s/%s", BRIDGE_CONFIG,
"external-address"), "setExternalAddress", 0);
digester.addCallMethod(String.format("%s/%s", BRIDGE_CONFIG,
"external-port"), "setExternalPort", 0,
new Class[] { Integer.class });
digester.addCallMethod(String.format("%s/%s", BRIDGE_CONFIG,
"local-address"), "setLocalAddress", 0);
digester
.addCallMethod(String.format("%s/%s", BRIDGE_CONFIG,
"local-port"), "setLocalPort", 0,
new Class[] { Integer.class });
digester.addCallMethod(String.format("%s/%s", BRIDGE_CONFIG,
"stun-server-address"), "setStunServerAddress", 0);
digester.addCallMethod(String.format("%s/%s", BRIDGE_CONFIG,
"sipx-proxy-domain"), "setSipxProxyDomain", 0);
digester.addCallMethod(String.format("%s/%s", BRIDGE_CONFIG,
"rtp-port-range"), "setPortRange", 0);
digester.addCallMethod(String.format("%s/%s", BRIDGE_CONFIG,
"music-on-hold-support-enabled"), "setMusicOnHoldSupportEnabled",
0, new Class[] { Boolean.class });
digester.addCallMethod(String.format("%s/%s", BRIDGE_CONFIG,
"log-level"), "setLogLevel", 0);
/*
* ITSP configuration support parameters.
*/
digester.addObjectCreate(ITSP_CONFIG, ItspAccountInfo.class);
digester.addSetNext(ITSP_CONFIG, "addItspAccount");
digester.addCallMethod(String.format("%s/%s", ITSP_CONFIG,
"outbound-proxy"), "setOutboundProxy", 0);
digester.addCallMethod(String.format("%s/%s", ITSP_CONFIG,
"outbound-transport"), "setOutboundTransport", 0);
digester.addCallMethod(String.format("%s/%s", ITSP_CONFIG,
"proxy-domain"), "setProxyDomain", 0);
digester.addCallMethod(String.format("%s/%s", ITSP_CONFIG,
"authentication-realm"), "setAuthenticationRealm", 0);
digester.addCallMethod(
String.format("%s/%s", ITSP_CONFIG, "user-name"),
"setUserName", 0);
digester.addCallMethod(String.format("%s/%s", ITSP_CONFIG, "password"),
"setPassword", 0);
digester.addCallMethod(String.format("%s/%s", ITSP_CONFIG,
"display-name"), "setDisplayName", 0);
digester.addCallMethod(String.format("%s/%s", ITSP_CONFIG,
"use-global-addressing"), "setGlobalAddressingUsed", 0,
new Class[] { Boolean.class });
digester.addCallMethod(
String.format("%s/%s", ITSP_CONFIG, "use-rport"),
"setRportUsed", 0, new Class[] { Boolean.class });
digester.addCallMethod(String.format("%s/%s", ITSP_CONFIG,
"route-inbound-calls-to-auto-attendant"),
"setInboundCallsRoutedToAutoAttendant", 0,
new Class[] { Boolean.class });
digester.addCallMethod(String.format("%s/%s", ITSP_CONFIG,
"route-inbound-calls-to-auto-attendant"),
"setInboundCallsRoutedToAutoAttendant", 0,
new Class[] { Boolean.class });
}
public AccountManagerImpl createAccountManager(String url) {
// Create a Digester instance
Digester digester = new Digester();
digester.setSchema("file:schema/sipxbridge.xsd");
addRules(digester);
// Process the input file.
try {
InputSource inputSource = new InputSource(url);
digester.parse(inputSource);
return (AccountManagerImpl) digester.getRoot();
} catch (java.io.IOException ioe) {
System.out.println("Error reading input file:" + ioe.getMessage());
throw new RuntimeException("Intiialzation exception", ioe);
} catch (org.xml.sax.SAXException se) {
System.out.println("Error parsing input file:" + se.getMessage());
throw new RuntimeException("Intiialzation exception", se);
}
}
}