The new getMapBuilders() method isn't absolutely thread safe. Is it
used in a thread-safe context, e.g. is the caller synchronized? If
not, one possibility would be to dump the lazy initialization and
create the sync'd List in the static field declaration.
- Dan
[EMAIL PROTECTED] writes:
> henning 2003/06/20 09:59:09
>
> Modified: src/java/org/apache/torque Torque.java
> Log:
> move access to mapBuilders to an accessor so it will never be null. The
> change to a static init method died with Turbine Component Service.
>
> Revision Changes Path
> 1.84 +15 -8 db-torque/src/java/org/apache/torque/Torque.java
>
> Index: Torque.java
> ===================================================================
> RCS file: /home/cvs/db-torque/src/java/org/apache/torque/Torque.java,v
> retrieving revision 1.83
> retrieving revision 1.84
> diff -u -r1.83 -r1.84
> --- Torque.java 20 Jun 2003 00:38:40 -0000 1.83
> +++ Torque.java 20 Jun 2003 16:59:09 -0000 1.84
> @@ -176,14 +176,21 @@
> */
> private static List mapBuilders = null;
>
> - //
> - // Static initializer
> - //
> + /**
> + * Make sure that the map Builders List is always
> + * populated by fetching through a getter
> + *
> + * @return A List for the mapBuilders
> + */
> + private static List getMapBuilders()
> {
> - mapBuilders = Collections.synchronizedList(new ArrayList());
> + if (mapBuilders == null)
> + {
> + mapBuilders = Collections.synchronizedList(new ArrayList());
> + }
> + return mapBuilders;
> }
>
> -
> /**
> * initialize Torque
> *
> @@ -235,7 +242,7 @@
> initDataSourceFactories(configuration);
>
> isInit = true;
> - for (Iterator i = mapBuilders.iterator(); i.hasNext();)
> + for (Iterator i = getMapBuilders().iterator(); i.hasNext();)
> {
> //this will add any maps in this builder to the proper database map
> BasePeer.getMapBuilder((String) i.next());
> @@ -713,7 +720,7 @@
> */
> public static void registerMapBuilder(String className)
> {
> - mapBuilders.add(className);
> + getMapBuilders().add(className);
> }
>
> /**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]