Main Page | Packages | Class Hierarchy | Class List | File List | Class Members

InterpreterCall.java

Go to the documentation of this file.
00001 //$Id: InterpreterCall_8java-source.html 336 2010-01-12 20:03:17Z linus $
00002 //Copyright (c) 2003, Mikael Albertsson, Mattias Danielsson, Per Engström, 
00003 //Fredrik Gröndahl, Martin Gyllensten, Anna Kent, Anders Olsson, 
00004 //Mattias Sidebäck.
00005 //All rights reserved.
00006 //
00007 //Redistribution and use in source and binary forms, with or without 
00008 //modification, are permitted provided that the following conditions are met:
00009 //
00010 //* Redistributions of source code must retain the above copyright notice, 
00011 //  this list of conditions and the following disclaimer.
00012 // 
00013 //* Redistributions in binary form must reproduce the above copyright 
00014 //  notice, this list of conditions and the following disclaimer in the 
00015 //  documentation and/or other materials provided with the distribution.
00016 //
00017 //* Neither the name of the University of Linköping nor the names of its 
00018 //  contributors may be used to endorse or promote products derived from 
00019 //  this software without specific prior written permission. 
00020 //
00021 //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
00022 //AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
00023 //IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
00024 //ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
00025 //LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
00026 //CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
00027 //SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
00028 //INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
00029 //CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
00030 //ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
00031 //THE POSSIBILITY OF SUCH DAMAGE.
00032 
00033 
00034 package org.argoprint.engine.interpreters;
00035 import org.argoprint.ArgoPrintDataSource;
00036 import org.argoprint.engine.Environment;
00037 import org.w3c.dom.Document;
00038 import org.w3c.dom.NamedNodeMap;
00039 import org.w3c.dom.Node;
00040 
00041 /**
00042  * Handles calls to the data source through the ap:call tag.
00043  */
00044 public class InterpreterCall extends Interpreter {
00045 
00046     public InterpreterCall(ArgoPrintDataSource dataSource) {
00047         super("call", dataSource);
00048     }
00049 
00050     /**
00051      * Processes the call tag.
00052      * 
00053      * @param tagNode The tag to process.
00054      * @param env The environment in which to process it.
00055      */
00056     protected void processTag(Node tagNode, Environment env) throws Exception {
00057         NamedNodeMap attributes = tagNode.getAttributes();
00058         Object returnValue = callDataSource("what", attributes, env);
00059         if (returnValue == null)
00060             returnValue = new String("null");
00061         Document document = tagNode.getOwnerDocument();
00062         Node parentNode = tagNode.getParentNode();
00063         Node fetchedData = document.createTextNode(returnValue.toString());
00064         parentNode.replaceChild(fetchedData, tagNode);
00065     }   
00066 }   
00067     

Generated on Tue Dec 2 22:50:56 2003 for ArgoPrint by doxygen 1.3.4