Index: common/src/main/org/jboss/xb/binding/MappingObjectModelProvider.java =================================================================== RCS file: /cvsroot/jboss/jboss-common/src/main/org/jboss/xb/binding/MappingObjectModelProvider.java,v retrieving revision 1.17 diff -u -r1.17 MappingObjectModelProvider.java --- common/src/main/org/jboss/xb/binding/MappingObjectModelProvider.java 23 Nov 2005 15:40:27 -0000 1.17 +++ common/src/main/org/jboss/xb/binding/MappingObjectModelProvider.java 23 May 2006 10:58:48 -0000 @@ -90,7 +90,7 @@ Object children = null; if(!writeAsValue(o.getClass())) { - children = getJavaValue(localName, null, o, true, ignoreNotFoundField); + children = getJavaValue(namespaceURI, localName, null, o, true, ignoreNotFoundField); } return children; } @@ -114,11 +114,11 @@ // this is a hack for soap enc try { - value = getJavaValue(localName, fieldName, o, false, false); + value = getJavaValue(namespaceURI, localName, fieldName, o, false, false); } catch(JBossXBRuntimeException e) { - value = getJavaValue(localName, null, o, false, ignoreNotFoundField); + value = getJavaValue(namespaceURI, localName, null, o, false, ignoreNotFoundField); } } return value; @@ -127,7 +127,7 @@ public Object getAttributeValue(Object o, MarshallingContext ctx, String namespaceURI, String localName) { boolean optional = ctx == null ? ignoreNotFoundField : !ctx.isAttributeRequired() || ignoreNotFoundField; - return getJavaValue(localName, null, o, false, optional); + return getJavaValue(namespaceURI, localName, null, o, false, optional); } public Object getRoot(Object o, MarshallingContext ctx, String namespaceURI, String localName) @@ -140,7 +140,7 @@ // Private - private Object getJavaValue(String localName, String fieldName, Object o, boolean forComplexType, boolean optional) + private Object getJavaValue(String namespaceURI, String localName, String fieldName, Object o, boolean forComplexType, boolean optional) { Method getter = null; Field field = null; @@ -160,6 +160,7 @@ } else { + if(fieldName == null) { fieldName = Util.xmlNameToFieldName(localName, ignoreLowLine); @@ -168,6 +169,9 @@ try { getter = Classes.getAttributeGetter(o.getClass(), fieldName); + + // cache the fieldmapping + mapFieldToElement(o.getClass(), fieldName, namespaceURI, localName, null); } catch(NoSuchMethodException e) {