[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 {
> >      *    ...
> >      *
> >      *    /&#42;&#42;
> >      *      &#42; Retrieves the instance of {&#64;link 
> MyResource} appropriate
> >      *      &#42; to the given locale.
> >      *      &#42;&#42;/
> >      *    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