[
https://issues.jboss.org/browse/SOLDER-309?page=com.atlassian.jira.plugin...
]
Ove Ranheim commented on SOLDER-309:
------------------------------------
There's a bit of doubt (from my side at least) to what should be the expected
behavior. Below is an seam-dev chat snippet to shed light on topic.
{noformat}
[09:59am] oranheim: maschmid: i do see you point with #1, so it's not a bug. It's
correct behaviorr
[09:59am] oranheim: maschmid: but, what is the correct faces-config.xml configuration
then. Because, you need to have a identity.login rule in order to redirect the user during
normal login.. I'm a bit confused here
[11:14am] maschmid: oranheim, I agree with you that there should be a way to tell it to
redirect somewhere else if you go to the login page explicitly... I don't think it is
possible right now to do it in any clean way... currently it seems that the only way is to
make the "login" button go to "home" or whatever view you want to end
up after the successful login..
[11:16am] maschmid: we should probably ask bleathem what he thinks about this...
[11:17am] oranheim: maschmid: Marek, that is not a satisfactory solution, because it
violates with the principles of @ViewConfig where you declare restricted views. So, it
will make that great feature unusable. It's in fact such a blocker, that my company
can't upgrade and move on to the next level.. Let's discuss this with Brian
[11:18am] oranheim: maschmid: Re issue #1. Using @Initialed HttpServletResponse works just
fine in my app now
[11:29am] maschmid: oranheim, I still don't quite understand why you need to go to the
login page explicitly... isn't the point of the @LoginView to automatically redirect
you to the login view whenever you need? (now of course the button in the UI will probably
be labeled "login" as that is what the user expects, but conceptually, the user
doesn't want to go to the login form, he want the "home" view..
[11:32am] oranheim: maschmid: hmm… i haven't thought about that.. if we remove the
faces-config nav-rule, request e.g. /home.xhtml (which is protected) that will redirect
the user to the login.xhtml view and from there the user will be redirect to home after
logon
{noformat}
@Observes HttpServletResponse causes IllegalProductException
------------------------------------------------------------
Key: SOLDER-309
URL:
https://issues.jboss.org/browse/SOLDER-309
Project: Solder
Issue Type: Bug
Components: Servlet
Affects Versions: 3.1.0.CR1
Reporter: Ove Ranheim
Assignee: Shane Bryzak
Fix For: 3.1.0.Final
Attachments: SolderHttpServletResponseTest.zip
The ImplicitHttpServletObjectsProducer.getHttpServletResponse() produces a null instance
when invoked from an @Observer.
{noformat}
public void observeHttpRequest(@Observes @Initialized HttpServletRequest request,
HttpServletResponse response) {
final String path = request.getServletPath();
if (identity.isLoggedIn()) {
// Redirect user to dashboard if landing page is requested
if ("/index".equals(path) || "/index.jsf".equals(path)) {
log.infof("Authorized request to: %s. Will be redirected to home!",
path);
try {
response.sendRedirect(request.getContextPath() + "/home");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
{noformat}
Causes the exception:
{noformat}
org.jboss.weld.exceptions.IllegalProductException: WELD-000052 Cannot return null from a
non-dependent producer method: [method] @Produces @Typed @RequestScoped protected
org.jboss.solder.servlet.http.ImplicitHttpServletObjectsProducer.getHttpServletResponse()
org.jboss.weld.bean.AbstractProducerBean.checkReturnValue(AbstractProducerBean.java:256)
org.jboss.weld.bean.AbstractProducerBean.create(AbstractProducerBean.java:362)
org.jboss.weld.context.AbstractContext.get(AbstractContext.java:122)
org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:99)
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:124)
org.jboss.weld.proxies.HttpServletResponse$1903192262$Proxy$_$$_WeldClientProxy.sendRedirect(HttpServletResponse$1903192262$Proxy$_$$_WeldClientProxy.java)
com.musific.webapp.session.HttpRequestWatcher.observeHttpRequest(HttpRequestWatcher.java:80)
com.musific.webapp.session.HttpRequestWatcher$Proxy$_$$_WeldClientProxy.observeHttpRequest(HttpRequestWatcher$Proxy$_$$_WeldClientProxy.java)
sun.reflect.GeneratedMethodAccessor223.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:305)
org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:54)
org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:163)
org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:299)
org.jboss.weld.introspector.jlr.WeldMethodImpl.invokeOnInstance(WeldMethodImpl.java:188)
org.jboss.weld.introspector.ForwardingWeldMethod.invokeOnInstance(ForwardingWeldMethod.java:59)
org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:198)
org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:282)
org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:265)
org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:234)
org.jboss.weld.manager.BeanManagerImpl.notifyObservers(BeanManagerImpl.java:635)
org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:622)
org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:616)
org.jboss.solder.servlet.event.AbstractServletEventBridge.fireEvent(AbstractServletEventBridge.java:45)
org.jboss.solder.servlet.event.ServletEventBridgeListener.requestInitialized(ServletEventBridgeListener.java:76)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952)
java.lang.Thread.run(Thread.java:680)
{noformat}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira