package test.rpc; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.ser.BeanDeserializerFactory; import org.apache.axis.encoding.ser.BeanSerializerFactory; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import java.util.Calendar; public final class IF2SOAPProxy implements IF2SOAP { private String m_service; private String m_url; private QName m_beanQName; private QName m_beanArrayQName; private QName m_stringArrayQName; private QName m_calendarArrayQName; public IF2SOAPProxy(String service, String url) { m_service = service; m_url = url; m_beanQName = new QName("urn:" + m_service, "Bean"); m_beanArrayQName = new QName("urn:" + m_service, "Bean[]"); m_stringArrayQName = new QName("urn:" + m_service, "String[]"); m_calendarArrayQName = new QName("urn:" + m_service, "Calendar[]"); } public IF1 getBeanById(String id) throws Exception { IF1 bean = null; if (id == null) throw new Exception("invalid id"); Call call = getCall(); call.setTargetEndpointAddress(m_url); call.setOperationName(new QName(m_service, "getBeanById")); call.addParameter("id", org.apache.axis.Constants.XSD_STRING, ParameterMode.IN); call.setReturnType(m_beanQName); bean = (IF1) call.invoke(new Object[] { id }); return bean; } public IF1[] getAllBeans() throws Exception { return getAllBeans(null); } public IF1[] getAllBeans(String[] filter) throws Exception { IF1[] beans = null; Call call = getCall(); call.setTargetEndpointAddress(m_url); call.setOperationName(new QName(m_service, "getAllBeans")); call.setReturnType(m_beanArrayQName); if (filter == null) beans = (IF1[]) call.invoke(new Object[0]); else { call.addParameter("filter", m_stringArrayQName, ParameterMode.IN); beans = (IF1[]) call.invoke(new Object[] { filter }); } return beans; } public String[] getAllCategories() throws Exception { String[] categories = null; Call call = getCall(); call.setTargetEndpointAddress(m_url); call.setOperationName(new QName(m_service, "getAllCategories")); call.setReturnType(m_stringArrayQName); categories = (String[]) call.invoke(new Object[0]); return categories; } public IF1[] getBeansByCategory(String category) throws Exception { return getBeansByCategory(category, null); } public IF1[] getBeansByCategory(String category, String[] filter) throws Exception { IF1[] beans = null; if (category == null) throw new Exception("invalid category"); Call call = getCall(); call.setTargetEndpointAddress(m_url); call.setOperationName(new QName(m_service, "getBeansByCategory")); call.setReturnType(m_beanArrayQName); call.addParameter("category", org.apache.axis.Constants.XSD_STRING, ParameterMode.IN); if (filter == null) beans = (IF1[]) call.invoke(new Object[] { category }); else { call.addParameter("filter", m_stringArrayQName, ParameterMode.IN); beans = (IF1[]) call.invoke(new Object[] { category, filter }); } return beans; } public IF1[] getBeansByDate(Calendar[] dates) throws Exception { return getBeansByDate(dates, null); } public IF1[] getBeansByDate(Calendar[] dates, String[] filter) throws Exception { IF1[] beans = null; if (dates == null) throw new Exception("invalid dates"); Call call = getCall(); call.setTargetEndpointAddress(m_url); call.setOperationName(new QName(m_service, "getBeansByDate")); call.setReturnType(m_beanArrayQName); call.addParameter("dates", m_calendarArrayQName, ParameterMode.IN); if (filter == null) beans = (IF1[]) call.invoke(new Object[] { dates }); else { call.addParameter("filter", m_stringArrayQName, ParameterMode.IN); beans = (IF1[]) call.invoke(new Object[] { dates, filter }); } return beans; } public IF1[] getBeansByExpression(int expType, String expression) throws Exception { return getBeansByExpression(expType, expression, null); } public IF1[] getBeansByExpression(int expType, String expression, String[] filter) throws Exception { IF1[] beans = null; if (expression == null) throw new Exception("invalid expression"); Call call = getCall(); call.setTargetEndpointAddress(m_url); call.setOperationName(new QName(m_service, "getBeansByExpression")); call.setReturnType(m_beanArrayQName); call.addParameter("expType", org.apache.axis.Constants.XSD_INT, ParameterMode.IN); call.addParameter("expression", org.apache.axis.Constants.XSD_STRING, ParameterMode.IN); if (filter == null) beans = (IF1[]) call.invoke(new Object[] { new Integer(expType), expression }); else { call.addParameter("filter", m_stringArrayQName, ParameterMode.IN); beans = (IF1[]) call.invoke(new Object[] { new Integer(expType), expression, filter }); } return beans; } public String getXMLForBean(IF1 bean) throws Exception { String xml = null; if (bean == null) throw new Exception("invalid bean"); Call call = getCall(); call.setTargetEndpointAddress(m_url); call.setOperationName(new QName(m_service, "getXMLForBean")); call.addParameter("bean", m_beanQName, ParameterMode.IN); call.setReturnType(org.apache.axis.Constants.XSD_STRING); xml = (String) call.invoke(new Object[] { bean }); return xml; } private Call getCall() throws Exception { Call call = null; Service service = new Service(); call = (Call) service.createCall(); call.registerTypeMapping(Bean.class, m_beanQName, new BeanSerializerFactory(Bean.class, m_beanQName), new BeanDeserializerFactory(Bean.class, m_beanQName)); return call; } }