Return-Path: Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: (qmail 79165 invoked from network); 3 Jul 2006 11:58:07 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 3 Jul 2006 11:58:07 -0000 Received: (qmail 71882 invoked by uid 500); 3 Jul 2006 11:58:06 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 71782 invoked by uid 500); 3 Jul 2006 11:58:06 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 71761 invoked by uid 99); 3 Jul 2006 11:58:05 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 03 Jul 2006 04:58:05 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 03 Jul 2006 04:58:05 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id C20C01A983A; Mon, 3 Jul 2006 04:57:44 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r418750 - in /jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml: AbstractSAXEventGenerator.java DocViewSAXEventGenerator.java SysViewSAXEventGenerator.java Date: Mon, 03 Jul 2006 11:57:44 -0000 To: commits@jackrabbit.apache.org From: jukka@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060703115744.C20C01A983A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: jukka Date: Mon Jul 3 04:57:40 2006 New Revision: 418750 URL: http://svn.apache.org/viewvc?rev=418750&view=rev Log: JCR-367: Explicit xmlns:prefix="namespace" attributes in XML exports. Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/AbstractSAXEventGenerator.java jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/DocViewSAXEventGenerator.java jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/SysViewSAXEventGenerator.java Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/AbstractSAXEventGenerator.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/AbstractSAXEventGenerator.java?rev=418750&r1=418749&r2=418750&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/AbstractSAXEventGenerator.java (original) +++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/AbstractSAXEventGenerator.java Mon Jul 3 04:57:40 2006 @@ -24,6 +24,7 @@ import org.slf4j.LoggerFactory; import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; +import org.xml.sax.helpers.AttributesImpl; import javax.jcr.Node; import javax.jcr.NodeIterator; @@ -189,6 +190,34 @@ continue; } contentHandler.endPrefixMapping(prefix); + } + } + + /** + * Adds explicit xmlns:prefix="uri" attributes to the + * XML top-level element. The effect is the same as setting the + * "http://xml.org/sax/features/namespace-prefixes" + * property on an SAX parser. + * + * @param level level of the current XML element + * @param attributes attributes of the current XML element + * @throws RepositoryException on a repository error + */ + protected void addNamespacePrefixes(int level, AttributesImpl attributes) + throws RepositoryException { + if (level == 0) { + String[] prefixes = session.getNamespacePrefixes(); + for (int i = 0; i < prefixes.length; i++) { + if (prefixes[i].length() > 0 + && !QName.NS_XML_PREFIX.equals(prefixes[i])) { + attributes.addAttribute( + QName.NS_XMLNS_URI, + prefixes[i], + QName.NS_XMLNS_PREFIX + ":" + prefixes[i], + "CDATA", + session.getNamespaceURI(prefixes[i])); + } + } } } Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/DocViewSAXEventGenerator.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/DocViewSAXEventGenerator.java?rev=418750&r1=418749&r2=418750&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/DocViewSAXEventGenerator.java (original) +++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/DocViewSAXEventGenerator.java Mon Jul 3 04:57:40 2006 @@ -132,6 +132,7 @@ // attributes (properties) AttributesImpl attrs = new AttributesImpl(); + addNamespacePrefixes(level, attrs); Iterator iter = props.iterator(); while (iter.hasNext()) { Property prop = (Property) iter.next(); @@ -168,6 +169,7 @@ attrValue.toString()); } } + // start element (node) QName qName = getQName(elemName); contentHandler.startElement(qName.getNamespaceURI(), Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/SysViewSAXEventGenerator.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/SysViewSAXEventGenerator.java?rev=418750&r1=418749&r2=418750&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/SysViewSAXEventGenerator.java (original) +++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/xml/SysViewSAXEventGenerator.java Mon Jul 3 04:57:40 2006 @@ -86,6 +86,7 @@ protected void entering(Node node, int level) throws RepositoryException, SAXException { AttributesImpl attrs = new AttributesImpl(); + addNamespacePrefixes(level, attrs); // name attribute String nodeName; if (node.getDepth() == 0) {