Author: akazakov
Date: 2007-07-13 11:23:43 -0400 (Fri, 13 Jul 2007)
New Revision: 2432
Added:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamTextSourceReference.java
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamComponentDeclaration.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamJavaComponentDeclaration.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamJavaValidator.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamValidationContext.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamValidator.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/messages.properties
Log:
http://jira.jboss.com/jira/browse/EXIN-327 @Entity, @Create validation
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamComponentDeclaration.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamComponentDeclaration.java 2007-07-13
15:14:33 UTC (rev 2431)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamComponentDeclaration.java 2007-07-13
15:23:43 UTC (rev 2432)
@@ -29,6 +29,7 @@
public abstract class SeamComponentDeclaration extends SeamObject implements
ISeamComponentDeclaration, IOpenableElement {
public static final String PATH_OF_NAME = "name";
+ public static final String PATH_OF_SCOPE = "scope";
/**
* Seam component name.
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamJavaComponentDeclaration.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamJavaComponentDeclaration.java 2007-07-13
15:14:33 UTC (rev 2431)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamJavaComponentDeclaration.java 2007-07-13
15:23:43 UTC (rev 2432)
@@ -26,6 +26,8 @@
public class SeamJavaComponentDeclaration extends SeamComponentDeclaration
implements ISeamJavaComponentDeclaration {
+ public static final String PATH_OF_STATEFUL = "stateful";
+
protected String className = null;
protected ScopeType scopeType = ScopeType.UNSPECIFIED;
protected boolean stateful = false;
Added:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamTextSourceReference.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamTextSourceReference.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamTextSourceReference.java 2007-07-13
15:23:43 UTC (rev 2432)
@@ -0,0 +1,55 @@
+ /*******************************************************************************
+ * Copyright (c) 2007 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.internal.core;
+
+import org.jboss.tools.seam.core.ISeamTextSourceReference;
+
+/**
+ * @author Alexey Kazakov
+ */
+public class SeamTextSourceReference implements ISeamTextSourceReference {
+
+ private int length;
+ private int startPosition;
+
+ public SeamTextSourceReference(int length, int startPosition) {
+ this.length = length;
+ this.startPosition = startPosition;
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.tools.seam.core.ISeamTextSourceReference#getLength()
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.tools.seam.core.ISeamTextSourceReference#getStartPosition()
+ */
+ public int getStartPosition() {
+ return startPosition;
+ }
+
+ /**
+ * @param length
+ */
+ public void setLength(int length) {
+ this.length = length;
+ }
+
+ /**
+ * @param startPosition
+ */
+ public void setStartPosition(int startPosition) {
+ this.startPosition = startPosition;
+ }
+}
\ No newline at end of file
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamJavaValidator.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamJavaValidator.java 2007-07-13
15:14:33 UTC (rev 2431)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamJavaValidator.java 2007-07-13
15:23:43 UTC (rev 2432)
@@ -41,6 +41,7 @@
import org.jboss.tools.seam.core.SeamCorePlugin;
import org.jboss.tools.seam.internal.core.SeamComponentDeclaration;
import org.jboss.tools.seam.internal.core.SeamProject;
+import org.jboss.tools.seam.internal.core.SeamTextSourceReference;
/**
* Validator for Java files.
@@ -53,13 +54,15 @@
private static final String NONUNIQUE_COMPONENT_NAME_MESSAGE_ID =
"NONUNIQUE_COMPONENT_NAME_MESSAGE";
private static final String UNKNOWN_INJECTION_NAME_MESSAGE_ID =
"UNKNOWN_INJECTION_NAME";
private static final String STATEFUL_COMPONENT_DOES_NOT_CONTENT_METHOD_SUFIX_MESSAGE_ID
= "STATEFUL_COMPONENT_DOES_NOT_CONTENT_";
- private static final String STATEFUL_COMPONENT_DUPLICATE_METHOD__SUFIX_MESSAGE_ID =
"STATEFUL_COMPONENT_DUPLICATE_";
+ private static final String DUPLICATE_METHOD_SUFIX_MESSAGE_ID = "DUPLICATE_";
private static final String REMOVE_METHOD_POSTFIX_MESSAGE_ID = "REMOVE";
private static final String DESTROY_METHOD_POSTFIX_MESSAGE_ID = "DESTROY";
-
+ private static final String CREATE_METHOD_POSTFIX_MESSAGE_ID = "CREATE";
private static final String STATEFUL_COMPONENT_WRONG_SCOPE_MESSAGE_ID =
"STATEFUL_COMPONENT_WRONG_SCOPE";
+ private static final String ENTITY_COMPONENT_WRONG_SCOPE_MESSAGE_ID =
"ENTITY_COMPONENT_WRONG_SCOPE";
private SeamValidationContext validationContext;
+ private ISeamProject project;
public ISchedulingRule getSchedulingRule(IValidationContext helper) {
return null;
@@ -69,7 +72,7 @@
super.validateInJob(helper, reporter);
SeamJavaHelper seamJavaHelper = (SeamJavaHelper)helper;
String[] uris = seamJavaHelper.getURIs();
- ISeamProject project = seamJavaHelper.getSeamProject();
+ project = seamJavaHelper.getSeamProject();
validationContext = ((SeamProject)project).getValidationContext();
if (uris.length > 0) {
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
@@ -85,7 +88,7 @@
Set<String> oldVariablesNamesOfChangedFile =
validationContext.getVariableNamesByResource(currentFile.getFullPath());
if(oldVariablesNamesOfChangedFile!=null) {
// Check if variable name was changed in java file
- Set<String> newVariableNamesOfChangedFile =
getVariablesNameByResource(currentFile.getFullPath(), project);
+ Set<String> newVariableNamesOfChangedFile =
getVariablesNameByResource(currentFile.getFullPath());
for (String newVariableName : newVariableNamesOfChangedFile) {
if(!oldVariablesNamesOfChangedFile.contains(newVariableName)) {
// Name was changed.
@@ -113,27 +116,28 @@
}
}
// Validate all collected linked resources.
- // Remove all links between resources and variables names because they will be linked
again during validation.
- validationContext.clear();
+ // Remove all links between collected resources and variables names because they will
be linked again during validation.
+ validationContext.removeLinkedResources(resources);
for (IPath linkedResource : resources) {
// Remove markers from collected java file
- reporter.removeMessageSubset(this, linkedResource, MARKED_COMPONENT_MESSAGE_GROUP);
- validateComponent(project, linkedResource, checkedComponents, helper, reporter);
+ IFile sourceFile = root.getFile(linkedResource);
+ reporter.removeMessageSubset(this, sourceFile, MARKED_COMPONENT_MESSAGE_GROUP);
+ validateComponent(linkedResource, checkedComponents);
// TODO
}
} else {
- return validateAll(project, helper, reporter);
+ return validateAll();
}
return OK_STATUS;
}
- private void validateComponent(ISeamProject project, IPath sourceFilePath,
Set<ISeamComponent> checkedComponents, IValidationContext helper, IReporter
reporter) {
+ private void validateComponent(IPath sourceFilePath, Set<ISeamComponent>
checkedComponents) {
Set<ISeamComponent> components = project.getComponentsByPath(sourceFilePath);
for (ISeamComponent component : components) {
// Don't validate one component twice.
if(!checkedComponents.contains(component)) {
- validateComponent(project, component, helper, reporter);
+ validateComponent(component);
checkedComponents.add(component);
}
}
@@ -142,7 +146,7 @@
/*
* Returns set of variables which are linked with this resource
*/
- private Set<String> getVariablesNameByResource(IPath resourcePath, ISeamProject
project) {
+ private Set<String> getVariablesNameByResource(IPath resourcePath) {
Set<ISeamContextVariable> variables = project.getVariablesByPath(resourcePath);
Set<String> result = new HashSet<String>();
for (ISeamContextVariable variable : variables) {
@@ -158,12 +162,12 @@
super.cleanup(reporter);
}
- private IStatus validateAll(ISeamProject project, IValidationContext helper, IReporter
reporter) {
+ private IStatus validateAll() {
reporter.removeAllMessages(this);
validationContext.clear();
Set<ISeamComponent> components = project.getComponents();
for (ISeamComponent component : components) {
- validateComponent(project, component, helper, reporter);
+ validateComponent(component);
// TODO
}
return OK_STATUS;
@@ -172,7 +176,7 @@
/*
* Validates the component
*/
- private void validateComponent(ISeamProject project, ISeamComponent component,
IValidationContext helper, IReporter reporter) {
+ private void validateComponent(ISeamComponent component) {
ISeamJavaComponentDeclaration firstJavaDeclaration = component.getJavaDeclaration();
if(firstJavaDeclaration!=null) {
HashMap<Integer, ISeamJavaComponentDeclaration> usedPrecedences = new
HashMap<Integer, ISeamJavaComponentDeclaration>();
@@ -188,7 +192,7 @@
// Save link between component name and java source file.
validationContext.addLinkedResource(declaration.getName(),
declaration.getSourcePath());
// Validate all elements in declaration but @Name.
- validateJavaDeclaration(project, firstJavaDeclaration, helper, reporter);
+ validateJavaDeclaration(firstJavaDeclaration);
}
if(declaration!=firstJavaDeclaration) {
// Validate @Name
@@ -196,10 +200,10 @@
ISeamJavaComponentDeclaration javaDeclaration =
(ISeamJavaComponentDeclaration)declaration;
int javaDeclarationPrecedence = javaDeclaration.getPrecedence();
ISeamJavaComponentDeclaration checkedDeclaration =
usedPrecedences.get(javaDeclarationPrecedence);
- boolean sourceCheckedDeclaration =
!((IType)checkedDeclaration.getSourceMember()).isBinary();
if(checkedDeclaration==null) {
usedPrecedences.put(javaDeclarationPrecedence, javaDeclaration);
} else if(sourceJavaDeclaration) {
+ boolean sourceCheckedDeclaration =
!((IType)checkedDeclaration.getSourceMember()).isBinary();
IResource javaDeclarationResource = javaDeclaration.getResource();
// Mark nonunique name.
if(!markedDeclarations.contains(checkedDeclaration) &&
sourceCheckedDeclaration) {
@@ -221,41 +225,84 @@
}
}
}
- validateStatefulComponent(project, component, helper, reporter);
+ boolean source = !((IType)firstJavaDeclaration.getSourceMember()).isBinary();
+ if(source) {
+ validateStatefulComponent(component);
+ validateDuplicateComponentMethods(component);
+ validateEntityComponent(component);
+ }
}
}
- private void validateStatefulComponent(ISeamProject project, ISeamComponent component,
IValidationContext helper, IReporter reporter) {
+ private void validateEntityComponent(ISeamComponent component) {
+ if(component.isEntity()) {
+ ISeamJavaComponentDeclaration javaDeclaration = component.getJavaDeclaration();
+ ScopeType scope = component.getScope();
+ if(scope == ScopeType.STATELESS) {
+ ISeamTextSourceReference location = getScopeLocation(component);
+ addError(ENTITY_COMPONENT_WRONG_SCOPE_MESSAGE_ID, new String[]{component.getName()},
location, javaDeclaration.getResource(), MARKED_COMPONENT_MESSAGE_GROUP);
+ }
+ }
+ }
+
+ private ISeamTextSourceReference getScopeLocation(ISeamComponent component) {
ISeamJavaComponentDeclaration javaDeclaration = component.getJavaDeclaration();
- if(javaDeclaration!=null && javaDeclaration.isStateful()) {
- int length = 0;
- int offset = 0;
- try {
- length = javaDeclaration.getSourceMember().getNameRange().getLength();
- offset = javaDeclaration.getSourceMember().getNameRange().getOffset();
- } catch (Exception e) {
- SeamCorePlugin.getDefault().logError(e);
- }
- validateStatefulComponentMethods(project, SeamComponentMethodType.DESTROY, component,
length, offset, DESTROY_METHOD_POSTFIX_MESSAGE_ID, helper, reporter);
- validateStatefulComponentMethods(project, SeamComponentMethodType.REMOVE, component,
length, offset, REMOVE_METHOD_POSTFIX_MESSAGE_ID, helper, reporter);
+ ISeamTextSourceReference location =
((SeamComponentDeclaration)javaDeclaration).getLocationFor(SeamComponentDeclaration.PATH_OF_SCOPE);
+ if(location==null) {
+ location = getClassNameLocation(javaDeclaration);
+ }
+ return location;
+ }
+
+ private ISeamTextSourceReference getClassNameLocation(ISeamJavaComponentDeclaration
declaration) {
+ int length = 0;
+ int offset = 0;
+ try {
+ length = declaration.getSourceMember().getNameRange().getLength();
+ offset = declaration.getSourceMember().getNameRange().getOffset();
+ } catch (Exception e) {
+ SeamCorePlugin.getDefault().logError(e);
+ }
+ return new SeamTextSourceReference(length, offset);
+ }
+
+ private void validateStatefulComponent(ISeamComponent component) {
+ if(component.isStateful()) {
+ ISeamJavaComponentDeclaration javaDeclaration = component.getJavaDeclaration();
+ validateStatefulComponentMethods(SeamComponentMethodType.DESTROY, component,
DESTROY_METHOD_POSTFIX_MESSAGE_ID);
+ validateStatefulComponentMethods(SeamComponentMethodType.REMOVE, component,
REMOVE_METHOD_POSTFIX_MESSAGE_ID);
ScopeType scope = component.getScope();
if(scope == ScopeType.PAGE || scope == ScopeType.STATELESS) {
- addError(STATEFUL_COMPONENT_WRONG_SCOPE_MESSAGE_ID, new
String[]{component.getName()}, length, offset, javaDeclaration.getResource(),
MARKED_COMPONENT_MESSAGE_GROUP);
+ ISeamTextSourceReference location = getScopeLocation(component);
+ addError(STATEFUL_COMPONENT_WRONG_SCOPE_MESSAGE_ID, new
String[]{component.getName()}, location, javaDeclaration.getResource(),
MARKED_COMPONENT_MESSAGE_GROUP);
}
}
}
- private void validateStatefulComponentMethods(ISeamProject project,
SeamComponentMethodType methodType, ISeamComponent component, int lengthOfClassName, int
offsetOfClassName, String postfixMessageId, IValidationContext helper, IReporter reporter)
{
+ private void validateStatefulComponentMethods(SeamComponentMethodType methodType,
ISeamComponent component, String postfixMessageId) {
ISeamJavaComponentDeclaration javaDeclaration = component.getJavaDeclaration();
+ ISeamTextSourceReference classNameLocation = getClassNameLocation(javaDeclaration);
Set<ISeamComponentMethod> methods =
javaDeclaration.getMethodsByType(methodType);
if(methods==null || methods.size()==0) {
- addError(STATEFUL_COMPONENT_DOES_NOT_CONTENT_METHOD_SUFIX_MESSAGE_ID +
postfixMessageId, new String[]{component.getName()}, lengthOfClassName, offsetOfClassName,
javaDeclaration.getResource(), MARKED_COMPONENT_MESSAGE_GROUP);
- } else if(methods.size()>1) {
+ addError(STATEFUL_COMPONENT_DOES_NOT_CONTENT_METHOD_SUFIX_MESSAGE_ID +
postfixMessageId, new String[]{component.getName()}, classNameLocation,
javaDeclaration.getResource(), MARKED_COMPONENT_MESSAGE_GROUP);
+ }
+ }
+
+ private void validateDuplicateComponentMethods(ISeamComponent component) {
+ validateDuplicateComponentMethod(SeamComponentMethodType.DESTROY, component,
DESTROY_METHOD_POSTFIX_MESSAGE_ID);
+ validateDuplicateComponentMethod(SeamComponentMethodType.REMOVE, component,
REMOVE_METHOD_POSTFIX_MESSAGE_ID);
+ validateDuplicateComponentMethod(SeamComponentMethodType.CREATE, component,
CREATE_METHOD_POSTFIX_MESSAGE_ID);
+ }
+
+ private void validateDuplicateComponentMethod(SeamComponentMethodType methodType,
ISeamComponent component, String postfixMessageId) {
+ ISeamJavaComponentDeclaration javaDeclaration = component.getJavaDeclaration();
+ Set<ISeamComponentMethod> methods =
javaDeclaration.getMethodsByType(methodType);
+ if(methods!=null && methods.size()>1) {
for (ISeamComponentMethod method : methods) {
try {
IMethod javaMethod = (IMethod)method.getSourceMember();
String methodName = javaMethod.getElementName();
- addError(STATEFUL_COMPONENT_DUPLICATE_METHOD__SUFIX_MESSAGE_ID + postfixMessageId,
new String[]{methodName}, method, javaDeclaration.getResource(),
MARKED_COMPONENT_MESSAGE_GROUP);
+ addError(DUPLICATE_METHOD_SUFIX_MESSAGE_ID + postfixMessageId, new
String[]{methodName}, method, javaDeclaration.getResource(),
MARKED_COMPONENT_MESSAGE_GROUP);
} catch (Exception e) {
SeamCorePlugin.getDefault().logError(e);
}
@@ -263,12 +310,12 @@
}
}
- private void validateJavaDeclaration(ISeamProject project, ISeamJavaComponentDeclaration
declaration, IValidationContext helper, IReporter reporter) {
- validateBijections(project, declaration, helper, reporter);
+ private void validateJavaDeclaration(ISeamJavaComponentDeclaration declaration) {
+ validateBijections(declaration);
// TODO
}
- private void validateBijections(ISeamProject project, ISeamJavaComponentDeclaration
declaration, IValidationContext helper, IReporter reporter) {
+ private void validateBijections(ISeamJavaComponentDeclaration declaration) {
Set<IBijectedAttribute> bijections = declaration.getBijectedAttributes();
if(bijections==null) {
return;
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamValidationContext.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamValidationContext.java 2007-07-13
15:14:33 UTC (rev 2431)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamValidationContext.java 2007-07-13
15:23:43 UTC (rev 2432)
@@ -12,6 +12,7 @@
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@@ -59,8 +60,8 @@
* @param oldVariableName
* @param linkedResourcePath
*/
- public void removeLinkedResource(String oldVariableName, IPath linkedResourcePath) {
- Set<IPath> linkedResources = resourcesByVariableName.get(oldVariableName);
+ public void removeLinkedResource(String name, IPath linkedResourcePath) {
+ Set<IPath> linkedResources = resourcesByVariableName.get(name);
if(linkedResources!=null) {
// remove linked resource.
linkedResources.remove(linkedResourcePath);
@@ -68,10 +69,29 @@
// Remove link between resource and variable names.
Set<String> variableNames = variableNamesByResource.get(linkedResourcePath);
if(variableNames!=null) {
- variableNames.remove(oldVariableName);
+ variableNames.remove(name);
}
}
+ /**
+ * Removes link between resources and variable names.
+ * @param linkedResources
+ */
+ public void removeLinkedResources(Set<IPath> resources) {
+ for (IPath resource : resources) {
+ Set<String> resourceNames = variableNamesByResource.get(resource);
+ if(resourceNames!=null) {
+ for (String name : resourceNames) {
+ Set<IPath> linkedResources = resourcesByVariableName.get(name);
+ if(linkedResources!=null) {
+ linkedResources.remove(resource);
+ }
+ }
+ }
+ variableNamesByResource.remove(resource);
+ }
+ }
+
public Set<IPath> getResourcesByVariableName(String variableName) {
return resourcesByVariableName.get(variableName);
}
@@ -102,7 +122,7 @@
public void load(Element root) {
Element validation = XMLUtilities.getUniqueChild(root, "validation");
if(validation == null) return;
- Element[] linkedResources = XMLUtilities.getChildren(validation,
"inked-resource");
+ Element[] linkedResources = XMLUtilities.getChildren(validation,
"linked-resource");
if(linkedResources != null) for (int i = 0; i < linkedResources.length; i++) {
String name = linkedResources[i].getAttribute("name");
if(name == null || name.trim().length() == 0) continue;
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamValidator.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamValidator.java 2007-07-13
15:14:33 UTC (rev 2431)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamValidator.java 2007-07-13
15:23:43 UTC (rev 2432)
@@ -28,8 +28,8 @@
*/
public abstract class SeamValidator implements IValidatorJob {
- private IValidationContext helper;
- private IReporter reporter;
+ protected IValidationContext helper;
+ protected IReporter reporter;
public SeamValidator() {
super();
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/messages.properties
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/messages.properties 2007-07-13
15:14:33 UTC (rev 2431)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/messages.properties 2007-07-13
15:23:43 UTC (rev 2432)
@@ -10,8 +10,10 @@
******************************************************************************/
NONUNIQUE_COMPONENT_NAME_MESSAGE=Duplicate component name: {0}
UNKNOWN_INJECTION_NAME=Unknown context variable name: {0}
-STATEFUL_COMPONENT_DOES_NOT_CONTENT_REMOVE=Stateful component '{0}' must have a
method marked @Remove
-STATEFUL_COMPONENT_DOES_NOT_CONTENT_DESTROY=Stateful component '{0}' must have a
method marked @Destroy
-STATEFUL_COMPONENT_WRONG_SCOPE=Stateful component '{0}' should not have
org.jboss.seam.ScopeType.PAGE, nor org.jboss.seam.ScopeType.STATELESS
-STATEFUL_COMPONENT_DUPLICATE_REMOVE=Duplicate @Remove method '{0}'
-STATEFUL_COMPONENT_DUPLICATE_DESTROY=Duplicate @Destroy method '{0}'
\ No newline at end of file
+STATEFUL_COMPONENT_DOES_NOT_CONTENT_REMOVE=Stateful component "{0}" must have a
method marked @Remove
+STATEFUL_COMPONENT_DOES_NOT_CONTENT_DESTROY=Stateful component "{0}" must have
a method marked @Destroy
+STATEFUL_COMPONENT_WRONG_SCOPE=Stateful component "{0}" should not have
org.jboss.seam.ScopeType.PAGE, nor org.jboss.seam.ScopeType.STATELESS
+ENTITY_COMPONENT_WRONG_SCOPE=Entity component "{0}" should not have
org.jboss.seam.ScopeType.STATELESS
+DUPLICATE_REMOVE=Duplicate @Remove method "{0}"
+DUPLICATE_DESTROY=Duplicate @Destroy method "{0}"
+DUPLICATE_CREATE=Duplicate @Create method "{0}"
\ No newline at end of file