/* * Copyright 2004-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.webflow.context.portlet; import javax.portlet.ActionResponse; import javax.portlet.PortletRequest; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import javax.portlet.ResourceRequest; import javax.portlet.ResourceResponse; /** * A interface for parsing and generating flow URLs. Encapsulates a specific flow URL format. * * @author Keith Donald * @author Scott Andrews */ public interface FlowUrlHandler { /** * Extract the flow execution from the request. * @param request the request * @return the flow execution key, or null if no flow execution key is present */ public String getFlowExecutionKey(PortletRequest request); /** * Set the flow execution key render parameter. * @param flowExecutionKey the key * @param response the action response */ public void setFlowExecutionRenderParameter(String flowExecutionKey, ActionResponse response); /** * Set the flow execution key into the portlet session. This should only be used in a render request when the * portlet is started before any action requests are made * @param flowExecutionKey the key * @param request the request */ public void setFlowExecutionInSession(String flowExecutionKey, RenderRequest request); /** * Set the flow execution key into the portlet session. This should only be used in a resource request when the * portlet is started before any action requests are made * @param flowExecutionKey the key * @param request the request */ public void setFlowExecutionInSession(String flowExecutionKey, ResourceRequest request); /** * Creates a flow execution URL during a render phase suitable to invoke Web Flow in a portlet environment * @param flowId the flow id * @param flowExecutionKey the flow execution key * @param response the response * @return the execution url */ public String createFlowExecutionUrl(String flowId, String flowExecutionKey, RenderResponse response); /** * Creates a flow execution URL during a resource phase suitable to invoke Web Flow in a portlet environment * @param flowId the flow id * @param flowExecutionKey the flow execution key * @param response the response * @return the execution url */ public String createFlowExecutionUrl(String flowId, String flowExecutionKey, ResourceResponse response); }