Author: gnodet
Date: Tue Nov 17 13:42:46 2009
New Revision: 881284

URL: http://svn.apache.org/viewvc?rev=881284&view=rev
Log:
FELIX-1722: gogo AbstractCommand should let the possibility to release the used 
Action

Modified:
    
felix/trunk/gogo/commands/src/main/java/org/apache/felix/gogo/commands/basic/AbstractCommand.java

Modified: 
felix/trunk/gogo/commands/src/main/java/org/apache/felix/gogo/commands/basic/AbstractCommand.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/gogo/commands/src/main/java/org/apache/felix/gogo/commands/basic/AbstractCommand.java?rev=881284&r1=881283&r2=881284&view=diff
==============================================================================
--- 
felix/trunk/gogo/commands/src/main/java/org/apache/felix/gogo/commands/basic/AbstractCommand.java
 (original)
+++ 
felix/trunk/gogo/commands/src/main/java/org/apache/felix/gogo/commands/basic/AbstractCommand.java
 Tue Nov 17 13:42:46 2009
@@ -30,15 +30,29 @@
 
     public Object execute(CommandSession session, List<Object> arguments) 
throws Exception {
         Action action = createNewAction();
-        if (getPreparator().prepare(action, session, arguments)) {
-            return action.execute(session);
-        } else {
-            return null;
+        try {
+            if (getPreparator().prepare(action, session, arguments)) {
+                return action.execute(session);
+            } else {
+                return null;
+            }
+        } finally {
+               releaseAction(action);
         }
     }
 
     protected abstract Action createNewAction() throws Exception;
 
+    /**
+     * Release the used Action.
+     * This method has to be overridden for pool based Actions.
+     * @param action Action that was executed
+     * @throws Exception if something went wrong during the Action release
+     */
+    protected void releaseAction(Action action) throws Exception {
+       // Do nothing by default (stateful)
+    }
+
     protected ActionPreparator getPreparator() throws Exception {
         return new DefaultActionPreparator();
     }


Reply via email to