Trouble - hadcoded MIME type and restrictions
arturasb Feb 2, 2005 8:15 AMHi.
I want to share my experience related to the portal.
Today I finally joined to the portal's development process and I changed the ContentTypeInterceptor to the one which is more sofisticated. It takes into account User Agent.
With the Firefox+UserAgentSwitcher I changed user agent to the
"Nokia6100" which resulted into quite nice exception:
java.lang.IllegalArgumentException: Content type not accepted at org.jboss.portal.portlet.impl.RenderResponseImpl.setContentType(RenderResponseImpl.java:68) at org.jboss.portal.core.portlet.user.UserPortlet.doView(UserPortlet.java:126) at org.jboss.portlet.JBossPortlet.doDispatch(JBossPortlet.java:169) at org.jboss.portlet.JBossPortlet.render(JBossPortlet.java:159) at org.jboss.portlet.JBossPortlet.render(JBossPortlet.java:233) at org.jboss.portal.portlet.invocation.DispatcherInterceptor.invokeRequest(DispatcherInterceptor.java:143) at org.jboss.portal.portlet.invocation.DispatcherInterceptor.invoke(DispatcherInterceptor.java:171) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.core.portlet.cms.CMSInterceptor.invoke(CMSInterceptor.java:78) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.portlet.invocation.PreferencesInterceptor.invoke(PreferencesInterceptor.java:93) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.invocation.component.ContextDispatcherInterceptor$InvokeNextCommand.execute(ContextDispatcherInterceptor.java:94) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.portal.server.servlet.CommandServlet.doGet(CommandServlet.java:51) at javax.servlet.http.HttpServlet.service(HttpServlet.java:697) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:552) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:510) at org.jboss.portal.server.invocation.component.ContextDispatcherInterceptor.invoke(ContextDispatcherInterceptor.java:58) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.core.invocation.AccessControlInterceptor.invoke(AccessControlInterceptor.java:125) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.invocation.component.ModeInterceptor.invoke(ModeInterceptor.java:37) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.core.invocation.ConstrainedWindowStateInterceptor.invoke(ConstrainedWindowStateInterceptor.java:51) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.invocation.component.ParametersInterceptor.invoke(ParametersInterceptor.java:70) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.invocation.component.CacheInterceptor.invoke(CacheInterceptor.java:74) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:239) at org.jboss.portal.server.Component.invoke(Component.java:127) at org.jboss.portal.server.invocation.portal.MainDispatcherInterceptor.invoke(MainDispatcherInterceptor.java:159) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.invocation.portal.WurflBasedContentTypeInterceptor.invoke(WurflBasedContentTypeInterceptor.java:52) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.core.invocation.ViewInterceptor.invoke(ViewInterceptor.java:58) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.core.invocation.UserContextInterceptor.invoke(UserContextInterceptor.java:90) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:239) at org.jboss.portal.server.PortalServer.invoke(PortalServer.java:195) at org.jboss.portal.server.servlet.AbstractMainServlet.invoke(AbstractMainServlet.java:58) at org.jboss.portal.core.servlet.CoreServlet.process(CoreServlet.java:201) at org.jboss.portal.core.servlet.CoreServlet.invoke(CoreServlet.java:187) at org.jboss.portal.server.servlet.AbstractMainServlet.doGet(AbstractMainServlet.java:53) at javax.servlet.http.HttpServlet.service(HttpServlet.java:697) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.jboss.portal.core.servlet.TransactionFilter$1.run(TransactionFilter.java:78) at org.jboss.portal.common.transaction.Demarcator.requiresNew(Demarcator.java:52) at org.jboss.portal.core.servlet.TransactionFilter.doFilter(TransactionFilter.java:74) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:44) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:169) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:534) null java.lang.IllegalArgumentException: Content type not accepted at org.jboss.portal.portlet.impl.RenderResponseImpl.setContentType(RenderResponseImpl.java:68) at org.jboss.portal.core.portlet.cms.CMSPortlet.doView(CMSPortlet.java:65) at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:51) at org.jboss.portal.core.portlet.cms.CMSPortlet.render(CMSPortlet.java:149) at org.jboss.portal.portlet.invocation.DispatcherInterceptor.invokeRequest(DispatcherInterceptor.java:143) at org.jboss.portal.portlet.invocation.DispatcherInterceptor.invoke(DispatcherInterceptor.java:171) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.core.portlet.cms.CMSInterceptor.invoke(CMSInterceptor.java:78) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.portlet.invocation.PreferencesInterceptor.invoke(PreferencesInterceptor.java:93) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.invocation.component.ContextDispatcherInterceptor$InvokeNextCommand.execute(ContextDispatcherInterceptor.java:94) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.portal.server.servlet.CommandServlet.doGet(CommandServlet.java:51) at javax.servlet.http.HttpServlet.service(HttpServlet.java:697) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:552) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:510) at org.jboss.portal.server.invocation.component.ContextDispatcherInterceptor.invoke(ContextDispatcherInterceptor.java:58) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.core.invocation.AccessControlInterceptor.invoke(AccessControlInterceptor.java:125) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.invocation.component.ModeInterceptor.invoke(ModeInterceptor.java:37) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.core.invocation.ConstrainedWindowStateInterceptor.invoke(ConstrainedWindowStateInterceptor.java:51) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.invocation.component.ParametersInterceptor.invoke(ParametersInterceptor.java:70) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.invocation.component.CacheInterceptor.invoke(CacheInterceptor.java:74) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:239) at org.jboss.portal.server.Component.invoke(Component.java:127) at org.jboss.portal.server.invocation.portal.MainDispatcherInterceptor.invoke(MainDispatcherInterceptor.java:159) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.invocation.portal.WurflBasedContentTypeInterceptor.invoke(WurflBasedContentTypeInterceptor.java:52) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.core.invocation.ViewInterceptor.invoke(ViewInterceptor.java:58) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.core.invocation.UserContextInterceptor.invoke(UserContextInterceptor.java:90) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:214) at org.jboss.portal.server.impl.invocation.InvocationImpl.invokeNext(InvocationImpl.java:239) at org.jboss.portal.server.PortalServer.invoke(PortalServer.java:195) at org.jboss.portal.server.servlet.AbstractMainServlet.invoke(AbstractMainServlet.java:58) at org.jboss.portal.core.servlet.CoreServlet.process(CoreServlet.java:201) at org.jboss.portal.core.servlet.CoreServlet.invoke(CoreServlet.java:187) at org.jboss.portal.server.servlet.AbstractMainServlet.doGet(AbstractMainServlet.java:53) at javax.servlet.http.HttpServlet.service(HttpServlet.java:697) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.jboss.portal.core.servlet.TransactionFilter$1.run(TransactionFilter.java:78) at org.jboss.portal.common.transaction.Demarcator.requiresNew(Demarcator.java:52) at org.jboss.portal.core.servlet.TransactionFilter.doFilter(TransactionFilter.java:74) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:44) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:169) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:534)
Then I decided to look for the hardcoded MIME type "text/plain" in the cource code. Here you have the file list:
AdminPortlet.java, TestPortlet.java, DefaultPortlet.java, CMSPortlet.java, AdminCMSPortlet.java, RolePortlet.java, UserPortlet.java, CoreServlet.java, ForumsPortlet.java, SessionInspectorServlet.java, PortletServlet.java, TestUserInformationPortlet.java, TestSessionPortlet.java, TestSecurityPortlet.java, TestSecuredProtocolPortlet.java, TestResourceBundlePortlet.java, TestRedirectPortlet.java, TestPortletPreferencesPortlet.java, TestPortletModePortlet.java, TestPortlet.java, TestHelloWorldPortlet.java, TestDispatcherPortlet.java, TestCachedContentPortlet.java, PortletMetaDataTestCase.java, CrossContextSessionServlet.java, CrossContextSessionPortlet.java, ContentTypesTestCase.java, TestExceptionDuringActionPortlet.java, WurflBasedContentTypeInterceptor.java, MainDispatcherInterceptor.java, ContentTypeInterceptor.java
Well, I believe we need to remove this from the code ASAP. I also believe that the portal is the one which dictates MIME type.
Good people of Portal ;), what do you think about this disaster ;) ?
Best regards,
Arturas
P.S.: sorry for those big pieces of code...