org.apache.cxf.tools.common.model.JavaInterface Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cxf-tools-common Show documentation
Show all versions of cxf-tools-common Show documentation
Apache CXF Command Line Tools Common
/**
* 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.cxf.tools.common.model;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.*;
import javax.jws.soap.SOAPBinding;
import org.w3c.dom.Element;
import org.apache.cxf.tools.common.ToolException;
public class JavaInterface implements JavaAnnotatable {
private String name;
private String packageName;
private String namespace;
private String location;
private String packageJavaDoc;
private String classJavaDoc;
private JavaModel model;
private SOAPBinding.Style soapStyle;
private SOAPBinding.Use soapUse;
private SOAPBinding.ParameterStyle soapParameterStyle;
private final List methods = new ArrayList<>();
private final List annotations = new ArrayList<>();
private final Set imports = new TreeSet<>();
private final List supers = new ArrayList<>();
private String webserviceName;
private Element handlerChains;
public JavaInterface() {
}
public JavaInterface(JavaModel m) {
this.model = m;
}
static String formatJavaDoc(String d, String spaces) {
if (d != null) {
StringBuilder d2 = new StringBuilder(d.length());
StringReader r = new StringReader(d);
BufferedReader r2 = new BufferedReader(r);
try {
String s2 = r2.readLine();
String pfx = null;
while (s2 != null) {
if (pfx == null && s2.length() > 0) {
pfx = "";
while (s2.length() > 0 && Character.isWhitespace(s2.charAt(0))) {
pfx += " ";
s2 = s2.substring(1);
}
}
if (pfx != null) {
if (d2.length() > 0) {
d2.append('\n');
}
d2.append(spaces).append("* ");
if (s2.startsWith(pfx)) {
d2.append(s2.substring(pfx.length()));
} else {
d2.append(s2);
}
}
s2 = r2.readLine();
}
d = d2.toString();
} catch (IOException ex) {
//ignore, use the raw value
}
}
return d;
}
public void setWebServiceName(String wsn) {
this.webserviceName = wsn;
}
public String getWebServiceName() {
return this.webserviceName;
}
public void setSOAPStyle(SOAPBinding.Style s) {
this.soapStyle = s;
}
public SOAPBinding.Style getSOAPStyle() {
return this.soapStyle;
}
public void setSOAPUse(SOAPBinding.Use u) {
this.soapUse = u;
}
public SOAPBinding.Use getSOAPUse() {
return this.soapUse;
}
public void setSOAPParameterStyle(SOAPBinding.ParameterStyle p) {
this.soapParameterStyle = p;
}
public SOAPBinding.ParameterStyle getSOAPParameterStyle() {
return this.soapParameterStyle;
}
public JavaModel getJavaModel() {
return this.model;
}
public void setName(String n) {
this.name = n;
}
public String getName() {
return name;
}
public void setLocation(String l) {
this.location = l;
}
public String getLocation() {
return this.location;
}
public List getSuperInterfaces() {
return supers;
}
public List getMethods() {
return methods;
}
public boolean hasMethod(JavaMethod method) {
if (method != null) {
String signature = method.getSignature();
for (int i = 0; i < methods.size(); i++) {
if (signature.equals(methods.get(i).getSignature())) {
return true;
}
}
}
return false;
}
public int indexOf(JavaMethod method) {
if (method != null) {
String signature = method.getSignature();
for (int i = 0; i < methods.size(); i++) {
if (signature.equals(methods.get(i).getSignature())) {
return i;
}
}
}
return -1;
}
public int removeMethod(JavaMethod method) {
int index = indexOf(method);
if (index > -1) {
methods.remove(index);
}
return index;
}
public void replaceMethod(JavaMethod method) {
int index = removeMethod(method);
methods.add(index, method);
}
public void addMethod(JavaMethod method) throws ToolException {
if (hasMethod(method)) {
replaceMethod(method);
} else {
methods.add(method);
}
}
public void addSuperInterface(String s) {
if (s.contains(".")) {
if (!s.startsWith("java.lang.")) {
addImport(s);
}
s = s.substring(s.lastIndexOf('.') + 1);
}
supers.add(s);
}
public String getPackageName() {
return this.packageName;
}
public void setPackageName(String pn) {
this.packageName = pn;
}
public String getNamespace() {
return this.namespace;
}
public void setNamespace(String ns) {
this.namespace = ns;
}
public void setPackageJavaDoc(String doc) {
packageJavaDoc = formatJavaDoc(doc, " ");
}
public String getPackageJavaDoc() {
return (packageJavaDoc != null) ? packageJavaDoc : "";
}
public void setClassJavaDoc(String doc) {
classJavaDoc = formatJavaDoc(doc, " ");
}
public String getClassJavaDoc() {
return (classJavaDoc != null) ? classJavaDoc : "";
}
public void addAnnotation(JAnnotation annotation) {
this.annotations.add(annotation);
for (String importClz : annotation.getImports()) {
addImport(importClz);
}
}
public List getAnnotations() {
return this.annotations;
}
public void addImport(String i) {
if (i != null && i.lastIndexOf('.') != -1 && getPackageName() != null
&& getPackageName().equals(i.substring(0, i.lastIndexOf('.')))) {
return;
}
// replace "$" with "." to correctly deal with member classes
if (i != null) {
imports.add(i.replaceAll("\\$", "\\."));
}
}
public void addImports(Collection ii) {
for (String i : ii) {
// replace "$" with "." to correctly deal with member classes
imports.add(i.replaceAll("\\$", "\\."));
}
}
public Iterator getImports() {
return imports.iterator();
}
public void setJavaModel(JavaModel jm) {
this.model = jm;
}
public void annotate(Annotator annotator) {
annotator.annotate(this);
}
public Element getHandlerChains() {
return this.handlerChains;
}
public void setHandlerChains(Element elem) {
this.handlerChains = elem;
}
public void setFullClassName(String fullName) {
int index = fullName.lastIndexOf('.');
setPackageName(fullName.substring(0, index));
setName(fullName.substring(index + 1, fullName.length()));
}
public String getFullClassName() {
StringBuilder sb = new StringBuilder();
sb.append(getPackageName());
sb.append('.');
sb.append(getName());
return sb.toString();
}
public String toString() {
StringBuilder sb = new StringBuilder();
for (JAnnotation anno : annotations) {
sb.append(anno);
sb.append('\n');
}
sb.append(getFullClassName());
return sb.toString();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy