[Mondrian] RE: [Fwd: Eigenbase perforce change 11717 for review]
Julian Hyde
jhyde at pentaho.com
Mon Oct 13 08:15:19 EDT 2008
John,
I reviewed your changes. They look good.
I think the version number was incremented when I released a jar via the
maven repository underground, but I didn't to a formal release.
I'll do a release this week, and also update the maven repository.
There are a couple of issues that I never fixed because I wasn't making a
release:
http://issues.eigenbase.org/browse/RSG-2
http://issues.eigenbase.org/browse/RSG-3
Maybe I'll fix these too.
I will be making a new release of eigenbase-xom in the next month. It will
feature improved error reporting: each element will know the precise region
of the source code it came from. This will also potentially enable editors
such as the mondrian workbench to edit XML documents in-place, keeping
existing comments and formatting.
I will be introducing generics, so the source will no longer be JDK 1.4
compatible, although it will be easy to retroweave it into 1.4 class format.
Julian
> -----Original Message-----
> From: John V. Sichi [mailto:jsichi at gmail.com]
> Sent: Saturday, October 11, 2008 9:19 PM
> To: jhyde at sqlstream.com
> Subject: [Fwd: Eigenbase perforce change 11717 for review]
>
> Can you review my changes?
>
> If they are OK, then we can do another release, and propagate to
> Mondrian, Eigenbase, and wherever else these have infiltrated.
>
> The version in the buildfile said "1.2", but the last release on
> sf.net/projects/eigenbase is 1.1. I bumped it up to "1.3" anyway.
>
> JVS
>
> -------- Original Message --------
> Subject: Eigenbase perforce change 11717 for review
> Date: Sat, 11 Oct 2008 21:16:02 -0700
> From: John V. Sichi <jsichi at gmail.com>
> To: Julian Hyde <jhyde at users.sourceforge.net>, John V. Sichi
> <jsichi at gmail.com>, Stephan Zuercher <szuercher at lucidera.com>
>
> http://p4web.eigenbase.org/@md=d&c=6PU@//11717?ac=10
>
> Change 11717 by jvs at jvs.bagheera.eigenbase on 2008/10/11 21:15:11
>
> UTIL/RESGEN: fix RSG-4 (can't dynamically load
> resources class jars), and also replace
> thread-unsafe leaky
> HashMap with ThreadLocal
>
> Affected files ...
>
> ... //open/util/resgen/build.xml#12 edit
> ... //open/util/resgen/example/build.xml#5 edit
> ... //open/util/resgen/example/source/Birthday.java#3 edit
> ... //open/util/resgen/example/source/JarTest.java#1 add
> ... //open/util/resgen/lib/eigenbase-resgen.jar#10 edit
> ... //open/util/resgen/lib/eigenbase-xom.jar#9 edit
> ...
> //open/util/resgen/src/org/eigenbase/resgen/AbstractJavaGenera
> tor.java#3
> edit
> ...
> //open/util/resgen/src/org/eigenbase/resgen/JavaBaseGenerator.java#4
> edit
> ...
> //open/util/resgen/src/org/eigenbase/resgen/ShadowResourceBund
> le.java#5 edit
>
> Differences ...
>
> ==== //open/util/resgen/build.xml#12 (ktext) ====
>
> 2c2
> < // $Id: //open/util/resgen/build.xml#11 $
> ---
> > // $Id: //open/util/resgen/build.xml#12 $
> 34c34
> < <property name="version" value="1.2"/>
> ---
> > <property name="version" value="1.3"/>
> 117c117
> < source="1.4">
> ---
> > source="1.4" target="1.4">
> 133c133
> < source="1.4">
> ---
> > source="1.4" target="1.4">
>
> ==== //open/util/resgen/example/build.xml#5 (ktext) ====
>
> 2c2
> < // $Id: //open/util/resgen/example/build.xml#4 $
> ---
> > // $Id: //open/util/resgen/example/build.xml#5 $
> 33a34,39
> > <path id="jartest.classpath">
> > <pathelement location="../lib/eigenbase-xom.jar"/>
> > <pathelement location="../lib/eigenbase-resgen.jar"/>
> > <pathelement location="jartest"/>
> > </path>
> >
> 65a72
> > <fileset dir="jartest"/>
> 75a83,95
> > <mkdir dir="jartest"/>
> > <copy todir="jartest">
> > <fileset dir="classes" includes="JarTest.class"/>
> > </copy>
> > <jar jarfile="jartest/test.jar">
> > <fileset dir="classes">
> > <include name="**/*" />
> > <exclude name="JarTest.class" />
> > </fileset>
> > </jar>
> > <java classpathref="jartest.classpath"
> classname="JarTest" fork="true">
> > <arg value="file:jartest/test.jar"/>
> > </java>
>
> ==== //open/util/resgen/example/source/Birthday.java#3 (ktext) ====
>
> 2c2
> < // $Id: //open/util/resgen/example/source/Birthday.java#2 $
> ---
> > // $Id: //open/util/resgen/example/source/Birthday.java#3 $
> 37a38,42
> > runTest();
> > }
> >
> > public static void runTest()
> > {
>
> ==== //open/util/resgen/lib/eigenbase-resgen.jar#10 (binary) ====
>
>
> ==== //open/util/resgen/lib/eigenbase-xom.jar#9 (binary) ====
>
>
> ====
> //open/util/resgen/src/org/eigenbase/resgen/AbstractJavaGenera
> tor.java#3
> (ktext) ====
>
> 2c2
> < // $Id:
> //open/util/resgen/src/org/eigenbase/resgen/AbstractJavaGenera
> tor.java#2 $
> ---
> > // $Id:
> //open/util/resgen/src/org/eigenbase/resgen/AbstractJavaGenera
> tor.java#3 $
> 33c33
> < * @version $Id:
> //open/util/resgen/src/org/eigenbase/resgen/AbstractJavaGenera
> tor.java#2 $
> ---
> > * @version $Id:
> //open/util/resgen/src/org/eigenbase/resgen/AbstractJavaGenera
> tor.java#3 $
> 96a97
> > pw.println("import java.util.ResourceBundle;");
>
> ====
> //open/util/resgen/src/org/eigenbase/resgen/JavaBaseGenerator.java#4
> (ktext) ====
>
> 2c2
> < // $Id:
> //open/util/resgen/src/org/eigenbase/resgen/JavaBaseGenerator.java#3 $
> ---
> > // $Id:
> //open/util/resgen/src/org/eigenbase/resgen/JavaBaseGenerator.java#4 $
> 38c38
> < * @version $Id:
> //open/util/resgen/src/org/eigenbase/resgen/JavaBaseGenerator.java#3 $
> ---
> > * @version $Id:
> //open/util/resgen/src/org/eigenbase/resgen/JavaBaseGenerator.java#4 $
> 76c76
> < pw.println(" return (" + classNameSansPackage + ")
> instance(baseName);");
> ---
> > pw.println(" return (" +
> classNameSansPackage + ") instance(baseName,
> getThreadOrDefaultLocale(),
> ResourceBundle.getBundle(baseName, getThreadOrDefaultLocale()));");
> 82c82
> < pw.println(" return (" + classNameSansPackage + ")
> instance(baseName, locale);");
> ---
> > pw.println(" return (" +
> classNameSansPackage + ") instance(baseName, locale,
> ResourceBundle.getBundle(baseName, locale));");
>
> ====
> //open/util/resgen/src/org/eigenbase/resgen/ShadowResourceBund
> le.java#5
> (ktext) ====
>
> 2c2
> < // $Id:
> //open/util/resgen/src/org/eigenbase/resgen/ShadowResourceBund
> le.java#4 $
> ---
> > // $Id:
> //open/util/resgen/src/org/eigenbase/resgen/ShadowResourceBund
> le.java#5 $
> 62c62
> < private static final HashMap mapThreadToLocale = new HashMap();
> ---
> > private static final ThreadLocal mapThreadToLocale =
> new ThreadLocal();
> 170a171,173
> > *
> > * @deprecated This method does not work correctly in
> dynamically
> > * loaded jars.
> 193a197,199
> > *
> > * @deprecated This method does not work correctly in
> dynamically
> > * loaded jars.
> 200a207,234
> > return instance(baseName, locale, bundle);
> > }
> >
> > /**
> > * Returns the instance of the <code>baseName</code>
> resource bundle
> > * for the given locale.
> > *
> > * <p> This method should be called from a derived
> class, with the proper
> > * casting:<blockquote>
> > *
> > * <pre>class MyResource extends ShadowResourceBundle {
> > * ...
> > *
> > * /**
> > * * Retrieves the instance of {@link
> MyResource} appropriate
> > * * to the given locale.
> > * **/
> > * public static MyResource instance(Locale locale) {
> > * return (MyResource) instance(
> > * MyResource.class.getName(), locale,
> > *
> ResourceBundle.getBundle(MyResource.class.getName(), locale));
> > * }
> > * ...
> > * }</pre></blockquote>
> > */
> > protected static ShadowResourceBundle instance(
> > String baseName, Locale locale, ResourceBundle bundle)
> > {
> 210a245,256
> > /** Returns the preferred locale of the current thread, or
> > * the default locale if the current thread has not
> called {@link
> > * #setThreadLocale}. **/
> > protected static Locale getThreadOrDefaultLocale() {
> > Locale locale = getThreadLocale();
> > if (locale == null) {
> > return Locale.getDefault();
> > } else {
> > return locale;
> > }
> > }
> >
> 214c260
> < mapThreadToLocale.put(Thread.currentThread(), locale);
> ---
> > mapThreadToLocale.set(locale);
> 220c266
> < return (Locale)
> mapThreadToLocale.get(Thread.currentThread());
> ---
> > return (Locale) mapThreadToLocale.get();
>
>
More information about the Mondrian
mailing list