Return-Path: Delivered-To: apmail-cocoon-cvs-archive@www.apache.org Received: (qmail 89794 invoked from network); 26 Jul 2006 14:20:08 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 26 Jul 2006 14:20:08 -0000 Received: (qmail 7239 invoked by uid 500); 26 Jul 2006 14:20:07 -0000 Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 7185 invoked by uid 500); 26 Jul 2006 14:20:07 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 7168 invoked by uid 99); 26 Jul 2006 14:20:07 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 26 Jul 2006 07:20:07 -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; Wed, 26 Jul 2006 07:20:06 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 74BFA1A981A; Wed, 26 Jul 2006 07:19:46 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r425739 - in /cocoon: branches/BRANCH_2_1_X/src/java/org/apache/cocoon/util/ trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/ trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/... Date: Wed, 26 Jul 2006 14:19:45 -0000 To: cvs@cocoon.apache.org From: cziegeler@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060726141946.74BFA1A981A@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: cziegeler Date: Wed Jul 26 07:19:44 2006 New Revision: 425739 URL: http://svn.apache.org/viewvc?rev=425739&view=rev Log: Excalibur ConfigurationUtil does not support namespaces :(, so let's use our own for now Added: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/util/ConfigurationUtil.java (with props) Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaClassWidgetListenerBuilder.java cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/AbstractJavaValidator.java cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/JavaClassValidatorBuilder.java Added: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/util/ConfigurationUtil.java URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/util/ConfigurationUtil.java?rev=425739&view=auto ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/util/ConfigurationUtil.java (added) +++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/util/ConfigurationUtil.java Wed Jul 26 07:19:44 2006 @@ -0,0 +1,146 @@ +/* + * Copyright 1997-2006 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cocoon.util; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; +import org.apache.avalon.framework.configuration.DefaultConfiguration; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Text; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.w3c.dom.CharacterData; + +/** + * This class is an improved version of the Excalibur ConfigurationUtil class + * to support namespaces in DOMs. + * @since 2.1.10 + * + * @version $Id$ + */ +public class ConfigurationUtil { + /** + * Private constructor to block instantiation. + */ + private ConfigurationUtil() { + } + + /** + * Convert a DOM Element tree into a configuration tree. + * + * @param element the DOM Element + * @return the configuration object + */ + public static Configuration toConfiguration( final Element element ) { + final DefaultConfiguration configuration = + new DefaultConfiguration( element.getLocalName(), element.getPrefix(), element.getNamespaceURI(), element.getPrefix() ); + final NamedNodeMap attributes = element.getAttributes(); + final int length = attributes.getLength(); + for( int i = 0; i < length; i++ ) { + final Node node = attributes.item( i ); + final String name = node.getNodeName(); + final String value = node.getNodeValue(); + configuration.setAttribute( name, value ); + } + + boolean flag = false; + String content = ""; + final NodeList nodes = element.getChildNodes(); + final int count = nodes.getLength(); + for( int i = 0; i < count; i++ ) { + final Node node = nodes.item( i ); + if( node instanceof Element ) { + final Configuration child = toConfiguration( (Element)node ); + configuration.addChild( child ); + } else if( node instanceof CharacterData ) { + final CharacterData data = (CharacterData)node; + content += data.getData(); + flag = true; + } + } + + if( flag ) { + configuration.setValue( content ); + } + + return configuration; + } + + /** + * Convert a configuration tree into a DOM Element tree. + * + * @param configuration the configuration object + * @return the DOM Element + */ + public static Element toElement( final Configuration configuration ) + throws ConfigurationException { + try { + final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setNamespaceAware(true); + final DocumentBuilder builder = factory.newDocumentBuilder(); + final Document document = builder.newDocument(); + + return createElement( document, configuration ); + } catch( final ParserConfigurationException pce ) { + throw new IllegalStateException( pce.toString() ); + } + } + + /** + * Create an DOM {@link Element} from a {@link Configuration} + * object. + * + * @param document the DOM document + * @param configuration the configuration to convert + * @return the DOM Element + */ + private static Element createElement( final Document document, + final Configuration configuration ) + throws ConfigurationException { + final Element element = document.createElementNS( configuration.getNamespace(), configuration.getName() ); + element.setPrefix( configuration.getLocation() ); + final String content = configuration.getValue( null ); + if( null != content ) + { + final Text child = document.createTextNode( content ); + element.appendChild( child ); + } + + final String[] names = configuration.getAttributeNames(); + for( int i = 0; i < names.length; i++ ) + { + final String name = names[ i ]; + final String value = configuration.getAttribute( name, null ); + element.setAttribute( name, value ); + } + final Configuration[] children = configuration.getChildren(); + for( int i = 0; i < children.length; i++ ) + { + final Element child = createElement( document, children[ i ] ); + element.appendChild( child ); + } + return element; + } +} Propchange: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/util/ConfigurationUtil.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/util/ConfigurationUtil.java ------------------------------------------------------------------------------ svn:keywords = Id Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaClassWidgetListenerBuilder.java URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaClassWidgetListenerBuilder.java?rev=425739&r1=425738&r2=425739&view=diff ============================================================================== --- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaClassWidgetListenerBuilder.java (original) +++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaClassWidgetListenerBuilder.java Wed Jul 26 07:19:44 2006 @@ -20,7 +20,7 @@ import org.apache.cocoon.forms.event.WidgetListenerBuilder; import org.apache.cocoon.forms.util.DomHelper; import org.apache.cocoon.util.ClassUtils; -import org.apache.avalon.framework.configuration.ConfigurationUtil; +import org.apache.cocoon.util.ConfigurationUtil; import org.apache.avalon.framework.context.Context; import org.apache.avalon.framework.context.ContextException; import org.apache.avalon.framework.context.Contextualizable; Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/AbstractJavaValidator.java URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/AbstractJavaValidator.java?rev=425739&r1=425738&r2=425739&view=diff ============================================================================== --- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/AbstractJavaValidator.java (original) +++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/AbstractJavaValidator.java Wed Jul 26 07:19:44 2006 @@ -18,10 +18,10 @@ import org.apache.avalon.framework.configuration.Configurable; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; -import org.apache.avalon.framework.configuration.ConfigurationUtil; import org.apache.cocoon.forms.FormsConstants; import org.apache.cocoon.forms.util.DomHelper; import org.apache.cocoon.forms.validation.ValidationError; +import org.apache.cocoon.util.ConfigurationUtil; import org.apache.excalibur.xml.sax.XMLizable; import org.w3c.dom.Element; Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/JavaClassValidatorBuilder.java URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/JavaClassValidatorBuilder.java?rev=425739&r1=425738&r2=425739&view=diff ============================================================================== --- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/JavaClassValidatorBuilder.java (original) +++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/JavaClassValidatorBuilder.java Wed Jul 26 07:19:44 2006 @@ -15,7 +15,6 @@ */ package org.apache.cocoon.forms.validation.impl; -import org.apache.avalon.framework.configuration.ConfigurationUtil; import org.apache.avalon.framework.context.Context; import org.apache.avalon.framework.context.ContextException; import org.apache.avalon.framework.context.Contextualizable; @@ -31,6 +30,7 @@ import org.apache.cocoon.forms.validation.WidgetValidator; import org.apache.cocoon.forms.validation.WidgetValidatorBuilder; import org.apache.cocoon.util.ClassUtils; +import org.apache.cocoon.util.ConfigurationUtil; import org.w3c.dom.Element; /**