You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bi...@apache.org on 2008/05/17 17:31:10 UTC

svn commit: r657376 - in /cxf/trunk/rt/databinding/aegis/src: main/java/org/apache/cxf/aegis/ main/java/org/apache/cxf/aegis/type/ main/java/org/apache/cxf/aegis/type/basic/ main/java/org/apache/cxf/aegis/type/java5/ test/java/org/apache/cxf/aegis/ tes...

Author: bimargulies
Date: Sat May 17 08:31:09 2008
New Revision: 657376

URL: http://svn.apache.org/viewvc?rev=657376&view=rev
Log:
Make attributes unqualified by defaul in Aegis, etc.

Added:
    cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/QualificationTest.java   (with props)
Modified:
    cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java
    cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/TypeCreationOptions.java
    cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java
    cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanTypeInfo.java
    cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/XMLBeanTypeInfo.java
    cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/java5/AnnotatedTypeInfo.java
    cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/java5/Java5TypeCreator.java
    cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java
    cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/BeanTest.java
    cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/AnnotatedTypeTest.java
    cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/JaxbTypeTest.java
    cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/XFireTypeTest.java

Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java?rev=657376&r1=657375&r2=657376&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java Sat May 17 08:31:09 2008
@@ -23,7 +23,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import javax.xml.bind.annotation.XmlNsForm;
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
@@ -90,9 +89,6 @@
     private boolean mtomUseXmime;
     // this URI goes into the type map.
     private String mappingNamespaceURI;
-    private XmlNsForm elementForm = XmlNsForm.QUALIFIED;
-    private XmlNsForm attributeForm = XmlNsForm.QUALIFIED;
-    
     /**
      * Construct a context.
      */
