| /** |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.openejb.server.axis.client; |
| |
| import java.net.URL; |
| import javax.xml.namespace.QName; |
| |
| import org.apache.axis.AxisFault; |
| import org.apache.axis.NoEndPointException; |
| import org.apache.axis.client.Call; |
| import org.apache.axis.client.Service; |
| |
| public class GenericServiceEndpoint extends org.apache.axis.client.Stub { |
| public GenericServiceEndpoint(QName portQName, Service service, URL location) { |
| this.service = service; |
| cachedEndpoint = location; |
| cachedPortName = portQName; |
| |
| } |
| |
| Call createCall() throws java.rmi.RemoteException { |
| try { |
| org.apache.axis.client.Call _call = |
| (org.apache.axis.client.Call) service.createCall(); |
| if (super.maintainSessionSet) { |
| _call.setMaintainSession(super.maintainSession); |
| } |
| if (super.cachedUsername != null) { |
| _call.setUsername(super.cachedUsername); |
| } |
| if (super.cachedPassword != null) { |
| _call.setPassword(super.cachedPassword); |
| } |
| if (super.cachedEndpoint != null) { |
| _call.setTargetEndpointAddress(super.cachedEndpoint); |
| } |
| if (super.cachedTimeout != null) { |
| _call.setTimeout(super.cachedTimeout); |
| } |
| if (super.cachedPortName != null) { |
| _call.setPortName(super.cachedPortName); |
| } |
| java.util.Enumeration keys = super.cachedProperties.keys(); |
| while (keys.hasMoreElements()) { |
| java.lang.String key = (java.lang.String) keys.nextElement(); |
| _call.setProperty(key, super.cachedProperties.get(key)); |
| } |
| // All the type mapping information is registered |
| // when the first call is made. |
| // The type mapping information is actually registered in |
| // the TypeMappingRegistry of the service, which |
| // is the reason why registration is only needed for the first call. |
| //TODO figure out if this can be done during deployment! |
| // synchronized (this) { |
| // if (firstCall()) { |
| // // must set encoding style before registering serializers |
| // //TODO these constants probably need to be parameters of GSE. |
| // _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS); |
| //// _call.setEncodingStyle(org.apache.axis.Constants.URI_SOAP11_ENC); |
| // //override unsigned long mapping |
| // _call.registerTypeMapping(BigInteger.class, |
| // Constants.XSD_UNSIGNEDLONG, |
| // new SimpleSerializerFactory(BigInteger.class, Constants.XSD_UNSIGNEDLONG), |
| // new SimpleDeserializerFactory(BigInteger.class, Constants.XSD_UNSIGNEDLONG)); |
| // _call.registerTypeMapping(URI.class, |
| // Constants.XSD_ANYURI, |
| // new SimpleSerializerFactory(URI.class, Constants.XSD_ANYURI), |
| // new SimpleDeserializerFactory(URI.class, Constants.XSD_ANYURI)); |
| // for (Iterator iterator = typeInfo.iterator(); iterator.hasNext();) { |
| // TypeInfo info = (TypeInfo) iterator.next(); |
| // _call.registerTypeMapping(info.getClazz(), info.getqName(), info.getSerFactoryClass(), info.getDeserFactoryClass(), false); |
| // } |
| // } |
| // } |
| return _call; |
| } catch (java.lang.Throwable t) { |
| throw new org.apache.axis.AxisFault("Failure trying to get the Call object", t); |
| } |
| } |
| |
| void checkCachedEndpoint() throws NoEndPointException { |
| if (cachedEndpoint == null) { |
| throw new NoEndPointException(); |
| } |
| } |
| |
| void setUpCall(Call call) throws AxisFault { |
| setRequestHeaders(call); |
| setAttachments(call); |
| } |
| } |