You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by rd...@apache.org on 2005/10/13 23:39:31 UTC

svn commit: r320929 - in /jakarta/commons/proper/betwixt/trunk: src/java/org/apache/commons/betwixt/ src/java/org/apache/commons/betwixt/strategy/ xdocs/

Author: rdonkin
Date: Thu Oct 13 14:39:26 2005
New Revision: 320929

URL: http://svn.apache.org/viewcvs?rev=320929&view=rev
Log:
Fixed memory leak with bad singleton. Contributed by John M. Issue #37046.

Modified:
    jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/BindingConfiguration.java
    jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/strategy/DefaultIdStoringStrategy.java
    jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/strategy/IdStoringStrategy.java
    jakarta/commons/proper/betwixt/trunk/xdocs/tasks.xml

Modified: jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/BindingConfiguration.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/BindingConfiguration.java?rev=320929&r1=320928&r2=320929&view=diff
==============================================================================
--- jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/BindingConfiguration.java (original)
+++ jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/BindingConfiguration.java Thu Oct 13 14:39:26 2005
@@ -50,7 +50,7 @@
     /** Strategy for suppressing attributes with certain values when writing */
     private ValueSuppressionStrategy valueSuppressionStrategy  = ValueSuppressionStrategy.DEFAULT;
     /** Strategy for storing and accessing ID values */
-    private IdStoringStrategy idStoringStrategy = IdStoringStrategy.DEFAULT;
+    private IdStoringStrategy idStoringStrategy = IdStoringStrategy.createDefault();
     
     /**
      * Constructs a BindingConfiguration with default properties.

Modified: jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/strategy/DefaultIdStoringStrategy.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/strategy/DefaultIdStoringStrategy.java?rev=320929&r1=320928&r2=320929&view=diff
==============================================================================
--- jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/strategy/DefaultIdStoringStrategy.java (original)
+++ jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/strategy/DefaultIdStoringStrategy.java Thu Oct 13 14:39:26 2005
@@ -24,7 +24,7 @@
  * Stores every ID that given to it into an internal <code>HashMap</code> and
  * returns it on request.
  * 
- * @author <a href="mailto:christian@wilde-welt.de">Christian Aust </a>
+ * @author <a href="mailto:christian@wilde-welt.de">Christian Aust</a>
  * @since 0.7
  */
 public class DefaultIdStoringStrategy extends IdStoringStrategy {

Modified: jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/strategy/IdStoringStrategy.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/strategy/IdStoringStrategy.java?rev=320929&r1=320928&r2=320929&view=diff
==============================================================================
--- jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/strategy/IdStoringStrategy.java (original)
+++ jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/strategy/IdStoringStrategy.java Thu Oct 13 14:39:26 2005
@@ -33,10 +33,22 @@
     /**
      * Default storage strategy
      * 
-     * @see DefaultIdStoringStrategy
+     * @deprecated do not use this singleton since it 
+     * creates a static Map of all objects ever written. 
+     * Use {@link #createDefault} instead
      */
     public static IdStoringStrategy DEFAULT = new DefaultIdStoringStrategy();
 
+    /**
+     * Factory method creates the default <code>Betwixt</code> implementation.
+     * The implementation created may vary if the default implementation changes.
+     * @return <code>IdStoringStrategy</code> used as default
+     */
+    public static IdStoringStrategy createDefault() {
+        return new DefaultIdStoringStrategy();
+    }
+        
+    
     /**
      * Retrieves a reference for the given instance.
      * If a not null value is returned from this method,

Modified: jakarta/commons/proper/betwixt/trunk/xdocs/tasks.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/xdocs/tasks.xml?rev=320929&r1=320928&r2=320929&view=diff
==============================================================================
--- jakarta/commons/proper/betwixt/trunk/xdocs/tasks.xml (original)
+++ jakarta/commons/proper/betwixt/trunk/xdocs/tasks.xml Thu Oct 13 14:39:26 2005
@@ -411,6 +411,16 @@
 <section name='Deprecated'>
 	<subsection name='Since 0.7'>
 		<ul>
+			<li>IdStoringStrategy
+				<ul>
+					<li>IdStoringStrategy.DEFAULT should never have been a constant
+					since the implementation uses instance variables.
+					Using this constant will result in a memory leak.
+					Note: use proper factory methods 
+					rather than public constant fields in the future!
+					</li>
+				</ul>
+			</li>
 			<li>ElementRule added forceAccessible attribute
 				<ul>
 					<li>configureDescriptor replaced by private method with extra parameter</li>



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org