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();
}