You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by di...@apache.org on 2001/09/08 13:45:50 UTC
cvs commit: xml-cocoon2/xdocs i18n-transformer.xml
dims 01/09/08 04:45:50
Modified: . build.xml
src/org/apache/cocoon Cocoon.java
src/org/apache/cocoon/transformation I18nTransformer.java
xdocs i18n-transformer.xml
Log:
- Patch for I18nTransformer from Enke Michael <Mi...@wincor-nixdorf.com>
- Patch for Copy sample java classes for Parent Component Manager from "Leo Sutic" <le...@inspireinfrastructure.com>
- Patch for logging active requests from Marcus Crafter <cr...@fztig938.bank.dresdner.net>
Revision Changes Path
1.58 +1 -0 xml-cocoon2/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/build.xml,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -r1.57 -r1.58
--- build.xml 2001/09/06 20:56:21 1.57
+++ build.xml 2001/09/08 11:45:49 1.58
@@ -438,6 +438,7 @@
<mkdir dir="${build.war}/WEB-INF/classes"/>
<copy todir="${build.war}/WEB-INF/classes" filtering="off">
<fileset dir="${build.dest}" includes="org/apache/cocoon/samples/**"/>
+ <fileset dir="${build.src}" includes="org/apache/cocoon/samples/**"/>
</copy>
<copy todir="${build.war}" filtering="on">
1.25 +104 -64 xml-cocoon2/src/org/apache/cocoon/Cocoon.java
Index: Cocoon.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/Cocoon.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- Cocoon.java 2001/09/04 12:13:37 1.24
+++ Cocoon.java 2001/09/08 11:45:49 1.25
@@ -57,7 +57,7 @@
* @author <a href="mailto:fumagalli@exoffice.com">Pierpaolo Fumagalli</a> (Apache Software Foundation, Exoffice Technologies)
* @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
* @author <a href="mailto:leo.sutic@inspireinfrastructure.com">Leo Sutic</a>
- * @version CVS $Revision: 1.24 $ $Date: 2001/09/04 12:13:37 $
+ * @version CVS $Revision: 1.25 $ $Date: 2001/09/08 11:45:49 $
*/
public class Cocoon
extends AbstractLoggable
@@ -109,6 +109,12 @@
/** flag for disposed or not */
private boolean disposed = false;
+ /** active request count */
+ private static int activeRequestCount = 0;
+
+ /** maximum request count */
+ private static int maxRequestCount = 0;
+
/** Create a new <code>Cocoon</code> instance. */
public Cocoon() throws ConfigurationException {
// Set the system properties needed by Xalan2.
@@ -389,71 +395,71 @@
protected void debug(Environment environment,
StreamPipeline pipeline,
EventPipeline eventPipeline) {
- if (this.getLogger().isDebugEnabled() == true) {
- String lineSeparator = System.getProperty("line.separator");
- Map objectModel = environment.getObjectModel();
- Request request = (Request) objectModel.get(Constants.REQUEST_OBJECT);
- Session session = request.getSession(false);
- StringBuffer msg = new StringBuffer();
- msg.append("DEBUGGING INFORMATION:").append(lineSeparator);
- if (pipeline != null && eventPipeline != null) {
- msg.append("INTERNAL ");
+ String lineSeparator = System.getProperty("line.separator");
+ Map objectModel = environment.getObjectModel();
+ Request request = (Request) objectModel.get(Constants.REQUEST_OBJECT);
+ Session session = request.getSession(false);
+ StringBuffer msg = new StringBuffer();
+ msg.append("DEBUGGING INFORMATION:").append(lineSeparator);
+ if (pipeline != null && eventPipeline != null) {
+ msg.append("INTERNAL ");
+ }
+ msg.append("REQUEST: ").append(request.getRequestURI()).append(lineSeparator).append(lineSeparator);
+ msg.append("CONTEXT PATH: ").append(request.getContextPath()).append(lineSeparator);
+ msg.append("SERVLET PATH: ").append(request.getServletPath()).append(lineSeparator);
+ msg.append("PATH INFO: ").append(request.getPathInfo()).append(lineSeparator).append(lineSeparator);
+
+ msg.append("REMOTE HOST: ").append(request.getRemoteHost()).append(lineSeparator);
+ msg.append("REMOTE ADDRESS: ").append(request.getRemoteAddr()).append(lineSeparator);
+ msg.append("REMOTE USER: ").append(request.getRemoteUser()).append(lineSeparator);
+ msg.append("REQUEST SESSION ID: ").append(request.getRequestedSessionId()).append(lineSeparator);
+ msg.append("REQUEST PREFERRED LOCALE: ").append(request.getLocale().toString()).append(lineSeparator);
+ msg.append("SERVER HOST: ").append(request.getServerName()).append(lineSeparator);
+ msg.append("SERVER PORT: ").append(request.getServerPort()).append(lineSeparator).append(lineSeparator);
+
+ msg.append("METHOD: ").append(request.getMethod()).append(lineSeparator);
+ msg.append("CONTENT LENGTH: ").append(request.getContentLength()).append(lineSeparator);
+ msg.append("PROTOCOL: ").append(request.getProtocol()).append(lineSeparator);
+ msg.append("SCHEME: ").append(request.getScheme()).append(lineSeparator);
+ msg.append("AUTH TYPE: ").append(request.getAuthType()).append(lineSeparator).append(lineSeparator);
+ msg.append("CURRENT ACTIVE REQUESTS: ").append(activeRequestCount).append(lineSeparator);
+ msg.append("MAXIMUM ACTIVE REQUESTS: ").append(maxRequestCount).append(lineSeparator).append(lineSeparator);
+
+ // log all of the request parameters
+ Enumeration e = request.getParameterNames();
+
+ msg.append("REQUEST PARAMETERS:").append(lineSeparator).append(lineSeparator);
+
+ while (e.hasMoreElements()) {
+ String p = (String) e.nextElement();
+
+ msg.append("PARAM: '").append(p).append("' ")
+ .append("VALUES: '");
+ String[] params = request.getParameterValues(p);
+ for (int i = 0; i < params.length; i++) {
+ msg.append("["+params[i]+"]");
+ if (i != params.length-1)
+ msg.append(", ");
}
- msg.append("REQUEST: ").append(request.getRequestURI()).append(lineSeparator).append(lineSeparator);
- msg.append("CONTEXT PATH: ").append(request.getContextPath()).append(lineSeparator);
- msg.append("SERVLET PATH: ").append(request.getServletPath()).append(lineSeparator);
- msg.append("PATH INFO: ").append(request.getPathInfo()).append(lineSeparator).append(lineSeparator);
-
- msg.append("REMOTE HOST: ").append(request.getRemoteHost()).append(lineSeparator);
- msg.append("REMOTE ADDRESS: ").append(request.getRemoteAddr()).append(lineSeparator);
- msg.append("REMOTE USER: ").append(request.getRemoteUser()).append(lineSeparator);
- msg.append("REQUEST SESSION ID: ").append(request.getRequestedSessionId()).append(lineSeparator);
- msg.append("REQUEST PREFERRED LOCALE: ").append(request.getLocale().toString()).append(lineSeparator);
- msg.append("SERVER HOST: ").append(request.getServerName()).append(lineSeparator);
- msg.append("SERVER PORT: ").append(request.getServerPort()).append(lineSeparator).append(lineSeparator);
-
- msg.append("METHOD: ").append(request.getMethod()).append(lineSeparator);
- msg.append("CONTENT LENGTH: ").append(request.getContentLength()).append(lineSeparator);
- msg.append("PROTOCOL: ").append(request.getProtocol()).append(lineSeparator);
- msg.append("SCHEME: ").append(request.getScheme()).append(lineSeparator);
- msg.append("AUTH TYPE: ").append(request.getAuthType()).append(lineSeparator).append(lineSeparator);
+
+ msg.append("'").append(lineSeparator);
+ }
- // log all of the request parameters
- Enumeration e = request.getParameterNames();
+ msg.append(lineSeparator).append("SESSION ATTRIBUTES:").append(lineSeparator).append(lineSeparator);
- msg.append("REQUEST PARAMETERS:").append(lineSeparator).append(lineSeparator);
+ // log all of the session attributes
+ if (session != null) {
+ e = session.getAttributeNames();
while (e.hasMoreElements()) {
String p = (String) e.nextElement();
-
- msg.append("PARAM: '").append(p).append("' ")
- .append("VALUES: '");
- String[] params = request.getParameterValues(p);
- for (int i = 0; i < params.length; i++) {
- msg.append("["+params[i]+"]");
- if (i != params.length-1)
- msg.append(", ");
- }
-
- msg.append("'").append(lineSeparator);
- }
-
- msg.append(lineSeparator).append("SESSION ATTRIBUTES:").append(lineSeparator).append(lineSeparator);
- // log all of the session attributes
- if (session != null) {
- e = session.getAttributeNames();
-
- while (e.hasMoreElements()) {
- String p = (String) e.nextElement();
-
- msg.append("PARAM: '").append(p).append("' ")
- .append("VALUE: '").append(session.getAttribute(p)).append("'").append(lineSeparator);
- }
+ msg.append("PARAM: '").append(p).append("' ")
+ .append("VALUE: '").append(session.getAttribute(p)).append("'").append(lineSeparator);
}
-
- getLogger().debug(msg.toString());
}
+
+ getLogger().debug(msg.toString());
}
/**
@@ -462,9 +468,18 @@
public boolean process(Environment environment)
throws Exception {
if (disposed) throw new IllegalStateException("You cannot process a Disposed Cocoon engine.");
- this.debug(environment, null, null);
- return this.sitemapManager.invoke(this.componentManager, environment, "", this.sitemapFileName,
- this.checkSitemapReload, this.reloadSitemapAsynchron);
+
+ try {
+ if (this.getLogger().isDebugEnabled()) {
+ incRequestCount();
+ this.debug(environment, null, null);
+ }
+ return this.sitemapManager.invoke(this.componentManager, environment, "", this.sitemapFileName, this.checkSitemapReload, this.reloadSitemapAsynchron);
+ } finally {
+ if (this.getLogger().isDebugEnabled()) {
+ decRequestCount();
+ }
+ }
}
/**
@@ -474,10 +489,18 @@
public boolean process(Environment environment, StreamPipeline pipeline, EventPipeline eventPipeline)
throws Exception {
if (disposed) throw new IllegalStateException("You cannot process a Disposed Cocoon engine.");
- this.debug(environment, pipeline, eventPipeline);
- return this.sitemapManager.invoke(this.componentManager, environment, "", this.sitemapFileName,
- this.checkSitemapReload, this.reloadSitemapAsynchron,
- pipeline, eventPipeline);
+
+ try {
+ if (this.getLogger().isDebugEnabled()) {
+ incRequestCount();
+ this.debug(environment, pipeline, eventPipeline);
+ }
+ return this.sitemapManager.invoke(this.componentManager, environment, "", this.sitemapFileName, this.checkSitemapReload, this.reloadSitemapAsynchron, pipeline, eventPipeline);
+ } finally {
+ if (this.getLogger().isDebugEnabled()) {
+ decRequestCount();
+ }
+ }
}
/**
@@ -544,4 +567,21 @@
if (sourceHandler != null) this.componentManager.release((Component) sourceHandler);
}
}
+
+ /**
+ * Increment active request count for incoming requests, and save this
+ * result if it's the maximum.
+ */
+ private static synchronized void incRequestCount() {
+ if (++activeRequestCount > maxRequestCount)
+ maxRequestCount = activeRequestCount;
+ }
+
+ /**
+ * Decrement active request count.
+ */
+ private static synchronized void decRequestCount() {
+ --activeRequestCount;
+ }
+
}
1.19 +29 -1 xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer.java
Index: I18nTransformer.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- I18nTransformer.java 2001/08/30 11:44:45 1.18
+++ I18nTransformer.java 2001/09/08 11:45:49 1.19
@@ -245,7 +245,8 @@
/**
* <code>sub-type</code> attribute is used with <code>i18:number</code> to
- * indicate a sub-type: <code>currency</code> or <code>percent</code>.
+ * indicate a sub-type: <code>currency</code>, <code>int-currency</code>
+ * or <code>percent</code>.
*/
public static final String I18N_SUB_TYPE_ATTRIBUTE = "sub-type";
@@ -1051,6 +1052,8 @@
// src format
DecimalFormat from_fmt = (DecimalFormat)NumberFormat.getInstance(srcLoc);
+ int int_currency = 0;
+
// src-pattern overwrites locale format
if (srcPattern != null) {
from_fmt.applyPattern(srcPattern);
@@ -1058,10 +1061,28 @@
// to format
DecimalFormat to_fmt = null;
+ char dec = from_fmt.getDecimalFormatSymbols().getDecimalSeparator();
+ int decAt = 0;
+ boolean appendDec = false;
if (subType == null) {
to_fmt = (DecimalFormat)NumberFormat.getInstance(loc);
+ to_fmt.setMaximumFractionDigits(309);
+ for(int i=value.length()-1;
+ i>=0 && value.charAt(i)!=dec;i--,decAt++);
+ if(decAt < value.length()) to_fmt.setMinimumFractionDigits(decAt);
+ decAt = 0;
+ for(int i = 0; i < value.length() && value.charAt(i) != dec; i++) {
+ if(Character.isDigit(value.charAt(i))) decAt++;
+ }
+ to_fmt.setMinimumIntegerDigits(decAt);
+ if(value.charAt(value.length()-1) == dec) appendDec = true;
} else if (subType.equals("currency")) {
to_fmt = (DecimalFormat)NumberFormat.getCurrencyInstance(loc);
+ } else if (subType.equals("int-currency")) {
+ to_fmt = (DecimalFormat)NumberFormat.getCurrencyInstance(loc);
+ int_currency = 1;
+ for(int i=0;i<to_fmt.getMaximumFractionDigits();i++)
+ int_currency *= 10;
} else if (subType.equals("percent")) {
to_fmt = (DecimalFormat)NumberFormat.getPercentInstance(loc);
}
@@ -1076,6 +1097,12 @@
} else {
try {
numberValue = from_fmt.parse(value);
+ if(int_currency > 0)
+ numberValue = new Double(numberValue.doubleValue()/
+ int_currency);
+ else {
+
+ }
} catch (ParseException pe) {
throw new SAXException(this.getClass().getName()
+ "i18n:number - parsing error.", pe);
@@ -1084,6 +1111,7 @@
// we have all necessary data here: do formatting.
String result = to_fmt.format(numberValue);
+ if(appendDec) result = result + dec;
debug("i18n:number result: " + result);
return result;
}
1.8 +1 -0 xml-cocoon2/xdocs/i18n-transformer.xml
Index: i18n-transformer.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/xdocs/i18n-transformer.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- i18n-transformer.xml 2001/08/14 11:46:08 1.7
+++ i18n-transformer.xml 2001/09/08 11:45:49 1.8
@@ -189,6 +189,7 @@
</p>
<ul>
<li><code><![CDATA[<i18n:number sub-type="currency" value="1703.74" />]]></code> will result in localized presentation of the <code>value</code> - $1,703.74 for US locale.</li>
+ <li><code><![CDATA[<i18n:number sub-type="int-currency" value="170374" />]]></code> will result in localized presentation of the <code>value</code> - $1,703.74 for US locale, 170374 for a currency without subunit.</li>
<li><code><![CDATA[<i18n:number sub-type="percent" value="1.2" />]]></code> will result in localized percent <code>value</code> - %120 for most of the locales.</li>
</ul>
<p>
----------------------------------------------------------------------
In case of troubles, e-mail: webmaster@xml.apache.org
To unsubscribe, e-mail: cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org