You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "adam (JIRA)" <ji...@apache.org> on 2007/10/08 15:50:50 UTC
[jira] Updated: (AXIS2-3252) Unexpected subelement
[ https://issues.apache.org/jira/browse/AXIS2-3252?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
adam updated AXIS2-3252:
------------------------
Attachment: the classes.rar
all the classes that u need it
> 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
> Attachments: the classes.rar
>
>
> 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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org