@@ -132,7 +128,6 @@
      * @param mappingNamespaceURI URI to select mappings based on the encoding.
      */
     public void initialize() {
-        // The use of the XSD URI in the mapping is, MAGIC. 
         // allow spring config of an alternative mapping.
         if (configuration == null) {
             configuration = new TypeCreationOptions();
@@ -140,6 +135,7 @@
         if (typeMapping == null) {
             boolean defaultNillable = configuration.isDefaultNillable();
             TypeMapping baseTM = DefaultTypeMapping.createDefaultTypeMapping(defaultNillable, mtomUseXmime);
+            // The use of the XSD URI in the mapping is, MAGIC. 
             if (mappingNamespaceURI == null) {
                 mappingNamespaceURI = SOAPConstants.XSD;
             }
@@ -413,37 +409,4 @@
     public void setMappingNamespaceURI(String mappingNamespaceURI) {
         this.mappingNamespaceURI = mappingNamespaceURI;
     }
-
-    /**
-     * The form of elements. 
-     * @return Returns the elementForm.
-     */
-    public XmlNsForm getElementForm() {
-        return elementForm;
-    }
-
-    /**
-     * The form of elements.
-     * @param elementForm The elementForm to set.
-     */
-    public void setElementForm(XmlNsForm elementForm) {
-        this.elementForm = elementForm;
-    }
-
-    /**
-     * The form of attributes. 
-     * @return Returns the attributeForm.
-     */
-    public XmlNsForm getAttributeForm() {
-        return attributeForm;
-    }
-
-    /**
-     * The form for attributes.
-     * @param attributeForm The attributeForm to set.
-     */
-    public void setAttributeForm(XmlNsForm attributeForm) {
-        this.attributeForm = attributeForm;
-    }
-
 }

Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/TypeCreationOptions.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/TypeCreationOptions.java?rev=657376&r1=657375&r2=657376&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/TypeCreationOptions.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/TypeCreationOptions.java Sat May 17 08:31:09 2008
@@ -37,6 +37,8 @@
     private boolean defaultExtensibleAttributes;
     private boolean defaultNillable = true;
     private int defaultMinOccurs;
+    private boolean qualifyElements = true;
+    private boolean qualifyAttributes;
 
     public TypeCreationOptions() {
         super();
@@ -90,4 +92,30 @@
         this.defaultNillable = defaultNillable;
     }
 
+    /** * @return Returns the qualifyElements.
+     */
+    public boolean isQualifyElements() {
+        return qualifyElements;
+    }
+
+    /**
+     * @param qualifyElements The qualifyElements to set.
+     */
+    public void setQualifyElements(boolean qualifyElements) {
+        this.qualifyElements = qualifyElements;
+    }
+
+    /** * @return Returns the qualifyAttributes.
+     */
+    public boolean isQualifyAttributes() {
+        return qualifyAttributes;
+    }
+
+    /**
+     * @param qualifyAttributes The qualifyAttributes to set.
+     */
+    public void setQualifyAttributes(boolean qualifyAttributes) {
+        this.qualifyAttributes = qualifyAttributes;
+    }
+
 }

Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java?rev=657376&r1=657375&r2=657376&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java Sat May 17 08:31:09 2008
@@ -529,7 +529,7 @@
     }
 
     private String getNameWithPrefix(Element root, String nameNS, String localName) {
-        if (!nameNS.equals(getSchemaType().getNamespaceURI())) {
+        if (!"".equals(nameNS) && !nameNS.equals(getSchemaType().getNamespaceURI())) {
             Element rootElement = (Element)root.getParent();
             String prefix = null;
             if (rootElement != null) { // can happen with doc/lit/bare

Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanTypeInfo.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanTypeInfo.java?rev=657376&r1=657375&r2=657376&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanTypeInfo.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanTypeInfo.java Sat May 17 08:31:09 2008
@@ -39,30 +39,20 @@
 
 public class BeanTypeInfo {
     private Map<QName, QName> mappedName2typeName = new HashMap<QName, QName>();
-
     private Map<QName, String> mappedName2pdName = new HashMap<QName, String>();
-
     private Map<QName, Type> mappedName2type = new HashMap<QName, Type>();
-
     private Class<?> beanClass;
-
     private List<QName> attributes = new ArrayList<QName>();
-
     private List<QName> elements = new ArrayList<QName>();
-
     private PropertyDescriptor[] descriptors;
-
     private TypeMapping typeMapping;
-
     private volatile boolean initialized;
-
     private String defaultNamespace;
-
     private int minOccurs;
-
     private boolean nillable = true;
-
     private boolean isExtension;
+    private boolean qualifyAttributes;
+    private boolean qualifyElements = true;
 
     /**
      * extensibleElements means adding xs:any to WSDL Complex Type Definition
@@ -138,9 +128,9 @@
         String name = pd.getName();
 
         if (isAttribute(pd)) {
-            mapAttribute(name, createMappedName(pd));
+            mapAttribute(name, createMappedName(pd, qualifyAttributes));
         } else if (isElement(pd)) {
-            mapElement(name, createMappedName(pd));
+            mapElement(name, createMappedName(pd, qualifyElements));
         }
     }
 
@@ -245,8 +235,12 @@
      * @param desc
      * @return
      */
-    protected QName createMappedName(PropertyDescriptor desc) {
-        return new QName(getDefaultNamespace(), desc.getName());
+    protected QName createMappedName(PropertyDescriptor desc, boolean qualified) {
+        if (qualified) {
+            return new QName(getDefaultNamespace(), desc.getName());
+        } else {
+            return new QName(null, desc.getName());
+        }
     }
 
     public void mapAttribute(String property, QName mappedName) {
@@ -433,4 +427,30 @@
         return isExtension;
     }
 
+    /** * @return Returns the qualifyAttributes.
+     */
+    public boolean isQualifyAttributes() {
+        return qualifyAttributes;
+    }
+
+    /**
+     * @param qualifyAttributes The qualifyAttributes to set.
+     */
+    public void setQualifyAttributes(boolean qualifyAttributes) {
+        this.qualifyAttributes = qualifyAttributes;
+    }
+
+    /** * @return Returns the qualifyElements.
+     */
+    public boolean isQualifyElements() {
+        return qualifyElements;
+    }
+
+    /**
+     * @param qualifyElements The qualifyElements to set.
+     */
+    public void setQualifyElements(boolean qualifyElements) {
+        this.qualifyElements = qualifyElements;
+    }
+
 }

Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/XMLBeanTypeInfo.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/XMLBeanTypeInfo.java?rev=657376&r1=657375&r2=657376&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/XMLBeanTypeInfo.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/XMLBeanTypeInfo.java Sat May 17 08:31:09 2008
@@ -72,15 +72,31 @@
             LOG.debug("Found mapping for property " + pd.getName());
 
             style = e.getAttributeValue("style");
-            mappedName = NamespaceHelper.createQName(e, e.getAttributeValue("mappedName"),
-                                                     getDefaultNamespace());
         }
 
         if (style == null) {
             style = "element";
         }
+        
+        boolean element = "element".equals(style);
+        boolean qualify;
+        if (element) {
+            qualify = isQualifyElements();
+        } else {
+            qualify = isQualifyAttributes();
+        }
+        String namespace = null;
+        if (qualify) {
+            namespace = getDefaultNamespace();
+        }
+        
+        if (e != null) {
+            mappedName = NamespaceHelper.createQName(e, e.getAttributeValue("mappedName"),
+                                                     namespace);
+        }
+
         if (mappedName == null) {
-            mappedName = createMappedName(pd);
+            mappedName = createMappedName(pd, qualify);
         }
 
         if (e != null) {

Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/java5/AnnotatedTypeInfo.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/java5/AnnotatedTypeInfo.java?rev=657376&r1=657375&r2=657376&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/java5/AnnotatedTypeInfo.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/java5/AnnotatedTypeInfo.java Sat May 17 08:31:09 2008
@@ -23,6 +23,7 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.cxf.aegis.type.TypeCreationOptions;
 import org.apache.cxf.aegis.type.TypeMapping;
 import org.apache.cxf.aegis.type.basic.BeanTypeInfo;
 import org.apache.cxf.aegis.util.NamespaceHelper;
@@ -30,13 +31,17 @@
 public class AnnotatedTypeInfo extends BeanTypeInfo {
     private final AnnotationReader annotationReader;
 
-    public AnnotatedTypeInfo(TypeMapping tm, Class typeClass, String ns) {
-        this(tm, typeClass, ns, new AnnotationReader());
+    public AnnotatedTypeInfo(TypeMapping tm, Class typeClass, 
+                             String ns, TypeCreationOptions typeCreationOptions) {
+        this(tm, typeClass, ns, new AnnotationReader(), typeCreationOptions);
     }
 
-    public AnnotatedTypeInfo(TypeMapping tm, Class typeClass, String ns, AnnotationReader annotationReader) {
+    public AnnotatedTypeInfo(TypeMapping tm, Class typeClass, String ns, AnnotationReader annotationReader,
+                             TypeCreationOptions typeCreationOptions) {
         super(typeClass, ns);
         this.annotationReader = annotationReader;
+        setQualifyAttributes(typeCreationOptions.isQualifyAttributes());
+        setQualifyElements(typeCreationOptions.isQualifyElements());
         setTypeMapping(tm);
         initialize();
     }
@@ -49,12 +54,15 @@
         if (annotationReader.isIgnored(pd.getReadMethod())) {
             return; 
         }
+        
+        String explicitNamespace = annotationReader.getNamespace(pd.getReadMethod());
+        boolean mustQualify = null != explicitNamespace && !"".equals(explicitNamespace);
 
         String name = pd.getName();
         if (isAttribute(pd)) {
-            mapAttribute(name, createMappedName(pd));
+            mapAttribute(name, createMappedName(pd, mustQualify || isQualifyAttributes()));
         } else if (isElement(pd)) {
-            mapElement(name, createMappedName(pd));
+            mapElement(name, createMappedName(pd, mustQualify || isQualifyElements()));
         }
     }
 
@@ -75,8 +83,13 @@
     }
 
     @Override
-    protected QName createMappedName(PropertyDescriptor desc) {
-        return createQName(desc);
+    protected QName createMappedName(PropertyDescriptor desc, boolean qualify) {
+        QName name = createQName(desc);
+        if (!qualify) {
+            return new QName(null, name.getLocalPart());
+        } else {
+            return name;
+        }
     }
 
     protected QName createQName(PropertyDescriptor desc) {

Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/java5/Java5TypeCreator.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/java5/Java5TypeCreator.java?rev=657376&r1=657375&r2=657376&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/java5/Java5TypeCreator.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/java5/Java5TypeCreator.java Sat May 17 08:31:09 2008
@@ -203,7 +203,8 @@
         AnnotatedTypeInfo typeInfo = new AnnotatedTypeInfo(
                 getTypeMapping(),
                 info.getTypeClass(),
-                typeName.getNamespaceURI());
+                typeName.getNamespaceURI(),
+                getConfiguration());
 
         typeInfo.setExtensibleElements(annotationReader.isExtensibleElements(
                 info.getTypeClass(),

Modified: cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java?rev=657376&r1=657375&r2=657376&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java Sat May 17 08:31:09 2008
@@ -54,6 +54,8 @@
 import org.apache.cxf.wsdl11.ServiceWSDLBuilder;
 import org.apache.cxf.wsdl11.WSDLDefinitionBuilder;
 import org.apache.cxf.wsdl11.WSDLManagerImpl;
+import org.jdom.Element;
+import org.jdom.output.DOMOutputter;
 import org.junit.Before;
 
 public abstract class AbstractAegisTest extends AbstractCXFTest {
@@ -213,6 +215,23 @@
         
     }
     
+    protected void assertXPathEquals(String xpath, String value, Element element) throws Exception {
+        org.w3c.dom.Document doc = new DOMOutputter().output(element.getDocument());
+        assertXPathEquals(xpath, value, doc);
+    }
+    
+    protected void assertValid(String xpath, Element element) throws Exception {
+        org.w3c.dom.Document doc = new DOMOutputter().output(element.getDocument());
+        
+        assertValid(xpath, doc);
+    }
+
+    protected void assertInvalid(String xpath, Element element) throws Exception {
+        org.w3c.dom.Document doc = new DOMOutputter().output(element.getDocument());
+        
+        assertInvalid(xpath, doc);
+    }
+    
     protected Document getWSDLDocument(String string) throws WSDLException {
         Definition definition = getWSDLDefinition(string);
         if (definition == null) {

Modified: cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/BeanTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/BeanTest.java?rev=657376&r1=657375&r2=657376&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/BeanTest.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/BeanTest.java Sat May 17 08:31:09 2008
@@ -40,7 +40,6 @@
 import org.apache.cxf.common.util.SOAPConstants;
 import org.jdom.Document;
 import org.jdom.Element;
-import org.jdom.output.DOMOutputter;
 import org.junit.Test;
 
 public class BeanTest extends AbstractAegisTest {
@@ -59,6 +58,7 @@
         mapping = context.getTypeMapping();
     }
 
+    @Test
     public void testBean() throws Exception {
         BeanType type = new BeanType();
         type.setTypeClass(SimpleBean.class);
@@ -98,18 +98,6 @@
         assertValid("/b:root/b:bleh[text()='bleh']", element);
         assertValid("/b:root/b:howdy[text()='howdy']", element);
     }
-
-    private void assertValid(String xpath, Element element) throws Exception {
-        org.w3c.dom.Document doc = new DOMOutputter().output(element.getDocument());
-        
-        assertValid(xpath, doc);
-    }
-
-    private void assertInvalid(String xpath, Element element) throws Exception {
-        org.w3c.dom.Document doc = new DOMOutputter().output(element.getDocument());
-        
-        assertInvalid(xpath, doc);
-    }
     
     @Test
     public void testBeanWithXsiType() throws Exception {

Added: cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/QualificationTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/QualificationTest.java?rev=657376&view=auto
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/QualificationTest.java (added)
+++ cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/QualificationTest.java Sat May 17 08:31:09 2008
@@ -0,0 +1,89 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.cxf.aegis.type.basic;
+
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.aegis.AbstractAegisTest;
+import org.apache.cxf.aegis.AegisContext;
+import org.apache.cxf.aegis.Context;
+import org.apache.cxf.aegis.services.AttributeBean;
+import org.apache.cxf.aegis.type.Type;
+import org.apache.cxf.aegis.type.TypeCreationOptions;
+import org.apache.cxf.aegis.type.TypeMapping;
+import org.apache.cxf.aegis.xml.jdom.JDOMWriter;
+import org.apache.cxf.common.util.SOAPConstants;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.junit.Test;
+
+public class QualificationTest extends AbstractAegisTest {
+
+    public void setUp() throws Exception {
+        super.setUp();
+    
+        addNamespace("b", "urn:Bean");
+        addNamespace("xyzzy", "urn:xyzzy");
+        addNamespace("xsi", SOAPConstants.XSI_NS);
+    }
+    
+    @Test
+    public void testDefaultUnqualifiedAttribute() throws Exception {
+        AegisContext context = new AegisContext();
+        context.initialize();
+        TypeMapping mapping = context.getTypeMapping();
+        
+        Type type = mapping.getTypeCreator().createType(AttributeBean.class);
+        type.setSchemaType(new QName("urn:Bean", "bean"));
+
+        Context messageContext = new Context(context);
+        Element element = new Element("root", "b", "urn:Bean");
+        new Document(element);
+        AttributeBean bean = new AttributeBean();
+        type.writeObject(bean, new JDOMWriter(element), messageContext);
+        assertValid("/b:root[@xyzzy:attrExplicitString]", element);
+        assertXPathEquals("/b:root/@xyzzy:attrExplicitString", "attrExplicit", element);
+        assertValid("/b:root[@attrPlainString]", element);
+        assertXPathEquals("/b:root/@attrPlainString", "attrPlain", element);
+    }
+    
+    @Test
+    public void testDefaultQualifiedAttribute() throws Exception {
+        AegisContext context = new AegisContext();
+        TypeCreationOptions typeCreationOptions = 
+            new TypeCreationOptions();
+        typeCreationOptions.setQualifyAttributes(true);
+        context.setTypeCreationOptions(typeCreationOptions);
+        context.initialize();
+        TypeMapping mapping = context.getTypeMapping();
+        
+        Type type = mapping.getTypeCreator().createType(AttributeBean.class);
+        type.setSchemaType(new QName("urn:Bean", "bean"));
+
+        Context messageContext = new Context(context);
+        Element element = new Element("root", "b", "urn:Bean");
+        new Document(element);
+        AttributeBean bean = new AttributeBean();
+        type.writeObject(bean, new JDOMWriter(element), messageContext);
+        assertValid("/b:root[@xyzzy:attrExplicitString]", element);
+        assertXPathEquals("/b:root/@xyzzy:attrExplicitString", "attrExplicit", element);
+        assertValid("/b:root[@attrPlainString]", element);
+        assertXPathEquals("/b:root/@attrPlainString", "attrPlain", element);
+    }
+}

Propchange: cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/QualificationTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/QualificationTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/AnnotatedTypeTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/AnnotatedTypeTest.java?rev=657376&r1=657375&r2=657376&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/AnnotatedTypeTest.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/AnnotatedTypeTest.java Sat May 17 08:31:09 2008
@@ -27,6 +27,7 @@
 import org.apache.cxf.aegis.AbstractAegisTest;
 import org.apache.cxf.aegis.databinding.AegisDatabinding;
 import org.apache.cxf.aegis.type.Type;
+import org.apache.cxf.aegis.type.TypeCreationOptions;
 import org.apache.cxf.aegis.type.TypeMapping;
 import org.apache.cxf.aegis.type.XMLTypeCreator;
 import org.apache.cxf.aegis.type.basic.BeanType;
@@ -60,7 +61,8 @@
 
     @Test
     public void testType() {
-        AnnotatedTypeInfo info = new AnnotatedTypeInfo(tm, AnnotatedBean1.class, "urn:foo");
+        AnnotatedTypeInfo info = new AnnotatedTypeInfo(tm, AnnotatedBean1.class, "urn:foo",
+                                                       new TypeCreationOptions());
 
         Iterator elements = info.getElements();
         assertTrue(elements.hasNext());
@@ -171,7 +173,8 @@
 
     @Test
     public void testGetSetRequired() throws Exception {
-        BeanType type = new BeanType(new AnnotatedTypeInfo(tm, BadBean.class, "urn:foo"));
+        BeanType type = new BeanType(new AnnotatedTypeInfo(tm, BadBean.class, "urn:foo",
+                                                           new TypeCreationOptions()));
         type.setSchemaType(new QName("urn:foo", "BadBean"));
 
         assertFalse(type.getTypeInfo().getElements().hasNext());

Modified: cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/JaxbTypeTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/JaxbTypeTest.java?rev=657376&r1=657375&r2=657376&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/JaxbTypeTest.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/JaxbTypeTest.java Sat May 17 08:31:09 2008
@@ -27,6 +27,7 @@
 import org.apache.cxf.aegis.AbstractAegisTest;
 import org.apache.cxf.aegis.databinding.AegisDatabinding;
 import org.apache.cxf.aegis.type.Type;
+import org.apache.cxf.aegis.type.TypeCreationOptions;
 import org.apache.cxf.aegis.type.TypeMapping;
 import org.apache.cxf.aegis.type.XMLTypeCreator;
 import org.apache.cxf.aegis.type.basic.BeanType;
@@ -60,7 +61,8 @@
 
     @Test
     public void testType() {
-        AnnotatedTypeInfo info = new AnnotatedTypeInfo(tm, JaxbBean1.class, "urn:foo");
+        AnnotatedTypeInfo info = new AnnotatedTypeInfo(tm, JaxbBean1.class, "urn:foo",
+                                                       new TypeCreationOptions());
 
         Iterator elements = info.getElements();
         assertTrue(elements.hasNext());
@@ -171,7 +173,8 @@
 
     @Test
     public void testGetSetRequired() throws Exception {
-        BeanType type = new BeanType(new AnnotatedTypeInfo(tm, BadBean.class, "urn:foo"));
+        BeanType type = new BeanType(new AnnotatedTypeInfo(tm, BadBean.class, "urn:foo",
+                                                           new TypeCreationOptions()));
         type.setSchemaType(new QName("urn:foo", "BadBean"));
 
         assertFalse(type.getTypeInfo().getElements().hasNext());

Modified: cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/XFireTypeTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/XFireTypeTest.java?rev=657376&r1=657375&r2=657376&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/XFireTypeTest.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/XFireTypeTest.java Sat May 17 08:31:09 2008
@@ -27,6 +27,7 @@
 import org.apache.cxf.aegis.AbstractAegisTest;
 import org.apache.cxf.aegis.databinding.AegisDatabinding;
 import org.apache.cxf.aegis.type.Type;
+import org.apache.cxf.aegis.type.TypeCreationOptions;
 import org.apache.cxf.aegis.type.TypeMapping;
 import org.apache.cxf.aegis.type.XMLTypeCreator;
 import org.apache.cxf.aegis.type.basic.BeanType;
@@ -60,7 +61,8 @@
 
     @Test
     public void testType() {
-        AnnotatedTypeInfo info = new AnnotatedTypeInfo(tm, XFireBean1.class, "urn:foo");
+        AnnotatedTypeInfo info = new AnnotatedTypeInfo(tm, XFireBean1.class, "urn:foo",
+                                                       new TypeCreationOptions());
 
         Iterator elements = info.getElements();
         assertTrue(elements.hasNext());
@@ -171,7 +173,8 @@
 
     @Test
     public void testGetSetRequired() throws Exception {
-        BeanType type = new BeanType(new AnnotatedTypeInfo(tm, BadBean.class, "urn:foo"));
+        BeanType type = new BeanType(new AnnotatedTypeInfo(tm, BadBean.class, "urn:foo",
+                                                           new TypeCreationOptions()));
         type.setSchemaType(new QName("urn:foo", "BadBean"));
 
         assertFalse(type.getTypeInfo().getElements().hasNext());