[jboss-cvs] JBossAS SVN: r99516 - in projects/bootstrap/trunk: impl-base/src/main/java/org/jboss/bootstrap/impl/base/config and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sun Jan 17 23:22:04 EST 2010


Author: ALRubinger
Date: 2010-01-17 23:22:03 -0500 (Sun, 17 Jan 2010)
New Revision: 99516

Modified:
   projects/bootstrap/trunk/api/src/main/java/org/jboss/bootstrap/api/config/ServerConfig.java
   projects/bootstrap/trunk/impl-base/src/main/java/org/jboss/bootstrap/impl/base/config/AbstractBasicServerConfig.java
Log:
[JBBOOT-118] Defensive copy on bootstrap descriptors once the configuration is frozen

Modified: projects/bootstrap/trunk/api/src/main/java/org/jboss/bootstrap/api/config/ServerConfig.java
===================================================================
--- projects/bootstrap/trunk/api/src/main/java/org/jboss/bootstrap/api/config/ServerConfig.java	2010-01-18 04:17:13 UTC (rev 99515)
+++ projects/bootstrap/trunk/api/src/main/java/org/jboss/bootstrap/api/config/ServerConfig.java	2010-01-18 04:22:03 UTC (rev 99516)
@@ -106,7 +106,7 @@
     * Freezes the configuration, marking it as immutable.  Will typically 
     * be invoked by a server during the {@link LifecycleState#INITIALIZED} lifecycle.  
     * 
-    * @throws IllegalStateException
+    * @throws IllegalStateException If already frozen
     */
    void freeze() throws IllegalStateException;
 

Modified: projects/bootstrap/trunk/impl-base/src/main/java/org/jboss/bootstrap/impl/base/config/AbstractBasicServerConfig.java
===================================================================
--- projects/bootstrap/trunk/impl-base/src/main/java/org/jboss/bootstrap/impl/base/config/AbstractBasicServerConfig.java	2010-01-18 04:17:13 UTC (rev 99515)
+++ projects/bootstrap/trunk/impl-base/src/main/java/org/jboss/bootstrap/impl/base/config/AbstractBasicServerConfig.java	2010-01-18 04:22:03 UTC (rev 99516)
@@ -24,6 +24,7 @@
 
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -80,7 +81,7 @@
    /**
     * Bootstrap descriptors
     */
-   private final List<BootstrapDescriptor> bootstrapDescriptors;
+   private List<BootstrapDescriptor> bootstrapDescriptors;
 
    //-------------------------------------------------------------------------------------||
    // Constructor ------------------------------------------------------------------------||
@@ -275,11 +276,24 @@
       return this.covarientReturn();
    }
 
-   /* (non-Javadoc)
-    * @see org.jboss.bootstrap.spi.config.ServerConfig#freeze()
+   /**
+    * @see org.jboss.bootstrap.api.config.ServerConfig#freeze()
     */
    public void freeze() throws IllegalStateException
    {
+      // Precondition checks
+      if (this.isFrozen())
+      {
+         throw new IllegalStateException("Configuration is already frozen");
+      }
+
+      // Make a defensive copy of the bootstrap descriptors
+      final List<BootstrapDescriptor> copy = new ArrayList<BootstrapDescriptor>(bootstrapDescriptors.size());
+      copy.addAll(bootstrapDescriptors);
+      // Make immutable
+      bootstrapDescriptors = Collections.unmodifiableList(copy);
+
+      // Mark
       this.frozen = true;
    }
 




More information about the jboss-cvs-commits mailing list