[jbosstools-commits] JBoss Tools SVN: r24207 - in trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core: data and 1 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Tue Aug 17 05:46:33 EDT 2010


Author: Grid.Qian
Date: 2010-08-17 05:46:32 -0400 (Tue, 17 Aug 2010)
New Revision: 24207

Modified:
   trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/ClientSampleCreationCommand.java
   trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/ImplementationClassCreationCommand.java
   trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/InitialClientCommand.java
   trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/InitialCommand.java
   trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/data/ServiceModel.java
   trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/utils/JBossWSCreationUtils.java
Log:
JBIDE-6481: commit to trunk with the test changes

Modified: trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/ClientSampleCreationCommand.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/ClientSampleCreationCommand.java	2010-08-17 08:13:59 UTC (rev 24206)
+++ trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/ClientSampleCreationCommand.java	2010-08-17 09:46:32 UTC (rev 24207)
@@ -51,7 +51,6 @@
 	public static final String LINE_SEPARATOR = System
 			.getProperty("line.separator"); //$NON-NLS-1$
 	private static final String PACAKAGE = ".*"; //$NON-NLS-1$
-	private static final String PACAKAGESPLIT = "\\."; //$NON-NLS-1$
 
 	private ServiceModel model;
 	private int serviceNum = 1;
@@ -77,16 +76,45 @@
 		}
 
 		// find web service client classes
-		List<ICompilationUnit> clientUnits = findJavaUnitsByAnnotation(project,
-				JBossWSCreationCoreMessages.WebserviceClient_Annotation);
+		List<ICompilationUnit> clientUnits = JBossWSCreationUtils
+				.findJavaUnitsByAnnotation(
+						project,
+						JBossWSCreationCoreMessages.WebserviceClient_Annotation,
+						model.getCustomPackage());
 
 		// find web service classes
-		List<ICompilationUnit> serviceUnits = findJavaUnitsByAnnotation(
-				project,
-				JBossWSCreationCoreMessages.Webservice_Annotation_Check);
+		List<ICompilationUnit> serviceUnits = JBossWSCreationUtils
+				.findJavaUnitsByAnnotation(
+						project,
+						JBossWSCreationCoreMessages.Webservice_Annotation_Check,
+						model.getCustomPackage());
 
