Author: chirino
Date: Sun Sep  3 21:56:25 2006
New Revision: 439930

URL: http://svn.apache.org/viewvc?view=rev&rev=439930
Log:
Added a MemoryPropertyEditor that allows you to specify memory sizes in the 
xbean config like: limit="20 MB"
Upgraded the xbean maven plugin to 2.6 and the new qdox that it used did not 
like some of our valid inline initialization of variables, so I had
to refactor to an equivalent form that qdox did like.

http://issues.apache.org/activemq/browse/AMQ-827
http://issues.apache.org/activemq/browse/AMQ-909


Added:
    
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/util/MemoryPropertyEditor.java
Modified:
    incubator/activemq/trunk/activemq-core/pom.xml
    
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java
    
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/memory/UsageManager.java
    
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/jms/JmsConnector.java
    
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/DefaultPersistenceAdapterFactory.java
    
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/JournalPersistenceAdapter.java
    
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/QuickJournalPersistenceAdapter.java
    
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadaptor/KahaPersistenceAdapter.java
    
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/rapid/RapidPersistenceAdapter.java
    
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
    incubator/activemq/trunk/assembly/src/release/conf/activemq-nojournal.xml
    incubator/activemq/trunk/assembly/src/release/conf/activemq.xml

Modified: incubator/activemq/trunk/activemq-core/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/pom.xml?view=diff&rev=439930&r1=439929&r2=439930
==============================================================================
--- incubator/activemq/trunk/activemq-core/pom.xml (original)
+++ incubator/activemq/trunk/activemq-core/pom.xml Sun Sep  3 21:56:25 2006
@@ -359,7 +359,7 @@
       <plugin>
         <groupId>org.apache.xbean</groupId>
         <artifactId>maven-xbean-plugin</artifactId>
-       <version>2.5</version>
+        <version>${xbean-version}</version>
         <executions>
           <execution>
             <configuration>

Modified: 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java?view=diff&rev=439930&r1=439929&r2=439930
==============================================================================
--- 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java
 (original)
+++ 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java
 Sun Sep  3 21:56:25 2006
@@ -172,6 +172,10 @@
         return memoryLimit;
     }
 
+    /**
+     * 
+     * @org.apache.xbean.Property 
propertyEditor="org.apache.activemq.util.MemoryPropertyEditor"
+     */
     public void setMemoryLimit(long memoryLimit) {
         this.memoryLimit = memoryLimit;
     }

Modified: 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/memory/UsageManager.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/memory/UsageManager.java?view=diff&rev=439930&r1=439929&r2=439930
==============================================================================
--- 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/memory/UsageManager.java
 (original)
+++ 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/memory/UsageManager.java
 Sun Sep  3 21:56:25 2006
