You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2008/09/30 15:22:16 UTC
svn commit: r700456 - in /labs/magma/trunk/foundation-i18n: ./ src/
src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/magma/ src/main/java/org/apache/magma/i18n/
src/main/java/org/apache/magma/i18n/formatter...
Author: simoneg
Date: Tue Sep 30 06:22:13 2008
New Revision: 700456
URL: http://svn.apache.org/viewvc?rev=700456&view=rev
Log:
LABS-178 : this package supports i18n of localizable strings
Added:
labs/magma/trunk/foundation-i18n/pom.xml
labs/magma/trunk/foundation-i18n/src/
labs/magma/trunk/foundation-i18n/src/main/
labs/magma/trunk/foundation-i18n/src/main/java/
labs/magma/trunk/foundation-i18n/src/main/java/org/
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/AddFormatterInPropertyInfo.aj
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/AddFormattingInHandler.aj
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/ContextMatrix.java
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/CurrentLocale.java
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Format.java
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Formatter.java
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Formatters.java
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/HookFormattersInViewUtils.aj
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/HookFormattingToHandler.aj
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/LocaleHolder.java
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/LocalizeLocalizableString.aj
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/NilFormatter.java
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/DateFormatter.java
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/DoubleFormatter.java
labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/EnumFormatter.java
labs/magma/trunk/foundation-i18n/src/main/resources/
labs/magma/trunk/foundation-i18n/src/main/resources/META-INF/
labs/magma/trunk/foundation-i18n/src/main/resources/META-INF/services/
labs/magma/trunk/foundation-i18n/src/main/resources/META-INF/services/org.apache.magma.i18n.Formatter
labs/magma/trunk/foundation-i18n/src/test/
labs/magma/trunk/foundation-i18n/src/test/java/
labs/magma/trunk/foundation-i18n/src/test/java/org/
labs/magma/trunk/foundation-i18n/src/test/java/org/apache/
labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/
labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/
labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/FormatOnBeanTest.java
labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/MatchingTest.java
labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/NormalizationTest.java
labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/formatters/
labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/formatters/DateFormatterFormatTest.java
labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/formatters/DoubleFormatterTest.java
labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/teststuff/
labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/teststuff/ExplicitlyFormattedBean.java
labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/teststuff/ImplicitlyFormattedBean.java
labs/magma/trunk/foundation-i18n/src/test/resources/
labs/magma/trunk/foundation-i18n/target-eclipse/
labs/magma/trunk/foundation-i18n/target-eclipse/classes/
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/conversion/
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/AddFormatterInPropertyInfo.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/AddFormattingInHandler.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/ContextMatrix.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/CurrentLocale.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/Format.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/Formatter.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/Formatters.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/HookFormattersInViewUtils.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/HookFormattingToHandler.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/LocaleHolder.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/LocalizeLocalizableString.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/NilFormatter.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/formatters/
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/formatters/DateFormatter.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/formatters/DoubleFormatter.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/formatters/EnumFormatter.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/FormatOnBeanTest.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/MatchingTest.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/NormalizationTest.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DateFormatterFormatTest$Check.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DateFormatterFormatTest.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DoubleFormatterTest$Check.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DoubleFormatterTest.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/teststuff/
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/teststuff/ExplicitlyFormattedBean.class (with props)
labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/teststuff/ImplicitlyFormattedBean.class (with props)
Added: labs/magma/trunk/foundation-i18n/pom.xml
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/pom.xml?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/pom.xml (added)
+++ labs/magma/trunk/foundation-i18n/pom.xml Tue Sep 30 06:22:13 2008
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <parent>
+ <artifactId>magma-parent</artifactId>
+ <groupId>org.apache.magma</groupId>
+ <version>1</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.magma</groupId>
+ <artifactId>foundation-i18n</artifactId>
+ <name>Magma Foundation Internationalization</name>
+ <version>0.0.1-SNAPSHOT</version>
+ <description>Offers internationalization aspects and locale aware converters</description>
+ <packaging>magma</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.magma.tools</groupId>
+ <artifactId>maven-magma-plugin</artifactId>
+ <extensions>true</extensions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.magma</groupId>
+ <artifactId>foundation-basics</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.magma</groupId>
+ <artifactId>foundation-conversion</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.magma</groupId>
+ <artifactId>foundation-beans-view</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/AddFormatterInPropertyInfo.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/AddFormatterInPropertyInfo.aj?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/AddFormatterInPropertyInfo.aj (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/AddFormatterInPropertyInfo.aj Tue Sep 30 06:22:13 2008
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.magma.i18n;
+
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Method;
+import org.apache.magma.conversion.AddConverterInPropertyInfo;
+
+import org.apache.magma.beans.PropertyInfo;
+
+public aspect AddFormatterInPropertyInfo {
+
+ declare precedence : AddFormatterInPropertyInfo, AddConverterInPropertyInfo;
+
+ private Formatter PropertyInfo.formatter = null;
+
+ public Formatter PropertyInfo.getFormatter() {
+ return this.formatter;
+ }
+
+ after(PropertyInfo info, PropertyDescriptor desc) :
+ execution(* PropertyInfo.init(PropertyDescriptor, Class)) && target(info) && args(desc,..) {
+ if (info.getType() == null) return;
+
+ Method readMethod = desc.getReadMethod();
+ if (readMethod == null) return;
+ Format annotation = readMethod.getAnnotation(Format.class);
+ Formatter formatter = null;
+ if (annotation != null) {
+ formatter = Formatters.getFormatterFor(annotation, info.getType());
+ } else {
+ formatter = Formatters.getFormatterFor(info.getType());
+ }
+ if (formatter != null) {
+ info.formatter = formatter;
+ }
+
+ if (info.formatter != null) {
+ info.alterMaximumStringSize(info.formatter.getMaximumStringSize());
+ }
+ }
+
+ String around(PropertyInfo info, Object value) :
+ execution(String PropertyInfo.toUser(Object)) &&
+ this(info) && args(value) {
+ if (info.formatter != null) {
+ return info.formatter.toString(value);
+ }
+ return proceed(info, value);
+ }
+
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/AddFormattingInHandler.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/AddFormattingInHandler.aj?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/AddFormattingInHandler.aj (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/AddFormattingInHandler.aj Tue Sep 30 06:22:13 2008
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.magma.i18n;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.magma.basics.MagmaException;
+import org.apache.magma.beans.BeanHandler;
+import org.apache.magma.beans.PropertyInfo;
+import org.apache.magma.conversion.ConversionException;
+
+public privileged aspect AddFormattingInHandler {
+
+ private Map<String,String> BeanHandler.formattedValues = new HashMap<String,String>();
+ private Set<String> BeanHandler.formattedExplicitlySet = new HashSet<String>();
+
+ public void BeanHandler.setFormattedStringValue(String field, String value) {
+ PropertyInfo property = data.getProperty(field);
+ if (property == null) throw new MagmaException("Cannot find a property named {0} in class {1}", field, bean.getClass().getName());
+ if (property.getFormatter() == null) {
+ this.setStringValue(field, value);
+ return;
+ }
+ if (!property.isWriteable()) throw new MagmaException("Property {0} is read only in class {1}", field, bean.getClass().getName());
+ formattedExplicitlySet.add(field);
+ formattedValues.put(field, value);
+ }
+
+ public void BeanHandler.setFormattedStringValues(Map<String, String> values) {
+ for (Map.Entry<String, String> entry : values.entrySet()) {
+ setFormattedStringValue(entry.getKey(), entry.getValue());
+ }
+ }
+
+ public String BeanHandler.getFormattedStringValue(String field) {
+ PropertyInfo property = data.getProperty(field);
+ if (property == null) throw new MagmaException("Cannot find a proprty named {0} in class {1}", field, bean.getClass().getName());
+ if (property.getFormatter() == null) {
+ return this.getStringValue(field);
+ }
+ if (!property.isReadable()) throw new MagmaException("Property {0} is not readable in class {1}", field, bean.getClass().getName());
+ return formattedValues.get(field);
+ }
+
+ public void BeanHandler.rollbackFormattedStringValues() {
+ this.formattedValues.clear();
+ Set<String> names = this.data.getPropertyNames();
+ for (String name : names) {
+ PropertyInfo property = this.data.getProperty(name);
+ Object val = this.values.get(name);
+ if (val != null) {
+ Formatter form = property.getFormatter();
+ if (form != null) {
+ this.formattedValues.put(name, form.toString(val));
+ } else {
+ this.formattedValues.put(name, this.getStringValue(name));
+ }
+ } else {
+ this.formattedValues.put(name, "");
+ }
+ }
+ }
+
+ public void BeanHandler.commitFormattedStringValues() {
+ ConversionException exc = null;
+ for (String name : formattedExplicitlySet) {
+ PropertyInfo property = data.getProperty(name);
+ String val = formattedValues.get(name);
+ if (!property.isWriteable()) continue;
+ Formatter form = property.getFormatter();
+ if (form != null) {
+ try {
+ setValue(name, form.fromString(val));
+ } catch (ConversionException e) {
+ e.setSubject(property);
+ if (exc == null) {
+ exc = e;
+ } else {
+ exc.join(e);
+ }
+ }
+ } else {
+ setStringValue(name, val);
+ }
+ }
+ if (exc != null) throw exc;
+ }
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/ContextMatrix.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/ContextMatrix.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/ContextMatrix.java (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/ContextMatrix.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,50 @@
+package org.apache.magma.i18n;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.apache.magma.basics.LocalizationContext;
+
+public class ContextMatrix {
+
+ private String[] parts;
+ private String value;
+
+ public ContextMatrix(String key, String value) {
+ StringTokenizer stok = new StringTokenizer(key, ".");
+ List<String> parts = new ArrayList<String>();
+ while (stok.hasMoreElements()) {
+ parts.add(stok.nextToken());
+ }
+ this.parts = parts.toArray(new String[parts.size()]);
+ this.value = value;
+ }
+
+ public String getMainDiscriminator() {
+ return parts[parts.length - 1];
+ }
+
+ public int getScore(LocalizationContext mc) {
+ //int maxscore = (mc.size() * (mc.size() + 1)) / 2;
+ int total = 0;
+ int upto = 0;
+ int pos = 0;
+ for (String string : mc) {
+ pos++;
+ if (parts[upto].equals(string)) {
+ upto++;
+ total += pos;
+ if (upto == parts.length) return total;
+ }
+ }
+ return 0;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/CurrentLocale.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/CurrentLocale.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/CurrentLocale.java (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/CurrentLocale.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,48 @@
+package org.apache.magma.i18n;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.magma.basics.LocalizableString;
+import org.apache.magma.basics.LocalizationContext;
+
+
+public class CurrentLocale {
+
+ private static Map<Locale, LocaleHolder> holders = new HashMap<Locale, LocaleHolder>();
+
+ private static ThreadLocal<LocaleHolder> current = new ThreadLocal<LocaleHolder>();
+
+ public static void setLocale(Locale locale) {
+ LocaleHolder holder = holders.get(locale);
+ if (holder == null) {
+ synchronized (holders) {
+ holder = holders.get(locale);
+ if (holder == null) {
+ holder = new LocaleHolder(locale);
+ // do not cache while in developement
+ if (!System.getProperty("magma.env", "none").equals("devel")) {
+ holders.put(locale, holder);
+ }
+ }
+ }
+ }
+ current.set(holder);
+ }
+
+ public static String convert(String string) {
+ LocaleHolder holder = current.get();
+ if (holder == null) return string;
+ return holder.getMessage(LocalizationContext.current(), string);
+ }
+
+ public static Locale getLocale() {
+ LocaleHolder holder = current.get();
+ if (holder == null) {
+ return Locale.getDefault();
+ }
+ return holder.getLocale();
+ }
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Format.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Format.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Format.java (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Format.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,15 @@
+package org.apache.magma.i18n;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Format {
+
+ public Class<? extends Formatter<?>> type() default NilFormatter.class;
+ public String format() default "default";
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Formatter.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Formatter.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Formatter.java (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Formatter.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,11 @@
+package org.apache.magma.i18n;
+
+import org.apache.magma.conversion.Converter;
+
+public interface Formatter<T> extends Converter<T> {
+
+ public void setFormat(String format);
+
+ public Formatter<T> buildDefault(Class<? extends T> clazz);
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Formatters.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Formatters.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Formatters.java (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/Formatters.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,42 @@
+package org.apache.magma.i18n;
+
+import java.util.ServiceLoader;
+
+import org.apache.commons.beanutils.MethodUtils;
+import org.apache.magma.basics.utils.AnnotationToInstance;
+
+public class Formatters {
+
+ public static Formatter getFormatterFor(Format ann, Class<?> type) {
+ Class<? extends Formatter> formclass = ann.type();
+ Formatter ret = null;
+ if (formclass.equals(NilFormatter.class)) {
+ ret = getFormatterFor(type);
+ } else {
+ try {
+ ret = formclass.newInstance();
+ } catch (InstantiationException e) {
+ return null;
+ } catch (IllegalAccessException e) {
+ return null;
+ }
+ }
+ setupFormatter(ann, ret);
+ return ret;
+ }
+
+ public static void setupFormatter(Format annotation, Formatter ret) {
+ AnnotationToInstance.setup(annotation, ret);
+ }
+
+ public static <T> Formatter<T> getFormatterFor(Class<T> type) {
+ Class simpletype = MethodUtils.toNonPrimitiveClass(type);
+ ServiceLoader<Formatter> loader = ServiceLoader.load(Formatter.class);
+ for (Formatter formatter : loader) {
+ if (formatter.converts(simpletype)) return formatter.buildDefault(type);
+ }
+ return null;
+ }
+
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/HookFormattersInViewUtils.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/HookFormattersInViewUtils.aj?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/HookFormattersInViewUtils.aj (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/HookFormattersInViewUtils.aj Tue Sep 30 06:22:13 2008
@@ -0,0 +1,19 @@
+package org.apache.magma.i18n;
+
+import org.apache.magma.beans.MagmaBeanSupport;
+import org.apache.magma.beans.PropertyInfo;
+import org.apache.magma.view.tree.ViewUtils;
+
+public aspect HookFormattersInViewUtils {
+
+ String around(MagmaBeanSupport bean, PropertyInfo property, Object value) :
+ execution(public static String ViewUtils.getStringValue(MagmaBeanSupport,PropertyInfo,Object))
+ && args(bean, property, value) {
+ Formatter form = property.getFormatter();
+ if (form != null) {
+ return form.toString(value);
+ } else {
+ return proceed(bean, property, value);
+ }
+ }
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/HookFormattingToHandler.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/HookFormattingToHandler.aj?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/HookFormattingToHandler.aj (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/HookFormattingToHandler.aj Tue Sep 30 06:22:13 2008
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.magma.i18n;
+
+import org.apache.magma.beans.BeanHandler;
+import org.apache.magma.conversion.HookConversionToHandler;
+
+public aspect HookFormattingToHandler {
+
+ declare precedence : HookFormattingToHandler, HookConversionToHandler;
+
+ after(BeanHandler handler) : execution(public void BeanHandler.rollback()) && this(handler) {
+ handler.rollbackFormattedStringValues();
+ }
+
+ before(BeanHandler handler) : execution(public void BeanHandler.commit()) && this(handler) {
+ handler.commitFormattedStringValues();
+ }
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/LocaleHolder.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/LocaleHolder.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/LocaleHolder.java (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/LocaleHolder.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,133 @@
+package org.apache.magma.i18n;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.magma.basics.LocalizationContext;
+import org.apache.magma.settings.SettingsHolder;
+
+public class LocaleHolder {
+
+ private Locale locale;
+ private SettingsHolder messages = new SettingsHolder();
+
+ private Map<String, List<ContextMatrix>> firstLookup = new HashMap<String, List<ContextMatrix>>();
+
+ public LocaleHolder(Locale locale) {
+ this.locale = locale;
+ initMessages();
+ buildMatrix();
+ }
+
+ private void initMessages() {
+ messages.initing();
+ if (messages.isInited()) return;
+
+ String language = locale.getLanguage();
+ String country = locale.getCountry();
+ String variant = locale.getVariant();
+
+ List<Locale> locales = new ArrayList<Locale>(4);
+ if (variant.length() > 0) {
+ locales.add(locale);
+ }
+ if (country.length() > 0) {
+ locales.add((locales.size() == 0) ?
+ locale : new Locale(language, country, ""));
+ }
+ if (language.length() > 0) {
+ locales.add((locales.size() == 0) ?
+ locale : new Locale(language, "", ""));
+ }
+ locales.add(Locale.ROOT);
+
+ Collections.reverse(locales);
+
+ load("META-INF/messages.default.", locales);
+ load("META-INF/messages.", locales);
+
+ for (Locale locale : locales) {
+ messages.overrideWith(new File("messages." + locale.toString().toLowerCase()));
+ }
+ messages.inited();
+ }
+
+ private void load(String base, List<Locale> locales) {
+ for (Locale locale : locales) {
+ try {
+ String url = base + locale.toString().toLowerCase() + ".properties";
+ url = url.replaceAll("\\.\\.", ".");
+ Enumeration<URL> resources = getClass().getClassLoader().getResources(url);
+ while (resources.hasMoreElements()) {
+ messages.overrideWith(resources.nextElement());
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void buildMatrix() {
+ Map<String, String> all = messages.getAll();
+ for (Map.Entry<String, String> entry : all.entrySet()) {
+ ContextMatrix cm = new ContextMatrix(entry.getKey(), entry.getValue());
+ String discriminator = cm.getMainDiscriminator();
+ List<ContextMatrix> list = firstLookup.get(discriminator);
+ if (list == null) {
+ list = new ArrayList<ContextMatrix>();
+ firstLookup.put(discriminator, list);
+ }
+ list.add(cm);
+ }
+ }
+
+
+ public String getMessage(LocalizationContext ct, String original) {
+ String deh = normalize(original);
+ List<ContextMatrix> list = firstLookup.get(deh);
+ if (list == null || list.size() == 0) return original;
+ ct.push(deh);
+ int topscore = 0;
+ ContextMatrix winner = null;
+ for (ContextMatrix cm : list) {
+ int score = cm.getScore(ct);
+ if (score > topscore) {
+ topscore = score;
+ winner = cm;
+ }
+ }
+ ct.pop();
+ if (winner == null) return original;
+ return winner.getValue();
+ }
+
+ public static String normalize(String original) {
+ StringBuffer sb = new StringBuffer(original.toLowerCase());
+ if (sb.length() > 30) {
+ int add = sb.length() - 30;
+ sb.delete(30, sb.length() - 1);
+ sb.append('+');
+ sb.append(Integer.toString(add));
+ }
+ for (int i = 0; i < sb.length(); i++) {
+ if (!Character.isJavaIdentifierPart(sb.charAt(i))) {
+ sb.setCharAt(i, '_');
+ }
+ }
+ return sb.toString();
+ }
+
+ public Locale getLocale() {
+ return locale;
+ }
+
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/LocalizeLocalizableString.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/LocalizeLocalizableString.aj?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/LocalizeLocalizableString.aj (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/LocalizeLocalizableString.aj Tue Sep 30 06:22:13 2008
@@ -0,0 +1,16 @@
+package org.apache.magma.i18n;
+
+import java.text.MessageFormat;
+import org.apache.magma.basics.LocalizableString;
+
+public aspect LocalizeLocalizableString {
+
+ String around(LocalizableString ls) : execution(String LocalizableString.toString()) && this(ls) {
+ String message = ls.getMessage();
+ message = CurrentLocale.convert(message);
+ Object[] args = ls.getArgs();
+ if (args == null || args.length == 0) return message;
+ return MessageFormat.format(message, args);
+ }
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/NilFormatter.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/NilFormatter.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/NilFormatter.java (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/NilFormatter.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,34 @@
+package org.apache.magma.i18n;
+
+import org.apache.magma.conversion.Converter;
+
+public class NilFormatter implements Formatter<Object>{
+
+ public Formatter<Object> buildDefault(Class<? extends Object> clazz) {
+ return null;
+ }
+
+ public void setFormat(String format) {
+ }
+
+ public Converter<Object> build(Class<? extends Object> clazz) {
+ return null;
+ }
+
+ public boolean converts(Class<?> clazz) {
+ return false;
+ }
+
+ public Object fromString(String value) {
+ return null;
+ }
+
+ public int getMaximumStringSize() {
+ return 0;
+ }
+
+ public String toString(Object value) {
+ return null;
+ }
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/DateFormatter.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/DateFormatter.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/DateFormatter.java (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/DateFormatter.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,134 @@
+package org.apache.magma.i18n.formatters;
+
+import org.apache.magma.basics.LocalizableString;
+import org.apache.magma.basics.MagmaException;
+import org.apache.magma.conversion.ConversionException;
+import org.apache.magma.conversion.DateConverter;
+import org.apache.magma.i18n.CurrentLocale;
+import org.apache.magma.i18n.Formatter;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+public class DateFormatter extends DateConverter implements Formatter<Date> {
+
+ private String customFormat = "default";
+
+ // For format values, -1 means no display, -2 means not parsed
+ private int dateFormat = -1;
+ private int timeFormat = -1;
+
+ public String toString(Date value) {
+ if (value == null) return "";
+ DateFormat formatter = getFormatter();
+ return formatter.format(value);
+ }
+
+ @Override
+ public Date fromString(String value) {
+ if (value == null || value.length() == 0) return null;
+ DateFormat formatter = getFormatter();
+ formatter.setLenient(false);
+ try {
+ return formatter.parse(value);
+ } catch (ParseException e) {
+ throw new ConversionException(parsingError, e);
+ }
+ }
+
+ protected DateFormat getFormatter() {
+ Locale locale = CurrentLocale.getLocale();
+ if (customFormat != null) {
+ if (customFormat.equals("default")) {
+ String myformat = new LocalizableString("date_format").toString();
+ if (myformat.toString().endsWith("date_format")) {
+ return DateFormat.getDateInstance(DateFormat.SHORT, locale);
+ } else {
+ return new SimpleDateFormat(myformat, locale);
+ }
+ } else {
+ return new SimpleDateFormat(customFormat, locale);
+ }
+ } else {
+ if (timeFormat >= 0 && dateFormat >= 0) {
+ return DateFormat.getDateTimeInstance(dateFormat, timeFormat, locale);
+ } else if (dateFormat >= 0) {
+ return DateFormat.getDateInstance(dateFormat, locale);
+ } else if (timeFormat >= 0) {
+ return DateFormat.getTimeInstance(timeFormat, locale);
+ } else {
+ throw new MagmaException("Date formatter has inconsistent configuration");
+ }
+ }
+ }
+
+ public void setFormat(String format) {
+ if (format.equals("default")) {
+ this.customFormat = "default";
+ return;
+ }
+ this.customFormat = null;
+ this.dateFormat = checkForFormat(format);
+ if (dateFormat != -2) {
+ if (format.indexOf(',') != -1) {
+ format = format.substring(format.indexOf(',') + 1);
+ } else {
+ return;
+ }
+ }
+ this.timeFormat = checkForFormat(format);
+ if (timeFormat != -2) {
+ if (format.indexOf(',') != -1) {
+ format = format.substring(format.indexOf(',') + 1);
+ } else {
+ return;
+ }
+ }
+ if (this.timeFormat < 0 && this.dateFormat < 0) {
+ try {
+ new SimpleDateFormat(format);
+ } catch (IllegalArgumentException e) {
+ throw new MagmaException(e, "The given pattern {0} is not a valid one, see docs for DateFormatter for more infos", format);
+ }
+ this.customFormat = format;
+ }
+ }
+
+ /**
+ * @return -1 for explicit none, -2 for unparsable, one of default formats otherwise
+ */
+ protected int checkForFormat(String format) {
+ format = format.toLowerCase();
+ if (format.startsWith("none") || format.startsWith(",")) return -1;
+ if (format.startsWith("short")) return DateFormat.SHORT;
+ if (format.startsWith("full")) return DateFormat.FULL;
+ if (format.startsWith("long")) return DateFormat.LONG;
+ if (format.startsWith("medium")) return DateFormat.MEDIUM;
+ return -2;
+ }
+
+ public String getCustomFormat() {
+ return customFormat;
+ }
+
+ public int getDateFormat() {
+ return dateFormat;
+ }
+
+ public int getTimeFormat() {
+ return timeFormat;
+ }
+
+ public DateFormatter buildDefault(Class<? extends Date> clazz) {
+ return this;
+ }
+
+ @Override
+ public int getMaximumStringSize() {
+ return this.toString(new Date(1230764399999l)).length();
+ }
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/DoubleFormatter.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/DoubleFormatter.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/DoubleFormatter.java (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/DoubleFormatter.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,116 @@
+package org.apache.magma.i18n.formatters;
+
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Currency;
+import java.util.Locale;
+
+import org.apache.magma.basics.LocalizableString;
+import org.apache.magma.conversion.ConversionException;
+import org.apache.magma.conversion.DoubleConverter;
+import org.apache.magma.i18n.CurrentLocale;
+import org.apache.magma.i18n.Formatter;
+
+public class DoubleFormatter extends DoubleConverter implements Formatter<Double> {
+
+
+ private String myformat = "default";
+
+ public DoubleFormatter buildDefault(Class<? extends Double> clazz) {
+ DoubleFormatter ret = (DoubleFormatter)super.build(clazz);
+ ret.setFormat(myformat);
+ return ret;
+ }
+
+ public void setFormat(String format) {
+ myformat = format;
+ }
+
+ public String toString(Double value) {
+ if (value == null) return "";
+ NumberFormat formatter = getFormatter(getFormatterName());
+ if (formatter == null) return super.toString(value);
+ return formatter.format(value);
+ }
+
+ @Override
+ public Double fromString(String value) {
+ if (value == null || value.length() == 0) return onNative ? 0d : null;
+ String formattername = getFormatterName();
+ NumberFormat formatter = getFormatter(formattername);
+ if (formatter == null) return super.fromString(value);
+ try {
+ return formatter.parse(value).doubleValue();
+ } catch (ParseException e) {
+ // Try to clean it up and do a row parse, just in case of currencies
+ if (formattername.toLowerCase().startsWith("currency")) {
+ value = numberTrim(value);
+ if (value.length() > 0) {
+ formatter = getFormatter(null);
+ try {
+ return formatter.parse(value).doubleValue();
+ } catch (ParseException e1) {
+ throw new ConversionException(parsingError, e1);
+ }
+ }
+ }
+ throw new ConversionException(parsingError, e);
+ }
+ }
+
+ private String numberTrim(String value) {
+ value = value.trim();
+ while (value.length() > 0 &&
+ !Character.isDigit(value.charAt(0)) &&
+ value.charAt(0) != '-') value = value.substring(1);
+ while (value.length() > 0 && !Character.isDigit(value.charAt(value.length() - 1))) value = value.substring(0,value.length() - 1);
+ return value;
+ }
+
+ public String getFormatterName() {
+ String useformat = this.myformat;
+ if (this.myformat.toLowerCase().equals("default")) {
+ useformat = new LocalizableString("double_format").toString();
+ if (useformat.toString().endsWith("double_format")) {
+ return null;
+ }
+ }
+ return useformat;
+ }
+
+ public NumberFormat getFormatter(String useformat) {
+ Locale locale = CurrentLocale.getLocale();
+ if (useformat == null) {
+ return NumberFormat.getInstance(locale);
+ }
+ if (useformat.equalsIgnoreCase("scientific")) {
+ return null;
+ }
+ if (useformat.toLowerCase().startsWith("currency")) {
+ NumberFormat instance = NumberFormat.getCurrencyInstance(locale);
+ if (instance instanceof DecimalFormat) {
+ DecimalFormat df = (DecimalFormat) instance;
+ df.setCurrency(Currency.getInstance(useformat.substring(9).toUpperCase()));
+ }
+ return instance;
+ } else if (useformat.toLowerCase().startsWith("percent")) {
+ NumberFormat instance = NumberFormat.getPercentInstance(locale);
+ if (useformat.length() > 7) {
+ if (instance instanceof DecimalFormat) {
+ DecimalFormat df = (DecimalFormat) instance;
+ df.setMaximumFractionDigits(Integer.valueOf(useformat.substring(8)));
+ }
+ }
+ return instance;
+ } else {
+ NumberFormat instance = NumberFormat.getInstance(locale);
+ if (instance instanceof DecimalFormat) {
+ DecimalFormat df = (DecimalFormat) instance;
+ df.applyPattern(useformat);
+ }
+ return instance;
+ }
+ }
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/EnumFormatter.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/EnumFormatter.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/EnumFormatter.java (added)
+++ labs/magma/trunk/foundation-i18n/src/main/java/org/apache/magma/i18n/formatters/EnumFormatter.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,29 @@
+package org.apache.magma.i18n.formatters;
+
+import org.apache.magma.conversion.EnumConverter;
+import org.apache.magma.i18n.CurrentLocale;
+import org.apache.magma.i18n.Formatter;
+import org.apache.magma.i18n.LocaleHolder;
+
+public class EnumFormatter extends EnumConverter implements Formatter<Enum> {
+
+ public EnumFormatter() {
+
+ }
+
+ public EnumFormatter(Class<? extends Enum> clazz) {
+ super(clazz);
+ }
+
+ public EnumFormatter buildDefault(Class<? extends Enum> clazz) {
+ return new EnumFormatter(clazz);
+ }
+
+ public void setFormat(String format) {
+ }
+
+ public String toString(Enum value) {
+ return CurrentLocale.convert(super.toString(value));
+ }
+
+}
Added: labs/magma/trunk/foundation-i18n/src/main/resources/META-INF/services/org.apache.magma.i18n.Formatter
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/main/resources/META-INF/services/org.apache.magma.i18n.Formatter?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/main/resources/META-INF/services/org.apache.magma.i18n.Formatter (added)
+++ labs/magma/trunk/foundation-i18n/src/main/resources/META-INF/services/org.apache.magma.i18n.Formatter Tue Sep 30 06:22:13 2008
@@ -0,0 +1,17 @@
+#Licensed to the Apache Software Foundation (ASF) under one or more
+#contributor license agreements. See the NOTICE file distributed with
+#this work for additional information regarding copyright ownership.
+#The ASF licenses this file to You under the Apache License, Version 2.0
+#(the "License"); you may not use this file except in compliance with
+#the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+#Unless required by applicable law or agreed to in writing, software
+#distributed under the License is distributed on an "AS IS" BASIS,
+#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#See the License for the specific language governing permissions and
+#limitations under the License.
+org.apache.magma.i18n.formatters.DateFormatter
+org.apache.magma.i18n.formatters.DoubleFormatter
+org.apache.magma.i18n.formatters.EnumFormatter
Added: labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/FormatOnBeanTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/FormatOnBeanTest.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/FormatOnBeanTest.java (added)
+++ labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/FormatOnBeanTest.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,62 @@
+package org.apache.magma.i18n;
+
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+import org.apache.magma.beans.BeanData;
+import org.apache.magma.beans.BeanHandler;
+import org.apache.magma.beans.PropertyInfo;
+import org.apache.magma.i18n.formatters.DateFormatter;
+import org.apache.magma.i18n.teststuff.ExplicitlyFormattedBean;
+import org.apache.magma.i18n.teststuff.ImplicitlyFormattedBean;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+import com.sun.xml.internal.bind.v2.runtime.property.Property;
+
+public class FormatOnBeanTest {
+
+ @Test
+ public void implicitFormat() throws Exception {
+ ImplicitlyFormattedBean b = new ImplicitlyFormattedBean();
+
+ BeanData bd = b.beanData();
+ PropertyInfo pi = bd.getProperty("birthday");
+ assertNotNull(pi.getFormatter());
+ assertEquals(DateFormatter.class, pi.getFormatter().getClass());
+
+ CurrentLocale.setLocale(Locale.ITALIAN);
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ b.setBirthday(sdf.parse("1979-03-05"));
+
+
+ BeanHandler bh = b.handler();
+ String val = bh.getFormattedStringValue("birthday");
+ assertEquals("05/03/79", val);
+
+ assertEquals(8, pi.getFormatter().getMaximumStringSize());
+ }
+
+ @Test
+ public void explicitFormat() throws Exception {
+ ExplicitlyFormattedBean b = new ExplicitlyFormattedBean();
+
+ BeanData bd = b.beanData();
+ PropertyInfo pi = bd.getProperty("birthday");
+ assertNotNull(pi.getFormatter());
+ assertEquals(DateFormatter.class, pi.getFormatter().getClass());
+ assertEquals("HH:mm dd/MM/yyyy", ((DateFormatter)pi.getFormatter()).getCustomFormat());
+
+ CurrentLocale.setLocale(Locale.ITALIAN);
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ b.setBirthday(sdf.parse("1979-03-05"));
+
+
+ BeanHandler bh = b.handler();
+ String val = bh.getFormattedStringValue("birthday");
+ assertEquals("00:00 05/03/1979", val);
+
+ assertEquals(16, pi.getFormatter().getMaximumStringSize());
+ assertEquals(16, pi.getMaximumStringSize());
+ }
+}
Added: labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/MatchingTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/MatchingTest.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/MatchingTest.java (added)
+++ labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/MatchingTest.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,97 @@
+package org.apache.magma.i18n;
+
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+
+import org.apache.magma.basics.LocalizationContext;
+import org.junit.Test;
+import org.junit.experimental.theories.DataPoint;
+import org.junit.experimental.theories.DataPoints;
+
+public class MatchingTest {
+
+ @Test
+ public void simpleCompleteMatching() throws Exception {
+ LocalizationContext mc = new LocalizationContext();
+ mc.push(getClass());
+ mc.push("test");
+
+ ContextMatrix cm = new ContextMatrix(getClass().getSimpleName() + ".test", "test");
+ assertThat(cm.getMainDiscriminator(), equalTo("test"));
+
+ int score = cm.getScore(mc);
+ assertThat(score, equalTo(3));
+ }
+
+ @Test
+ public void simplePartialMatching() throws Exception {
+ LocalizationContext mc = new LocalizationContext();
+ mc.push(getClass());
+ mc.push("test");
+
+ ContextMatrix cm = new ContextMatrix("test", "test");
+ int score = cm.getScore(mc);
+ assertTrue("Expected a match", score > 0);
+ }
+
+ @Test
+ public void simpleNotMatching() throws Exception {
+ LocalizationContext mc = new LocalizationContext();
+ mc.push("test");
+
+ ContextMatrix cm = new ContextMatrix(getClass().getSimpleName() + ".test", "test");
+
+ int score = cm.getScore(mc);
+ assertThat(score, equalTo(0));
+ }
+
+ @Test
+ public void simpleJumpingMatch() throws Exception {
+ LocalizationContext mc = new LocalizationContext();
+ mc.push("testingthejump");
+ mc.push(getClass());
+ mc.push("test");
+
+ ContextMatrix cm = new ContextMatrix("testingthejump.test", "test");
+
+ int score = cm.getScore(mc);
+ assertTrue("Expected a match", score > 0);
+ }
+
+ @Test
+ public void betterMatch() throws Exception {
+ LocalizationContext mc = new LocalizationContext();
+ mc.push("testingthejump");
+ mc.push(getClass());
+ mc.push("test");
+
+ ContextMatrix cm1 = new ContextMatrix("testingthejump.test", "test");
+ int score1 = cm1.getScore(mc);
+ ContextMatrix cm2 = new ContextMatrix("test", "test");
+ int score2 = cm2.getScore(mc);
+ assertTrue(score1 + " is not > than " + score2, score1 > score2);
+ }
+
+ @Test
+ public void betterMatchAsPerBug184() throws Exception {
+ LocalizationContext mc = new LocalizationContext();
+ mc.push("CompoundHtmlProducer");
+ mc.push("BeanFormProducer");
+ mc.push("UserBean");
+ mc.push("BeanFormProducer");
+ mc.push("UserBean");
+ mc.push("field1");
+ mc.push("field1");
+ mc.push("field2");
+ mc.push("field2");
+ mc.push("field2");
+ mc.push("key");
+
+ ContextMatrix cm1 = new ContextMatrix("UserBean.field2", "key");
+ int score1 = cm1.getScore(mc);
+ ContextMatrix cm2 = new ContextMatrix("UserBean.field1", "key");
+ int score2 = cm2.getScore(mc);
+ assertTrue(score1 + " is not > than " + score2, score1 > score2);
+ }
+
+}
Added: labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/NormalizationTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/NormalizationTest.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/NormalizationTest.java (added)
+++ labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/NormalizationTest.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,29 @@
+package org.apache.magma.i18n;
+
+import org.junit.Test;
+import org.junit.experimental.theories.DataPoint;
+import org.junit.experimental.theories.Theories;
+import org.junit.experimental.theories.Theory;
+import org.junit.runner.RunWith;
+import static org.junit.Assert.*;
+
+@RunWith(Theories.class)
+public class NormalizationTest {
+
+ @DataPoint
+ public static String[]
+ SET1 = { "plain", "plain" },
+ SET2 = { "plain_admissible", "plain_admissible"},
+ SET3 = { "plain with space", "plain_with_space"},
+ SET4 = { "numb3r5", "numb3r5"},
+ SET5 = { "anything @#{0}.", "anything____0__"};
+
+ @Theory
+ public void normalization(String[] set) {
+ String orig = set[0];
+ String outcome = set[1];
+ String result = LocaleHolder.normalize(orig);
+ //System.out.println("'" + orig + "' should give '" + outcome + "' not '" + result + "'");
+ assertEquals(outcome, result);
+ }
+}
Added: labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/formatters/DateFormatterFormatTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/formatters/DateFormatterFormatTest.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/formatters/DateFormatterFormatTest.java (added)
+++ labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/formatters/DateFormatterFormatTest.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,44 @@
+package org.apache.magma.i18n.formatters;
+
+import org.junit.Ignore;
+import org.junit.experimental.theories.DataPoint;
+import org.junit.experimental.theories.Theories;
+import org.junit.experimental.theories.Theory;
+import org.junit.runner.RunWith;
+import static java.text.DateFormat.*;
+import static org.junit.Assert.*;
+
+@RunWith(Theories.class)
+public class DateFormatterFormatTest {
+
+ static class Check {
+ public String format;
+ public String custom;
+ public int dateFormat;
+ public int timeFormat;
+
+ public Check(String format, String custom, int dateFormat, int timeFormat) {
+ this.format = format;
+ this.custom = custom;
+ this.dateFormat = dateFormat;
+ this.timeFormat = timeFormat;
+ }
+ }
+
+ @DataPoint
+ public static Check
+ set1 = new Check("default", "default", -1, -1),
+ set2 = new Check("yyyy/MM/dd", "yyyy/MM/dd", -2, -2),
+ set3 = new Check("long", null, LONG, -1),
+ set4 = new Check("none,long", null, -1, LONG);
+
+ @Theory
+ public void formatText(Check check) {
+ DateFormatter df = new DateFormatter();
+ df.setFormat(check.format);
+ assertEquals(check.custom, df.getCustomFormat());
+ assertEquals(check.dateFormat, df.getDateFormat());
+ assertEquals(check.timeFormat, df.getTimeFormat());
+ }
+
+}
Added: labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/formatters/DoubleFormatterTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/formatters/DoubleFormatterTest.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/formatters/DoubleFormatterTest.java (added)
+++ labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/formatters/DoubleFormatterTest.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,90 @@
+package org.apache.magma.i18n.formatters;
+
+import java.util.Locale;
+
+import org.apache.magma.i18n.CurrentLocale;
+import org.junit.experimental.theories.DataPoint;
+import org.junit.experimental.theories.Theories;
+import org.junit.experimental.theories.Theory;
+import org.junit.runner.RunWith;
+import static org.junit.Assert.*;
+
+@RunWith(Theories.class)
+public class DoubleFormatterTest {
+
+ static class Check {
+ public double value;
+ public String format;
+ public String itstring;
+ public String usstring;
+
+ public boolean checkto = true;
+ public boolean checkfrom = true;
+
+ public Check(double value, String format, String itstring, String usstring) {
+ this.value = value;
+ this.format = format;
+ this.itstring = itstring;
+ this.usstring = usstring;
+ }
+
+ public Check(double value, String format, String itstring, String usstring, boolean checkto, boolean checkfrom) {
+ this.value = value;
+ this.format = format;
+ this.itstring = itstring;
+ this.usstring = usstring;
+ this.checkto = checkto;
+ this.checkfrom = checkfrom;
+ }
+
+
+
+ }
+
+ @DataPoint
+ public static Check
+ set1 = new Check(1d, "default", "1", "1"),
+ set2 = new Check(1.1d, "default", "1,1", "1.1"),
+ set3 = new Check(-1.05d, "default", "-1,05", "-1.05"),
+ set4 = new Check(100000, "default", "100.000", "100,000"),
+ set4b = new Check(100000, "default", "100000", "100000", false, true),
+ set4c = new Check(100000.001, "default", "100.000,001", "100,000.001"),
+ set4d = new Check(100000.001, "default", "100000,001", "100000.001", false, true),
+ set5 = new Check(110000000, "scientific", "1.1E8", "1.1E8"),
+ set5b = new Check(110000, "scientific", "110000.0", "110000.0"),
+ set5c = new Check(0.00000001, "scientific", "1.0E-8", "1.0E-8"),
+ set6 = new Check(0.5d, "percent", "50%", "50%"),
+ set7 = new Check(0.555d, "percent-2", "55,5%", "55.5%"),
+ set8 = new Check(100d, "currency-EUR", "EUR 100,00", "EUR100.00"),
+ set8b = new Check(100d, "currency-EUR", "100,00", "100.00", false, true),
+ set8c = new Check(100d, "currency-EUR", "100", "100", false, true),
+ set8d = new Check(100d, "currency-EUR", "+100 EUR", "+100E", false, true),
+ set8e = new Check(-100d, "currency-EUR", "E-100", "-100E", false, true),
+ set9 = new Check(100.10d, "currency-EUR", "EUR 100,10", "EUR100.10"),
+ set10 = new Check(100d, "##0.00", "100,00", "100.00"),
+ set11 = new Check(0.1d, "#00.00", "00,10", "00.10");
+
+ @Theory
+ public void doubleFormat(Check check) {
+ DoubleFormatter df = new DoubleFormatter();
+ df.setFormat(check.format);
+ CurrentLocale.setLocale(Locale.ITALIAN);
+ String itTo = check.checkto ? df.toString(check.value) : "";
+ double itFrom = check.checkfrom ? df.fromString(check.itstring) : 0d;
+ CurrentLocale.setLocale(Locale.US);
+ String usTo = check.checkto ? df.toString(check.value) : "";
+ double usFrom = check.checkfrom ? df.fromString(check.usstring) : 0d;
+
+ if (check.checkto) {
+ assertEquals(check.itstring, itTo);
+ assertEquals(check.usstring, usTo);
+ }
+ if (check.checkfrom) {
+ assertEquals(check.value, itFrom, 0.001d);
+ assertEquals(check.value, usFrom, 0.001d);
+ }
+ }
+
+
+
+}
Added: labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/teststuff/ExplicitlyFormattedBean.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/teststuff/ExplicitlyFormattedBean.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/teststuff/ExplicitlyFormattedBean.java (added)
+++ labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/teststuff/ExplicitlyFormattedBean.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,22 @@
+package org.apache.magma.i18n.teststuff;
+
+import java.util.Date;
+
+import org.apache.magma.beans.MagmaBean;
+import org.apache.magma.i18n.Format;
+
+@MagmaBean
+public class ExplicitlyFormattedBean {
+
+ private Date birthday;
+
+ @Format(format="HH:mm dd/MM/yyyy")
+ public Date getBirthday() {
+ return birthday;
+ }
+
+ public void setBirthday(Date birthday) {
+ this.birthday = birthday;
+ }
+
+}
Added: labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/teststuff/ImplicitlyFormattedBean.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/teststuff/ImplicitlyFormattedBean.java?rev=700456&view=auto
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/teststuff/ImplicitlyFormattedBean.java (added)
+++ labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/teststuff/ImplicitlyFormattedBean.java Tue Sep 30 06:22:13 2008
@@ -0,0 +1,22 @@
+package org.apache.magma.i18n.teststuff;
+
+import java.util.Date;
+
+import org.apache.magma.beans.MagmaBean;
+
+@MagmaBean
+public class ImplicitlyFormattedBean {
+
+ private Date birthday;
+
+ public Date getBirthday() {
+ return birthday;
+ }
+
+ public void setBirthday(Date birthday) {
+ this.birthday = birthday;
+ }
+
+
+
+}
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/AddFormatterInPropertyInfo.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/AddFormatterInPropertyInfo.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/AddFormatterInPropertyInfo.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/AddFormattingInHandler.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/AddFormattingInHandler.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/AddFormattingInHandler.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/ContextMatrix.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/ContextMatrix.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/ContextMatrix.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/CurrentLocale.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/CurrentLocale.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/CurrentLocale.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/Format.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/Format.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/Format.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/Formatter.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/Formatter.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/Formatter.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/Formatters.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/Formatters.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/Formatters.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/HookFormattersInViewUtils.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/HookFormattersInViewUtils.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/HookFormattersInViewUtils.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/HookFormattingToHandler.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/HookFormattingToHandler.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/HookFormattingToHandler.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/LocaleHolder.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/LocaleHolder.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/LocaleHolder.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/LocalizeLocalizableString.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/LocalizeLocalizableString.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/LocalizeLocalizableString.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/NilFormatter.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/NilFormatter.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/NilFormatter.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/formatters/DateFormatter.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/formatters/DateFormatter.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/formatters/DateFormatter.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/formatters/DoubleFormatter.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/formatters/DoubleFormatter.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/formatters/DoubleFormatter.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/formatters/EnumFormatter.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/formatters/EnumFormatter.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/classes/org/apache/magma/i18n/formatters/EnumFormatter.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/FormatOnBeanTest.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/FormatOnBeanTest.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/FormatOnBeanTest.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/MatchingTest.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/MatchingTest.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/MatchingTest.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/NormalizationTest.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/NormalizationTest.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/NormalizationTest.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DateFormatterFormatTest$Check.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DateFormatterFormatTest%24Check.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DateFormatterFormatTest$Check.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DateFormatterFormatTest.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DateFormatterFormatTest.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DateFormatterFormatTest.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DoubleFormatterTest$Check.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DoubleFormatterTest%24Check.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DoubleFormatterTest$Check.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DoubleFormatterTest.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DoubleFormatterTest.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/formatters/DoubleFormatterTest.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/teststuff/ExplicitlyFormattedBean.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/teststuff/ExplicitlyFormattedBean.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/teststuff/ExplicitlyFormattedBean.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/teststuff/ImplicitlyFormattedBean.class
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/teststuff/ImplicitlyFormattedBean.class?rev=700456&view=auto
==============================================================================
Binary file - no diff available.
Propchange: labs/magma/trunk/foundation-i18n/target-eclipse/test-classes/org/apache/magma/i18n/teststuff/ImplicitlyFormattedBean.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org