axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "adam (JIRA)" <j...@apache.org>
Subject [jira] Created: (AXIS2-3252) Unexpected subelement
Date Mon, 08 Oct 2007 13:29:50 GMT
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&gt;Preferences&gt;Java&gt;Code
Generation&gt;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&gt;Preferences&gt;Java&gt;Code
Generation&gt;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


Mime
View raw message