+		if (clientUnits.size() == 0) {
+			return status;
+		}
+
+			List<String> packageList = new LinkedList<String>();
+			for (ICompilationUnit unit : clientUnits) {
+				if (!packageList.contains(unit.getParent().getElementName())) {
+					packageList.add(unit.getParent().getElementName());
+				}
+			}
+			for (int j = 0; j < packageList.size(); j++) {
+				status = createImplClass(packageList.get(j), project,
+						clientUnits, serviceUnits);
+				if (!status.isOK()) {
+					break;
+				}
+			}
+
+		return status;
+	}
+
+	private IStatus createImplClass(String packageName, IJavaProject project,
+			List<ICompilationUnit> clientUnits,
+			List<ICompilationUnit> serviceUnits) {
 		// create a client sample class
-		ICompilationUnit clientCls = createJavaClass(model.getCustomPackage()
+		ICompilationUnit clientCls = createJavaClass(packageName
 				+ JBossWSCreationCoreMessages.Client_Sample_Package_Name,
 				JBossWSCreationCoreMessages.Client_Sample_Class_Name, false,
 				null, project);
@@ -97,8 +125,7 @@
 
 		// add imports to client sample class
 		try {
-			clientCls.createImport(model.getCustomPackage() + PACAKAGE, null,
-					null);
+			clientCls.createImport(packageName + PACAKAGE, null, null);
 			clientCls.save(null, true);
 		} catch (Exception e1) {
 			JBossWSCreationCorePlugin.getDefault().logError(e1);
@@ -114,12 +141,12 @@
 		sb.append(LINE_SEPARATOR);
 		sb.append("        System.out.println(\"***********************\");"); //$NON-NLS-1$
 		sb.append(LINE_SEPARATOR);
-		createWebServiceClient(clientUnits, serviceUnits, sb);
+		createWebServiceClient(clientUnits, serviceUnits, sb,packageName);
 		sb.append("        System.out.println(\"***********************\");"); //$NON-NLS-1$
 		sb.append(LINE_SEPARATOR);
 		sb.append("        System.out.println(\"").append( //$NON-NLS-1$
-				JBossWSCreationCoreMessages.Client_Sample_Run_Over).append(
-				"\");"); //$NON-NLS-1$
+				JBossWSCreationCoreMessages.Client_Sample_Run_Over)
+				.append("\");"); //$NON-NLS-1$
 		sb.append(LINE_SEPARATOR);
 		sb.append("}"); //$NON-NLS-1$
 		try {
@@ -130,8 +157,7 @@
 			return StatusUtils
 					.errorStatus(JBossWSCreationCoreMessages.Error_Create_Client_Sample);
 		}
-
-		return status;
+		return Status.OK_STATUS;
 	}
 
 	/**
@@ -142,7 +168,6 @@
 	 * @param method
 	 * @param sb
 	 */
-	@SuppressWarnings("unchecked")
 	private void createWebService(List<ICompilationUnit> serviceUnits,
 			MethodDeclaration method, StringBuffer sb) {
 		sb.append("        System.out.println(\"" //$NON-NLS-1$
@@ -161,10 +186,11 @@
 			parser.setResolveBindings(false);
 			parser.setFocalPosition(0);
 			CompilationUnit result = (CompilationUnit) parser.createAST(null);
+			@SuppressWarnings("rawtypes")
 			List types = result.types();
 			TypeDeclaration typeDec1 = (TypeDeclaration) types.get(0);
-			if (typeDec1.getName().toString().equals(
-					method.getReturnType2().toString())) {
+			if (typeDec1.getName().toString()
+					.equals(method.getReturnType2().toString())) {
 				callWebServiceOperation(typeDec1, sb);
 			}
 		}
@@ -198,15 +224,14 @@
 
 				boolean noNull = true;
 				for (int j = 0; j < method.parameters().size(); j++) {
-					noNull = createWebServiceOperationParameters(method
-							.parameters(), sb, j)
+					noNull = createWebServiceOperationParameters(
+							method.parameters(), sb, j)
 							&& noNull;
 				}
 				sb.append("));"); //$NON-NLS-1$
 				sb.append(LINE_SEPARATOR);
 				if (!noNull) {
-					sb
-							.append("        //Please input the parameters instead of 'null' for the upper method!"); //$NON-NLS-1$
+					sb.append("        //Please input the parameters instead of 'null' for the upper method!"); //$NON-NLS-1$
 					sb.append(LINE_SEPARATOR);
 					sb.append(LINE_SEPARATOR);
 				}
@@ -222,9 +247,8 @@
 	 * @param sb
 	 * @param j
 	 */
-	@SuppressWarnings("unchecked")
-	private boolean createWebServiceOperationParameters(List list,
-			StringBuffer sb, int j) {
+	private boolean createWebServiceOperationParameters(
+			@SuppressWarnings("rawtypes") List list, StringBuffer sb, int j) {
 		SingleVariableDeclaration para = (SingleVariableDeclaration) list
 				.get(j);
 
@@ -255,22 +279,23 @@
 	 * @param serviceUnits
 	 * @param sb
 	 */
-	@SuppressWarnings("unchecked")
-	private void createWebServiceClient(List<ICompilationUnit> clientUnits,
-			List<ICompilationUnit> serviceUnits, StringBuffer sb) {
+	private void createWebServiceClient(List<ICompilationUnit> clientUnits,List<ICompilationUnit> serviceUnits, StringBuffer sb,String packageName) {
 		sb.append("        System.out.println(\"" //$NON-NLS-1$
 				+ "Create Web Service Client...\");"); //$NON-NLS-1$
 		sb.append(LINE_SEPARATOR);
 		for (ICompilationUnit unit : clientUnits) {
 			// parse the unit
+			if(!packageName.equals(unit.getParent().getElementName())){
+				continue;
+			}
 			ASTParser parser = ASTParser.newParser(AST.JLS3);
 			parser.setSource(unit);
 			parser.setResolveBindings(false);
 			parser.setFocalPosition(0);
 			CompilationUnit result = (CompilationUnit) parser.createAST(null);
+			@SuppressWarnings("rawtypes")
 			List types = result.types();
 			TypeDeclaration typeDec = (TypeDeclaration) types.get(0);
-
 			sb.append("        " + typeDec.getName()); //$NON-NLS-1$
 			sb.append(" service").append(serviceNum).append(" = new "); //$NON-NLS-1$ //$NON-NLS-2$
 			sb.append(typeDec.getName());
@@ -284,8 +309,8 @@
 				if (method.modifiers().get(0) instanceof NormalAnnotation) {
 					NormalAnnotation anno = (NormalAnnotation) method
 							.modifiers().get(0);
-					if (anno.getTypeName().getFullyQualifiedName().equals(
-							JBossWSCreationCoreMessages.WebEndpoint)) {
+					if (anno.getTypeName().getFullyQualifiedName()
+							.equals(JBossWSCreationCoreMessages.WebEndpoint)) {
 						createWebService(serviceUnits, method, sb);
 						portNum += 1;
 					}
@@ -296,59 +321,6 @@
 	}
 
 	/**
-	 * find compilationunit by annotation
-	 * 
-	 * @param project
-	 * @param annotation
-	 * @return
-	 */
-	public List<ICompilationUnit> findJavaUnitsByAnnotation(
-			IJavaProject project, String annotation) {
-		List<ICompilationUnit> units = new LinkedList<ICompilationUnit>();
-		try {
-			ICompilationUnit[] javaFiles = null;
-			if (project.findPackageFragment(addPackagetoPath(project)) != null) {
-				javaFiles = project.findPackageFragment(
-						addPackagetoPath(project)).getCompilationUnits();
-			}
-			if (javaFiles != null) {
-				for (ICompilationUnit unit : javaFiles) {
-					if (unit.getSource().contains(annotation)) {
-						units.add(unit);
-					}
-				}
-			}
-		} catch (JavaModelException e) {
-			JBossWSCreationCorePlugin.getDefault().logError(e);
-		}
-		return units;
-	}
-
-	/**
-	 * new a path by adding a java package
-	 * 
-	 * @param project
-	 * @return
-	 * @throws JavaModelException
-	 */
-	private IPath addPackagetoPath(IJavaProject project)
-			throws JavaModelException {
-		String packagename = model.getCustomPackage();
-		String[] names = packagename.split(PACAKAGESPLIT);
-		IPath path = new Path(JBossWSCreationUtils
-				.getJavaProjectSrcLocation(project.getProject()));
-		path = project.getPath().append(
-				path.makeRelativeTo(project.getProject().getLocation()));
-
-		if (names != null && names.length > 0) {
-			for (String name : names) {
-				path = path.append(name);
-			}
-		}
-		return path;
-	}
-
-	/**
 	 * create a java class
 	 * 
 	 * @param packageName
@@ -362,8 +334,9 @@
 			String className, boolean isInterface, String interfaceName,
 			IJavaProject javaProject) {
 		try {
-			IPath srcPath = new Path(JBossWSCreationUtils
-					.getJavaProjectSrcLocation(javaProject.getProject()));
+			IPath srcPath = new Path(
+					JBossWSCreationUtils.getJavaProjectSrcLocation(javaProject
+							.getProject()));
 			srcPath = javaProject.getPath().append(
 					srcPath.makeRelativeTo(javaProject.getProject()
 							.getLocation()));

Modified: trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/ImplementationClassCreationCommand.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/ImplementationClassCreationCommand.java	2010-08-17 08:13:59 UTC (rev 24206)
+++ trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/ImplementationClassCreationCommand.java	2010-08-17 09:46:32 UTC (rev 24207)
@@ -5,8 +5,6 @@
 import java.util.List;
 
 import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspaceRoot;
@@ -65,13 +63,13 @@
 
 	private static final String ANNOTATION_WEB_SERVICE_FULLNAME = "javax.jws.WebService"; //$NON-NLS-1$
 	private static final String ANNOTATION_TYPE_NAME_WEBSERVICE = "WebService";; //$NON-NLS-1$
-	private static final String ANNOTATION_PROPERTY_NAME = "name"; //$NON-NLS-1$
 	private static final String ANNOTATION_PROPERTY_SERVICE_NAME = "serviceName"; //$NON-NLS-1$
 	private static final String ANNOTATION_PROPERTY_ENDPOINT_INTERFACE = "endpointInterface"; //$NON-NLS-1$
 
 	private ServiceModel model;
 	private IWorkspaceRoot fWorkspaceRoot;
 	private IProject project;
+	private String packageName;
 
 	public ImplementationClassCreationCommand(ServiceModel model) {
 		this.model = model;
@@ -90,13 +88,32 @@
 		}
 
 		IStatus status = Status.OK_STATUS;
-		project = JBossWSCreationUtils.getProjectByName(model.getWebProjectName());
+		project = JBossWSCreationUtils.getProjectByName(model
+				.getWebProjectName());
 		try {
-			List<String> portTypes = model.getPortTypes();
-			for (String portTypeName : portTypes) {
-				generateImplClass(formatPortTypeName(portTypeName));
-				String implClsName = getImplPackageName() + "." //$NON-NLS-1$
-						+ getImplClassName(portTypeName);
+
+			IJavaProject javaPrj = JavaCore.create(project);
+			List<ICompilationUnit> serviceUnits = JBossWSCreationUtils
+					.findJavaUnitsByAnnotation(
+							javaPrj,
+							JBossWSCreationCoreMessages.Webservice_Annotation_Check,
+							model.getCustomPackage());
+			
+			packageName = model.getCustomPackage();
+			boolean noPackageName = false;
+			if("".equals(packageName)){ //$NON-NLS-1$
+				noPackageName = true;
+			}
+			for (ICompilationUnit service : serviceUnits) {
+				if (!service.findPrimaryType().isInterface()) {
+					continue;
+				}
+				if(noPackageName){
+					packageName = service.getParent().getElementName();
+				}
+				generateImplClass(service);
+				String implClsName = getImplPackageName()
+						+ "." + getImplClassName(getClassName(service.getElementName())); //$NON-NLS-1$
 				model.addServiceClasses(implClsName);
 			}
 
@@ -116,25 +133,18 @@
 		return status;
 	}
 
-	private String formatPortTypeName(String portTypeName) {
-		if (portTypeName == null || "".equals(portTypeName)) {//$NON-NLS-1$
-			return portTypeName;
-		}
-		StringBuffer buf = new StringBuffer();
-		String tem = buf.append(Character.toUpperCase(portTypeName.charAt(0)))
-				.append(portTypeName.substring(1)).toString();
-		return tem;
-	}
-
 	@SuppressWarnings("unchecked")
-	protected void generateImplClass(String portTypeName/* , IFile implJavaFile */)
+	protected void generateImplClass(ICompilationUnit service)
 			throws CoreException, BadLocationException {
+		ASTParser astp = ASTParser.newParser(AST.JLS3);
+		astp.setSource(service);
+		CompilationUnit cu = (CompilationUnit) astp.createAST(null);
+		IPackageFragment pack = getImplPakcage();
 
-		CompilationUnit portTypeCU = getCompilationUnitForInterface(portTypeName);
+		String className = getClassName(service.getElementName());
 
-		IPackageFragment pack = getImplPakcage();
+		String implFileName = getJavaFileName(className);
 
-		String implFileName = getJavaFileName(portTypeName);
 		ICompilationUnit icu = pack.createCompilationUnit(implFileName,
 				"", true, null); //$NON-NLS-1$
 		// create a working copy with a new owner
@@ -163,26 +173,26 @@
 		implCu.setPackage(implPackage);
 
 		// add imports for implementation class
-		addImportsToImplementationClass(implCu, portTypeCU, portTypeName);
+		addImportsToImplementationClass(implCu, cu, className);
 
 		// add class declaration
 		TypeDeclaration type = ast.newTypeDeclaration();
 		type.setInterface(false);
 		// add WebService annotation
-		String endpoint = getPortTypeInterfaceFullName(portTypeName);
-		NormalAnnotation ann = createAnnotation(ast, portTypeName, endpoint);
+		String endpoint = getServiceInterfaceFullName(className);
+		NormalAnnotation ann = createAnnotation(ast, className, endpoint);
 		type.modifiers().add(ann);
 		type.modifiers().add(
 				ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD));
-		type.setName(ast.newSimpleName(getImplClassName(portTypeName)));
+		type.setName(ast.newSimpleName(getImplClassName(className)));
 		type.superInterfaceTypes().add(
-				ast.newSimpleType(ast.newName(portTypeName)));
+				ast.newSimpleType(ast.newName(className)));
 
 		// add Logger variable declaration
 		// createLoggerField(ast, type, portTypeName);
 
 		// add method implementation
-		TypeDeclaration inTD = (TypeDeclaration) portTypeCU.types().get(0);
+		TypeDeclaration inTD = (TypeDeclaration) cu.types().get(0);
 		// firstly, get all methods that declared in Interface class and then
 		// add corresponding methods to
 		// the impl class
@@ -209,11 +219,13 @@
 	}
 
 	private String getImplPackageName() {
-		return model.getCustomPackage() /* + ".impl" */;
+		return packageName;
 	}
 
-	private IPackageFragmentRoot getPackageFragmentRoot() throws JavaModelException {
-		String str = model.getWebProjectName() + File.separator+ getSourceFolderPath(project);
+	private IPackageFragmentRoot getPackageFragmentRoot()
+			throws JavaModelException {
+		String str = model.getWebProjectName() + File.separator
+				+ getSourceFolderPath(project);
 		IPath path = new Path(str);
 		IResource res = fWorkspaceRoot.findMember(path);
 		IJavaProject javaPrj = JavaCore.create(project);
@@ -221,19 +233,20 @@
 
 	}
 
-	private String getJavaFileName(String portTypeName) {
+	private String getJavaFileName(String className) {
 
-		return getImplClassName(portTypeName) + DEFAULT_CU_SUFFIX;
+		return getImplClassName(className) + DEFAULT_CU_SUFFIX;
 	}
 
-	private String getImplClassName(String portTypeName) {
-		String firstLetter = portTypeName.substring(0, 1);
-		String implClsName = firstLetter.toUpperCase()
-				+ portTypeName.substring(1);
-		implClsName = implClsName + "Impl"; //$NON-NLS-1$
-		return implClsName;
+	private String getImplClassName(String className) {
+		return className + "Impl"; //$NON-NLS-1$
 	}
 
+	private String getClassName(String className) {
+		String clsName = className.substring(0, className.length() - 5);
+		return clsName;
+	}
+
 	private IPackageFragment getImplPakcage() throws JavaModelException {
 		IPackageFragmentRoot root = getPackageFragmentRoot();
 		String implPackageName = getImplPackageName();
@@ -247,31 +260,29 @@
 		return pack;
 	}
 
-	private String getPortTypeInterfaceFullName(String portTypeName) {
-		return model.getCustomPackage() + "." + portTypeName; //$NON-NLS-1$
+	private String getServiceInterfaceFullName(String className) {
+		return packageName + "." + className; //$NON-NLS-1$
 	}
 
 	@SuppressWarnings("unchecked")
 	private void addImportsToImplementationClass(CompilationUnit implCU,
-			CompilationUnit portTypeCU, String portTypeName) {
-		List<ImportDeclaration> imports = getImportsWithoutJaxwsAnnotation(portTypeCU);
+			CompilationUnit serviceCU, String serviceName) {
+		List<ImportDeclaration> imports = getImportsWithoutJaxwsAnnotation(serviceCU);
 		AST implAST = implCU.getAST();
 
 		// add imports for implementation class
 		for (ImportDeclaration id : imports) {
 			ImportDeclaration newId = implAST.newImportDeclaration();
-			newId
-					.setName(implAST.newName(id.getName()
-							.getFullyQualifiedName()));
+			newId.setName(implAST.newName(id.getName().getFullyQualifiedName()));
 			implCU.imports().add(newId);
 		}
 
 		// import port type interface
 		ImportDeclaration importDec = implAST.newImportDeclaration();
-		QualifiedName portTypeImport = implAST.newQualifiedName(implAST
-				.newName(portTypeCU.getPackage().getName()
-						.getFullyQualifiedName()), implAST
-				.newSimpleName(portTypeName));
+		QualifiedName portTypeImport = implAST.newQualifiedName(
+				implAST.newName(serviceCU.getPackage().getName()
+						.getFullyQualifiedName()),
+				implAST.newSimpleName(serviceName));
 		importDec.setName(portTypeImport);
 		implCU.imports().add(importDec);
 		// importDec = implAST.newImportDeclaration();
@@ -289,13 +300,13 @@
 	 * create web service annotation
 	 */
 	@SuppressWarnings("unchecked")
-	protected NormalAnnotation createAnnotation(AST ast,
-			String serviceName, String endpoint) {
+	protected NormalAnnotation createAnnotation(AST ast, String serviceName,
+			String endpoint) {
 		NormalAnnotation ann = ast.newNormalAnnotation();
 		ann.setTypeName(ast.newSimpleName(ANNOTATION_TYPE_NAME_WEBSERVICE));
 
-		MemberValuePair member = createMemberValuePair(ast, ANNOTATION_PROPERTY_SERVICE_NAME,
-				serviceName);
+		MemberValuePair member = createMemberValuePair(ast,
+				ANNOTATION_PROPERTY_SERVICE_NAME, serviceName);
 		ann.values().add(member);
 		member = createMemberValuePair(ast,
 				ANNOTATION_PROPERTY_ENDPOINT_INTERFACE, endpoint);
@@ -320,6 +331,7 @@
 
 		MethodDeclaration md = ast.newMethodDeclaration();
 		md.setConstructor(false);
+		@SuppressWarnings("rawtypes")
 		List modifiers = md.modifiers();
 		modifiers.add(ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD));
 		md.setName(ast
@@ -328,6 +340,7 @@
 		Type sType = copyTypeFromOtherASTNode(ast, inMethod.getReturnType2());
 		md.setReturnType2(sType);
 
+		@SuppressWarnings("rawtypes")
 		List parameters = inMethod.parameters();
 
 		for (Object obj : parameters) {
@@ -398,13 +411,13 @@
 					.getFullyQualifiedName()));
 		} else if (type instanceof ArrayType) {
 			ArrayType atype = (ArrayType) type;
-			return ast.newArrayType(copyTypeFromOtherASTNode(ast, atype
-					.getComponentType()));
+			return ast.newArrayType(copyTypeFromOtherASTNode(ast,
+					atype.getComponentType()));
 		} else if (type instanceof ParameterizedType) {
 			ParameterizedType ptype = (ParameterizedType) type;
 			ParameterizedType newParaType = ast
-					.newParameterizedType(copyTypeFromOtherASTNode(ast, ptype
-							.getType()));
+					.newParameterizedType(copyTypeFromOtherASTNode(ast,
+							ptype.getType()));
 			for (Object arg : ptype.typeArguments()) {
 				if (arg instanceof Type) {
 					Type newArg = copyTypeFromOtherASTNode(ast, (Type) arg);
@@ -422,10 +435,10 @@
 		return null;
 	}
 
-	@SuppressWarnings("unchecked")
 	protected List<ImportDeclaration> getImportsWithoutJaxwsAnnotation(
 			CompilationUnit cu) {
 		List<ImportDeclaration> importList = new ArrayList<ImportDeclaration>();
+		@SuppressWarnings("rawtypes")
 		List imports = cu.imports();
 		for (Object obj : imports) {
 			ImportDeclaration id = (ImportDeclaration) obj;
@@ -438,41 +451,11 @@
 		return importList;
 	}
 
-	private CompilationUnit getCompilationUnitForInterface(String portTypeName)
-			throws CoreException {
-		System.out.println(portTypeName);
-		IFile inFile = getServiceInterfaceFile(portTypeName);
-		if (!inFile.exists()) {
-			throw new CoreException(
-					StatusUtils
-							.errorStatus(JBossWSCreationCoreMessages.Error_Message_Failed_To_Generate_Code));
-		}
-		ICompilationUnit icu = JBossWSCreationUtils.getJavaUnitFromFile(inFile);
-		ASTParser astp = ASTParser.newParser(AST.JLS3);
-		astp.setSource(icu);
-
-		CompilationUnit cu = (CompilationUnit) astp.createAST(null);
-
-		return cu;
-	}
-
-	private IFile getServiceInterfaceFile(String portTypeName)
+	private IPath getSourceFolderPath(IProject project)
 			throws JavaModelException {
-		IFolder pkgFolder = getPackageFolder();
-		IFile inFile = pkgFolder.getFile(portTypeName + DEFAULT_CU_SUFFIX);
-		return inFile;
-	}
-
-	private IFolder getPackageFolder() throws JavaModelException {
-		IFolder srcFolder = project.getFolder(getSourceFolderPath(project));
-		String pkgFolderName = model.getCustomPackage().replace(".", //$NON-NLS-1$
-				File.separator);
-		return srcFolder.getFolder(pkgFolderName);
-
-	}
-	
-	private IPath getSourceFolderPath(IProject project) throws JavaModelException{
-		IPath path = new Path(JBossWSCreationUtils.getJavaProjectSrcLocation(project.getProject()));
+		IPath path = new Path(
+				JBossWSCreationUtils.getJavaProjectSrcLocation(project
+						.getProject()));
 		return path.makeRelativeTo(project.getProject().getLocation());
 	}
 

Modified: trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/InitialClientCommand.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/InitialClientCommand.java	2010-08-17 08:13:59 UTC (rev 24206)
+++ trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/InitialClientCommand.java	2010-08-17 09:46:32 UTC (rev 24207)
@@ -11,8 +11,6 @@
 
 package org.jboss.tools.ws.creation.core.commands;
 
-import javax.wsdl.WSDLException;
-
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
@@ -24,11 +22,9 @@
 import org.eclipse.wst.ws.internal.wsrt.IWebServiceClient;
 import org.eclipse.wst.ws.internal.wsrt.WebServiceScenario;
 import org.jboss.tools.ws.core.utils.StatusUtils;
-import org.jboss.tools.ws.creation.core.JBossWSCreationCorePlugin;
 import org.jboss.tools.ws.creation.core.data.ServiceModel;
 import org.jboss.tools.ws.creation.core.messages.JBossWSCreationCoreMessages;
 import org.jboss.tools.ws.creation.core.utils.JBossWSCreationUtils;
-import org.jboss.tools.ws.creation.core.utils.WSDLPropertyReader;
 
 /**
  * @author Grid Qian
@@ -59,8 +55,10 @@
 			if (location.equals("")) { //$NON-NLS-1$
 				return StatusUtils
 						.errorStatus(JBossWSCreationCoreMessages.Error_WS_Location);
-			} else if (!new Path(location).append(JBossWSCreationCoreMessages.Bin)
-					.append(JBossWSCreationCoreMessages.Command).toFile().exists()) {
+			} else if (!new Path(location)
+					.append(JBossWSCreationCoreMessages.Bin)
+					.append(JBossWSCreationCoreMessages.Command).toFile()
+					.exists()) {
 				return StatusUtils
 						.errorStatus(JBossWSCreationCoreMessages.Error_WS_Location);
 			}
@@ -70,20 +68,9 @@
 		}
 		model.setTarget(JBossWSCreationCoreMessages.Value_Target_0);
 		if (scenario == WebServiceScenario.CLIENT) {
-			try {
-				model.setWsdlURI(wsClient.getWebServiceClientInfo()
-						.getWsdlURL());
-				WSDLPropertyReader reader = new WSDLPropertyReader();
-				reader
-						.readWSDL(wsClient.getWebServiceClientInfo()
-								.getWsdlURL());
-				model.setCustomPackage(""); //$NON-NLS-1$
-				model.setServiceList(reader.getServiceList());
-				model.setPortTypeList(reader.getPortTypeList());
-			} catch (WSDLException e) {
-				JBossWSCreationCorePlugin.getDefault().logError(e);
-				return StatusUtils.errorStatus(e.getLocalizedMessage(), e);
-			}
+			model.setWsdlURI(wsClient.getWebServiceClientInfo().getWsdlURL());
+			model.setCustomPackage(""); //$NON-NLS-1$
+
 		}
 
 		return Status.OK_STATUS;

Modified: trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/InitialCommand.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/InitialCommand.java	2010-08-17 08:13:59 UTC (rev 24206)
+++ trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/commands/InitialCommand.java	2010-08-17 09:46:32 UTC (rev 24207)
@@ -1,7 +1,5 @@
 package org.jboss.tools.ws.creation.core.commands;
 
-import javax.wsdl.WSDLException;
-
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
@@ -13,11 +11,9 @@
 import org.eclipse.wst.ws.internal.wsrt.IWebService;
 import org.eclipse.wst.ws.internal.wsrt.WebServiceScenario;
 import org.jboss.tools.ws.core.utils.StatusUtils;
-import org.jboss.tools.ws.creation.core.JBossWSCreationCorePlugin;
 import org.jboss.tools.ws.creation.core.data.ServiceModel;
 import org.jboss.tools.ws.creation.core.messages.JBossWSCreationCoreMessages;
 import org.jboss.tools.ws.creation.core.utils.JBossWSCreationUtils;
-import org.jboss.tools.ws.creation.core.utils.WSDLPropertyReader;
 
 @SuppressWarnings("restriction")
 public class InitialCommand extends AbstractDataModelOperation {
@@ -56,17 +52,8 @@
 		}
 		model.setTarget(JBossWSCreationCoreMessages.Value_Target_0);
 		if (scenario == WebServiceScenario.TOPDOWN) {
-			try {
-				model.setWsdlURI(ws.getWebServiceInfo().getWsdlURL());
-				WSDLPropertyReader reader = new WSDLPropertyReader();
-				reader.readWSDL(ws.getWebServiceInfo().getWsdlURL());
-				model.setCustomPackage(""); //$NON-NLS-1$
-				model.setServiceList(reader.getServiceList());
-				model.setPortTypeList(reader.getPortTypeList());
-			} catch (WSDLException e) {
-				JBossWSCreationCorePlugin.getDefault().logError(e);
-				return StatusUtils.errorStatus(e.getLocalizedMessage(), e);
-			}
+			model.setWsdlURI(ws.getWebServiceInfo().getWsdlURL());
+			model.setCustomPackage(""); //$NON-NLS-1$
 		} else {
 			model.addServiceClasses(ws.getWebServiceInfo().getImplURL());
 		}

Modified: trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/data/ServiceModel.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/data/ServiceModel.java	2010-08-17 08:13:59 UTC (rev 24206)
+++ trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/data/ServiceModel.java	2010-08-17 09:46:32 UTC (rev 24207)
@@ -9,8 +9,6 @@
 	
 	private boolean serverStatus;
 	private String  wsdlURI;
-	private List<String> portTypes;
-	private List<String> serviceNames;
 	private String customPackage;
 	private List<String> bindingFiles;
 	private String catalog;
@@ -58,38 +56,6 @@
 		this.customPackage = packageText;
 	}
 	
-	public List<String> getPortTypes() {
-		if(portTypes == null){
-			portTypes = new ArrayList<String>();
-		}
-		return portTypes;
-	}
-	public void addPortTypes(String portType) {		
-		this.portTypes = getPortTypes();
-		if(!this.portTypes.contains(portType)){
-			this.portTypes.add(portType);
-		}
-	}
-	public void setPortTypeList(List<String> portTypeList) {		
-		this.portTypes = portTypeList;
-	}
-	
-	public List<String> getServiceNames() {
-		if(serviceNames == null){
-			serviceNames = new ArrayList<String>();
-		}
-		return serviceNames;
-	}
-	public void addServiceName(String serviceName) {
-		this.serviceNames = getServiceClasses();
-		if(!serviceName.contains(serviceName)){
-			this.serviceNames.add(serviceName);
-		}
-	}
-	public void setServiceList(List<String> serviceList) {
-		this.serviceNames = serviceList;
-	}
-	
 	public String getWsdlURI() {
 		return wsdlURI;
 	}

Modified: trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/utils/JBossWSCreationUtils.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/utils/JBossWSCreationUtils.java	2010-08-17 08:13:59 UTC (rev 24206)
+++ trunk/ws/plugins/org.jboss.tools.ws.creation.core/src/org/jboss/tools/ws/creation/core/utils/JBossWSCreationUtils.java	2010-08-17 09:46:32 UTC (rev 24207)
@@ -25,6 +25,7 @@
 import java.text.Collator;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
 
@@ -34,6 +35,7 @@
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.jdt.core.IClasspathEntry;
 import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.IJavaElement;
@@ -58,6 +60,7 @@
 import org.jboss.tools.ws.core.facet.delegate.IJBossWSFacetDataModelProperties;
 import org.jboss.tools.ws.core.facet.delegate.JBossWSFacetInstallDataModelProvider;
 import org.jboss.tools.ws.core.utils.StatusUtils;
+import org.jboss.tools.ws.creation.core.JBossWSCreationCorePlugin;
 import org.jboss.tools.ws.creation.core.messages.JBossWSCreationCoreMessages;
 
 public class JBossWSCreationUtils {
@@ -77,8 +80,8 @@
 		if (hasUpperCase(keyword)) {
 			return false;
 		}
-		return (Arrays.binarySearch(javaKeyWords, keyword, Collator
-				.getInstance(Locale.ENGLISH)) >= 0);
+		return (Arrays.binarySearch(javaKeyWords, keyword,
+				Collator.getInstance(Locale.ENGLISH)) >= 0);
 	}
 
 	private static boolean hasUpperCase(String nodeName) {
@@ -95,21 +98,25 @@
 
 	public static IProject getProjectByName(String project) {
 		String projectString = replaceEscapecharactors(project);
-		return ResourcesPlugin.getWorkspace().getRoot().getProject(
-				getProjectNameFromFramewokNameString(projectString));
+		return ResourcesPlugin
+				.getWorkspace()
+				.getRoot()
+				.getProject(getProjectNameFromFramewokNameString(projectString));
 	}
 
 	public static IPath getProjectRoot(String project) {
 		String projectString = replaceEscapecharactors(project);
-		return ResourcesPlugin.getWorkspace().getRoot().getProject(
-				getProjectNameFromFramewokNameString(projectString))
+		return ResourcesPlugin
+				.getWorkspace()
+				.getRoot()
+				.getProject(getProjectNameFromFramewokNameString(projectString))
 				.getLocation();
 	}
 
 	private static String replaceEscapecharactors(String vulnarableString) {
 		if (vulnarableString.indexOf("/") != -1) { //$NON-NLS-1$
-			vulnarableString = vulnarableString.replace('/', File.separator
-					.charAt(0));
+			vulnarableString = vulnarableString.replace('/',
+					File.separator.charAt(0));
 		}
 		return vulnarableString;
 	}
@@ -437,7 +444,7 @@
 		}
 		return path;
 	}
-	
+
 	public static File findFileByPath(String name, String path) {
 		File ret = null;
 		File folder = new File(path);
@@ -455,6 +462,91 @@
 			}
 		}
 		return ret;
-	}	
+	}
 
+	/**
+	 * find compilationunit by annotation
+	 * 
+	 * @param project
+	 * @param annotation
+	 * @return
+	 */
+	public static List<ICompilationUnit> findJavaUnitsByAnnotation(
+			IJavaProject project, String annotation, String packageName) {
+		List<ICompilationUnit> units = new LinkedList<ICompilationUnit>();
+		try {
+			IPath path = addPackagetoPath(project, packageName);
+			if (path == null) {
+				IResource[] resources = JBossWSCreationUtils
+						.getJavaSourceRoots(project.getProject());
+				if (resources != null && resources.length > 0) {
+					IJavaElement[] elements = project.getPackageFragmentRoot(
+							resources[0]).getChildren();
+					for (IJavaElement element : elements) {
+						if (IJavaElement.PACKAGE_FRAGMENT == element
+								.getElementType()) {
+							findInPackageFragment(units, element.getPath(),
+									project, annotation);
+						}
+					}
+				}
+			} else {
+				findInPackageFragment(units, path, project, annotation);
+			}
+		} catch (JavaModelException e) {
+			JBossWSCreationCorePlugin.getDefault().logError(e);
+		}
+		return units;
+	}
+
+	private static void findInPackageFragment(List<ICompilationUnit> units,
+			IPath path, IJavaProject project, String annotation) {
+		ICompilationUnit[] javaFiles = null;
+		try {
+			if (project.findPackageFragment(path) != null) {
+				javaFiles = project.findPackageFragment(path)
+						.getCompilationUnits();
+			}
+			if (javaFiles != null) {
+				for (ICompilationUnit unit : javaFiles) {
+					if (unit.getSource().contains(annotation)) {
+						units.add(unit);
+
+					}
+				}
+			}
+		} catch (JavaModelException e) {
+			JBossWSCreationCorePlugin.getDefault().logError(e);
+
+		}
+	}
+
+	/**
+	 * new a path by adding a java package
+	 * 
+	 * @param project
+	 * @return
+	 * @throws JavaModelException
+	 */
+	public static IPath addPackagetoPath(IJavaProject project,
+			String packageName) throws JavaModelException {
+		String PACAKAGESPLIT = "\\."; //$NON-NLS-1$
+		if ("".equals(packageName)) { //$NON-NLS-1$
+			return null;
+		}
+		IPath path = new Path(
+				JBossWSCreationUtils.getJavaProjectSrcLocation(project
+						.getProject()));
+		String[] names = packageName.split(PACAKAGESPLIT);
+		path = project.getPath().append(
+				path.makeRelativeTo(project.getProject().getLocation()));
+
+		if (names != null && names.length > 0) {
+			for (String name : names) {
+				path = path.append(name);
+			}
+		}
+		return path;
+	}
+
 }



More information about the jbosstools-commits mailing list