diff options
author | dbranekov | 2010-03-08 12:02:16 +0000 |
---|---|---|
committer | dbranekov | 2010-03-08 12:02:16 +0000 |
commit | 47c8511b8634db39853035c7f3ef19bd016bd0a5 (patch) | |
tree | 33f88e0727cbdf00fb35299aad9457d1efb15692 /jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org | |
parent | a819b7599e86409c2aa224b83f298b6a36e95e71 (diff) | |
download | webtools.webservices-47c8511b8634db39853035c7f3ef19bd016bd0a5.tar.gz webtools.webservices-47c8511b8634db39853035c7f3ef19bd016bd0a5.tar.xz webtools.webservices-47c8511b8634db39853035c7f3ef19bd016bd0a5.zip |
Bug 304487, 304488, 304489
Adopt APT in JAX-WS model validation
Diffstat (limited to 'jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org')
4 files changed, 24 insertions, 118 deletions
diff --git a/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/WsdlNamesValidator.java b/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/WsdlNamesValidator.java deleted file mode 100755 index 2d46fd58d..000000000 --- a/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/WsdlNamesValidator.java +++ /dev/null @@ -1,87 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 by SAP AG, Walldorf. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * SAP AG - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.ws.jaxws.utils; - -import java.text.MessageFormat; - -import org.apache.axis.types.NCName; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jst.ws.jaxws.utils.internal.text.JaxWsUtilMessages; - - -/** - * Class that contains utility methods to validate names used in WSDL. - * - * @author Georgi Vachkov - */ -public class WsdlNamesValidator -{ - /** - * Provides validation of NCName - * @param title the title for the error message - * @param name the checked name - * @return error status in case the name is invalid otherwise {@link Status#OK_STATUS}. - */ - public static IStatus validateNCName(final String title, final String name) - { - if (name.trim().length() == 0) { - return StatusUtils.statusError(MessageFormat.format(JaxWsUtilMessages.WsdlNamesValidator_EmptyXmlName, title)); - } - - int errPos = checkNCName(name); - if (errPos > -1) { - return StatusUtils.statusError(MessageFormat.format(JaxWsUtilMessages.WsdlNamesValidator_InvalidNCName, name.charAt(errPos), title, name)); - } - - return Status.OK_STATUS; - } - - /** - * Validates <code>name</code> for NCName - * @param name - * @return -1 if the name is valid or > -1 which is the position of the wrong character. - */ - public static IStatus validateNCName2(final String title, final String name) - { - if (name==null || name.trim().length() == 0) { - return StatusUtils.statusError(MessageFormat.format(JaxWsUtilMessages.WsdlNamesValidator_EmptyXmlName2, title)); - } - - int errPos = checkNCName(name); - if (errPos > -1) { - return StatusUtils.statusError(MessageFormat.format(JaxWsUtilMessages.WsdlNamesValidator_InvalidNCName2, name.charAt(errPos), title)); - } - - return Status.OK_STATUS; - } - - /** - * Checks whether the name specified is a valid NCName - * @param name the name to check - * @return index of the first symbol which violates the NCName rules or -1 in case the name is a valid NCName - * @see NCName#isValid(String) - */ - private static int checkNCName(final String name) - { - final StringBuilder builder = new StringBuilder(); - for(int i = 0; i < name.length(); i++) - { - builder.append(name.charAt(i)); - if(!NCName.isValid(builder.toString())) - { - return i; - } - } - - return -1; - } -} diff --git a/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/clazz/ASTUtils.java b/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/clazz/ASTUtils.java index 14a7a2c9e..c77bc6285 100755 --- a/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/clazz/ASTUtils.java +++ b/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/clazz/ASTUtils.java @@ -14,6 +14,7 @@ import static org.eclipse.jst.ws.jaxws.utils.ContractChecker.nullCheckParam; import java.io.File; import java.io.IOException; +import java.util.Arrays; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; @@ -144,19 +145,36 @@ public class ASTUtils */ public String getTypeSignature(final SingleVariableDeclaration svDecl) { - String typeName = Signature.createTypeSignature(svDecl.getType().toString(), false); + String typeName = createDimensionedTypeName(Signature.createTypeSignature(svDecl.getType().toString(), false), svDecl.getExtraDimensions()); - if (svDecl.getExtraDimensions() > 0 && typeName.indexOf('[') == -1) + // Varargs append another dimension + if (svDecl.isVarargs()) { - for (int i = 0; i < svDecl.getExtraDimensions(); i++) - { - typeName = "[" + typeName;// $JL-STR_CONCAT$ //$NON-NLS-1$ - } + typeName = Signature.C_ARRAY + typeName; } return typeName; } + private String createDimensionedTypeName(final String typeName, final int dimensions) + { + final StringBuilder result = new StringBuilder(typeName); + final String dimensionString = createDimensionString(dimensions); + while(!result.toString().startsWith(dimensionString)) + { + result.insert(0, Signature.C_ARRAY); + } + + return result.toString(); + } + + private String createDimensionString(final int dimensions) + { + final char[] dimensionChars = new char[dimensions]; + Arrays.fill(dimensionChars, Signature.C_ARRAY); + return new String(dimensionChars); + } + /** * Finds {@link MethodDeclaration} in {@link TypeDeclaration} having name <code>methodType.getElementName()</code>. * diff --git a/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/internal/text/JaxWsUtilMessages.java b/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/internal/text/JaxWsUtilMessages.java index 164fc61e5..39f2c69f7 100755 --- a/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/internal/text/JaxWsUtilMessages.java +++ b/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/internal/text/JaxWsUtilMessages.java @@ -31,26 +31,6 @@ public class JaxWsUtilMessages extends NLS public static String AnnotationUtils_ParamShouldNotBeNullMsg; -// -// public static String EngineDataProvider_UnableToDeterminePortOfDeployServerMsg; -// -// public static String EngineDataProvider_UnableToDetermineNameOfDeployServerMsg; -// -// public static String EngineDataProvider_UnableToDetermineSapSystemOfDeployServerMsg; -// -// - /** message constant */ - public static String WsdlNamesValidator_EmptyXmlName; - - /** message constant */ - public static String WsdlNamesValidator_InvalidNCName; - - /** message constant */ - public static String WsdlNamesValidator_EmptyXmlName2; - - /** message constant */ - public static String WsdlNamesValidator_InvalidNCName2; - public static String EditResourcesManager_FILE_CONTENTS_CHANGE_FAILED_MSG; public static String ProjectManagementUtils_ProjectHasNoMetaInfFolderMsg; diff --git a/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/internal/text/JaxWsUtilMessages.properties b/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/internal/text/JaxWsUtilMessages.properties index 0b12ad8aa..4ea06e295 100755 --- a/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/internal/text/JaxWsUtilMessages.properties +++ b/jaxws/bundles/org.eclipse.jst.ws.jaxws.utils/src/org/eclipse/jst/ws/jaxws/utils/internal/text/JaxWsUtilMessages.properties @@ -14,10 +14,5 @@ InvalidTreeStateMsg = Invalid project tree state AnnotationCannotBeStoredMsg = Annotation could not be stored, the file is not writable AnnotationUtils_ParamShouldNotBeNullMsg = {0} should not be null -WsdlNamesValidator_EmptyXmlName = Empty {0} name is not allowed. Please enter name. -WsdlNamesValidator_InvalidNCName = The symbol {0} specified for {1} with name {2} is not allowed for NCName. Please change {1} name. -WsdlNamesValidator_EmptyXmlName2 = Specified {0} should not be empty -WsdlNamesValidator_InvalidNCName2 = The symbol \"{0}\" used in {1} is not allowed in NCName - EditResourcesManager_FILE_CONTENTS_CHANGE_FAILED_MSG = File contents could not be set ProjectManagementUtils_ProjectHasNoMetaInfFolderMsg = project {0} does not have a META-INF folder |