[
http://jira.jboss.com/jira/browse/JBSEAM-2132?page=comments#action_12389712 ]
Dan Allen commented on JBSEAM-2132:
-----------------------------------
I also added a test case that verifies things are a-okay in this scenario. It is triggered
by the CoreTest#triggerComponentScan @BeforeSuite method.
I want to clarify that this provides a solution when the namespace component (in this case
EntityHome) is not actually a Seam component. When a Seam component is created by
sub-classing, there has to be a way to indicate which class is "implementing"
the namespaced component in that it provides an @Name annotation. This turns the XML
declaration into a configuration rather than a component definition.
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: Feature Request
Components: Core
Affects Versions: 2.0.0.CR2
Reporter: Dan Allen
Assigned To: Norman Richards
Priority: Minor
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