Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 116512 Details for
Bug 250802
Missing Restrictions when creating an Entity Field
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Patch
EntityCheckNew.patch (text/plain), 11.13 KB, created by
Georgi Dimitrov
on 2008-10-30 09:18:02 EDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Georgi Dimitrov
Created:
2008-10-30 09:18:02 EDT
Size:
11.13 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jpt.ui >Index: src/org/eclipse/jpt/ui/internal/wizards/entity/EntityWizardMsg.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/entity/EntityWizardMsg.java,v >retrieving revision 1.2 >diff -u -r1.2 EntityWizardMsg.java >--- src/org/eclipse/jpt/ui/internal/wizards/entity/EntityWizardMsg.java 6 May 2008 15:37:46 -0000 1.2 >+++ src/org/eclipse/jpt/ui/internal/wizards/entity/EntityWizardMsg.java 29 Oct 2008 12:46:50 -0000 >@@ -54,7 +54,9 @@ > public static String BROWSE_BUTTON_LABEL; > public static String ADD_BUTTON_LABEL; > public static String EDIT_BUTTON_LABEL; >- public static String REMOVE_BUTTON_LABEL; >+ public static String EntityDataModelProvider_entityNotInProjectClasspath; >+ public static String EntityDataModelProvider_invalidArgument; >+ public static String REMOVE_BUTTON_LABEL; > public static String DUPLICATED_ENTITY_NAMES_MESSAGE; > public static String ACCESS_TYPE; > public static String FIELD_BASED; >Index: src/org/eclipse/jpt/ui/internal/wizards/entity/EntityRowTableWizardSection.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/entity/EntityRowTableWizardSection.java,v >retrieving revision 1.4 >diff -u -r1.4 EntityRowTableWizardSection.java >--- src/org/eclipse/jpt/ui/internal/wizards/entity/EntityRowTableWizardSection.java 13 May 2008 14:26:38 -0000 1.4 >+++ src/org/eclipse/jpt/ui/internal/wizards/entity/EntityRowTableWizardSection.java 29 Oct 2008 12:46:50 -0000 >@@ -15,10 +15,13 @@ > import java.util.Collection; > import java.util.List; > >+import org.eclipse.core.runtime.IStatus; > import org.eclipse.jdt.core.IPackageFragmentRoot; > import org.eclipse.jdt.core.IType; >+import org.eclipse.jdt.core.JavaConventions; > import org.eclipse.jdt.core.search.IJavaSearchConstants; > import org.eclipse.jdt.core.search.IJavaSearchScope; >+import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; > import org.eclipse.jdt.internal.ui.dialogs.FilteredTypesSelectionDialog; > import org.eclipse.jface.dialogs.Dialog; > import org.eclipse.jface.dialogs.IDialogConstants; >@@ -512,7 +515,13 @@ > */ > public boolean validate(Combo combo, Text[] texts) { > if (texts.length > 0) { >- return texts[0].getText().trim().length() > 0; >+ IStatus validateFieldNameStatus = JavaConventions >+ .validateFieldName(texts[0].getText(), >+ CompilerOptions.VERSION_1_5, >+ CompilerOptions.VERSION_1_5); >+ if (!validateFieldNameStatus.isOK()) { >+ return false; >+ } > } > return true; > } >Index: property_files/jpt_ui_entity_wizard.properties >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_entity_wizard.properties,v >retrieving revision 1.4 >diff -u -r1.4 jpt_ui_entity_wizard.properties >--- property_files/jpt_ui_entity_wizard.properties 6 May 2008 15:37:46 -0000 1.4 >+++ property_files/jpt_ui_entity_wizard.properties 29 Oct 2008 12:46:49 -0000 >@@ -42,6 +42,8 @@ > BROWSE_BUTTON_LABEL=Browse... > ADD_BUTTON_LABEL=Add... > EDIT_BUTTON_LABEL=Edit... >+EntityDataModelProvider_entityNotInProjectClasspath="{0}" does not exist on the project classpath >+EntityDataModelProvider_invalidArgument=Invalid agrument "{0}" > REMOVE_BUTTON_LABEL=Remove > DUPLICATED_ENTITY_NAMES_MESSAGE=There are duplicate names on created entity fields. Please resolve the duplication. > ACCESS_TYPE=Access Type >Index: src/org/eclipse/jpt/ui/internal/wizards/entity/data/model/EntityDataModelProvider.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jpa/components/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/entity/data/model/EntityDataModelProvider.java,v >retrieving revision 1.4 >diff -u -r1.4 EntityDataModelProvider.java >--- src/org/eclipse/jpt/ui/internal/wizards/entity/data/model/EntityDataModelProvider.java 5 Aug 2008 13:48:45 -0000 1.4 >+++ src/org/eclipse/jpt/ui/internal/wizards/entity/data/model/EntityDataModelProvider.java 29 Oct 2008 12:46:50 -0000 >@@ -11,14 +11,26 @@ > ***********************************************************************/ > package org.eclipse.jpt.ui.internal.wizards.entity.data.model; > >+import java.text.MessageFormat; > import java.util.ArrayList; >+import java.util.List; > import java.util.Set; > >+import org.eclipse.core.resources.IProject; > import org.eclipse.core.runtime.IStatus; >+import org.eclipse.core.runtime.Status; >+import org.eclipse.jdt.core.IJavaProject; >+import org.eclipse.jdt.core.IType; > import org.eclipse.jdt.core.JavaConventions; >+import org.eclipse.jdt.core.JavaCore; >+import org.eclipse.jdt.core.JavaModelException; >+import org.eclipse.jdt.core.Signature; >+import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; >+import org.eclipse.jpt.ui.JptUiPlugin; > import org.eclipse.jpt.ui.internal.wizards.entity.EntityWizardMsg; > import org.eclipse.jpt.ui.internal.wizards.entity.data.operation.NewEntityClassOperation; > import org.eclipse.jst.j2ee.internal.common.J2EECommonMessages; >+import org.eclipse.jst.j2ee.internal.common.operations.INewJavaClassDataModelProperties; > import org.eclipse.jst.j2ee.internal.common.operations.NewJavaClassDataModelProvider; > import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation; > import org.eclipse.wst.common.frameworks.internal.plugin.WTPCommonPlugin; >@@ -170,11 +182,141 @@ > String msg = EntityWizardMsg.DUPLICATED_ENTITY_NAMES_MESSAGE; > return WTPCommonPlugin.createErrorStatus(msg); > } >+ // Ensure that the entries in the list are valid >+ String errorMsg = checkInputElementsTypeValidation(entities); >+ if(errorMsg != null) >+ return WTPCommonPlugin.createErrorStatus(errorMsg); >+ String warningMsg = checkInputElementsTypeExistence(entities); >+ if(warningMsg != null) >+ return WTPCommonPlugin.createWarningStatus(warningMsg); >+ > } > // Return OK > return WTPCommonPlugin.OK_STATUS; > } > >+ private String checkInputElementsTypeValidation(List<EntityRow> inputElements){ >+ IStatus validateFieldTypeStatus=Status.OK_STATUS; >+ for(EntityRow entityRow: inputElements) { >+ if (entityRow.getFqnTypeName().equals("")){ >+ validateFieldTypeStatus = JavaConventions.validateFieldName(entityRow.getFqnTypeName(), CompilerOptions.VERSION_1_5, CompilerOptions.VERSION_1_5); >+ break; >+ } >+ String sig = null; >+ try { >+ sig = Signature.createTypeSignature(entityRow.getFqnTypeName(),true); >+ } catch (IllegalArgumentException e) { >+ String message = MessageFormat.format(EntityWizardMsg.EntityDataModelProvider_invalidArgument, e.getLocalizedMessage()); >+ validateFieldTypeStatus = new Status(IStatus.ERROR, JptUiPlugin.PLUGIN_ID, message); >+ break; >+ } >+ if(sig == null){ >+ validateFieldTypeStatus = JavaConventions.validateFieldName(entityRow.getType(), CompilerOptions.VERSION_1_5, CompilerOptions.VERSION_1_5); >+ break; >+ >+ } >+ Integer sigType = Signature.getTypeSignatureKind(sig); >+ if(sigType == Signature.BASE_TYPE_SIGNATURE){ >+ continue; >+ } >+ else if(sigType == Signature.ARRAY_TYPE_SIGNATURE) { >+ String elementSignature = Signature.getElementType(sig); >+ if(Signature.getTypeSignatureKind(elementSignature) == Signature.BASE_TYPE_SIGNATURE){ >+ continue; >+ } >+ else { >+ String elFullSignature = Signature.createTypeSignature(entityRow.getFqnTypeName(),true); >+ String elSignatureType = Signature.getElementType(elFullSignature); >+ String elSignatureTypeString = Signature.toString(elSignatureType); >+ String elTypeSimpleName = Signature.getSimpleName(elSignatureTypeString); >+ >+ validateFieldTypeStatus = JavaConventions.validateFieldName(elTypeSimpleName, CompilerOptions.VERSION_1_5, CompilerOptions.VERSION_1_5); >+ if(!validateFieldTypeStatus.isOK()) { >+ break; >+ } >+ } >+ } >+ else { >+ validateFieldTypeStatus = JavaConventions.validateFieldName(entityRow.getType(), CompilerOptions.VERSION_1_5, CompilerOptions.VERSION_1_5); >+ if(!validateFieldTypeStatus.isOK()) { >+ break; >+ } >+ } >+ } >+ if(!validateFieldTypeStatus.isOK()){ >+ return validateFieldTypeStatus.getMessage(); >+ } >+ return null; >+ } >+ >+ private String checkInputElementsTypeExistence(List<EntityRow> inputElements){ >+ IStatus validateFieldTypeStatus=Status.OK_STATUS; >+ for(EntityRow entityRow: inputElements) { >+ >+ String sig = Signature.createTypeSignature(entityRow.getFqnTypeName(),true); >+ if(sig == null){ >+ String message = MessageFormat.format( >+ EntityWizardMsg.EntityDataModelProvider_entityNotInProjectClasspath, entityRow.getFqnTypeName()); >+ validateFieldTypeStatus = new Status(IStatus.ERROR, >+ JptUiPlugin.PLUGIN_ID, message); >+ break; >+ } >+ Integer sigType = Signature.getTypeSignatureKind(sig); >+ if(sigType == Signature.BASE_TYPE_SIGNATURE){ >+ continue; >+ } >+ else if(sigType == Signature.ARRAY_TYPE_SIGNATURE) { >+ String elementSignature = Signature.getElementType(sig); >+ if(Signature.getTypeSignatureKind(elementSignature) == Signature.BASE_TYPE_SIGNATURE){ >+ continue; >+ } >+ else { >+ String qualifiedName = Signature.toString(elementSignature); >+ IProject project = (IProject) getProperty(INewJavaClassDataModelProperties.PROJECT); >+ IJavaProject javaProject = JavaCore.create(project); >+ IType type=null; >+ try { >+ type = javaProject.findType(qualifiedName); >+ } catch (JavaModelException e) { >+ validateFieldTypeStatus = e.getStatus(); >+ break; >+ } >+ if (type == null) { >+ String message = MessageFormat.format( >+ EntityWizardMsg.EntityDataModelProvider_entityNotInProjectClasspath, entityRow.getFqnTypeName()); >+ validateFieldTypeStatus = new Status(IStatus.ERROR, >+ JptUiPlugin.PLUGIN_ID, message); >+ break; >+ } >+ } >+ } >+ else { >+ IProject project = (IProject) getProperty(INewJavaClassDataModelProperties.PROJECT); >+ IJavaProject javaProject = JavaCore.create(project); >+ IType type=null; >+ try { >+ type = javaProject.findType(entityRow.getFqnTypeName()); >+ } catch (JavaModelException e) { >+ validateFieldTypeStatus = e.getStatus(); >+ break; >+ } >+ if (type == null) { >+ String message = MessageFormat.format( >+ EntityWizardMsg.EntityDataModelProvider_entityNotInProjectClasspath, entityRow.getFqnTypeName()); >+ validateFieldTypeStatus = new Status(IStatus.ERROR, >+ JptUiPlugin.PLUGIN_ID, message); >+ break; >+ } >+ } >+ >+ } >+ if(!validateFieldTypeStatus.isOK()){ >+ return validateFieldTypeStatus.getMessage(); >+ } >+ return null; >+ } >+ >+ > /** > * This method is intended for internal use only. It provides a simple algorithm for detecting > * if there are duplicate entries in a list. It will accept a null parameter. It will return
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 250802
:
115824
|
116268
|
116512
|
116628