@@ -151,7 +151,11 @@
     }
 
     /**
-     * Sets the memory limit in bytes
+     * Sets the memory limit in bytes.
+     * 
+     * When set using XBean, you can use values such as: "20 mb", "1024 kb", 
or "1 gb"
+     * 
+     * @org.apache.xbean.Property 
propertyEditor="org.apache.activemq.util.MemoryPropertyEditor"
      */
     public void setLimit(long limit) {
         if(percentUsageMinDelta < 0 ) {
@@ -165,20 +169,6 @@
         setPercentUsage(percentUsage);
     }
     
-    /**
-     * Sets the memory limit in megabytes
-     */
-    public void setLimitMb(long limitMb) {
-        setLimitKb(1024 * limitMb);
-    }
-    
-    /**
-     * Sets the memory limit in kilobytes
-     */
-    public void setLimitKb(long limitKb) {
-        setLimit(1024 * limitKb);
-    }
-
     /*
     * Sets the minimum number of percentage points the usage has to change 
before a UsageListener
     * event is fired by the manager.

Modified: 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/jms/JmsConnector.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/jms/JmsConnector.java?view=diff&rev=439930&r1=439929&r2=439930
==============================================================================
--- 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/jms/JmsConnector.java
 (original)
+++ 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/network/jms/JmsConnector.java
 Sun Sep  3 21:56:25 2006
@@ -63,30 +63,33 @@
     protected String localPassword;
     private String name;
 
-    protected LRUCache replyToBridges = new LRUCache() {
-        /**
-         * 
-         */
-        private static final long serialVersionUID = -7446792754185879286L;
-
-        protected boolean removeEldestEntry(Map.Entry enty) {
-            if (size() > maxCacheSize) {
-                Iterator iter = entrySet().iterator();
-                Map.Entry lru = (Map.Entry) iter.next();
-                remove(lru.getKey());
-                DestinationBridge bridge = (DestinationBridge) lru.getValue();
-                try {
-                    bridge.stop();
-                    log.info("Expired bridge: " + bridge);
-                }
-                catch (Exception e) {
-                    log.warn("stopping expired bridge" + bridge + " caused an 
exception", e);
-                }
-            }
-            return false;
-        }
-    };
+    protected LRUCache replyToBridges = createLRUCache(); 
+       
+    static private LRUCache createLRUCache() { 
+       return new LRUCache() {
+               private static final long serialVersionUID = 
-7446792754185879286L;
+       
+               protected boolean removeEldestEntry(Map.Entry enty) {
+                   if (size() > maxCacheSize) {
+                       Iterator iter = entrySet().iterator();
+                       Map.Entry lru = (Map.Entry) iter.next();
+                       remove(lru.getKey());
+                       DestinationBridge bridge = (DestinationBridge) 
lru.getValue();
+                       try {
+                           bridge.stop();
+                           log.info("Expired bridge: " + bridge);
+                       }
+                       catch (Exception e) {
+                           log.warn("stopping expired bridge" + bridge + " 
caused an exception", e);
+                       }
+                   }
+                   return false;
+               }
+           };
+    }
 
+    /**
+     */
     public boolean init() {
         boolean result = initialized.compareAndSet(false, true);
         if (result) {

Modified: 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/DefaultPersistenceAdapterFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/DefaultPersistenceAdapterFactory.java?view=diff&rev=439930&r1=439929&r2=439930
==============================================================================
--- 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/DefaultPersistenceAdapterFactory.java
 (original)
+++ 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/DefaultPersistenceAdapterFactory.java
 Sun Sep  3 21:56:25 2006
@@ -82,6 +82,9 @@
         return journalLogFileSize;
     }
 
+    /**
+     * @org.apache.xbean.Property 
propertyEditor="org.apache.activemq.util.MemoryPropertyEditor"
+     */
     public void setJournalLogFileSize(int journalLogFileSize) {
         this.journalLogFileSize = journalLogFileSize;
     }

Modified: 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/JournalPersistenceAdapter.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/JournalPersistenceAdapter.java?view=diff&rev=439930&r1=439929&r2=439930
==============================================================================
--- 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/JournalPersistenceAdapter.java
 (original)
+++ 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/JournalPersistenceAdapter.java
 Sun Sep  3 21:56:25 2006
@@ -107,13 +107,17 @@
     
     private AtomicBoolean started = new AtomicBoolean(false);
 
-    private final Runnable periodicCheckpointTask = new Runnable() {
-        public void run() {
-            if( 
System.currentTimeMillis()>lastCheckpointRequest+checkpointInterval ) {
-                checkpoint(false, true);
-            }
-        }
-    };
+    private final Runnable periodicCheckpointTask = 
createPeriodicCheckpointTask(); 
+       
+    final Runnable createPeriodicCheckpointTask() {
+       return new Runnable() {
+               public void run() {
+                   if( 
System.currentTimeMillis()>lastCheckpointRequest+checkpointInterval ) {
+                       checkpoint(false, true);
+                   }
+               }
+           };
+    }
     
     public JournalPersistenceAdapter(Journal journal, PersistenceAdapter 
longTermPersistence, TaskRunnerFactory taskRunnerFactory) throws IOException {
 

Modified: 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/QuickJournalPersistenceAdapter.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/QuickJournalPersistenceAdapter.java?view=diff&rev=439930&r1=439929&r2=439930
==============================================================================
--- 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/QuickJournalPersistenceAdapter.java
 (original)
+++ 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/QuickJournalPersistenceAdapter.java
 Sun Sep  3 21:56:25 2006
@@ -106,13 +106,17 @@
     
     private AtomicBoolean started = new AtomicBoolean(false);
 
-    private final Runnable periodicCheckpointTask = new Runnable() {
-        public void run() {
-            if( 
System.currentTimeMillis()>lastCheckpointRequest+checkpointInterval ) {
-                checkpoint(false, true);
-            }
-        }
-    };
+    private final Runnable periodicCheckpointTask  = 
createPeriodicCheckpointTask(); 
+       
+    final Runnable createPeriodicCheckpointTask() {
+       return new Runnable() {
+               public void run() {
+                   if( 
System.currentTimeMillis()>lastCheckpointRequest+checkpointInterval ) {
+                       checkpoint(false, true);
+                   }
+               }
+           };
+    }
     
     public QuickJournalPersistenceAdapter(Journal journal, PersistenceAdapter 
longTermPersistence, TaskRunnerFactory taskRunnerFactory) throws IOException {
 

Modified: 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadaptor/KahaPersistenceAdapter.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadaptor/KahaPersistenceAdapter.java?view=diff&rev=439930&r1=439929&r2=439930
==============================================================================
--- 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadaptor/KahaPersistenceAdapter.java
 (original)
+++ 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/kahadaptor/KahaPersistenceAdapter.java
 Sun Sep  3 21:56:25 2006
@@ -188,6 +188,8 @@
 
     /**
      * @param maxDataFileLength the maxDataFileLength to set
+     * 
+     * @org.apache.xbean.Property 
propertyEditor="org.apache.activemq.util.MemoryPropertyEditor"
      */
     public void setMaxDataFileLength(long maxDataFileLength){
         this.maxDataFileLength=maxDataFileLength;

Modified: 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/rapid/RapidPersistenceAdapter.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/rapid/RapidPersistenceAdapter.java?view=diff&rev=439930&r1=439929&r2=439930
==============================================================================
--- 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/rapid/RapidPersistenceAdapter.java
 (original)
+++ 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/rapid/RapidPersistenceAdapter.java
 Sun Sep  3 21:56:25 2006
@@ -114,13 +114,17 @@
     private boolean useExternalMessageReferences;
 
 
-    private final Runnable periodicCheckpointTask = new Runnable() {
-        public void run() {
-            if( 
System.currentTimeMillis()>lastCheckpointRequest+checkpointInterval ) {
-                checkpoint(false, true);
-            }
-        }
-    };
+    private final Runnable periodicCheckpointTask  = 
createPeriodicCheckpointTask(); 
+       
+    final Runnable createPeriodicCheckpointTask() {
+       return new Runnable() {
+               public void run() {
+                   if( 
System.currentTimeMillis()>lastCheckpointRequest+checkpointInterval ) {
+                       checkpoint(false, true);
+                   }
+               }
+           };
+    }
     
     public RapidPersistenceAdapter(Journal journal, TaskRunnerFactory 
taskRunnerFactory) throws IOException {
 

Modified: 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java?view=diff&rev=439930&r1=439929&r2=439930
==============================================================================
--- 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
 (original)
+++ 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
 Sun Sep  3 21:56:25 2006
@@ -80,55 +80,59 @@
     private long reconnectDelay = initialReconnectDelay;
     private Exception connectionFailure;
 
-    private final TransportListener myTransportListener = new 
TransportListener() {
-        public void onCommand(Command command) {
-            if (command == null) {
-                return;
-            }
-            if (command.isResponse()) {
-                requestMap.remove(new Integer(((Response) 
command).getCorrelationId()));
-            }
-            if (!initialized){
-                if (command.isBrokerInfo()){
-                    BrokerInfo info = (BrokerInfo)command;
-                    BrokerInfo[] peers = info.getPeerBrokerInfos();
-                    if (peers!= null){
-                        for (int i =0; i < peers.length;i++){
-                            String brokerString = peers[i].getBrokerURL();
-                            add(brokerString);
-                        }
-                    }
-                initialized = true;
-                }
-                
-            }
-            if (transportListener != null) {
-                transportListener.onCommand(command);
-            }
-        }
-
-        public void onException(IOException error) {
-            try {
-                handleTransportFailure(error);
-            }
-            catch (InterruptedException e) {
-                transportListener.onException(new InterruptedIOException());
-            }
-        }
-        
-        public void transportInterupted(){
-            if (transportListener != null){
-                transportListener.transportInterupted();
-            }
-        }
-
-        public void transportResumed(){
-            if(transportListener != null){
-                transportListener.transportResumed();
-            }
-        }
-    };
-
+    private final TransportListener myTransportListener = 
createTransportListener();
+    
+    TransportListener createTransportListener() {
+       return new TransportListener() {
+               public void onCommand(Command command) {
+                   if (command == null) {
+                       return;
+                   }
+                   if (command.isResponse()) {
+                       requestMap.remove(new Integer(((Response) 
command).getCorrelationId()));
+                   }
+                   if (!initialized){
+                       if (command.isBrokerInfo()){
+                           BrokerInfo info = (BrokerInfo)command;
+                           BrokerInfo[] peers = info.getPeerBrokerInfos();
+                           if (peers!= null){
+                               for (int i =0; i < peers.length;i++){
+                                   String brokerString = 
peers[i].getBrokerURL();
+                                   add(brokerString);
+                               }
+                           }
+                       initialized = true;
+                       }
+                       
+                   }
+                   if (transportListener != null) {
+                       transportListener.onCommand(command);
+                   }
+               }
+       
+               public void onException(IOException error) {
+                   try {
+                       handleTransportFailure(error);
+                   }
+                   catch (InterruptedException e) {
+                       transportListener.onException(new 
InterruptedIOException());
+                   }
+               }
+               
+               public void transportInterupted(){
+                   if (transportListener != null){
+                       transportListener.transportInterupted();
+                   }
+               }
+       
+               public void transportResumed(){
+                   if(transportListener != null){
+                       transportListener.transportResumed();
+                   }
+               }
+           };
+    }
+    
     public FailoverTransport() throws InterruptedIOException {
 
         // Setup a task that is used to reconnect the a connection async.

Added: 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/util/MemoryPropertyEditor.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/util/MemoryPropertyEditor.java?view=auto&rev=439930
==============================================================================
--- 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/util/MemoryPropertyEditor.java
 (added)
+++ 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/util/MemoryPropertyEditor.java
 Sun Sep  3 21:56:25 2006
@@ -0,0 +1,47 @@
+package org.apache.activemq.util;
+
+import java.beans.PropertyEditorSupport;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class MemoryPropertyEditor extends PropertyEditorSupport {
+       public void setAsText(String text) throws IllegalArgumentException {
+
+               Pattern p = 
Pattern.compile("^\\s*(\\d+)\\s*(b)?\\s*$",Pattern.CASE_INSENSITIVE);
+               Matcher m = p.matcher(text);
+               if (m.matches()) {
+                       setValue(new Long(Long.parseLong(m.group(1))));
+                       return;
+               }
+
+               p = 
Pattern.compile("^\\s*(\\d+)\\s*k(b)?\\s*$",Pattern.CASE_INSENSITIVE);
+               m = p.matcher(text);
+               if (m.matches()) {
+                       setValue(new Long(Long.parseLong(m.group(1)) * 1024));
+                       return;
+               }
+
+               p = Pattern.compile("^\\s*(\\d+)\\s*m(b)?\\s*$", 
Pattern.CASE_INSENSITIVE);
+               m = p.matcher(text);
+               if (m.matches()) {
+                       setValue(new Long(Long.parseLong(m.group(1)) * 1024 * 
1024 ));
+                       return;
+               }
+
+               p = Pattern.compile("^\\s*(\\d+)\\s*g(b)?\\s*$", 
Pattern.CASE_INSENSITIVE);
+               m = p.matcher(text);
+               if (m.matches()) {
+                       setValue(new Long(Long.parseLong(m.group(1)) * 1024 * 
1024 * 1024 ));
+                       return;
+               }
+
+               throw new IllegalArgumentException(
+                               "Could convert not to a memory size: " + text);
+       }
+
+       public String getAsText() {
+               Long value = (Long) getValue();
+               return (value != null ? value.toString() : "");
+       }
+
+}

Modified: 
incubator/activemq/trunk/assembly/src/release/conf/activemq-nojournal.xml
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/assembly/src/release/conf/activemq-nojournal.xml?view=diff&rev=439930&r1=439929&r2=439930
==============================================================================
--- incubator/activemq/trunk/assembly/src/release/conf/activemq-nojournal.xml 
(original)
+++ incubator/activemq/trunk/assembly/src/release/conf/activemq-nojournal.xml 
Sun Sep  3 21:56:25 2006
@@ -23,7 +23,7 @@
   <broker xmlns="http://activemq.org/config/1.0";>
   
     <memoryManager>  
-      <usageManager id="memory-manager" limitMb="50"/>
+      <usageManager id="memory-manager" limit="50 MB"/>
     </memoryManager>
 
     <!-- In ActiveMQ 4, you can setup destination policies -->  

Modified: incubator/activemq/trunk/assembly/src/release/conf/activemq.xml
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/assembly/src/release/conf/activemq.xml?view=diff&rev=439930&r1=439929&r2=439930
==============================================================================
--- incubator/activemq/trunk/assembly/src/release/conf/activemq.xml (original)
+++ incubator/activemq/trunk/assembly/src/release/conf/activemq.xml Sun Sep  3 
21:56:25 2006
@@ -22,9 +22,9 @@
   
   <broker useJmx="true" xmlns="http://activemq.org/config/1.0";>
   
-    <!--  Use the following to set the broker memory limit (in bytes)
+    <!--  Use the following to set the broker memory limit 
     <memoryManager>  
-        <usageManager id="memory-manager" limit="1048576"/>
+        <usageManager id="memory-manager" limit="20 MB"/>
     </memoryManager>
     -->
     


Reply via email to