blob: 304ff7b00cc0280fcdec935bdd1413befe903060 [file] [log] [blame]
/*
* 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();
}
}