%line | %branch | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
org.apache.commons.jelly.tags.fmt.TimeZoneTag |
|
|
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 | package org.apache.commons.jelly.tags.fmt; |
|
17 | ||
18 | import org.apache.commons.jelly.JellyContext; |
|
19 | import org.apache.commons.jelly.JellyTagException; |
|
20 | import org.apache.commons.jelly.XMLOutput; |
|
21 | import org.apache.commons.jelly.Tag; |
|
22 | import org.apache.commons.jelly.TagSupport; |
|
23 | import org.apache.commons.jelly.expression.Expression; |
|
24 | import java.util.Enumeration; |
|
25 | import java.util.Locale; |
|
26 | import java.util.ResourceBundle; |
|
27 | import java.util.MissingResourceException; |
|
28 | import java.util.TimeZone; |
|
29 | ||
30 | /** |
|
31 | * Support for tag handlers for <timeZone>, the time zone loading |
|
32 | * tag in JSTL. |
|
33 | * |
|
34 | * @author <a href="mailto:willievu@yahoo.com">Willie Vu</a> |
|
35 | * @version $Revision: 1.5 $ |
|
36 | * |
|
37 | * @task decide how to implement setResponseLocale |
|
38 | */ |
|
39 | 0 | public class TimeZoneTag extends TagSupport { |
40 | ||
41 | private TimeZone timeZone; |
|
42 | private Expression value; // 'value' attribute |
|
43 | ||
44 | ||
45 | //********************************************************************* |
|
46 | // Constructor and initialization |
|
47 | ||
48 | 0 | public TimeZoneTag() { |
49 | 0 | } |
50 | ||
51 | //********************************************************************* |
|
52 | // Collaboration with subtags |
|
53 | ||
54 | public TimeZone getTimeZone() { |
|
55 | 0 | return timeZone; |
56 | } |
|
57 | ||
58 | ||
59 | //********************************************************************* |
|
60 | // Tag logic |
|
61 | ||
62 | /** |
|
63 | * Evaluates this tag after all the tags properties have been initialized. |
|
64 | * |
|
65 | */ |
|
66 | public void doTag(XMLOutput output) throws JellyTagException { |
|
67 | 0 | Object valueInput = null; |
68 | 0 | if (this.value != null) { |
69 | 0 | valueInput = this.value.evaluate(context); |
70 | } |
|
71 | ||
72 | 0 | if (valueInput == null) { |
73 | 0 | timeZone = TimeZone.getTimeZone("GMT"); |
74 | } |
|
75 | 0 | else if (valueInput instanceof String) { |
76 | 0 | if (((String) valueInput).trim().equals("")) { |
77 | 0 | timeZone = TimeZone.getTimeZone("GMT"); |
78 | } else { |
|
79 | 0 | timeZone = TimeZone.getTimeZone((String) valueInput); |
80 | } |
|
81 | } else { |
|
82 | 0 | timeZone = (TimeZone) valueInput; |
83 | } |
|
84 | ||
85 | 0 | invokeBody(output); |
86 | 0 | } |
87 | ||
88 | ||
89 | //********************************************************************* |
|
90 | // Package-scoped utility methods |
|
91 | ||
92 | /* |
|
93 | * Determines and returns the time zone to be used by the given action. |
|
94 | * |
|
95 | * <p> If the given action is nested inside a <timeZone> action, |
|
96 | * the time zone is taken from the enclosing <timeZone> action. |
|
97 | * |
|
98 | * <p> Otherwise, the time zone configuration setting |
|
99 | * <tt>javax.servlet.jsp.jstl.core.Config.FMT_TIME_ZONE</tt> |
|
100 | * is used. |
|
101 | * |
|
102 | * @param jc the page containing the action for which the |
|
103 | * time zone needs to be determined |
|
104 | * @param fromTag the action for which the time zone needs to be |
|
105 | * determined |
|
106 | * |
|
107 | * @return the time zone, or <tt>null</tt> if the given action is not |
|
108 | * nested inside a <timeZone> action and no time zone configuration |
|
109 | * setting exists |
|
110 | */ |
|
111 | static TimeZone getTimeZone(JellyContext jc, Tag fromTag) { |
|
112 | 0 | TimeZone tz = null; |
113 | ||
114 | 0 | Tag t = findAncestorWithClass(fromTag, TimeZoneTag.class); |
115 | 0 | if (t != null) { |
116 | // use time zone from parent <timeZone> tag |
|
117 | 0 | TimeZoneTag parent = (TimeZoneTag) t; |
118 | 0 | tz = parent.getTimeZone(); |
119 | } else { |
|
120 | // get time zone from configuration setting |
|
121 | 0 | Object obj = jc.getVariable(Config.FMT_TIME_ZONE); |
122 | 0 | if (obj != null) { |
123 | 0 | if (obj instanceof TimeZone) { |
124 | 0 | tz = (TimeZone) obj; |
125 | } else { |
|
126 | 0 | tz = TimeZone.getTimeZone((String) obj); |
127 | } |
|
128 | } |
|
129 | } |
|
130 | ||
131 | 0 | return tz; |
132 | } |
|
133 | ||
134 | /** Setter for property value. |
|
135 | * @param value New value of property value. |
|
136 | * |
|
137 | */ |
|
138 | public void setValue(Expression value) { |
|
139 | 0 | this.value = value; |
140 | 0 | } |
141 | } |
This report is generated by jcoverage, Maven and Maven JCoverage Plugin. |