Unexpected subelement
----------------------
Key: AXIS2-3252
URL: https://issues.apache.org/jira/browse/AXIS2-3252
Project: Axis 2.0 (Axis2)
Issue Type: Bug
Affects Versions: 1.2
Reporter: adam
Priority: Critical
Hi,
I try to make web service with eclipse and axis2 .. and i recieve the following
exception and i don't know what is the casue :
Exception *****************:
Exception in thread "main" java.lang.RuntimeException:
java.lang.RuntimeException: Unexpected subelement medicineId
at
com.cliniccruise.ws.MainClassForWSMainClassForWSSOAP11Port_httpStub.fromOM(MainClassForWSMainClassForWSSOAP11Port_httpStub.java:19136)
at
com.cliniccruise.ws.MainClassForWSMainClassForWSSOAP11Port_httpStub.sendMedicenObjetct(MainClassForWSMainClassForWSSOAP11Port_httpStub.java:159)
at com.cliniccruise.ws.WSClient.main(WSClient.java:20)
Caused by: java.lang.RuntimeException: Unexpected subelement medicineId
at
com.cliniccruise.ws.MainClassForWSMainClassForWSSOAP11Port_httpStub$MedicineWVO$Factory.parse(MainClassForWSMainClassForWSSOAP11Port_httpStub.java:14748)
at
com.cliniccruise.ws.MainClassForWSMainClassForWSSOAP11Port_httpStub$SendMedicenObjetctResponse$Factory.parse(MainClassForWSMainClassForWSSOAP11Port_httpStub.java:988)
at
com.cliniccruise.ws.MainClassForWSMainClassForWSSOAP11Port_httpStub.fromOM(MainClassForWSMainClassForWSSOAP11Port_httpStub.java:19130)
... 2 more
The class that i make from it the web service :
package com.cliniccruise.ws;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.MethodDescriptor;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Iterator;
import com.cliniccruise.vo.main.medicine.FormVO;
import com.cliniccruise.vo.main.medicine.MedicineVO;
import com.cliniccruise.vo.main.medicine.MedicineWVO;
import com.spectraflare.core.app.logging.SpectraLogger;
import com.spectraflare.core.app.logging.SpectraLoggerFactory;
import com.spectraflare.core.app.util.Util;
import com.spectraflare.core.vo.MainObject;
public class MainClassForWS
{
static SpectraLogger logger =
SpectraLoggerFactory.getApplicationLogger(MainObject.class);
public MedicineWVO sendMedicenObjetct(String discription)
{
FormVO formVO = new FormVO(1244, "myForm");
MedicineVO medicineVO = new MedicineVO(1515, "eyeLight",
formVO);
medicineVO.setOwnerCompanyName("natural");
medicineVO.setAccessories(true);
medicineVO.setDescription(discription);
MedicineWVO medicineWVO = new MedicineWVO();
try
{
this.clone(medicineVO, medicineWVO);
}
catch (Throwable e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("discription ....... " + discription);
return medicineWVO;
}
protected void clone(MainObject object,MedicineWVO medicineWVO) throws
Throwable
{
try
{
// introspect object
BeanInfo beanInfo =
Introspector.getBeanInfo(object.getClass(), Introspector.USE_ALL_BEANINFO);
MethodDescriptor[] methodDescriptors =
beanInfo.getMethodDescriptors();
for (int i = 0; i < methodDescriptors.length; i++)
{
Method method =
methodDescriptors[i].getMethod();
String methodName = method.getName();
if (!(methodName.startsWith("get") ||
methodName.startsWith("is")))
continue;
// method is getter
if (method.getParameterTypes().length > 0)
continue;
if (method.getName().equals("getAnotherCopy"))
continue;
// get field name, value and type
Object fieldValue = method.invoke(object,
(Object[]) null);
String fieldName = null;
if (methodName.startsWith("get"))
fieldName = methodName.substring(3);
else if (methodName.startsWith("is"))
fieldName = methodName.substring(2);
Class srcClass = method.getReturnType();
// prepare setter method for this main object
String destSetterName = "set" +
Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1);
Method destSetterMethod = null;
// in case field is collection
if (fieldValue instanceof Collection)
{
int collectionSize = ((Collection)
fieldValue).size();
if (collectionSize <= 0)
continue;
// get type of first element in
collection
Class elementType = ((Collection)
fieldValue).iterator().next().getClass();
Object paramArray =
Array.newInstance(elementType, collectionSize);
try
{
destSetterMethod =
medicineWVO.getClass().getMethod(destSetterName, paramArray.getClass());
}
// if no setter found, ignore
catch (NoSuchMethodException e)
{
logger.info("could not find
setter method " + destSetterName + " in class " + medicineWVO.getClass());
continue;
}
// copy fieldValue collection to array
int j = 0;
for (Iterator iterator = ((Collection)
fieldValue).iterator(); iterator.hasNext(); j++)
((Object[]) paramArray)[j] =
iterator.next();
// invoke setter method
destSetterMethod.invoke(medicineWVO,
paramArray);
}
// in case field is not collection
else
{
try
{
// in case field is vo
containing collection
if (fieldValue instanceof
MainObject && Util.classContainsCollection(srcClass))
{
// get wrapper class
String srcClassName =
srcClass.getName();
String wrapperName =
srcClassName.substring(0, srcClassName.indexOf("VO")) + "WVO";
Class wrapperClass =
Class.forName(wrapperName);
// get wrapper
constructor that receives vo
Constructor
wrapperConstructor = wrapperClass.getConstructor(new Class[]
{ srcClass });
// instaniate wrapper
class
fieldValue =
wrapperConstructor.newInstance(new Object[]
{ fieldValue });
destSetterMethod =
medicineWVO.getClass().getMethod(destSetterName, wrapperClass);
}
else
{
destSetterMethod =
medicineWVO.getClass().getMethod(destSetterName, srcClass);
}
}
// if no setter found, ignore
catch (NoSuchMethodException e)
{
logger.info("could not find
setter method " + destSetterName + " in class " + medicineWVO.getClass());
continue;
}
// invoke setter method
destSetterMethod.invoke(medicineWVO,
fieldValue);
}
}
}
catch (Throwable e)
{
throw e;
}
}
}
and my client test is :
package com.cliniccruise.ws;
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import com.cliniccruise.vo.main.medicine.MedicineWVO;
import
com.cliniccruise.ws.MainClassForWSMainClassForWSSOAP11Port_httpStub.SendMedicenObjetct;
import
com.cliniccruise.ws.MainClassForWSMainClassForWSSOAP11Port_httpStub.SendMedicenObjetctResponse;
public class WSClient
{
public static void main(String[] args)
{
try
{
MainClassForWSMainClassForWSSOAP11Port_httpStub stub =
new MainClassForWSMainClassForWSSOAP11Port_httpStub();
SendMedicenObjetct medicenObjetct = new
SendMedicenObjetct();
medicenObjetct.setDiscription("Good Medicine For Eye");
SendMedicenObjetctResponse res =
stub.sendMedicenObjetct(medicenObjetct);
com.cliniccruise.ws.MainClassForWSMainClassForWSSOAP11Port_httpStub.MedicineWVO
medicineWVO = res.get_return();
System.out.println("Medicine return object : " +
medicineWVO);
System.out.println("finishing");
}
catch (AxisFault e)
{
e.printStackTrace();
}
catch (RemoteException e)
{
e.printStackTrace();
}
}
}
and i think the following class you will need it :
/*
* Created on Nov 25, 2005 To change the template for this generated file go to
Window>Preferences>Java>Code Generation>Code and Comments
*/
package com.cliniccruise.vo.main.medicine;
import com.cliniccruise.vo.main.LanguageVO;
import com.cliniccruise.vo.relation.disease.DiseaseMedicineVO;
import com.cliniccruise.vo.relation.medicine.MedicineActiveConstVO;
import com.cliniccruise.vo.relation.medicine.MedicineCategoryVO;
import com.cliniccruise.vo.relation.medicine.MedicineNutritionVO;
import com.cliniccruise.vo.relation.medicine.MedicinePhotoVO;
import com.cliniccruise.vo.relation.medicine.RelatedMedicineAdministrationVO;
import com.spectraflare.core.app.logging.SpectraLogger;
import com.spectraflare.core.app.logging.SpectraLoggerFactory;
import com.spectraflare.core.vo.MainObject;
/**
* @author comming_king To change the template for this generated type comment
go to Window>Preferences>Java>Code Generation>Code and
* extends MedicineMVO Comments
*/
public class MedicineWVO
{
/**/protected DiseaseMedicineVO[] sideEffectsTree = null;
/**/protected MedicineCategoryVO[] categoriesTree = null;
/**/protected MedicineNutritionVO[] nutritionsTree = null;
/**/protected RelatedMedicineAdministrationVO[] administrationsTree =
null;
/**/protected MedicineActiveConstVO[] activeConstituentsTree = null;
/**/private MedicinePriceVO[] priceList = null;
private LanguageVO[] languageList = null;
/**/private MedicinePhotoVO[] photoList = null;
/** medicine VO*/
/** MedicineMVO */
private static final long serialVersionUID = 1L;
protected int formId = -1, ownerCompanyId = -1, medicineId , sizeUnitId
= -1;
protected String ownerCompanyName, formName = "", instructions = "",
unitName;
protected int packSize = 1;
protected int routeOfAdministration;
protected float size;
protected boolean narcotic, accessories;
/** ObjectVO */
protected int id = -1;
protected int oldId = -1;
protected String name = "", description;
/** MainVO */
static SpectraLogger logger =
SpectraLoggerFactory.getApplicationLogger(MainObject.class);
protected String[][] fieldsMaping = null;
public MedicineWVO()
{
super();
}
//
//
// public MedicineWVO(MedicineVO medicineVO) throws Throwable
// {
// this.clone(medicineVO);
// }
//
//
public int getFormId()
{
return formId;
}
public void setFormId(int formId)
{
this.formId = formId;
}
public int getOwnerCompanyId()
{
return ownerCompanyId;
}
public void setOwnerCompanyId(int ownerCompanyId)
{
this.ownerCompanyId = ownerCompanyId;
}
public int getMedicineId()
{
return medicineId;
}
public void setMedicineId(int medicineId)
{
this.medicineId = medicineId;
}
public int getSizeUnitId()
{
return sizeUnitId;
}
public void setSizeUnitId(int sizeUnitId)
{
this.sizeUnitId = sizeUnitId;
}
public String getOwnerCompanyName()
{
return ownerCompanyName;
}
public void setOwnerCompanyName(String ownerCompanyName)
{
this.ownerCompanyName = ownerCompanyName;
}
public String getFormName()
{
return formName;
}
public void setFormName(String formName)
{
this.formName = formName;
}
public String getInstructions()
{
return instructions;
}
public void setInstructions(String instructions)
{
this.instructions = instructions;
}
public String getUnitName()
{
return unitName;
}
public void setUnitName(String unitName)
{
this.unitName = unitName;
}
public int getPackSize()
{
return packSize;
}
public void setPackSize(int packSize)
{
this.packSize = packSize;
}
public int getRouteOfAdministration()
{
return routeOfAdministration;
}
public void setRouteOfAdministration(int routeOfAdministration)
{
this.routeOfAdministration = routeOfAdministration;
}
public float getSize()
{
return size;
}
public void setSize(float size)
{
this.size = size;
}
public boolean isNarcotic()
{
return narcotic;
}
public void setNarcotic(boolean narcotic)
{
this.narcotic = narcotic;
}
public boolean isAccessories()
{
return accessories;
}
public void setAccessories(boolean accessories)
{
this.accessories = accessories;
}
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public int getOldId()
{
return oldId;
}
public void setOldId(int oldId)
{
this.oldId = oldId;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getDescription()
{
return description;
}
public void setDescription(String description)
{
this.description = description;
}
public static SpectraLogger getLogger()
{
return logger;
}
public static void setLogger(SpectraLogger logger)
{
MedicineWVO.logger = logger;
}
public String[][] getFieldsMaping()
{
return fieldsMaping;
}
public void setFieldsMaping(String[][] fieldsMaping)
{
this.fieldsMaping = fieldsMaping;
}
public DiseaseMedicineVO[] getSideEffectsTree()
{
return sideEffectsTree;
}
public void setSideEffectsTree(DiseaseMedicineVO[] sideEffectsTree)
{
this.sideEffectsTree = sideEffectsTree;
}
public MedicineCategoryVO[] getCategoriesTree()
{
return categoriesTree;
}
public void setCategoriesTree(MedicineCategoryVO[] categoriesTree)
{
this.categoriesTree = categoriesTree;
}
public MedicineNutritionVO[] getNutritionsTree()
{
return nutritionsTree;
}
public void setNutritionsTree(MedicineNutritionVO[] nutritionsTree)
{
this.nutritionsTree = nutritionsTree;
}
public RelatedMedicineAdministrationVO[] getAdministrationsTree()
{
return administrationsTree;
}
public void setAdministrationsTree(RelatedMedicineAdministrationVO[]
administrationsTree)
{
this.administrationsTree = administrationsTree;
}
public MedicineActiveConstVO[] getActiveConstituentsTree()
{
return activeConstituentsTree;
}
public void setActiveConstituentsTree(MedicineActiveConstVO[]
activeConstituentsTree)
{
this.activeConstituentsTree = activeConstituentsTree;
}
public MedicinePriceVO[] getPriceList()
{
return priceList;
}
public void setPriceList(MedicinePriceVO[] priceList)
{
this.priceList = priceList;
}
public MedicinePhotoVO[] getPhotoList()
{
return photoList;
}
public void setPhotoList(MedicinePhotoVO[] photoList)
{
this.photoList = photoList;
}
}
So.... i need to know from where this exception come and what causes it.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]