Return-Path: Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: (qmail 87289 invoked from network); 15 Sep 2008 15:15:59 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 15 Sep 2008 15:15:59 -0000 Received: (qmail 22188 invoked by uid 500); 15 Sep 2008 15:15:45 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 22153 invoked by uid 500); 15 Sep 2008 15:15:45 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 22139 invoked by uid 99); 15 Sep 2008 15:15:45 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 15 Sep 2008 08:15:45 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 15 Sep 2008 15:14:55 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 70C40238896D; Mon, 15 Sep 2008 08:14:57 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r695498 - in /cxf/branches/2.1.x-fixes: ./ rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/ rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/ rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/encode... Date: Mon, 15 Sep 2008 15:14:57 -0000 To: commits@cxf.apache.org From: dkulp@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080915151457.70C40238896D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dkulp Date: Mon Sep 15 08:14:56 2008 New Revision: 695498 URL: http://svn.apache.org/viewvc?rev=695498&view=rev Log: Merged revisions 695096 via svnmerge from https://svn.apache.org/repos/asf/cxf/trunk ........ r695096 | bimargulies | 2008-09-13 20:42:54 -0400 (Sat, 13 Sep 2008) | 2 lines Fix CXF-1788. ........ Added: cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/custom/ - copied from r695096, cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/custom/ cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/custom/CustomMappingTest.java - copied unchanged from r695096, cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/custom/CustomMappingTest.java Modified: cxf/branches/2.1.x-fixes/ (props changed) cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/DefaultTypeMapping.java cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/TypeMapping.java cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/encoded/StructType.java Propchange: cxf/branches/2.1.x-fixes/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Sep 15 08:14:56 2008 @@ -1 +1 @@ -/cxf/trunk:686333-686363,686764,686820,687096,687194,687363,687387,687463,687543,687722,687798,687814,687817,687891,687910,687914,688086,688102,688133,688596,688735,688870,689572,689596,689855,689924,690067,690289,691246,691271,691295,691355,691488,691602,691646,691706,691728,692116,692157,692310,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694795,694869,694981,694987,694993,695041 +/cxf/trunk:686333-686363,686764,686820,687096,687194,687363,687387,687463,687543,687722,687798,687814,687817,687891,687910,687914,688086,688102,688133,688596,688735,688870,689572,689596,689855,689924,690067,690289,691246,691271,691295,691355,691488,691602,691646,691706,691728,692116,692157,692310,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694795,694869,694981,694987,694993,695041,695096 Propchange: cxf/branches/2.1.x-fixes/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/DefaultTypeMapping.java URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/DefaultTypeMapping.java?rev=695498&r1=695497&r2=695498&view=diff ============================================================================== --- cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/DefaultTypeMapping.java (original) +++ cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/DefaultTypeMapping.java Mon Sep 15 08:14:56 2008 @@ -127,6 +127,9 @@ register(type); } + /** + * {@inheritDoc} + */ public void register(Type type) { type.setTypeMapping(this); /* Modified: cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/TypeMapping.java URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/TypeMapping.java?rev=695498&r1=695497&r2=695498&view=diff ============================================================================== --- cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/TypeMapping.java (original) +++ cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/TypeMapping.java Mon Sep 15 08:14:56 2008 @@ -26,21 +26,34 @@ */ public interface TypeMapping { /** - * Checks whether or not type mapping between specified XML type and Java - * type is registered. - * - * @param javaType Class of the Java type - * @param xmlType Qualified name of the XML data type - * @return boolean; true if type mapping between the - * specified XML type and Java type is registered; otherwise - * false + * Returns a flag indicating if this type mapping has a mapping for a particular Java class. + * @param javaType the class. + * @return true if there is a mapping for the type. */ boolean isRegistered(Class javaType); + /** + * Returns a flag indicating if this type mapping has a mapping for a particular + * XML Schema QName. + * @param xmlType the QName. + * @return true if there is a mapping for the type. + */ boolean isRegistered(QName xmlType); + /** + * Register a type, manually specifying the java class, the schema type, + * and the Aegis type object that provides serialization, deserialization, + * and schema. + * @param javaType Java class. + * @param xmlType XML Schema type QName. + * @param type Aegis type object. + */ void register(Class javaType, QName xmlType, Type type); + /** + * Register a type that self-describes the schema type and the Java class. + * @param type Aegis type object that + */ void register(Type type); void removeType(Type type); Modified: cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java?rev=695498&r1=695497&r2=695498&view=diff ============================================================================== --- cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java (original) +++ cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java Mon Sep 15 08:14:56 2008 @@ -652,7 +652,14 @@ type = beanType.getTypeInfo().getType(name); if (type == null) { - beanType = beanType.getSuperType(); + Type superType = beanType.getSuperType(); /* The class might inherit from, say, 'Integer'. + In which case we've got no BeanType + to work with. */ + if (superType instanceof BeanType) { + beanType = (BeanType) superType; + } else { + break; // give up. + } } } @@ -660,13 +667,13 @@ if (beanType != null) { elementTypeInfo = beanType.getTypeInfo(); } else { - // didn't find a bean type so just use this bean't type info + // didn't find a bean type so just use this bean's type info elementTypeInfo = getTypeInfo(); } return elementTypeInfo; } - public BeanType getSuperType() { + public Type getSuperType() { BeanTypeInfo inf = getTypeInfo(); Class c = inf.getTypeClass().getSuperclass(); /* @@ -674,12 +681,13 @@ */ if (c != null && c != Object.class && c != Exception.class && c != RuntimeException.class) { TypeMapping tm = inf.getTypeMapping(); - BeanType superType = (BeanType)tm.getType(c); + Type superType = tm.getType(c); if (superType == null) { + // if we call createType, we know that we'll get a BeanType. */ superType = (BeanType)getTypeMapping().getTypeCreator().createType(c); Class cParent = c.getSuperclass(); if (cParent != null && cParent != Object.class) { - superType.getTypeInfo().setExtension(true); + ((BeanType)superType).getTypeInfo().setExtension(true); } tm.register(superType); } @@ -770,4 +778,12 @@ public boolean hasMinOccurs() { return true; } + + @Override + public void setTypeMapping(TypeMapping typeMapping) { + super.setTypeMapping(typeMapping); + if (info != null) { + info.setTypeMapping(typeMapping); + } + } } Modified: cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/encoded/StructType.java URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/encoded/StructType.java?rev=695498&r1=695497&r2=695498&view=diff ============================================================================== --- cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/encoded/StructType.java (original) +++ cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/encoded/StructType.java Mon Sep 15 08:14:56 2008 @@ -140,7 +140,7 @@ } // find the matching property and get it's name - for (BeanType sooper = this; sooper != null; sooper = sooper.getSuperType()) { + for (BeanType sooper = this; sooper != null; sooper = superBeanType(sooper)) { QName qualifiedName = new QName(sooper.getTypeInfo().getDefaultNamespace(), name.getLocalPart()); if (sooper.getTypeInfo().getType(qualifiedName) != null) { @@ -150,6 +150,17 @@ return name; } + + private BeanType superBeanType(Type t) { + if (t instanceof BeanType) { + BeanType bt = (BeanType)t; + Type supertype = bt.getSuperType(); + if (supertype instanceof BeanType) { + return (BeanType)supertype; + } + } + return null; + } /** * When the SoapRef is resolved write the matching property on the target object.