1 17 package org.apache.sandesha.util; 18 19 23 24 25 import org.apache.axis.components.logger.LogFactory; 26 import org.apache.commons.logging.Log; 27 import org.apache.sandesha.Constants; 28 import org.w3c.dom.*; 29 30 import javax.xml.parsers.DocumentBuilder ; 31 import javax.xml.parsers.DocumentBuilderFactory ; 32 import java.io.InputStream ; 33 34 35 public class PolicyLoader { 36 37 private static final Log log = LogFactory.getLog(PolicyLoader.class.getName()); 38 39 private long inactivityTimeout; 40 private long baseRetransmissionInterval; 41 private long acknowledgementInterval; 42 private String exponentialBackoff; 43 private String binaryBackOff; 44 45 private DocumentBuilderFactory factory; 46 private DocumentBuilder builder; 47 private Document document; 48 49 private static PolicyLoader instance; 50 private static boolean policyInstance = false; 51 52 private Element rootNodeElement; 53 54 private PolicyLoader() { 55 helper(); 56 policyInstance = true; 57 } 58 59 public static PolicyLoader getInstance() { 60 if (policyInstance == false) 61 return instance = new PolicyLoader(); 62 else 63 return instance; 64 } 65 66 67 public long getInactivityTimeout() { 68 69 if (inactivityTimeout == 0) 70 return Constants.INACTIVITY_TIMEOUT; 71 else 72 return inactivityTimeout; 73 } 74 75 public long getBaseRetransmissionInterval() { 76 if (baseRetransmissionInterval == 0) 77 return Constants.RETRANSMISSION_INTERVAL; 78 else 79 return baseRetransmissionInterval; 80 } 81 82 public long getAcknowledgementInterval() { 83 if (acknowledgementInterval == 0) 84 return Constants.ACKNOWLEDGEMENT_INTERVAL; 85 else 86 return acknowledgementInterval; 87 } 88 89 public String getExponentialBackoff() { 90 return exponentialBackoff; 91 } 92 93 public void helper() { 94 init(); 95 try { 96 inactivityTimeout = 97 getAttributeValue(Constants.WSRMPolicy.WSRM, Constants.WSRMPolicy.INA_TIMEOUT); 98 baseRetransmissionInterval = getAttributeValue(Constants.WSRMPolicy.WSRM, 99 Constants.WSRMPolicy.BASE_TX_INTERVAL); 100 acknowledgementInterval = 101 getAttributeValue(Constants.WSRMPolicy.WSRM, Constants.WSRMPolicy.ACK_INTERVAL); 102 exponentialBackoff = getExpBackoffInterval(Constants.WSRMPolicy.WSRM, 103 Constants.WSRMPolicy.EXP_BACKOFF); 104 binaryBackOff = geBinaryBackoffInterval(Constants.WSRMPolicy.WSRM, 105 Constants.WSRMPolicy.BIN_BACKOFF); 106 } catch (Exception e) { 107 log.error(e); 108 } 109 } 110 111 private String geBinaryBackoffInterval(String namespaceURI, String elementName) { 112 String name = null; 113 NodeList list = rootNodeElement.getElementsByTagNameNS(namespaceURI, elementName); 114 if (list != null) { 115 Node node = list.item(0); 116 if (node != null) 117 name = list.item(0).getLocalName(); 118 } 119 return name; 120 } 121 122 private long getAttributeValue(String namespaceURI, String elementName) { 123 NodeList list = rootNodeElement.getElementsByTagNameNS(namespaceURI, elementName); 124 NamedNodeMap map = list.item(0).getAttributes(); 125 Attr att = (Attr) map.item(0); 126 String value = att.getNodeValue(); 127 return Long.parseLong(value.trim()); 128 129 } 130 131 private String getExpBackoffInterval(String namespaceURI, String elementName) { 132 String name = null; 133 NodeList list = rootNodeElement.getElementsByTagNameNS(namespaceURI, elementName); 134 if (list != null) { 135 Node node = list.item(0); 136 if (node != null) 137 name = list.item(0).getLocalName(); 138 } 139 return name; 140 } 141 142 private void init() { 143 try { 144 factory = DocumentBuilderFactory.newInstance(); 145 factory.setNamespaceAware(true); 146 builder = factory.newDocumentBuilder(); 147 InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(Constants.ClientProperties.WSRM_POLICY_FILE); 148 149 if (in != null) { 150 document = builder.parse(in); 151 rootNodeElement = document.getDocumentElement(); 152 } else 153 log.error("No WSRMPolicy.xml Found"); 154 } catch (Exception e) { 155 log.error(e); 156 } 157 } 158 159 160 public String getBinaryBackOff() { 161 helper(); 162 return binaryBackOff; 163 164 } 165 } 166 | Popular Tags |