All pastes #967695 Raw Edit

account manager parser

public text v1 · immutable
·published 2008-04-02 16:17 UTC
rendered paste body
public 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);
        }

    }

}