Hello, in the project I'm working on (a project based partly on CXF with 
aegis), I've got trouble with complex databinding. The developer, who has 
configured the cxf part, told me to send an email on the CXF mailing list about 
the problem we had in order to see where and why it happens.


We want to be able to manage method with complex parameter like MyObject

 *   MyObject with class attributes
    *   String
    *   String
    *   ArrayList<HashMap,MySecondObject>
 *   MySecondObject with class attributes
    *   String
    *   String
    *   ArrayList<HashMap,Long>

But we have the following issue "org.apache.cxf.aegis.DatabindingException: 
Couldn't instantiate class. null. Nested exception is 
java.lang.InstantiationException: null   
org.apache.cxf.binding.soap.SoapFault:" since ArrayList<HashMap,MySecondObject> 
is not NULL.

I have simplified my example and I have the same issue with an HashMap of 
HashMap of SimpleInDataBean (composed of two String parameters).

//KO
public void 
manageHashMapOfHashMapOfSimpleInDataBean(HashMap<String,HashMap<String,SimpleInDataBean>>
 myComplexData);

//OK
public void manageHashMapOfSimpleInDataBean(HashMap<String,SimpleInDataBean> 
myComplexData);


Here is the error stack trace I got:
org.apache.cxf.aegis.DatabindingException: Couldn't instantiate class. null. 
Nested exception is java.lang.InstantiationException: null   
org.apache.cxf.binding.soap.SoapFault: 
org.apache.cxf.aegis.DatabindingException: Couldn't instantiate class. null. 
Nested exception is java.lang.InstantiationException: null
at 
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:70)
at 
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35)
at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
at 
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:96)
at 
org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:65)
at 
org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:429)
at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1996)
at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1832)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:591)
at 
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:276)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:222)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.frontend.ClientProxy.invoke(ClientProxy.java:68)
at $Proxy12.manageHashMapOfHashMapOfSimpleInDataBean(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at 
org.objectweb.fractal.bf.AbstractRemoteServiceCaller.invoke(AbstractRemoteServiceCaller.java:64)
at $Proxy12.manageHashMapOfHashMapOfSimpleInDataBean(Unknown Source)
at 
org.objectweb.fractal.julia.generated.Cba88d802_0.manageHashMapOfHashMapOfSimpleInDataBean(INTERCEPTOR[WebService1Service])
at 
org.objectweb.fractal.julia.generated.C345d7387_0.manageHashMapOfHashMapOfSimpleInDataBean(INTERFACE[WebService1Service])
at 
com.edifixio.ecommerce.exemple.binding.service.webservice1.WebService1ServiceFcOutItf.manageHashMapOfHashMapOfSimpleInDataBean(WebService1ServiceFcOutItf.java:78)
at 
com.edifixio.ecommerce.exemple.binding.service.webservice1.WebService1ServiceFcSR.manageHashMapOfHashMapOfSimpleInDataBean(WebService1ServiceFcSR.java:62)
at 
com.edifixio.ecommerce.exemple.binding.application.binding.BindingApplicationImpl.manageHashMapOfHashMapOfSimpleInDataBean(BindingApplicationImpl.java:106)
at 
com.edifixio.ecommerce.exemple.binding.application.binding.BindingApplicationInterceptorLCSCACCIntent.manageHashMapOfHashMapOfSimpleInDataBean(BindingApplicationInterceptorLCSCACCIntent.java:529)
at 
com.edifixio.ecommerce.exemple.binding.application.binding.BindingApplicationFcItf.manageHashMapOfHashMapOfSimpleInDataBean(BindingApplicationFcItf.java:94)
at 
com.edifixio.ecommerce.exemple.binding.test.service.webservice1.ManageHashMapOfHashMapOfSimpleInDataBeanTest.testManageHashMapOfHashMapOfSimpleInDataBean_SimpleInDataBeanEmpty(ManageHashMapOfHashMapOfSimpleInDataBeanTest.java:87)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at junit.framework.TestCase.runTest(TestCase.java:154)


Do not hesitate if you need more details

Best Regards,

Tomas and Jerome

PS : I've added to this message the structure of SimpleInDataBean in order to 
show the structure of the object.


----------------------------------------
Tomas Darbois

Edifixio Grenoble - Projet ScorWare

04 76 29 89 29

[EMAIL PROTECTED]
/*
 * Copyright 2008 by Edifixio - All right reserved
 * Created on 1 oct. 08
 * @author jbu
 */
package com.edifixio.ecommerce.exemple.binding.service.webservice1.inbean;

import com.edifixio.ecommerce.generic.util.bean.GenericBean;

/**
 * Class SimpleInDataBean
 * @author jbu
 * @since 1 oct. 08 - 11:58:57
 * @version Scorware
 */
public class SimpleInDataBean extends GenericBean{

	/**
	 * Comment for <code>serialVersionUID</code>
	 */
	private static final long serialVersionUID = 7604853240090061594L;
	
	private String simpleString;
	private Long simpleLong;
	
	/**
	 * Constructor SimpleInDataBean
	 * @author jbu
	 * @since 1 oct. 08 - 12:00:14
	 * @version Scorware
	 */
	public SimpleInDataBean(){
		
	}
	
	/**
	 * Method (overridden) toString
	 * @see com.edifixio.ecommerce.generic.util.bean.GenericBean#toString()
	 * @author jbu
	 * @since 1 oct. 08 - 12:00:01
	 * @version Scorware
	 * @return
	 */
	public String toString(){
		startToString("simpleString",simpleString);
		followToString("simpleLong",simpleLong);
		return finaliseToString();
	}
	
	/**
	 * @return the simpleString
	 */
	public String getSimpleString() {
		return simpleString;
	}
	/**
	 * @param simpleString the simpleString to set
	 */
	public void setSimpleString(String simpleString) {
		this.simpleString = simpleString;
	}
	/**
	 * @return the simpleLong
	 */
	public Long getSimpleLong() {
		return simpleLong;
	}
	/**
	 * @param simpleLong the simpleLong to set
	 */
	public void setSimpleLong(Long simpleLong) {
		this.simpleLong = simpleLong;
	}
	
}
/*
 * Copyright 2008 by Edifixio - All right reserved
 * Created on 23 janv. 08
 * @author jbu
 */
package com.edifixio.ecommerce.generic.util.bean;

import java.io.Serializable;

public abstract class GenericBean implements Serializable{

	/**
	 * Comment for <code>serialVersionUID</code>
	 */
	private static final long serialVersionUID = 4774498074095259612L;
	
	private static final String TO_STRING_NOT_CORRECTLY_USED = "To String not correctly used for '";
	
	private transient boolean toStringAsStarted = false;
	private transient StringBuffer myDisplay;
	
	/**
	 * Method (overridden) toString
	 * @see java.lang.Object#toString()
	 * @author jbu
	 * @since 15 janv. 08 - 11:52:38
	 * @version Scorware
	 * @return
	 */
	public abstract String toString();
	
	/**
	 * Method startToString
	 * @author jbu
	 * @since 15 janv. 08 - 11:57:20
	 * @version Scorware
	 * @param name
	 * @param value
	 */
	protected void startToString(String name,Object value){
		myDisplay = new StringBuffer("['");
		myDisplay.append(getClass().getName());
		myDisplay.append("@");
		myDisplay.append(Integer.toHexString(hashCode()));
		myDisplay.append("' : ");
		myDisplay.append(name);
		myDisplay.append(" = '");
		myDisplay.append(value);
		toStringAsStarted=true;
	}
	
	/**
	 * Method followToString
	 * @author jbu
	 * @since 15 janv. 08 - 12:01:01
	 * @version Scorware
	 * @param name
	 * @param value
	 */
	protected void followToString(String name,Object value){
		if (toStringAsStarted){
			myDisplay.append("', ");
			myDisplay.append(name);
			myDisplay.append(" = '");
			myDisplay.append(value);
		}
	}

	/**
	 * Method followToString
	 * @author jbu
	 * @since 26 juin 08 - 14:38:06
	 * @version Scorware
	 * @param name
	 * @param value
	 */
	protected void followToString(String name,Object[] value){
		if (toStringAsStarted){
			myDisplay.append("', ");
			myDisplay.append(name);
			myDisplay.append(" = [");
			if (value!=null){
				int size= value.length;
				if (size>0){
					myDisplay.append("'");
					myDisplay.append(value[0]);
					myDisplay.append("'");
					for (int i=1;i<size;i++){
						myDisplay.append(" - '");
						myDisplay.append(value[i]);
						myDisplay.append("'");
					}
				}
				else {
					myDisplay.append("EMPTY");	
				}
			}
			else {
				myDisplay.append("NULL");	
			}
			myDisplay.append("]");
		}
	}
	
	/**
	 * Method finaliseToString
	 * @author jbu
	 * @since 15 janv. 08 - 12:22:25
	 * @version Scorware
	 * @return
	 */
	protected String finaliseToString(){
		if (toStringAsStarted){
			myDisplay.append("']");
			return myDisplay.toString();
		}
		else {
			return TO_STRING_NOT_CORRECTLY_USED+super.toString()+"'";
		}
	}
	
}

Reply via email to