[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-994) seam-gen and mutiple foreign keys
by Niels Hoogeveen (JIRA)
seam-gen and mutiple foreign keys
---------------------------------
Key: JBSEAM-994
URL: http://jira.jboss.com/jira/browse/JBSEAM-994
Project: JBoss Seam
Issue Type: Bug
Components: Tools
Affects Versions: 1.2.0.GA
Environment: JBoss-4.0.5
Reporter: Niels Hoogeveen
I have generated a project with seam-gen based on generate-entities. All works fine, except for the generation of the home interfaces. In one of my tables I have two foreign keys to the same table. In the home interface two references are created to the appropriate object, but with the same name (which of course doesn't compile).
Here is a simplified example:
Table 1
Code:
CREATE TABLE test
(
id int4 NOT NULL DEFAULT nextval('test_id_seq'::regclass),
name varchar,
id_test2_1 int4,
id_test2_2 int4,
CONSTRAINT test_pkey PRIMARY KEY (id),
CONSTRAINT test_id_test2_1_fkey FOREIGN KEY (id_test2_1)
REFERENCES test2 (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT test_id_test2_2_fkey FOREIGN KEY (id_test2_2)
REFERENCES test2 (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
Table2
Code:
CREATE TABLE test2
(
id int4 NOT NULL DEFAULT nextval('test2_id_seq'::regclass),
name varchar,
CONSTRAINT test2_pkey PRIMARY KEY (id)
)
First Entity
Code:
@Entity
@Table(name = "test", schema = "public")
public class Test implements java.io.Serializable {
private int id;
private Test2 test2ByIdTest22;
private Test2 test2ByIdTest21;
private String name;
public Test() {
}
public Test(int id) {
this.id = id;
}
public Test(int id, Test2 test2ByIdTest22, Test2 test2ByIdTest21,
String name) {
this.id = id;
this.test2ByIdTest22 = test2ByIdTest22;
this.test2ByIdTest21 = test2ByIdTest21;
this.name = name;
}
@Id
@Column(name = "id", unique = true, nullable = false)
@NotNull
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_test2_2")
public Test2 getTest2ByIdTest22() {
return this.test2ByIdTest22;
}
public void setTest2ByIdTest22(Test2 test2ByIdTest22) {
this.test2ByIdTest22 = test2ByIdTest22;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_test2_1")
public Test2 getTest2ByIdTest21() {
return this.test2ByIdTest21;
}
public void setTest2ByIdTest21(Test2 test2ByIdTest21) {
this.test2ByIdTest21 = test2ByIdTest21;
}
@Column(name = "name", length = 0)
@Length(max = 0)
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
second entity
Code:
@Entity
@Table(name = "test2", schema = "public")
public class Test2 implements java.io.Serializable {
private int id;
private String name;
private Set<Test> testsForIdTest21 = new HashSet<Test>(0);
private Set<Test> testsForIdTest22 = new HashSet<Test>(0);
public Test2() {
}
public Test2(int id) {
this.id = id;
}
public Test2(int id, String name, Set<Test> testsForIdTest21,
Set<Test> testsForIdTest22) {
this.id = id;
this.name = name;
this.testsForIdTest21 = testsForIdTest21;
this.testsForIdTest22 = testsForIdTest22;
}
@Id
@Column(name = "id", unique = true, nullable = false)
@NotNull
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
@Column(name = "name", length = 0)
@Length(max = 0)
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "test2ByIdTest21")
public Set<Test> getTestsForIdTest21() {
return this.testsForIdTest21;
}
public void setTestsForIdTest21(Set<Test> testsForIdTest21) {
this.testsForIdTest21 = testsForIdTest21;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "test2ByIdTest22")
public Set<Test> getTestsForIdTest22() {
return this.testsForIdTest22;
}
public void setTestsForIdTest22(Set<Test> testsForIdTest22) {
this.testsForIdTest22 = testsForIdTest22;
}
}
Home interface of first entity. Here we have two Test2Home references, both with the name test2Home.
Code:
@Name("testHome")
public class TestHome extends EntityHome<Test> {
@In(create = true)
Test2Home test2Home;
@In(create = true)
Test2Home test2Home;
public void setTestId(Integer id) {
setId(id);
}
public Integer getTestId() {
return (Integer) getId();
}
@Override
protected Test createInstance() {
Test test = new Test();
return test;
}
public void wire() {
Test2 test2ByIdTest22 = test2Home.getDefinedInstance();
if (test2ByIdTest22 != null) {
getInstance().setTest2ByIdTest22(test2ByIdTest22);
}
Test2 test2ByIdTest21 = test2Home.getDefinedInstance();
if (test2ByIdTest21 != null) {
getInstance().setTest2ByIdTest21(test2ByIdTest21);
}
}
public boolean isWired() {
return true;
}
public Test getDefinedInstance() {
return isIdDefined() ? getInstance() : null;
}
}
BTW. I used the latest seam version from CVS.
--
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
15 years, 11 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-633) remoting extension in handling exceptions on client side
by Nico Gau (JIRA)
remoting extension in handling exceptions on client side
--------------------------------------------------------
Key: JBSEAM-633
URL: http://jira.jboss.com/jira/browse/JBSEAM-633
Project: JBoss Seam
Issue Type: Patch
Components: Remoting
Affects Versions: 1.1.0.GA
Reporter: Nico Gau
Priority: Optional
Hi all,
I don't really know what JIRA is by the way, so hopefully nobody is upset by this post. I first mailed Gavin but he told me I should put it in JIRA.
I currently work on a project which uses Seam Remoting directly and I didn't find a neat way in handling errors on the client side as Exceptions are not propagated to it. Therefore I changed Seam to transmit all exceptions which can be handled in the javascript part via another callback. E.g.:
Seam.Component.getInstance('userManager').currentUser(function(user) {
alert("user: " + user);
},
function(ex) {
alert("exception occured: " + ex.getMessage());
});
As the exception handler is optional, the change would not brake any client code. If you are interested in the change, you can reach me at heinzbeinz AT googlemail.com
--
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
16 years, 1 month
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-1179) dvd store: Function 's:hasRole' not found
by Pete Muir (JIRA)
dvd store: Function 's:hasRole' not found
-----------------------------------------
Key: JBSEAM-1179
URL: http://jira.jboss.com/jira/browse/JBSEAM-1179
Project: JBoss Seam
Issue Type: Bug
Components: Examples, Security
Reporter: Pete Muir
Replicate by logging in as manager and attempting to change the order process
10:32:34,117 ERROR [STDERR] java.lang.ClassNotFoundException: org.jboss.seam.security.SecurityFunctions
10:32:34,117 ERROR [STDERR] at java.lang.Class.forName(Ljava.lang.String;ZLjava.lang.ClassLoader;)Ljava.lang.Class;(Unknown Source)
10:32:34,117 ERROR [STDERR] at java.lang.Class.forName(Ljava.lang.String;I)Ljava.lang.Class;(Unknown Source)
10:32:34,117 ERROR [STDERR] at org.apache.el.lang.FunctionMapperImpl$Function.getMethod(FunctionMapperImpl.java:147)
10:32:34,117 ERROR [STDERR] at org.apache.el.lang.FunctionMapperImpl.resolveFunction(FunctionMapperImpl.java:53)
10:32:34,117 ERROR [STDERR] at org.apache.el.parser.AstFunction.getValue(AstFunction.java:71)
10:32:34,117 ERROR [STDERR] at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
10:32:34,117 ERROR [STDERR] at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
10:32:34,117 ERROR [STDERR] at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:384)
10:32:34,117 ERROR [STDERR] at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:981)
10:32:34,117 ERROR [STDERR] at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:989)
10:32:34,117 ERROR [STDERR] at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:494)
10:32:34,117 ERROR [STDERR] at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:101)
10:32:34,117 ERROR [STDERR] at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:248)
10:32:34,117 ERROR [STDERR] at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
10:32:34,117 ERROR [STDERR] at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
10:32:34,117 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
10:32:34,117 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
10:32:34,117 ERROR [STDERR] at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
10:32:34,117 ERROR [STDERR] at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60)
10:32:34,117 ERROR [STDERR] at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
10:32:34,117 ERROR [STDERR] at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
10:32:34,117 ERROR [STDERR] at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
10:32:34,117 ERROR [STDERR] at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
10:32:34,117 ERROR [STDERR] at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
10:32:34,117 ERROR [STDERR] at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79)
10:32:34,117 ERROR [STDERR] at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
10:32:34,117 ERROR [STDERR] at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84)
10:32:34,117 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
10:32:34,117 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
10:32:34,117 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
10:32:34,117 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
10:32:34,117 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
10:32:34,117 WARN [lifecycle] javax.el.ELException: /WEB-INF/incl/stats.xhtml @7,49 rendered="#{s:hasRole('admin')}": Function 's:hasRole' not found
javax.faces.FacesException: javax.el.ELException: /WEB-INF/incl/stats.xhtml @7,49 rendered="#{s:hasRole('admin')}": Function 's:hasRole' not found
at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:387)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:981)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:989)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:494)
at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:248)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60)
at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79)
at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
--
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
16 years, 2 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-541) ConversationEntry reports the wrong description
by Norman Richards (JIRA)
ConversationEntry reports the wrong description
-----------------------------------------------
Key: JBSEAM-541
URL: http://jira.jboss.com/jira/browse/JBSEAM-541
Project: JBoss Seam
Issue Type: Bug
Affects Versions: 1.1.0.CR1
Reporter: Norman Richards
Assigned To: Gavin King
The linked forum post shows one example of this bug, though it is not directly the issue the poster is complaining of.
Using the forum application as a guide, start a conversation and then start a nested conversation. End the nested conversation. The description of the parent conversation in the converstion list on will be incorrect. (it will have the name of the current conversation that just ended)
This happens because of the following code:
public String getDescription()
{
if ( isCurrent() )
{
String desc = Conversation.instance().description;
if (desc!=null) return desc;
}
return description;
}
public boolean isCurrent()
{
Manager manager = Manager.instance();
if ( manager.isLongRunningConversation() )
{
return id.equals( manager.getCurrentConversationId() );
}
else if ( manager.isNestedConversation() )
{
return id.equals( manager.getParentConversationId() );
}
else
{
return false;
}
}
The parent conversation entry is considered "current". (isLongRunning() is false and isNestedConversation() is true) Because of this, the ConversationEntry description is ignored in favor of Conversation.instance().description. (Again, Conversation.instance(), is the nested conversation that just ended)
Subsequent requests display the conversation description correctly since they are done in the context of the correct conversation.
The isNestedConversation() check looks to be the source of the problem. I can't figure out what case that would make sense for.
--
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
16 years, 5 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-1262) Should be able to customize Hibernate validation messages based on context (by page, or role like Seam component scopes)
by Nathaniel Stoddard (JIRA)
Should be able to customize Hibernate validation messages based on context (by page, or role like Seam component scopes)
------------------------------------------------------------------------------------------------------------------------
Key: JBSEAM-1262
URL: http://jira.jboss.com/jira/browse/JBSEAM-1262
Project: JBoss Seam
Issue Type: Feature Request
Affects Versions: 1.2.1.GA
Reporter: Nathaniel Stoddard
Currently, each validation specified a single message resource to be used as the error message. It would be helpful if there was some way to customize the error messages to be used such that in one case "Contact address is required." is displayed, while in others "Billing address is required", for example. Annotating model classes with validation rules limits the reuse of those classes since the validation messages offer limited flexibility.
Since validated fields in the domain classes aren't necessarily associated with a UIInput on a page, it would be helpful to have more flexible annotations, such as:
@MaxLength(messages = {@Message(role='contactForm', value='contact.too_long'), @Message(role='billingForm', value='billing.too_long')})
private String field;
Also needed would be some way of indicated to the UIView which 'role' should be used when validation takes place.
--
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
16 years, 5 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-1009) optionally login-require in a more specific page should be able to override a wildcard login-require
by Leo Baschy (JIRA)
optionally login-require in a more specific page should be able to override a wildcard login-require
----------------------------------------------------------------------------------------------------
Key: JBSEAM-1009
URL: http://jira.jboss.com/jira/browse/JBSEAM-1009
Project: JBoss Seam
Issue Type: Patch
Components: Security
Affects Versions: 1.2.0.GA
Environment: all
Reporter: Leo Baschy
This should be optional to switch on, so no one's existing expectations of security get broken.
The point is about having a generic wildcard <page view-id="*" scheme="http" login-required="true"> to secure the whole site, and then allowing specific pages or specific wildcards to have login-required="false". E.g. for a registration (with preview) section as one cannot be logged in if one isn't registered yet.
Some may suggest instead forcing pages into dedicated secure and not-secure directories, but in reality if there are multiple reasons to force pages into directories different ways (security, hyperlink management, publishability of URLs, etc.), one cannot serve all of them.
--
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
16 years, 5 months