1 package org.objectweb.celtix.tools.processors.wsdl2.internal; 2 3 import java.util.Collection ; 4 5 import javax.wsdl.PortType; 6 7 import com.sun.tools.xjc.api.ClassNameAllocator; 8 9 import org.objectweb.celtix.tools.utils.ProcessorUtil; 10 11 public class ClassNameAllocatorImpl implements ClassNameAllocator { 12 private static final String TYPE_SUFFIX = "_Type"; 13 private Collection <PortType> portTypes; 14 private ClassCollector collector; 15 public ClassNameAllocatorImpl(ClassCollector classCollector) { 16 collector = classCollector; 17 } 18 19 private boolean isNameCollision(String packageName, String className) { 20 return collector.containSeiClass(packageName, className); 21 } 22 23 public String assignClassName(String packageName, String className) { 24 String fullClzName = className; 25 if (isNameCollision(packageName, className)) { 26 fullClzName = className + TYPE_SUFFIX; 27 } 28 29 collector.addTypesClassName(packageName, className, packageName + "." + fullClzName); 30 return fullClzName; 31 } 32 33 public void setPortTypes(Collection <PortType> types, String packageName) { 34 portTypes = types; 35 setSeiClassNames(packageName); 36 } 37 38 private void setSeiClassNames(String packageName) { 39 for (PortType porttype : portTypes) { 40 String ns = porttype.getQName().getNamespaceURI(); 41 String type = porttype.getQName().getLocalPart(); 42 String pkgName = ProcessorUtil.parsePackageName(ns, packageName); 43 String className = ProcessorUtil.mangleNameToClassName(type); 44 String fullClassName = pkgName + "." + className; 45 if (packageName == null) { 46 packageName = pkgName; 47 } 48 collector.addSeiClassName(packageName, className, fullClassName); 49 } 50 } 51 } 52 | Popular Tags |