You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by da...@apache.org on 2013/11/03 09:23:38 UTC

[1/2] git commit: AMQ-3350: Fixed chat web demo which may swallow first message. Thanks to Ken Seiss for the patch.

Updated Branches:
  refs/heads/trunk 48d615d31 -> a6c14b418


AMQ-3350: Fixed chat web demo which may swallow first message. Thanks to Ken Seiss for the patch.


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/5907459f
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/5907459f
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/5907459f

Branch: refs/heads/trunk
Commit: 5907459fc341008b4310a5f66170e373c14cff01
Parents: 48d615d
Author: Claus Ibsen <cl...@gmail.com>
Authored: Sun Nov 3 08:53:36 2013 +0100
Committer: Claus Ibsen <cl...@gmail.com>
Committed: Sun Nov 3 08:53:36 2013 +0100

----------------------------------------------------------------------
 activemq-web-demo/src/main/webapp/js/amq.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/5907459f/activemq-web-demo/src/main/webapp/js/amq.js
----------------------------------------------------------------------
diff --git a/activemq-web-demo/src/main/webapp/js/amq.js b/activemq-web-demo/src/main/webapp/js/amq.js
index 533cbe3..2d7cf6b 100644
--- a/activemq-web-demo/src/main/webapp/js/amq.js
+++ b/activemq-web-demo/src/main/webapp/js/amq.js
@@ -149,7 +149,7 @@ org.activemq.Amq = function() {
 		if(sessionInitializedCallback) {
 			sessionInitializedCallback();
 		}
-		sendPoll();
+		pollHandler(data);
 	}
 
 	var sendPoll = function() {


[2/2] git commit: AMQ-2536: Default xpath selector using xalan now uses pre compiled expressions which is faster. Also avoids previous issues with swalling exceptions if xalan is not in the classpath.

Posted by da...@apache.org.
AMQ-2536: Default xpath selector using xalan now uses pre compiled expressions which is faster. Also avoids previous issues with swalling exceptions if xalan is not in the classpath.


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/a6c14b41
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/a6c14b41
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/a6c14b41

Branch: refs/heads/trunk
Commit: a6c14b41814552152df335cb7f811088eb7eb160
Parents: 5907459
Author: Claus Ibsen <cl...@gmail.com>
Authored: Sun Nov 3 09:24:34 2013 +0100
Committer: Claus Ibsen <cl...@gmail.com>
Committed: Sun Nov 3 09:24:34 2013 +0100

----------------------------------------------------------------------
 .../activemq/filter/JAXPXPathEvaluator.java     |  9 ++-
 .../activemq/filter/XalanXPathEvaluator.java    | 85 +++++++-------------
 2 files changed, 38 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/a6c14b41/activemq-broker/src/main/java/org/apache/activemq/filter/JAXPXPathEvaluator.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/filter/JAXPXPathEvaluator.java b/activemq-broker/src/main/java/org/apache/activemq/filter/JAXPXPathEvaluator.java
index 73098f5..0ce5055 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/filter/JAXPXPathEvaluator.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/filter/JAXPXPathEvaluator.java
@@ -32,9 +32,11 @@ import org.xml.sax.InputSource;
 public class JAXPXPathEvaluator implements XPathExpression.XPathEvaluator {
 
     private static final XPathFactory FACTORY = XPathFactory.newInstance();
-    private javax.xml.xpath.XPathExpression expression;
+    private final javax.xml.xpath.XPathExpression expression;
+    private final String xpathExpression;
 
     public JAXPXPathEvaluator(String xpathExpression) {
+        this.xpathExpression = xpathExpression;
         try {
             XPath xpath = FACTORY.newXPath();
             expression = xpath.compile(xpathExpression);
@@ -73,4 +75,9 @@ public class JAXPXPathEvaluator implements XPathExpression.XPathEvaluator {
             return false;
         }
     }
+
+    @Override
+    public String toString() {
+        return xpathExpression;
+    }
 }

http://git-wip-us.apache.org/repos/asf/activemq/blob/a6c14b41/activemq-broker/src/main/java/org/apache/activemq/filter/XalanXPathEvaluator.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/filter/XalanXPathEvaluator.java b/activemq-broker/src/main/java/org/apache/activemq/filter/XalanXPathEvaluator.java
index ffb96fa..1ea092f 100755
--- a/activemq-broker/src/main/java/org/apache/activemq/filter/XalanXPathEvaluator.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/filter/XalanXPathEvaluator.java
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.activemq.filter;
 
 import java.io.StringReader;
@@ -22,33 +21,38 @@ import java.io.StringReader;
 import javax.jms.BytesMessage;
 import javax.jms.JMSException;
 import javax.jms.TextMessage;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.traversal.NodeIterator;
-import org.xml.sax.InputSource;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
 
 import org.apache.activemq.command.Message;
 import org.apache.activemq.util.ByteArrayInputStream;
-import org.apache.xpath.CachedXPathAPI;
-import org.apache.xpath.objects.XObject;
 
+import org.xml.sax.InputSource;
 
 public class XalanXPathEvaluator implements XPathExpression.XPathEvaluator {
 
-    private final String xpath;
+    private static final XPathFactory FACTORY = XPathFactory.newInstance();
+    private final javax.xml.xpath.XPathExpression expression;
+    private final String xpathExpression;
 
-    public XalanXPathEvaluator(String xpath) {
-        this.xpath = xpath;
+    public XalanXPathEvaluator(String xpathExpression) {
+        this.xpathExpression = xpathExpression;
+        try {
+            XPath xpath = FACTORY.newXPath();
+            expression = xpath.compile(xpathExpression);
+        } catch (XPathExpressionException e) {
+            throw new RuntimeException("Invalid XPath expression: " + xpathExpression);
+        }
     }
 
-    public boolean evaluate(Message m) throws JMSException {
-        if (m instanceof TextMessage) {
-            String text = ((TextMessage)m).getText();
+    public boolean evaluate(Message message) throws JMSException {
+        if (message instanceof TextMessage) {
+            String text = ((TextMessage)message).getText();
             return evaluate(text);
-        } else if (m instanceof BytesMessage) {
-            BytesMessage bm = (BytesMessage)m;
+        } else if (message instanceof BytesMessage) {
+            BytesMessage bm = (BytesMessage)message;
             byte data[] = new byte[(int)bm.getBodyLength()];
             bm.readBytes(data);
             return evaluate(data);
@@ -58,24 +62,9 @@ public class XalanXPathEvaluator implements XPathExpression.XPathEvaluator {
 
     private boolean evaluate(byte[] data) {
         try {
-
             InputSource inputSource = new InputSource(new ByteArrayInputStream(data));
-
-            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-            factory.setNamespaceAware(true);
-            DocumentBuilder dbuilder = factory.newDocumentBuilder();
-            Document doc = dbuilder.parse(inputSource);
-            
-            CachedXPathAPI cachedXPathAPI = new CachedXPathAPI();
-            XObject result = cachedXPathAPI.eval(doc, xpath);
-            if (result.bool())
-            	return true;
-            else {
-            	NodeIterator iterator = cachedXPathAPI.selectNodeIterator(doc, xpath);
-            	return (iterator.nextNode() != null);
-            }  
-
-        } catch (Throwable e) {
+            return ((Boolean)expression.evaluate(inputSource, XPathConstants.BOOLEAN)).booleanValue();
+        } catch (XPathExpressionException e) {
             return false;
         }
     }
@@ -83,28 +72,14 @@ public class XalanXPathEvaluator implements XPathExpression.XPathEvaluator {
     private boolean evaluate(String text) {
         try {
             InputSource inputSource = new InputSource(new StringReader(text));
-
-            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-            factory.setNamespaceAware(true);
-            DocumentBuilder dbuilder = factory.newDocumentBuilder();
-            Document doc = dbuilder.parse(inputSource);
-
-            //An XPath expression could return a true or false value instead of a node.
-            //eval() is a better way to determine the boolean value of the exp.
-            //For compliance with legacy behavior where selecting an empty node returns true,
-            //selectNodeIterator is attempted in case of a failure.
-            
-            CachedXPathAPI cachedXPathAPI = new CachedXPathAPI();
-            XObject result = cachedXPathAPI.eval(doc, xpath);
-            if (result.bool())
-            	return true;
-            else {
-            	NodeIterator iterator = cachedXPathAPI.selectNodeIterator(doc, xpath);
-            	return (iterator.nextNode() != null);
-            }    	
-            
-        } catch (Throwable e) {
+            return ((Boolean)expression.evaluate(inputSource, XPathConstants.BOOLEAN)).booleanValue();
+        } catch (XPathExpressionException e) {
             return false;
         }
     }
+
+    @Override
+    public String toString() {
+        return xpathExpression;
+    }
 }