001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.geronimo.axis.client; 018 019 import java.net.URL; 020 import javax.xml.namespace.QName; 021 022 import org.apache.axis.AxisFault; 023 import org.apache.axis.NoEndPointException; 024 import org.apache.axis.client.Call; 025 import org.apache.axis.client.Service; 026 027 /** 028 * @version $Rev: 476049 $ $Date: 2006-11-16 23:35:17 -0500 (Thu, 16 Nov 2006) $ 029 */ 030 public class GenericServiceEndpoint extends org.apache.axis.client.Stub { 031 032 033 public GenericServiceEndpoint(QName portQName, Service service, URL location) { 034 this.service = service; 035 cachedEndpoint = location; 036 cachedPortName = portQName; 037 038 } 039 040 Call createCall() throws java.rmi.RemoteException { 041 try { 042 org.apache.axis.client.Call _call = 043 (org.apache.axis.client.Call) service.createCall(); 044 if (super.maintainSessionSet) { 045 _call.setMaintainSession(super.maintainSession); 046 } 047 if (super.cachedUsername != null) { 048 _call.setUsername(super.cachedUsername); 049 } 050 if (super.cachedPassword != null) { 051 _call.setPassword(super.cachedPassword); 052 } 053 if (super.cachedEndpoint != null) { 054 _call.setTargetEndpointAddress(super.cachedEndpoint); 055 } 056 if (super.cachedTimeout != null) { 057 _call.setTimeout(super.cachedTimeout); 058 } 059 if (super.cachedPortName != null) { 060 _call.setPortName(super.cachedPortName); 061 } 062 java.util.Enumeration keys = super.cachedProperties.keys(); 063 while (keys.hasMoreElements()) { 064 java.lang.String key = (java.lang.String) keys.nextElement(); 065 _call.setProperty(key, super.cachedProperties.get(key)); 066 } 067 // All the type mapping information is registered 068 // when the first call is made. 069 // The type mapping information is actually registered in 070 // the TypeMappingRegistry of the service, which 071 // is the reason why registration is only needed for the first call. 072 //TODO figure out if this can be done during deployment! 073 // synchronized (this) { 074 // if (firstCall()) { 075 // // must set encoding style before registering serializers 076 // //TODO these constants probably need to be parameters of GSE. 077 // _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS); 078 //// _call.setEncodingStyle(org.apache.axis.Constants.URI_SOAP11_ENC); 079 // //override unsigned long mapping 080 // _call.registerTypeMapping(BigInteger.class, 081 // Constants.XSD_UNSIGNEDLONG, 082 // new SimpleSerializerFactory(BigInteger.class, Constants.XSD_UNSIGNEDLONG), 083 // new SimpleDeserializerFactory(BigInteger.class, Constants.XSD_UNSIGNEDLONG)); 084 // _call.registerTypeMapping(URI.class, 085 // Constants.XSD_ANYURI, 086 // new SimpleSerializerFactory(URI.class, Constants.XSD_ANYURI), 087 // new SimpleDeserializerFactory(URI.class, Constants.XSD_ANYURI)); 088 // for (Iterator iterator = typeInfo.iterator(); iterator.hasNext();) { 089 // TypeInfo info = (TypeInfo) iterator.next(); 090 // _call.registerTypeMapping(info.getClazz(), info.getqName(), info.getSerFactoryClass(), info.getDeserFactoryClass(), false); 091 // } 092 // } 093 // } 094 return _call; 095 } catch (java.lang.Throwable t) { 096 throw new org.apache.axis.AxisFault("Failure trying to get the Call object", t); 097 } 098 } 099 100 void checkCachedEndpoint() throws NoEndPointException { 101 if (cachedEndpoint == null) { 102 throw new NoEndPointException(); 103 } 104 } 105 106 void setUpCall(Call call) throws AxisFault { 107 setRequestHeaders(call); 108 setAttachments(call); 109 } 110 111 }