KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > jelly > tags > core > IncludeTag


1 /*
2  * Copyright 2002,2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.apache.commons.jelly.tags.core;
18
19 import java.io.File JavaDoc;
20
21 import org.apache.commons.jelly.JellyException;
22 import org.apache.commons.jelly.JellyTagException;
23 import org.apache.commons.jelly.MissingAttributeException;
24 import org.apache.commons.jelly.TagSupport;
25 import org.apache.commons.jelly.XMLOutput;
26
27 /** A tag which conditionally evaluates its body based on some condition
28   *
29   * @author <a HREF="mailto:jstrachan@apache.org">James Strachan</a>
30   * @version $Revision: 155420 $
31   */

32
33 public class IncludeTag extends TagSupport {
34
35     private String JavaDoc uri;
36     private File JavaDoc file;
37
38     private boolean shouldExport;
39     private boolean shouldInherit;
40
41     public IncludeTag() {
42         this.shouldExport = false;
43         this.shouldInherit = true;
44     }
45
46     public void setInherit(String JavaDoc inherit) {
47         if ("true".equals(inherit)) {
48             this.shouldInherit = true;
49         } else {
50             this.shouldInherit = false;
51         }
52     }
53
54     public void setExport(String JavaDoc export) {
55         if ("true".equals(export)) {
56             this.shouldExport = true;
57         } else {
58             this.shouldExport = false;
59         }
60     }
61
62     public boolean isInherit() {
63         return this.shouldInherit;
64     }
65
66     public boolean isExport() {
67         return this.shouldExport;
68     }
69
70     /**
71      * @return
72      */

73     public File JavaDoc getFile() {
74         return file;
75     }
76
77     /**
78      * Sets the file to be included which is either an absolute file or a file
79      * relative to the current directory
80      */

81     public void setFile(File JavaDoc file) {
82         this.file = file;
83     }
84
85
86     // Tag interface
87
//-------------------------------------------------------------------------
88
public void doTag(XMLOutput output)
89         throws MissingAttributeException, JellyTagException {
90
91         if (uri == null && file == null) {
92             throw new MissingAttributeException("uri");
93         }
94
95         // we need to create a new JellyContext of the URI
96
// take off the script name from the URL
97
String JavaDoc text = null;
98         try {
99             if (uri != null) {
100                 text = uri;
101                 context.runScript(uri, output, isExport(), isInherit());
102             }
103             else {
104                 text = file.toString();
105                 context.runScript(file, output, isExport(), isInherit());
106             }
107         }
108         catch (JellyException e) {
109             throw new JellyTagException("could not include jelly script: " + text + ". Reason: " + e, e);
110         }
111     }
112
113     // Properties
114
//-------------------------------------------------------------------------
115
/** Sets the URI (relative URI or absolute URL) for the script to evaluate. */
116     public void setUri(String JavaDoc uri) {
117         this.uri = uri;
118     }
119 }
120
Popular Tags