For some reason seam wants an securityRules-setter on my inherited Identity component. I can't find any securityRules, any idea why?
this simeple case:
@Name("org.jboss.seam.security.identity")
@Scope(SESSION)
@BypassInterceptors
@Install(precedence = APPLICATION)
@AutoCreate
public class YSIdentity extends Identity {
private static final long serialVersionUID = -1573888046524276986L;
private UserAccount userAccount;
private ContentProviderAccount contentProviderAccount;
// We don't care if a user is logged in, just check it...
@Override
public void checkRestriction(String expr) {
if (!evaluateExpression(expr)) {
Events.instance().raiseEvent("org.jboss.seam.notAuthorized");
throw new AuthorizationException(String.format("Authorization check failed for expression [%s]",
expr));
}
}
@Override
public boolean hasPermission(String name, String action, Object... args) {
userAccount = (UserAccount) Component.getInstance("contentProviderAccount");
contentProviderAccount = (ContentProviderAccount) Component.getInstance("contentProviderAccount");
if (args == null || args.length == 0) {
// All the security checks currently need arguments...
return false;
}
return false;
}
}
... at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362) at org.jboss.Main.boot(Main.java:200) at org.jboss.Main$1.run(Main.java:508) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.IllegalArgumentException: no such setter method: com.yourstardom.middle.support.YSIdentity.securityRules at org.jboss.seam.util.Reflections.getSetterMethod(Reflections.java:236) at org.jboss.seam.Component.initInitializers(Component.java:486) at org.jboss.seam.Component.<init>(Component.java:264) at org.jboss.seam.Component.<init>(Component.java:217) at org.jboss.seam.init.Initialization.addComponent(Initialization.java:949) ...
DOH!
Now I see...
I needed to remove the security-rules property from components.xml