You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2018/01/16 21:38:49 UTC

svn commit: r1821318 - in /jackrabbit/branches/2.6: ./ jackrabbit-jcr-server/ jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/ jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/jcr/observation/

Author: reschke
Date: Tue Jan 16 21:38:49 2018
New Revision: 1821318

URL: http://svn.apache.org/viewvc?rev=1821318&view=rev
Log:
JCR-4173: Unable to receive observation events when connecting via DavEx (ported to 2.6)

make sure we do not produce broken XML, add a minimal test case

Added:
    jackrabbit/branches/2.6/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/jcr/observation/
      - copied from r1807244, jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/jcr/observation/
Modified:
    jackrabbit/branches/2.6/   (props changed)
    jackrabbit/branches/2.6/jackrabbit-jcr-server/pom.xml
    jackrabbit/branches/2.6/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java

Propchange: jackrabbit/branches/2.6/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jan 16 21:38:49 2018
@@ -1,4 +1,4 @@
 /jackrabbit/branches/2.8:1643783
 /jackrabbit/branches/JCR-2272:1173165-1176545
 /jackrabbit/sandbox/JCR-2415-lucene-3.0:1060860-1064038
-/jackrabbit/trunk:1437334,1437374,1437384,1437618,1437928,1437933,1437963,1438158,1438541,1439296,1439312,1439346,1439768,1439797,1439927,1440059,1440336,1440456,1440908,1440917,1442061,1443652,1443876,1443885,1443943,1444501,1444515,1444654,1444666,1444683,1444755,1445122,1445134,1453907,1460995,1461064,1461137,1461613,1461646,1462115,1462153,1462205,1462211,1465974,1466060,1466085,1466938,1467255,1467363,1468965,1469312,1469799,1469892,1469940,1470573,1470957,1471286,1475718,1478684,1478719,1478757,1479518,1479527,1479533,1479536,1479691,1479809,1479908,1480574,1481964,1483276,1483286,1484440,1484442,1484444,1484727,1487803,1497243,1497492,1497787,1498840,1498850,1499285,1505795,1505907,1505942,1506594,1506877,1508053,1509101,1513144,1516281,1517602,1517627,1519376,1525629,1525633,1526928,1526945,1530005,1535539,1537027,1539030,1539045,1539050,1555885,1556248,1566668-1566669,1582373,1587619,1590030,1590733,1598035,1598058,1603934,1609712,1634584,1680757,1709811,1717599,1729382,173
 2436,1758600,1759865,1761679,1761909,1762422,1763558,1766398,1771741,1773579,1773591,1773745,1779166,1779460,1780208,1786325,1787043,1792193,1793315,1793323,1793327,1793332,1796980,1797209,1797917,1798586,1799429,1802977,1807234,1811667,1814831,1817097
+/jackrabbit/trunk:1437334,1437374,1437384,1437618,1437928,1437933,1437963,1438158,1438541,1439296,1439312,1439346,1439768,1439797,1439927,1440059,1440336,1440456,1440908,1440917,1442061,1443652,1443876,1443885,1443943,1444501,1444515,1444654,1444666,1444683,1444755,1445122,1445134,1453907,1460995,1461064,1461137,1461613,1461646,1462115,1462153,1462205,1462211,1465974,1466060,1466085,1466938,1467255,1467363,1468965,1469312,1469799,1469892,1469940,1470573,1470957,1471286,1475718,1478684,1478719,1478757,1479518,1479527,1479533,1479536,1479691,1479809,1479908,1480574,1481964,1483276,1483286,1484440,1484442,1484444,1484727,1487803,1497243,1497492,1497787,1498840,1498850,1499285,1505795,1505907,1505942,1506594,1506877,1508053,1509101,1513144,1516281,1517602,1517627,1519376,1525629,1525633,1526928,1526945,1530005,1535539,1537027,1539030,1539045,1539050,1555885,1556248,1566668-1566669,1582373,1587619,1590030,1590733,1598035,1598058,1603934,1609712,1634584,1680757,1709811,1717599,1729382,173
 2436,1758600,1759865,1761679,1761909,1762422,1763558,1766398,1771741,1773579,1773591,1773745,1779166,1779460,1780208,1786325,1787043,1792193,1793315,1793323,1793327,1793332,1796980,1797209,1797917,1798586,1799429,1802977,1807234,1807244,1811667,1814831,1817097

Modified: jackrabbit/branches/2.6/jackrabbit-jcr-server/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.6/jackrabbit-jcr-server/pom.xml?rev=1821318&r1=1821317&r2=1821318&view=diff
==============================================================================
--- jackrabbit/branches/2.6/jackrabbit-jcr-server/pom.xml (original)
+++ jackrabbit/branches/2.6/jackrabbit-jcr-server/pom.xml Tue Jan 16 21:38:49 2018
@@ -230,6 +230,11 @@
       <artifactId>logback-classic</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
 </project>

Modified: jackrabbit/branches/2.6/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.6/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java?rev=1821318&r1=1821317&r2=1821318&view=diff
==============================================================================
--- jackrabbit/branches/2.6/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java (original)
+++ jackrabbit/branches/2.6/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java Tue Jan 16 21:38:49 2018
@@ -535,18 +535,8 @@ public class SubscriptionImpl implements
                     log.error("Internal error while retrieving event identifier.", e.getMessage());
                 }
                 // info
-                Element info = DomUtil.addChildElement(eventElem, XML_EVENTINFO, NAMESPACE);
                 try {
-                    Map<?, ?> m = event.getInfo();
-                    for (Map.Entry<?, ?> entry : m.entrySet()) {
-                        String key = entry.getKey().toString();
-                        Object value = entry.getValue();
-                        if (value != null) {
-                            DomUtil.addChildElement(info, key, Namespace.EMPTY_NAMESPACE, value.toString());
-                        } else {
-                            DomUtil.addChildElement(info, key, Namespace.EMPTY_NAMESPACE);
-                        }
-                    }
+                    serializeInfoMap(eventElem, session, event.getInfo());
                 } catch (RepositoryException e) {
                     log.error("Internal error while retrieving event info.", e.getMessage());
                 }
@@ -555,6 +545,33 @@ public class SubscriptionImpl implements
         }
     }
 
+    protected static void serializeInfoMap(Element eventElem, Session session, Map<?, ?> map) {
+        // info
+        Element info = DomUtil.addChildElement(eventElem, XML_EVENTINFO, NAMESPACE);
+        Map<?, ?> m = map;
+        for (Map.Entry<?, ?> entry : m.entrySet()) {
+            try {
+                String key = entry.getKey().toString();
+                Namespace ns = Namespace.EMPTY_NAMESPACE;
+                int colon = key.indexOf(':');
+                if (colon >= 0) {
+                    String prefix = key.substring(0, colon);
+                    String localname = key.substring(colon + 1);
+                    ns = Namespace.getNamespace(prefix, session.getNamespaceURI(prefix));
+                    key = localname;
+                }
+                Object value = entry.getValue();
+                if (value != null) {
+                    DomUtil.addChildElement(info, key, ns, value.toString());
+                } else {
+                    DomUtil.addChildElement(info, key, ns);
+                }
+            } catch (RepositoryException nse) {
+                log.error("Internal error while getting namespaceUri, info map field skipped for {}", entry.getKey());
+            }
+        }
+    }    
+    
     //----------------------------< TransactionEvent >------------------------
 
     /**