| /* |
| * 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.jaxws.description.builder; |
| |
| import org.apache.axis2.jaxws.ExceptionFactory; |
| import org.apache.axis2.jaxws.i18n.Messages; |
| |
| import java.lang.annotation.Annotation; |
| |
| |
| public class WebServiceClientAnnot implements javax.xml.ws.WebServiceClient { |
| |
| private String name; |
| private String targetNamespace; |
| private String wsdlLocation; |
| |
| /** A WebServiceClientAnnot cannot be instantiated. */ |
| private WebServiceClientAnnot() { |
| |
| } |
| |
| private WebServiceClientAnnot( |
| String name, |
| String targetNamespace, |
| String wsdlLocation) { |
| this.name = name; |
| this.targetNamespace = targetNamespace; |
| this.wsdlLocation = wsdlLocation; |
| } |
| |
| public static WebServiceClientAnnot createWebServiceClientAnnotImpl() { |
| return new WebServiceClientAnnot(); |
| } |
| |
| public static WebServiceClientAnnot createWebServiceClientAnnotImpl( |
| String name, |
| String targetNamespace, |
| String wsdlLocation |
| ) { |
| return new WebServiceClientAnnot(name, |
| targetNamespace, |
| wsdlLocation); |
| } |
| |
| /** |
| * Create an instance of this annotation using the values from the annotation instance |
| * passed in. |
| * |
| * @param annotation Use the values to create a new instance of annotation. Note this could |
| * be an instance of the java annotation superclass as well. |
| * @return a new instance of this annotation or null if one could not be created with the |
| * annotation passed in. |
| */ |
| public static WebServiceClientAnnot createFromAnnotation(Annotation annotation) { |
| WebServiceClientAnnot returnAnnot = null; |
| if (annotation != null && annotation instanceof javax.xml.ws.WebServiceClient) { |
| javax.xml.ws.WebServiceClient wsc = (javax.xml.ws.WebServiceClient) annotation; |
| returnAnnot = new WebServiceClientAnnot(wsc.name(), |
| wsc.targetNamespace(), |
| wsc.wsdlLocation()); |
| } |
| return returnAnnot; |
| } |
| |
| /** |
| * Create a new instance of this annotation using the values from the two annotations passed |
| * in as arguments. If either is null, the new annotation is created with the non-null |
| * annotation's values. If both are null, then no annotation is created. Non-empty values in |
| * the sparse annotation (if any) will override the values in the base annotation. |
| * |
| * @param baseAnnotation Initial values to be used in creating the annotation. May be null. |
| * @param sparseAnnotation Non-empty values (not null and not "") will override values in |
| * the base annotation. |
| * @return A new annotation created from the arguments, or null if one could not be created. |
| */ |
| public static WebServiceClientAnnot createFromAnnotation(Annotation baseAnnotation, |
| Annotation sparseAnnotation) { |
| WebServiceClientAnnot returnAnnot = null; |
| javax.xml.ws.WebServiceClient baseWSCAnnotation = null; |
| javax.xml.ws.WebServiceClient sparseWSCAnnotation = null; |
| |
| if (baseAnnotation != null && baseAnnotation instanceof javax.xml.ws.WebServiceClient) { |
| baseWSCAnnotation = (javax.xml.ws.WebServiceClient) baseAnnotation; |
| } |
| |
| if (sparseAnnotation != null && sparseAnnotation instanceof javax.xml.ws.WebServiceClient) { |
| sparseWSCAnnotation = (javax.xml.ws.WebServiceClient) sparseAnnotation; |
| } |
| |
| if (baseWSCAnnotation != null && sparseWSCAnnotation != null) { |
| // Both specified, create based on the base annotation merged with the sparse |
| // annotation |
| returnAnnot = WebServiceClientAnnot.createFromAnnotation(baseWSCAnnotation); |
| if (!DescriptionBuilderUtils.isEmpty(sparseWSCAnnotation.name())) { |
| returnAnnot.setName(sparseWSCAnnotation.name()); |
| } |
| if (!DescriptionBuilderUtils.isEmpty(sparseWSCAnnotation.targetNamespace())) { |
| returnAnnot.setTargetNamespace(sparseWSCAnnotation.targetNamespace()); |
| } |
| if (!DescriptionBuilderUtils.isEmpty(sparseWSCAnnotation.wsdlLocation())) { |
| returnAnnot.setWsdlLocation(sparseWSCAnnotation.wsdlLocation()); |
| } |
| } else if (baseWSCAnnotation != null && sparseWSCAnnotation == null) { |
| // There's no sparse information, so just create from the base annotation |
| returnAnnot = WebServiceClientAnnot.createFromAnnotation(baseWSCAnnotation); |
| } else if (baseWSCAnnotation == null && sparseWSCAnnotation != null) { |
| // There's only sparse information, so create a new annotation based on that |
| returnAnnot = WebServiceClientAnnot.createFromAnnotation(sparseWSCAnnotation); |
| } else if (baseWSCAnnotation == null && sparseWSCAnnotation == null) { |
| // No anntotation specifed, so just return null which was initialized above |
| } else { |
| // This should never happen; all the cases are covered above |
| String msg = Messages.getMessage("DescriptionBuilderErr2", |
| (sparseAnnotation == null) ? null : sparseAnnotation.toString(), |
| (baseAnnotation == null) ? null : baseAnnotation.toString()); |
| throw ExceptionFactory.makeWebServiceException(msg); |
| } |
| return returnAnnot; |
| } |
| |
| /** @return Returns the name. */ |
| public String name() { |
| return name; |
| } |
| |
| /** @return Returns the targetNamespace. */ |
| public String targetNamespace() { |
| return targetNamespace; |
| } |
| |
| /** @return Returns the wsdlLocation. */ |
| public String wsdlLocation() { |
| return wsdlLocation; |
| } |
| |
| /** @param name The name to set. */ |
| public void setName(String name) { |
| this.name = name; |
| } |
| |
| /** @param targetNamespace The targetNamespace to set. */ |
| public void setTargetNamespace(String targetNamespace) { |
| this.targetNamespace = targetNamespace; |
| } |
| |
| /** @param wsdlLocation The wsdlLocation to set. */ |
| public void setWsdlLocation(String wsdlLocation) { |
| this.wsdlLocation = wsdlLocation; |
| } |
| |
| //hmm, should we really do this |
| public Class<Annotation> annotationType() { |
| return Annotation.class; |
| } |
| |
| /** |
| * Convenience method for unit testing. We will print all of the |
| * data members here. |
| */ |
| public String toString() { |
| StringBuffer sb = new StringBuffer(); |
| String newLine = "\n"; |
| sb.append(newLine); |
| sb.append("@WebServiceClient.name= " + name); |
| sb.append(newLine); |
| sb.append("@WebServiceClient.targetNamespace= " + targetNamespace); |
| sb.append(newLine); |
| sb.append("@WebServiceClient.wsdlLocation= " + wsdlLocation); |
| sb.append(newLine); |
| return sb.toString(); |
| } |
| } |