Author: dazarov
Date: 2010-09-10 10:20:07 -0400 (Fri, 10 Sep 2010)
New Revision: 24871
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/ChangeScopeMarkerResolution.java
trunk/seam/tests/org.jboss.tools.seam.core.test/projects/SeamWebWarTestProject/src/action/org/domain/SeamWebWarTestProject/entity/EntityComponentWithWrongScope.java
trunk/seam/tests/org.jboss.tools.seam.core.test/projects/SeamWebWarTestProject/src/action/org/domain/SeamWebWarTestProject/session/StatefulComponentWithWrongScope.java
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamCoreValidator.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/SeamUIMessages.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/AbstractSeamMarkerResolution.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/RenameAnnotationMarkerResolution.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/SeamProblemMarkerResolutionGenerator.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/messages.properties
trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/marker/SeamMarkerResolutionTest.java
Log:
https://jira.jboss.org/browse/JBIDE-6873,
https://jira.jboss.org/browse/JBIDE-6871
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamCoreValidator.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamCoreValidator.java 2010-09-10
14:17:29 UTC (rev 24870)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamCoreValidator.java 2010-09-10
14:20:07 UTC (rev 24871)
@@ -98,6 +98,9 @@
public static final int OBSERVER_DOESNT_BELONG_TO_COMPONENT_MESSAGE_ID = 9;
public static final int STATEFUL_COMPONENT_DOES_NOT_CONTAIN_REMOVE_ID = 10;
public static final int STATEFUL_COMPONENT_DOES_NOT_CONTAIN_DESTROY_ID = 11;
+ public static final int STATEFUL_COMPONENT_WRONG_SCOPE_ID = 12;
+ public static final int ENTITY_COMPONENT_WRONG_SCOPE_ID = 13;
+ public static final int UNKNOWN_COMPONENT_PROPERTY_ID = 14;
private ISeamProject seamProject;
@@ -716,7 +719,7 @@
if(type!=null) {
boolean ok = type.isBinary() || SeamUtil.findProperty(type, name)!=null;
if(!ok) {
- addError(SeamValidationMessages.UNKNOWN_COMPONENT_PROPERTY,
SeamPreferences.UNKNOWN_COMPONENT_PROPERTY, new String[]{type.getElementName(),
componentName, name}, property, declaration.getResource());
+ addError(SeamValidationMessages.UNKNOWN_COMPONENT_PROPERTY,
SeamPreferences.UNKNOWN_COMPONENT_PROPERTY, new String[]{type.getElementName(),
componentName, name}, property, declaration.getResource(),
UNKNOWN_COMPONENT_PROPERTY_ID);
}
}
}
@@ -730,7 +733,7 @@
ScopeType scope = component.getScope();
if(scope == ScopeType.STATELESS) {
ITextSourceReference location = getScopeLocation(component);
- addError(SeamValidationMessages.ENTITY_COMPONENT_WRONG_SCOPE,
SeamPreferences.ENTITY_COMPONENT_WRONG_SCOPE, new String[]{component.getName()}, location,
javaDeclaration.getResource());
+ addError(SeamValidationMessages.ENTITY_COMPONENT_WRONG_SCOPE,
SeamPreferences.ENTITY_COMPONENT_WRONG_SCOPE, new String[]{component.getName()}, location,
javaDeclaration.getResource(), ENTITY_COMPONENT_WRONG_SCOPE_ID);
}
}
}
@@ -764,7 +767,7 @@
ScopeType scope = component.getScope();
if(scope == ScopeType.PAGE || scope == ScopeType.STATELESS) {
ITextSourceReference location = getScopeLocation(component);
- addError(SeamValidationMessages.STATEFUL_COMPONENT_WRONG_SCOPE,
SeamPreferences.STATEFUL_COMPONENT_WRONG_SCOPE, new String[]{component.getName()},
location, javaDeclaration.getResource());
+ addError(SeamValidationMessages.STATEFUL_COMPONENT_WRONG_SCOPE,
SeamPreferences.STATEFUL_COMPONENT_WRONG_SCOPE, new String[]{component.getName()},
location, javaDeclaration.getResource(), STATEFUL_COMPONENT_WRONG_SCOPE_ID);
}
validateDuplicateComponentMethod(SeamComponentMethodType.REMOVE, component,
SeamValidationMessages.DUPLICATE_REMOVE, SeamPreferences.DUPLICATE_REMOVE,
DUPLICATE_REMOVE_MESSAGE_ID);
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/SeamUIMessages.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/SeamUIMessages.java 2010-09-10
14:17:29 UTC (rev 24870)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/SeamUIMessages.java 2010-09-10
14:20:07 UTC (rev 24871)
@@ -380,6 +380,8 @@
public static String ADD_ANNOTATED_DESTROY_METHOD_MARKER_RESOLUTION_TITLE;
+ public static String CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE;
+
static {
// load message values from bundle file
NLS.initializeMessages(BUNDLE_NAME, SeamUIMessages.class);
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/AbstractSeamMarkerResolution.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/AbstractSeamMarkerResolution.java 2010-09-10
14:17:29 UTC (rev 24870)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/AbstractSeamMarkerResolution.java 2010-09-10
14:20:07 UTC (rev 24871)
@@ -213,7 +213,7 @@
}
}
- protected void renameAnnotation(String annotationString){
+ protected void renameAnnotation(String annotationString, String importName, boolean
generate){
try{
ICompilationUnit original = EclipseUtil.getCompilationUnit(file);
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
@@ -226,10 +226,18 @@
IImportDeclaration importDeclaration = compilationUnit.getImport(qualifiedName);
if(importDeclaration == null || !importDeclaration.exists())
compilationUnit.createImport(qualifiedName, null, new NullProgressMonitor());
+ if(importName != null){
+ importDeclaration = compilationUnit.getImport(importName);
+ if(importDeclaration == null || !importDeclaration.exists())
+ compilationUnit.createImport(importName, null, new NullProgressMonitor());
+
+ }
IBuffer buffer = compilationUnit.getBuffer();
- String name=
"(\""+generateComponentName(compilationUnit.findPrimaryType().getElementName())+"\")";
+ String name = "";
+ if(generate)
+ name=
"(\""+generateComponentName(compilationUnit.findPrimaryType().getElementName())+"\")";
buffer.replace(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength(), annotationString+name);
compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/ChangeScopeMarkerResolution.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/ChangeScopeMarkerResolution.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/ChangeScopeMarkerResolution.java 2010-09-10
14:20:07 UTC (rev 24871)
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.seam.ui.marker;
+
+import java.text.MessageFormat;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+
+/**
+ * @author Daniel Azarov
+ */
+public class ChangeScopeMarkerResolution extends
+ AbstractSeamMarkerResolution {
+ private String scopeName;
+
+ public ChangeScopeMarkerResolution(String label, String scopeName,
+ IFile file, int start, int end) {
+ super(label, "org.jboss.seam.annotations.Scope", file, start, end);
//$NON-NLS-1$
+ this.label = MessageFormat.format(label, new Object[]{scopeName});
+ this.scopeName = scopeName;
+ }
+
+ public void run(IMarker marker) {
+ renameAnnotation("@Scope("+scopeName+")",
"org.jboss.seam.ScopeType", false); //$NON-NLS-1$
+ }
+}
Property changes on:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/ChangeScopeMarkerResolution.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/RenameAnnotationMarkerResolution.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/RenameAnnotationMarkerResolution.java 2010-09-10
14:17:29 UTC (rev 24870)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/RenameAnnotationMarkerResolution.java 2010-09-10
14:20:07 UTC (rev 24871)
@@ -25,6 +25,6 @@
}
public void run(IMarker marker) {
- renameAnnotation("@"+getShortName()); //$NON-NLS-1$
+ renameAnnotation("@"+getShortName(), null, true); //$NON-NLS-1$
}
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/SeamProblemMarkerResolutionGenerator.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/SeamProblemMarkerResolutionGenerator.java 2010-09-10
14:17:29 UTC (rev 24870)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/SeamProblemMarkerResolutionGenerator.java 2010-09-10
14:20:07 UTC (rev 24871)
@@ -90,6 +90,27 @@
return new IMarkerResolution[]{new
AddAnnotatedMethodMarkerResolution(SeamUIMessages.ADD_ANNOTATED_REMOVE_METHOD_MARKER_RESOLUTION_TITLE,
"javax.ejb.Remove", file, start, end)};
else if(messageId == SeamCoreValidator.STATEFUL_COMPONENT_DOES_NOT_CONTAIN_DESTROY_ID)
return new IMarkerResolution[]{new
AddAnnotatedMethodMarkerResolution(SeamUIMessages.ADD_ANNOTATED_DESTROY_METHOD_MARKER_RESOLUTION_TITLE,
"org.jboss.seam.annotations.Destroy", file, start, end)};
+ else if(messageId == SeamCoreValidator.STATEFUL_COMPONENT_WRONG_SCOPE_ID)
+ return new IMarkerResolution[]{
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.APPLICATION", file, start, end),
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.BUSINESS_PROCESS", file, start, end),
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.CONVERSATION", file, start, end),
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.EVENT", file, start, end),
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.METHOD", file, start, end),
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.SESSION", file, start, end),
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.UNSPECIFIED", file, start, end)
+ };
+ else if(messageId == SeamCoreValidator.ENTITY_COMPONENT_WRONG_SCOPE_ID)
+ return new IMarkerResolution[]{
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.APPLICATION", file, start, end),
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.BUSINESS_PROCESS", file, start, end),
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.CONVERSATION", file, start, end),
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.EVENT", file, start, end),
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.METHOD", file, start, end),
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.PAGE", file, start, end),
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.SESSION", file, start, end),
+ new
ChangeScopeMarkerResolution(SeamUIMessages.CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE,
"ScopeType.UNSPECIFIED", file, start, end)
+ };
return new IMarkerResolution[]{};
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/messages.properties
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/messages.properties 2010-09-10
14:17:29 UTC (rev 24870)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/messages.properties 2010-09-10
14:20:07 UTC (rev 24871)
@@ -198,3 +198,4 @@
RENAME_NAME_ANNOTATION_MARKER_RESOLUTION_TITLE=Rename @Name annotation
ADD_ANNOTATED_REMOVE_METHOD_MARKER_RESOLUTION_TITLE=Add @Remove annotated method
ADD_ANNOTATED_DESTROY_METHOD_MARKER_RESOLUTION_TITLE=Add @Destroy annotated method
+CHANGE_SCOPETYPE_MARKER_RESOLUTION_TITLE=Change scope to ''{0}''
Added:
trunk/seam/tests/org.jboss.tools.seam.core.test/projects/SeamWebWarTestProject/src/action/org/domain/SeamWebWarTestProject/entity/EntityComponentWithWrongScope.java
===================================================================
---
trunk/seam/tests/org.jboss.tools.seam.core.test/projects/SeamWebWarTestProject/src/action/org/domain/SeamWebWarTestProject/entity/EntityComponentWithWrongScope.java
(rev 0)
+++
trunk/seam/tests/org.jboss.tools.seam.core.test/projects/SeamWebWarTestProject/src/action/org/domain/SeamWebWarTestProject/entity/EntityComponentWithWrongScope.java 2010-09-10
14:20:07 UTC (rev 24871)
@@ -0,0 +1,14 @@
+package org.domain.SeamWebWarTestProject.entity;
+
+import javax.persistence.Entity;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.ScopeType;
+
+@Entity
+(a)Scope(ScopeType.STATELESS)
+@Name("AbcEntity")
+public class EntityComponentWithWrongScope {
+
+}
Property changes on:
trunk/seam/tests/org.jboss.tools.seam.core.test/projects/SeamWebWarTestProject/src/action/org/domain/SeamWebWarTestProject/entity/EntityComponentWithWrongScope.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/seam/tests/org.jboss.tools.seam.core.test/projects/SeamWebWarTestProject/src/action/org/domain/SeamWebWarTestProject/session/StatefulComponentWithWrongScope.java
===================================================================
---
trunk/seam/tests/org.jboss.tools.seam.core.test/projects/SeamWebWarTestProject/src/action/org/domain/SeamWebWarTestProject/session/StatefulComponentWithWrongScope.java
(rev 0)
+++
trunk/seam/tests/org.jboss.tools.seam.core.test/projects/SeamWebWarTestProject/src/action/org/domain/SeamWebWarTestProject/session/StatefulComponentWithWrongScope.java 2010-09-10
14:20:07 UTC (rev 24871)
@@ -0,0 +1,24 @@
+package org.domain.SeamWebWarTestProject.session;;
+
+import javax.ejb.Stateful;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import javax.ejb.Remove;
+import org.jboss.seam.annotations.Destroy;
+import org.jboss.seam.ScopeType;
+
+(a)Scope(ScopeType.PAGE)
+@Stateful
+@Name("StatefulComponentWithWrongScope")
+public class StatefulComponentWithWrongScope {
+
+ @Remove
+ public void remove() {
+ }
+
+ @Destroy
+ public void destroy() {
+ }
+
+}
Property changes on:
trunk/seam/tests/org.jboss.tools.seam.core.test/projects/SeamWebWarTestProject/src/action/org/domain/SeamWebWarTestProject/session/StatefulComponentWithWrongScope.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/marker/SeamMarkerResolutionTest.java
===================================================================
---
trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/marker/SeamMarkerResolutionTest.java 2010-09-10
14:17:29 UTC (rev 24870)
+++
trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/marker/SeamMarkerResolutionTest.java 2010-09-10
14:20:07 UTC (rev 24871)
@@ -28,6 +28,7 @@
import org.jboss.tools.seam.core.SeamPreferences;
import org.jboss.tools.seam.ui.marker.AddAnnotatedMethodMarkerResolution;
import org.jboss.tools.seam.ui.marker.AddAnnotationMarkerResolution;
+import org.jboss.tools.seam.ui.marker.ChangeScopeMarkerResolution;
import org.jboss.tools.seam.ui.marker.DeleteAnnotationMarkerResolution;
import org.jboss.tools.seam.ui.marker.RenameAnnotationMarkerResolution;
import org.jboss.tools.test.util.JobUtils;
@@ -393,4 +394,52 @@
assertTrue("The quickfix \"Add @Destroy annotated method\" doesn't
exist.", found);
}
+ public void testChangeScopeResolution() throws CoreException {
+ String TARGET_FILE_NAME =
"src/action/org/domain/SeamWebWarTestProject/session/StatefulComponentWithWrongScope.java";
+ IFile file = project.getFile(TARGET_FILE_NAME);
+
+ assertTrue("File - "+TARGET_FILE_NAME+" must be
exists",file.exists());
+
+ IMarker[] markers = file.findMarkers(MARKER_TYPE, true, IResource.DEPTH_INFINITE);
+
+ int found = 0;
+ for (int i = 0; i < markers.length; i++) {
+ IMarker marker = markers[i];
+ IMarkerResolution[] resolutions = IDE.getMarkerHelpRegistry()
+ .getResolutions(marker);
+ for (int j = 0; j < resolutions.length; j++) {
+ IMarkerResolution resolution = resolutions[j];
+ if (resolution instanceof ChangeScopeMarkerResolution) {
+ assertEquals("org.jboss.seam.annotations.Scope",
((ChangeScopeMarkerResolution)resolution).getQualifiedName());
+ found++;
+ }
+ }
+ }
+ assertEquals("Not all quickfixes \"Change scope to...\" found.", 7,
found);
+ }
+
+ public void testChangeScopeResolution2() throws CoreException {
+ String TARGET_FILE_NAME =
"src/action/org/domain/SeamWebWarTestProject/entity/EntityComponentWithWrongScope.java";
+ IFile file = project.getFile(TARGET_FILE_NAME);
+
+ assertTrue("File - "+TARGET_FILE_NAME+" must be
exists",file.exists());
+
+ IMarker[] markers = file.findMarkers(MARKER_TYPE, true, IResource.DEPTH_INFINITE);
+
+ int found = 0;
+ for (int i = 0; i < markers.length; i++) {
+ IMarker marker = markers[i];
+ IMarkerResolution[] resolutions = IDE.getMarkerHelpRegistry()
+ .getResolutions(marker);
+ for (int j = 0; j < resolutions.length; j++) {
+ IMarkerResolution resolution = resolutions[j];
+ if (resolution instanceof ChangeScopeMarkerResolution) {
+ assertEquals("org.jboss.seam.annotations.Scope",
((ChangeScopeMarkerResolution)resolution).getQualifiedName());
+ found++;
+ }
+ }
+ }
+ assertEquals("Not all quickfixes \"Change scope to...\" found.", 8,
found);
+ }
+
}