Author: ashish
Date: Sat Sep 17 13:38:23 2016 New Revision: 1761234 URL: http://svn.apache.org/viewvc?rev=1761234&view=rev Log: Improved: Enhance Event Handler to support an transaction-timeout attribute in the <event> element. (OFBIZ-8160) Thanks: Ravi for the contribution. Thanks Jacopo for your comment, it was very helpful. Modified: ofbiz/trunk/framework/webapp/dtd/site-conf.xsd ofbiz/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java ofbiz/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/event/JavaEventHandler.java Modified: ofbiz/trunk/framework/webapp/dtd/site-conf.xsd URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/dtd/site-conf.xsd?rev=1761234&r1=1761233&r2=1761234&view=diff ============================================================================== --- ofbiz/trunk/framework/webapp/dtd/site-conf.xsd (original) +++ ofbiz/trunk/framework/webapp/dtd/site-conf.xsd Sat Sep 17 13:38:23 2016 @@ -470,6 +470,14 @@ under the License. </xs:restriction> </xs:simpleType> </xs:attribute> + <xs:attribute name="transaction-timeout" type="xs:int" default="0"> + <xs:annotation> + <xs:documentation> + Defines the timeout for the transaction, in seconds. + Defaults to the value set in the TransactionFactory being used (typically 60 seconds). + </xs:documentation> + </xs:annotation> + </xs:attribute> </xs:attributeGroup> <xs:element name="response"> <xs:annotation> Modified: ofbiz/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java?rev=1761234&r1=1761233&r2=1761234&view=diff ============================================================================== --- ofbiz/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java (original) +++ ofbiz/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java Sat Sep 17 13:38:23 2016 @@ -503,6 +503,7 @@ public class ConfigXMLReader { public String path; public String invoke; public boolean globalTransaction = true; + public int transactionTimeout; public Metrics metrics = null; public Event(Element eventElement) { @@ -510,6 +511,7 @@ public class ConfigXMLReader { this.path = eventElement.getAttribute("path"); this.invoke = eventElement.getAttribute("invoke"); this.globalTransaction = !"false".equals(eventElement.getAttribute("global-transaction")); + this.transactionTimeout = Integer.valueOf(eventElement.getAttribute("transaction-timeout")); // Get metrics. Element metricsElement = UtilXml.firstChildElement(eventElement, "metric"); if (metricsElement != null) { Modified: ofbiz/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/event/JavaEventHandler.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/event/JavaEventHandler.java?rev=1761234&r1=1761233&r2=1761234&view=diff ============================================================================== --- ofbiz/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/event/JavaEventHandler.java (original) +++ ofbiz/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/event/JavaEventHandler.java Sat Sep 17 13:38:23 2016 @@ -77,10 +77,10 @@ public class JavaEventHandler implements Debug.logVerbose("*[[Event invocation]]*", module); Object[] params = new Object[] {request, response}; - return invoke(event.path, event.invoke, eventClass, paramTypes, params); + return invoke(event.path, event.invoke, eventClass, paramTypes, params, event.transactionTimeout); } - private String invoke(String eventPath, String eventMethod, Class<?> eventClass, Class<?>[] paramTypes, Object[] params) throws EventHandlerException { + private String invoke(String eventPath, String eventMethod, Class<?> eventClass, Class<?>[] paramTypes, Object[] params, int transactionTimeout) throws EventHandlerException { boolean beganTransaction = false; if (eventClass == null) { throw new EventHandlerException("Error invoking event, the class " + eventPath + " was not found"); @@ -91,7 +91,11 @@ public class JavaEventHandler implements Debug.logVerbose("[Processing]: JAVA Event", module); try { - beganTransaction = TransactionUtil.begin(); + if (transactionTimeout > 0) { + beganTransaction = TransactionUtil.begin(transactionTimeout); + } else { + beganTransaction = TransactionUtil.begin(); + } Method m = eventClass.getMethod(eventMethod, paramTypes); String eventReturn = (String) m.invoke(null, params); |
Free forum by Nabble | Edit this page |