Author: keith Date: Mon Jun 30 21:48:36 2008 New Revision: 18740 URL: http://wso2.org/svn/browse/wso2?view=rev&revision=18740
Log: Adding a patch to Axis2 that fixes Mahup-794 Added: trunk/mashup/java/modules/patches/axis2/src/org/apache/axis2/description/AxisEndpoint.java Added: trunk/mashup/java/modules/patches/axis2/src/org/apache/axis2/description/AxisEndpoint.java URL: http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/patches/axis2/src/org/apache/axis2/description/AxisEndpoint.java?pathrev=18740 ============================================================================== --- (empty file) +++ trunk/mashup/java/modules/patches/axis2/src/org/apache/axis2/description/AxisEndpoint.java Mon Jun 30 21:48:36 2008 @@ -0,0 +1,222 @@ +/* + * 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.axis2.description; + +import org.apache.axiom.om.OMAbstractFactory; +import org.apache.axiom.om.OMElement; +import org.apache.axiom.om.OMFactory; +import org.apache.axiom.om.OMNamespace; +import org.apache.axis2.AxisFault; +import org.apache.axis2.addressing.EndpointReference; +import org.apache.axis2.engine.AxisConfiguration; +import org.apache.axis2.transport.TransportListener; +import org.apache.axis2.transport.http.server.HttpUtils; +import org.apache.axis2.util.WSDLSerializationUtil; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.net.SocketException; +import java.util.HashMap; +import java.util.Map; + +public class AxisEndpoint extends AxisDescription { + + private static final Log logger = LogFactory.getLog(AxisEndpoint.class); + + // The name of the endpoint + private String name; + + // The binding reffered to by the endpoint + private AxisBinding binding; + + // The address of the endpoint + private String endpointURL; + + // The alias used for the endpoint + private String alias; + + private Map options; + + private String transportInDescName; + + public String getEndpointURL() { + if (endpointURL == null) { + endpointURL = calculateEndpointURL(); + } + return endpointURL; + } + + public void setEndpointURL(String endpointURL) { + this.endpointURL = endpointURL; + } + + public AxisEndpoint() { + options = new HashMap(); + } + + public void setProperty(String name, Object value) { + options.put(name, value); + } + + /** + * @param name + * name of the property to search for + * @return the value of the property, or null if the property is not found + */ + public Object getProperty(String name) { + Object obj = options.get(name); + if (obj != null) { + return obj; + } + + return null; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public AxisBinding getBinding() { + return binding; + } + + public void setBinding(AxisBinding binding) { + this.binding = binding; + } + + public Object getKey() { + // ToDO + return null; // To change body of implemented methods use File | + // Settings | File Templates. + } + + public void engageModule(AxisModule axisModule) throws AxisFault { + throw new UnsupportedOperationException("Sorry we do not support this"); + } + + public boolean isEngaged(String moduleName) { + throw new UnsupportedOperationException( + "axisMessage.isEngaged() is not supported"); + } + + public OMElement toWSDL20(OMNamespace wsdl, OMNamespace tns, OMNamespace whttp) { + String property; + OMFactory omFactory = OMAbstractFactory.getOMFactory(); + OMElement endpointElement = omFactory.createOMElement( + WSDL2Constants.ENDPOINT_LOCAL_NAME, wsdl); + endpointElement.addAttribute(omFactory.createOMAttribute( + WSDL2Constants.ATTRIBUTE_NAME, null, name)); + endpointElement.addAttribute(omFactory.createOMAttribute( + WSDL2Constants.BINDING_LOCAL_NAME, null, tns.getPrefix() + ":" + + getBinding().getName().getLocalPart())); + endpointElement.addAttribute(omFactory.createOMAttribute( + WSDL2Constants.ATTRIBUTE_ADDRESS, null, getEndpointURL())); + Object authenticationScheme = this.options + .get(WSDL2Constants.ATTR_WHTTP_AUTHENTICATION_TYPE); + if (authenticationScheme != null) { + endpointElement.addAttribute(omFactory.createOMAttribute( + WSDL2Constants.ATTRIBUTE_AUTHENTICATION_TYPE, whttp, + authenticationScheme.toString())); + } + property = (String) options + .get(WSDL2Constants.ATTR_WHTTP_AUTHENTICATION_REALM); + if (property != null) { + endpointElement.addAttribute(omFactory.createOMAttribute( + WSDL2Constants.ATTRIBUTE_AUTHENTICATION_REALM, whttp, + property)); + } + WSDLSerializationUtil.addWSDLDocumentationElement(this, + endpointElement, omFactory, wsdl); + WSDLSerializationUtil.addPoliciesAsExtensibleElement(this, + endpointElement); + return endpointElement; + } + + public AxisService getAxisService() { + return (AxisService) parent; + } + + public void setParent(AxisService service) { + parent = service; + } + + public void setTransportInDescription(String transportInDescName) { + this.transportInDescName = transportInDescName; + } + + public String calculateEndpointURL() { + if (transportInDescName != null && parent != null) { + AxisConfiguration axisConfiguration = getAxisConfiguration(); + if (axisConfiguration != null) { + try { + String serviceName = ((AxisService) parent).getName(); + TransportInDescription in = axisConfiguration + .getTransportIn(transportInDescName); + TransportListener listener = in.getReceiver(); + String ip = HttpUtils.getIpAddress(axisConfiguration); + // we should pass [serviceName].[endpointName] instead of + // [endpointName] + String sDOTe = serviceName + "." + name + "/"; + EndpointReference[] eprsForService = listener + .getEPRsForService(sDOTe, ip); + // we consider only the first address return by the listener + if (eprsForService != null && eprsForService.length > 0) { + return eprsForService[0].getAddress(); + } + } catch (SocketException e) { + logger.warn(e.getMessage(), e); + } catch (AxisFault e) { + logger.warn(e.getMessage(), e); + } + } + } + + return null; + } + + public boolean isActive() { + if (transportInDescName != null && parent != null) { + AxisConfiguration axisConfiguration = getAxisConfiguration(); + if (axisConfiguration != null) { + AxisService service = (AxisService) parent; + if (service.isEnableAllTransports()) { + return axisConfiguration.getTransportsIn().containsKey( + transportInDescName); + } else { + return service.getExposedTransports().contains( + transportInDescName); + } + } + } + return false; + } +} _______________________________________________ Mashup-dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/mashup-dev
