Author: craigmcc Date: Sat Sep 17 17:46:18 2005 New Revision: 289875 URL: http://svn.apache.org/viewcvs?rev=289875&view=rev Log: Make TilesViewHandler work correctly even in a portlet environment, by skipping the tile lookup (instead of throwing a class cast exception).
PR: Bugzilla #36521 Submitted by: Ronald Holshausen <uglyog AT gmail.com> Modified: struts/shale/trunk/core-library/src/java/org/apache/shale/tiles/TilesViewHandler.java Modified: struts/shale/trunk/core-library/src/java/org/apache/shale/tiles/TilesViewHandler.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/core-library/src/java/org/apache/shale/tiles/TilesViewHandler.java?rev=289875&r1=289874&r2=289875&view=diff ============================================================================== --- struts/shale/trunk/core-library/src/java/org/apache/shale/tiles/TilesViewHandler.java (original) +++ struts/shale/trunk/core-library/src/java/org/apache/shale/tiles/TilesViewHandler.java Sat Sep 17 17:46:18 2005 @@ -261,24 +261,27 @@ ExternalContext externalContext = FacesContext.getCurrentInstance() .getExternalContext(); - ServletRequest request = (ServletRequest)externalContext.getRequest(); - ServletContext servletContext = (ServletContext)externalContext. - getContext(); + Object request = externalContext.getRequest(); + Object context = externalContext.getContext(); ComponentDefinition tile = null; - try { - tile = TilesUtil.getDefinition(name, request, servletContext); - } - catch(NoSuchDefinitionException nsex) { /* not here */ } - catch(DefinitionsFactoryException dex) { /* not here */ } - - if (tile == null && name.startsWith("/")) { // try again w/o slash... - try { - tile = TilesUtil.getDefinition(name, request, servletContext); - } - catch(NoSuchDefinitionException nsdex) { /* not here */ } - catch(DefinitionsFactoryException dfex) { /* not here */ } + if ((request instanceof ServletRequest) && + (context instanceof ServletContext)) { + ServletRequest servletRequest = (ServletRequest) request; + ServletContext servletContext = (ServletContext) context; + try { + tile = TilesUtil.getDefinition(name, servletRequest, servletContext); + } catch (NoSuchDefinitionException nsex) { + /* not here */ + } catch (DefinitionsFactoryException dex) { + /* not here */ + } + } else { + if (log.isDebugEnabled()) { + log.debug("Not a servlet request, skipping tile lookup"); + } } return tile; + } /** --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]