The following document contains the results of RAT (Release Audit Tool).
***************************************************** Summary ------- Notes: 1 Binaries: 0 Archives: 0 Standards: 54 Apache Licensed: 41 Generated Documents: 0 JavaDocs are generated and so license header is optional Generated files do not required license headers 13 Unknown Licenses ******************************* Archives (+ indicates readable, $ unreadable): ***************************************************** Files with AL headers will be marked L Binary files (which do not require AL headers) will be marked B Compressed archives will be marked A Notices, licenses etc will be marked N !????? /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/pom.xml AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/components/PortletUrlRenderer.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/context/PortletActionContext.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/DirectRenderFromEventAction.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/DispatcherServlet.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java !????? /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr286Dispatcher.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletContextAware.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletPreferencesAware.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletPrincipalProxy.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletRequestAware.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletResponseAware.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletStateInterceptor.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/ServletPortletPreferences.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/PortletApplicationMap.java !????? /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/PortletConstants.java !????? /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/PortletPhase.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/PortletRequestMap.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/PortletSessionMap.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletActionRedirectResult.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletResult.java !????? /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletResultHelper.java !????? /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletResultHelperJSR168.java !????? /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletResultHelperJSR286.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletVelocityResult.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/package.html AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletHttpSession.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletConfig.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletContext.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletInputStream.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletOutputStream.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequest.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequestDispatcher.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponse.java !????? /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponseJSR286.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java !????? /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelperJSR286.java !????? /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/views/freemarker/PortletFreemarkerResult.java N /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/resources/NOTICE.txt AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/resources/struts-plugin.xml !????? /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/components/PortletAction.java !????? /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/portlet/context/PortletActionContextTest.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/portlet/dispatcher/Jsr168DispatcherTest.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptorTest.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletStateInterceptorTest.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/portlet/PortletApplicationMapTest.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/portlet/PortletRequestMapTest.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/portlet/PortletSessionMapTest.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/portlet/result/PortletResultTest.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/portlet/util/PortletUrlHelperTest.java AL /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java !????? /Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/resources/struts.xml ***************************************************** Printing headers for files without AL header... ======================================================================= ==/Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/pom.xml ======================================================================= <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.struts</groupId> <artifactId>struts2-plugins</artifactId> <version>2.3.8</version> </parent> <groupId>org.apache.struts</groupId> <artifactId>struts2-portlet-plugin</artifactId> <packaging>jar</packaging> <name>Struts 2 Portlet Plugin</name> <scm> <connection>scm:svn:http://svn.apache.org/repos/asf/struts/struts2/tags/STRUTS_2_3_8/plugins/portlet</connection> <developerConnection>scm:svn:https://svn.apache.org/repos/asf/struts/struts2/tags/STRUTS_2_3_8/plugins/portlet</developerConnection> <url>http://svn.apache.org/viewcvs.cgi/struts/struts2/tags/STRUTS_2_3_8/plugins/portlet</url> </scm> <dependencies> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-junit-plugin</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> <!-- Velocity --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <optional>true</optional> </dependency> <dependency> ======================================================================= ==/Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr286Dispatcher.java ======================================================================= package org.apache.struts2.portlet.dispatcher; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; import org.apache.struts2.portlet.PortletPhase; import org.apache.struts2.portlet.servlet.PortletServletResponse; import org.apache.struts2.portlet.servlet.PortletServletResponseJSR286; import javax.portlet.EventRequest; import javax.portlet.EventResponse; import javax.portlet.PortletException; import javax.portlet.PortletRequest; import javax.portlet.PortletResponse; import javax.portlet.ResourceRequest; import javax.portlet.ResourceResponse; import java.io.IOException; public class Jsr286Dispatcher extends Jsr168Dispatcher { private final static Logger LOG = LoggerFactory.getLogger(Jsr286Dispatcher.class); @Override public void processEvent(EventRequest request, EventResponse response) throws PortletException, IOException { if (LOG.isDebugEnabled()) { LOG.debug("Entering processEvent"); } resetActionContext(); try { // We'll use the event name as the "action" serviceAction(request, response, getRequestMap(request), getParameterMap(request), getSessionMap(request), getApplicationMap(), portletNamespace, PortletPhase.EVENT_PHASE); if (LOG.isDebugEnabled()) LOG.debug("Leaving processEvent"); } finally { ActionContext.setContext(null); } } @Override public void serveResource(ResourceRequest request, ResourceResponse response) throws PortletException, IOException { if (LOG.isDebugEnabled()) { LOG.debug("Entering serveResource"); } resetActionContext(); try { serviceAction(request, response, ======================================================================= ==/Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/PortletConstants.java ======================================================================= package org.apache.struts2.portlet; import org.apache.struts2.ServletActionContext; import org.apache.struts2.portlet.dispatcher.DispatcherServlet; public class PortletConstants { /** * Default action name to use when no default action has been configured in the portlet * init parameters. */ public static String DEFAULT_ACTION_NAME = "default"; /** * Action name parameter name */ public static String ACTION_PARAM = "struts.portlet.action"; /** * Key for parameter holding the last executed portlet mode. */ public static String MODE_PARAM = "struts.portlet.mode"; /** * Key used for looking up and storing the portlet phase */ public static String PHASE = "struts.portlet.phase"; /** * Key used for looking up and storing the * {@link javax.portlet.PortletRequest} */ public static String REQUEST = "struts.portlet.request"; /** * Key used for looking up and storing the * {@link javax.portlet.PortletResponse} */ public static String RESPONSE = "struts.portlet.response"; /** * Key used for looking up and storing the action that was invoked in the action or event phase. */ public static String EVENT_ACTION = "struts.portlet.eventAction"; /** * Key used for looking up and storing the * {@link javax.portlet.PortletConfig} */ public static String PORTLET_CONFIG = "struts.portlet.config"; ======================================================================= ==/Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/PortletPhase.java ======================================================================= package org.apache.struts2.portlet; /** * TODO lukaszlenart: add a comment */ public enum PortletPhase { /** * Constant used for the render phase ( * {@link javax.portlet.Portlet#render(javax.portlet.RenderRequest, javax.portlet.RenderResponse)}) */ RENDER_PHASE, /** * Constant used for the action phase ( * {@link javax.portlet.Portlet#processAction(javax.portlet.ActionRequest, javax.portlet.ActionResponse)}) */ ACTION_PHASE, /** * Constant used for the event phase */ EVENT_PHASE, /** * */ SERVE_RESOURCE_PHASE; public boolean isRender() { return this.equals(RENDER_PHASE); } public boolean isAction() { return this.equals(ACTION_PHASE); } public boolean isEvent() { return this.equals(EVENT_PHASE); } public boolean isResource() { return this.equals(SERVE_RESOURCE_PHASE); } } ======================================================================= ==/Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletResultHelper.java ======================================================================= package org.apache.struts2.portlet.result; import javax.portlet.*; import java.io.IOException; /** * PortletResultHelper abstracts Portlet API result functions specific to the used API spec version. * * @author Rene Gielen */ public interface PortletResultHelper { /** * Set a render parameter, abstracted from the used Portlet API version * * @param response The response to set the parameter on. * @param key The parameter key to set. * @param value The parameter value to set. */ void setRenderParameter( PortletResponse response, String key, String value ); /** * Set a portlet mode, abstracted from the used Portlet API version * * @param response The response to set the portlet mode on. * @param portletMode The portlet mode to set. */ void setPortletMode( PortletResponse response, PortletMode portletMode ) throws PortletModeException; /** * Call a dispatcher's include method, abstracted from the used Portlet API version. * * @param dispatcher The dispatcher to call the include method on. * @param contentType The content type to set for the response. * @param request The request to use for including * @param response The response to use for including */ void include( PortletRequestDispatcher dispatcher, String contentType, PortletRequest request, PortletResponse response ) throws IOException, PortletException; } ======================================================================= ==/Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletResultHelperJSR168.java ======================================================================= package org.apache.struts2.portlet.result; import javax.portlet.*; import java.io.IOException; /** * PortletResultHelperJSR168 implements PortletResultHelper for Portlet 1.0 API (JSR168). * * @author Rene Gielen */ public class PortletResultHelperJSR168 implements PortletResultHelper { /** * Set a render parameter, abstracted from the used Portlet API version. This implementation assumes that the given * response must be a {@link javax.portlet.ActionResponse}, as JSR168 implies. * * @param response The response to set the parameter on. * @param key The parameter key to set. * @param value The parameter value to set. */ public void setRenderParameter( PortletResponse response, String key, String value ) { ((ActionResponse) response).setRenderParameter(key, value); } /** * Set a portlet mode, abstracted from the used Portlet API version. This implementation assumes that the given * response must be a {@link javax.portlet.ActionResponse}, as JSR168 implies. * * @param response The response to set the portlet mode on. * @param portletMode The portlet mode to set. */ public void setPortletMode( PortletResponse response, PortletMode portletMode ) throws PortletModeException { ((ActionResponse) response).setPortletMode(portletMode); } /** * Call a dispatcher's include method, abstracted from the used Portlet API version. This implementation assumes * that the given the request must be a {@link javax.portlet.RenderRequest} and the response must be a {@link * javax.portlet.RenderResponse}, as JSR168 implies. * * @param dispatcher The dispatcher to call the include method on. * @param contentType The content type to set for the response. * @param request The request to use for including * @param response The response to use for including */ public void include( PortletRequestDispatcher dispatcher, String contentType, PortletRequest request, PortletResponse response ) throws IOException, PortletException { RenderRequest req = (RenderRequest) request; RenderResponse res = (RenderResponse) response; res.setContentType(contentType); ======================================================================= ==/Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/result/PortletResultHelperJSR286.java ======================================================================= package org.apache.struts2.portlet.result; import javax.portlet.*; import java.io.IOException; /** * PortletResultHelperJSR286 implements PortletResultHelper for Portlet 2.0 API (JSR286). * * @author Rene Gielen */ public class PortletResultHelperJSR286 implements PortletResultHelper { /** * Set a render parameter, abstracted from the used Portlet API version. This implementation assumes that the given * response is a {@link javax.portlet.StateAwareResponse}, as JSR286 implies. * * @param response The response to set the parameter on. * @param key The parameter key to set. * @param value The parameter value to set. */ public void setRenderParameter( PortletResponse response, String key, String value ) { ((StateAwareResponse) response).setRenderParameter(key, value); } /** * Set a portlet mode, abstracted from the used Portlet API version. This implementation assumes that the given * response is a {@link javax.portlet.StateAwareResponse}, as JSR286 implies. * * @param response The response to set the portlet mode on. * @param portletMode The portlet mode to set. */ public void setPortletMode( PortletResponse response, PortletMode portletMode ) throws PortletModeException { ((StateAwareResponse) response).setPortletMode(portletMode); } /** * Call a dispatcher's include method, abstracted from the used Portlet API version. This implementation assumes * that the response is a {@link javax.portlet.MimeResponse}, as JSR286 implies. * * @param dispatcher The dispatcher to call the include method on. * @param contentType The content type to set for the response. * @param request The request to use for including * @param response The response to use for including */ public void include( PortletRequestDispatcher dispatcher, String contentType, PortletRequest request, PortletResponse response ) throws IOException, PortletException { MimeResponse res = (MimeResponse) response; res.setContentType(contentType); dispatcher.include(request, res); } ======================================================================= ==/Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponseJSR286.java ======================================================================= package org.apache.struts2.portlet.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.Locale; import javax.portlet.MimeResponse; import javax.portlet.PortletResponse; import javax.portlet.ResourceResponse; import javax.servlet.ServletOutputStream; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; /** * PortletServletResponseJSR286. * * @author Rene Gielen */ public class PortletServletResponseJSR286 extends PortletServletResponse { private static final Logger LOG = LoggerFactory.getLogger(PortletServletResponseJSR286.class); public PortletServletResponseJSR286( PortletResponse portletResponse ) { super(portletResponse); } public void flushBuffer() throws IOException { if(portletResponse instanceof MimeResponse) { ((MimeResponse)portletResponse).flushBuffer(); } else { throw new IllegalStateException("Only allowed in render or resource phase"); } } public int getBufferSize() { if(portletResponse instanceof MimeResponse) { return ((MimeResponse)portletResponse).getBufferSize(); } else { throw new IllegalStateException("Only allowed in render or resource phase"); } } public String getCharacterEncoding() { if(portletResponse instanceof MimeResponse) { return ((MimeResponse)portletResponse).getCharacterEncoding(); } ======================================================================= ==/Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelperJSR286.java ======================================================================= package org.apache.struts2.portlet.util; import org.apache.struts2.portlet.context.PortletActionContext; import javax.portlet.PortletRequest; import javax.portlet.MimeResponse; import javax.portlet.BaseURL; import javax.portlet.PortletSecurityException; import java.util.Map; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; /** * PortletUrlJSR286Helper. * * @author Rene Gielen */ public class PortletUrlHelperJSR286 extends PortletUrlHelper { private static final Logger LOG = LoggerFactory.getLogger(PortletUrlHelperJSR286.class); protected String encodeUrl( StringBuffer sb, PortletRequest req ) { MimeResponse resp = (MimeResponse) PortletActionContext.getResponse(); return resp.encodeURL(req.getContextPath() + sb.toString()); } protected Object createUrl( String scheme, String type, Map<String, String[]> portletParams ) { MimeResponse response = (MimeResponse) PortletActionContext.getResponse(); BaseURL url; if (URLTYPE_NAME_ACTION.equalsIgnoreCase(type)) { if (LOG.isDebugEnabled()) LOG.debug("Creating action url"); url = response.createActionURL(); } else if(URLTYPE_NAME_RESOURCE.equalsIgnoreCase(type)) { if (LOG.isDebugEnabled()) LOG.debug("Creating resource url"); url = response.createResourceURL(); } else { if (LOG.isDebugEnabled()) LOG.debug("Creating render url"); url = response.createRenderURL(); } url.setParameters(portletParams); if ("HTTPS".equalsIgnoreCase(scheme)) { try { url.setSecure(true); } catch ( PortletSecurityException e) { LOG.error("Cannot set scheme to https", e); } ======================================================================= ==/Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java ======================================================================= package org.apache.struts2; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; import org.apache.struts2.portlet.PortletConstants; import org.apache.struts2.portlet.PortletPhase; import org.springframework.mock.web.portlet.MockPortletContext; import org.springframework.mock.web.portlet.MockPortletRequest; import org.springframework.mock.web.portlet.MockPortletResponse; import org.springframework.mock.web.portlet.MockPortletSession; import org.springframework.mock.web.portlet.MockStateAwareResponse; import javax.portlet.PortletMode; import java.util.HashMap; import java.util.Map; /** * Base class used to test action in portlet environment */ public abstract class StrutsPortletTestCase extends StrutsTestCase { private static final Logger LOG = LoggerFactory.getLogger(StrutsPortletTestCase.class); protected MockPortletSession portletSession; protected MockPortletRequest portletRequest; protected MockPortletResponse portletResponse; protected MockContext portletContext; @Override protected void initActionContext(ActionContext actionContext) { super.initActionContext(actionContext); initPortletContext(actionContext); } protected void initPortletContext(ActionContext actionContext) { LOG.debug("Initializing mock portlet environment"); portletContext = new MockContext(); portletContext.setMajorVersion(getMajorVersion()); actionContext.put(StrutsStatics.STRUTS_PORTLET_CONTEXT, portletContext); portletRequest = new MockPortletRequest(portletContext); portletResponse = new MockStateAwareResponse(); portletSession = new MockPortletSession(); portletRequest.setSession(portletSession); actionContext.setSession(createSession()); actionContext.put(PortletConstants.REQUEST, portletRequest); actionContext.put(PortletConstants.RESPONSE, portletResponse); actionContext.put(PortletConstants.MODE_NAMESPACE_MAP, new HashMap<PortletMode, String>()); actionContext.put(PortletConstants.PHASE, PortletPhase.EVENT_PHASE); ======================================================================= ==/Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/components/PortletAction.java ======================================================================= package org.apache.struts2.components; import com.opensymphony.xwork2.Action; public class PortletAction { public String execute() { return Action.SUCCESS; } } ======================================================================= ==/Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java ======================================================================= package org.apache.struts2.components; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionProxy; import com.opensymphony.xwork2.util.ValueStack; import org.apache.struts2.StrutsStatics; import org.apache.struts2.StrutsTestCase; import org.apache.struts2.portlet.PortletConstants; import org.springframework.mock.web.portlet.MockMimeResponse; import org.springframework.mock.web.portlet.MockPortletContext; import org.springframework.mock.web.portlet.MockPortletRequest; import javax.portlet.PortletContext; import javax.portlet.PortletMode; import java.io.StringWriter; import java.io.Writer; import java.util.Collections; public class PortletUrlRendererTest extends StrutsTestCase { private ValueStack stack; public void setUp() throws Exception { super.setUp(); ActionProxy actionProxy = getActionProxy("/portlettest/test"); // creates new empty ActionContext ActionContext.getContext().put(ActionContext.ACTION_INVOCATION, actionProxy.getInvocation()); PortletContext portletCtx = new MockPortletContext(); ActionContext.getContext().put(StrutsStatics.STRUTS_PORTLET_CONTEXT, portletCtx); ActionContext.getContext().put(PortletConstants.REQUEST, new MockPortletRequest(portletCtx)); ActionContext.getContext().put(PortletConstants.RESPONSE, new MockMimeResponse()); ActionContext.getContext().put(PortletConstants.MODE_NAMESPACE_MAP, Collections.emptyMap()); stack = actionProxy.getInvocation().getStack(); } public void testRenderUrlWithNamespace() throws Exception { // given PortletUrlRenderer renderer = new PortletUrlRenderer(); UrlProvider component = new URL(stack, request, response).getUrlProvider(); Writer writer = new StringWriter(); // when renderer.renderUrl(writer, component); // then assertTrue("/portlettest".equals(component.getNamespace())); } ======================================================================= ==/Users/lukaszlenart/Projects/Apache/STRUTS_2_3_8/plugins/portlet/src/test/resources/struts.xml ======================================================================= <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="test-portlet-default" namespace="/portlettest" extends="struts-portlet-default"> <action name="test" class="org.apache.struts2.components.PortletAction"> <result type="redirectAction">redirectAction</result> </action> </package> </struts>