/**
* Copyright 2005-2016 hdiv.org
*
* 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.hdiv.tags;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.hdiv.dataComposer.IDataComposer;
import org.hdiv.state.scope.StateScopeType;
import org.hdiv.util.HDIVUtil;
/**
* Tag to mark a part of the page as long living page.
*
* @since 2.1.7
*/
public class LongLivingStatesTag extends TagSupport {
/**
* Universal version identifier. Deserialization uses this number to ensure that a loaded class corresponds exactly to a serialized
* object.
*/
private static final long serialVersionUID = 4998045113101933843L;
/**
* Sets the type <code>scope</code> defined in the tag.
*
* @param scope Scope name
*/
public void setScope(final String scope) {
setValue("scope", scope);
}
@Override
public int doStartTag() throws JspException {
IDataComposer dataComposer = HDIVUtil.getRequestContext(pageContext.getRequest()).getDataComposer();
StateScopeType scope = StateScopeType.byName((String) getValue("scope"));
if (scope == null) {
// Default scope
scope = StateScopeType.USER_SESSION;
}
dataComposer.startScope(scope);
return EVAL_BODY_INCLUDE;
}
@Override
public int doEndTag() throws JspException {
HDIVUtil.getRequestContext(pageContext.getRequest()).getDataComposer().endScope();
return EVAL_PAGE;
}
}