[
http://jira.jboss.com/jira/browse/JBSEAM-2132?page=all ]
Dan Allen updated JBSEAM-2132:
------------------------------
Description:
When a component template class is being configured (such as EntityHome, EntityQuery,
etc), the class attribute should be considered prior to deriving the class name from the
namespace info + XML element name. By first consulting the class attribute, it can prevent
the case where two components are being configured for the same name when the developer
intends only to use the XML declaration for component configuration.
Case in point:
Let's say I create a class that extends EntityHome to provide some extra behavior.
@Name("myEntityHome")
public class MyEntityHome extends EntityHome {
}
Now I want to configure the properties of this class in components.xml
<framework:entity-home name="myEntityHome"
class="org.example.model.MyEntityHome">
<framework:created-message>You created it!
Yeah!</framework:created-message>
<framework:updated-message>You updated it!
Yeah!</framework:updated-message>
<framework:deleted-message>You deleted it!
Yeah!</framework:deleted-message>
</framework:entity-home>
If the class attribute is not consulted, it will look for a @Name annotation on
org.jboss.seam.framework.EntityHome rather than org.example.model.MyEntityHome. When it
doesn't find one on the built-in class, it tries to create a new component
definition.
Why would I want to use XML namespace tags in this case? Simple. Tag completion and
property recognition support.
Note that this works if the class resolved from XML namespace + element name is the same
as the component class. In the case when the component class extends the built-in class,
you get this problem.
was:
When a component template class is being configured (such as EntityHome, EntityQuery,
etc), the class attribute should be considered prior to deriving the class name from the
namespace info + XML element name. Doing so prevents the case where two components are
being configured for the same name when the developer intends only to use it for
configuration.
Case in point:
Let's say I create a class that extends EntityHome to provide some extra behavior.
@Name("myEntityHome")
public class MyEntityHome extends EntityHome {
}
Now I want to configure the properties of this class in components.xml
<framework:entity-home name="myEntityHome"
class="org.example.model.MyEntityHome">
<framework:created-message>You created it!
Yeah!</framework:created-message>
<framework:updated-message>You updated it!
Yeah!</framework:updated-message>
<framework:deleted-message>You deleted it!
Yeah!</framework:deleted-message>
</framework:entity-home>
If the class attribute is not consulted, it will look for a @Name annotation on
org.jboss.seam.framework.EntityHome rather than org.example.model.MyEntityHome. When it
doesn't find one on the built-in class, it tries to create a new component
definition.
Why would I want to use XML namespace tags in this case? Simple. Tag completion and
property recognition support.
Note that this works if the class resolved from XML namespace + element name is the same
as the component class. In the case when the component class extends the built-in class,
you get this problem.
consult class attribute on component XML declaration with namespace
-------------------------------------------------------------------
Key: JBSEAM-2132
URL:
http://jira.jboss.com/jira/browse/JBSEAM-2132
Project: JBoss Seam
Issue Type: Bug
Components: Core
Affects Versions: 2.0.0.CR2
Reporter: Dan Allen
Assigned To: Dan Allen
Priority: Critical
Fix For: 2.0.1.GA
Attachments: JBSEAM-2132-v1.txt
Original Estimate: 15 minutes
Remaining Estimate: 15 minutes
When a component template class is being configured (such as EntityHome, EntityQuery,
etc), the class attribute should be considered prior to deriving the class name from the
namespace info + XML element name. By first consulting the class attribute, it can prevent
the case where two components are being configured for the same name when the developer
intends only to use the XML declaration for component configuration.
Case in point:
Let's say I create a class that extends EntityHome to provide some extra behavior.
@Name("myEntityHome")
public class MyEntityHome extends EntityHome {
}
Now I want to configure the properties of this class in components.xml
<framework:entity-home name="myEntityHome"
class="org.example.model.MyEntityHome">
<framework:created-message>You created it!
Yeah!</framework:created-message>
<framework:updated-message>You updated it!
Yeah!</framework:updated-message>
<framework:deleted-message>You deleted it!
Yeah!</framework:deleted-message>
</framework:entity-home>
If the class attribute is not consulted, it will look for a @Name annotation on
org.jboss.seam.framework.EntityHome rather than org.example.model.MyEntityHome. When it
doesn't find one on the built-in class, it tries to create a new component
definition.
Why would I want to use XML namespace tags in this case? Simple. Tag completion and
property recognition support.
Note that this works if the class resolved from XML namespace + element name is the same
as the component class. In the case when the component class extends the built-in class,
you get this problem.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira