blob: bc932a0b037438ce621acec3501d35d7348d1605 [file] [log] [blame]
/*
* Copyright 2004-2005 The Apache Software Foundation or its licensors,
* as applicable.
*
* 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.apache.jackrabbit.taglib;
import javax.jcr.Item;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.servlet.jsp.JspException;
import org.apache.jackrabbit.taglib.utils.JCRTagConstants;
/**
* Changes the current directory. Nested tags must read the paths relative to
* this node.<br>
*
* @author <a href="mailto:edgarpoce@gmail.com">Edgar Poce </a>
*/
public class CdTag extends SetTag
{
/**
* Constructor
*/
public CdTag()
{
super();
this.init();
}
/**
* Init
*/
private void init()
{
this.var = JCRTagConstants.KEY_CD;
}
/**
* @inheritDoc
*/
public int doEndTag() throws JspException
{
// Restore the previous attribute
pageContext.removeAttribute(this.var, this.scope);
return super.doEndTag();
}
/**
* @inheritDoc
*/
public int doStartTag() throws JspException
{
super.doStartTag();
return EVAL_BODY_INCLUDE;
}
/**
* @inheritDoc
*/
public void release()
{
super.release();
this.init();
}
/**
* Sets the node
*
* @param node
*/
public void setNode(String node)
{
this.item = node;
}
/**
* Retrieve and validate the Item. It must be a Node instance.
*
* @return curren working node
* @throws JspException
* @throws RepositoryException
*/
protected Item getItem() throws JspException, RepositoryException
{
Item item = super.getItem();
// Validate
if (!(item instanceof Node))
{
throw new JspException("The referenced item is not a Node instance");
}
return item;
}
}