You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by lg...@apache.org on 2005/09/05 13:46:25 UTC
svn commit: r278725 -
/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java
Author: lgawron
Date: Mon Sep 5 04:46:18 2005
New Revision: 278725
URL: http://svn.apache.org/viewcvs?rev=278725&view=rev
Log:
Unified locale handling for JXTG instructions
Modified:
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java
Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java?rev=278725&r1=278724&r2=278725&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java Mon Sep 5 04:46:18 2005
@@ -1496,7 +1496,28 @@
private static final String CURRENCY = "currency";
private static final String PERCENT = "percent";
- static class StartFormatNumber extends StartInstruction {
+ static class LocaleAwareInstruction extends StartInstruction {
+ private JXTExpression locale;
+
+ LocaleAwareInstruction(StartElement startElement, JXTExpression locale) {
+ super(startElement);
+ this.locale = locale;
+ }
+
+ protected Locale getLocale(JexlContext jexl, JXPathContext jxp) throws Exception {
+ Object locVal = getValue(this.locale, jexl, jxp);
+ if (locVal == null)
+ locVal = getStringValue(this.locale, jexl, jxp);
+
+ if (locVal != null) {
+ return locVal instanceof Locale ? (Locale) locVal : parseLocale(locVal.toString(), null);
+ } else {
+ return Locale.getDefault();
+ }
+ }
+ }
+
+ static class StartFormatNumber extends LocaleAwareInstruction {
JXTExpression value;
JXTExpression type;
@@ -1508,7 +1529,6 @@
JXTExpression minIntegerDigits;
JXTExpression maxFractionDigits;
JXTExpression minFractionDigits;
- JXTExpression locale;
JXTExpression var;
@@ -1536,7 +1556,7 @@
JXTExpression maxFractionDigits,
JXTExpression minFractionDigits,
JXTExpression locale) {
- super(raw);
+ super(raw, locale);
this.var = var;
this.value = value;
this.type = type;
@@ -1548,7 +1568,6 @@
this.minIntegerDigits = minIntegerDigits;
this.maxFractionDigits = maxFractionDigits;
this.minFractionDigits = minFractionDigits;
- this.locale = locale;
}
String format(JexlContext jexl, JXPathContext jxp) throws Exception {
@@ -1564,8 +1583,7 @@
Number minIntegerDigits = getNumberValue(this.minIntegerDigits, jexl, jxp);
Number maxFractionDigits = getNumberValue(this.maxFractionDigits, jexl, jxp);
Number minFractionDigits = getNumberValue(this.minFractionDigits, jexl, jxp);
- String localeStr = getStringValue(this.locale, jexl, jxp);
- Locale loc = localeStr != null ? parseLocale(localeStr, null) : Locale.getDefault();
+ Locale loc = getLocale(jexl,jxp);
String formatted;
if (loc != null) {
// Create formatter
@@ -1719,7 +1737,7 @@
// formatDate tag (borrows from Jakarta taglibs JSTL)
- static class StartFormatDate extends StartInstruction {
+ static class StartFormatDate extends LocaleAwareInstruction {
private static final String DATE = "date";
private static final String TIME = "time";
@@ -1743,7 +1761,7 @@
JXTExpression dateStyle,
JXTExpression timeStyle,
JXTExpression locale) {
- super(raw);
+ super(raw, locale);
this.var = var;
this.value = value;
this.type = type;
@@ -1751,14 +1769,12 @@
this.timeZone = timeZone;
this.dateStyle = dateStyle;
this.timeStyle = timeStyle;
- this.locale = locale;
}
String format(JexlContext jexl, JXPathContext jxp)
throws Exception {
String var = getStringValue(this.var, jexl, jxp);
Object value = getValue(this.value, jexl, jxp);
- Object locVal = getValue(this.locale, jexl, jxp);
String pattern = getStringValue(this.pattern, jexl, jxp);
Object timeZone = getValue(this.timeZone, jexl, jxp);
@@ -1769,12 +1785,7 @@
String formatted = null;
// Create formatter
- Locale locale;
- if (locVal != null) {
- locale = locVal instanceof Locale ? (Locale)locVal : parseLocale(locVal.toString(), null);
- } else {
- locale = Locale.getDefault();
- }
+ Locale locale = getLocale(jexl, jxp);
DateFormat formatter = createFormatter(locale, type, dateStyle, timeStyle);
// Apply pattern, if present
if (pattern != null) {