package org.togglz.jsp;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;
import org.togglz.core.manager.FeatureManager;
import org.togglz.core.manager.LazyResolvingFeatureManager;
import org.togglz.core.util.NamedFeature;
import org.togglz.core.util.Strings;
public class ActiveFeatureTag extends TagSupport {
private static final long serialVersionUID = 1L;
protected FeatureManager featureManager;
protected String name;
protected String var;
public ActiveFeatureTag() {
this.featureManager = new LazyResolvingFeatureManager();
}
@Override
public int doStartTag() throws JspException {
boolean inverse = false;
if (name.startsWith("!")) {
inverse = true;
name = name.substring(1);
}
boolean isActive = isFeatureActive();
if (inverse) {
isActive = !isActive;
}
if (Strings.isNotBlank(var)) {
pageContext.setAttribute(var, isActive, PageContext.PAGE_SCOPE);
}
return isActive ? Tag.EVAL_BODY_INCLUDE : Tag.SKIP_BODY;
}
protected boolean isFeatureActive() {
if (Strings.isNotBlank(name)) {
return featureManager.isActive(new NamedFeature(name));
}
return false;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVar() {
return var;
}
public void setVar(String var) {
this.var = var;
}
public FeatureManager getFeatureManager() {
return featureManager;
}
public void setFeatureManager(FeatureManager featureManager) {
this.featureManager = featureManager;
}
}