/** * */ package org.diirt.support.jms; import java.io.InputStream; import java.util.logging.Level; import java.util.logging.Logger; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathFactory; import org.diirt.datasource.DataSourceConfiguration; import org.w3c.dom.Document; /** * Configuration for {@link JMSDatasource} * * @author Kunal Shroff * */ public class JMSDataSourceConfiguration extends DataSourceConfiguration<JMSDatasource> { private String brokerUrl = "tcp://localhost:61616?jms.prefetchPolicy.all=1000"; @Override public JMSDataSourceConfiguration read(InputStream input) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(input); XPathFactory xpathFactory = XPathFactory.newInstance(); XPath xPath = xpathFactory.newXPath(); String ver = xPath.evaluate("/jms/@version", document); if (!ver.equals("1")) { throw new IllegalArgumentException("Unsupported version " + ver); } String monitorMask = xPath.evaluate("/jms/dataSourceOptions/@brokerURL", document); if (monitorMask != null && !monitorMask.isEmpty()) { this.brokerUrl = monitorMask; }else{ Logger.getLogger(JMSDataSourceConfiguration.class.getName()).log(Level.FINEST, "Couldn't load brokerURL from jms file configuration"); } } catch (Exception e) { Logger.getLogger(JMSDataSourceConfiguration.class.getName()).log(Level.FINEST, "Couldn't load file configuration", e); throw new IllegalArgumentException("Couldn't load file configuration", e); } return this; } @Override public JMSDatasource create() { return new JMSDatasource(this); } public String getBrokerUrl() { return brokerUrl; } }