X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2FExecutionScope.java;h=a2a5a9b0ca7f81ec3f0a949c7ad10469e8768210;hb=6de9c4036be9e318f59a0ffa187570f5999c53cb;hp=82491fc589b163f2aca6c19c4c2839081cfc6446;hpb=603eba9ddae4b917fba7e262743c837f71660f8b;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionScope.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionScope.java index 82491fc58..a2a5a9b0c 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionScope.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionScope.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Mathieu Baudier + * Copyright (C) 2007-2012 Argeo GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.argeo.slc.core.execution; import org.apache.commons.logging.Log; @@ -27,6 +26,10 @@ import org.argeo.slc.execution.ExecutionStack; import org.springframework.beans.factory.ObjectFactory; import org.springframework.beans.factory.config.Scope; +/** + * When Spring beans are instantiated with this scope, the same instance is + * reused across an execution. + */ public class ExecutionScope implements Scope { private final static Log log = LogFactory.getLog(ExecutionScope.class); @@ -128,8 +131,11 @@ public class ExecutionScope implements Scope { } public void registerDestructionCallback(String name, Runnable callback) { - // TODO: implement it - // throw new UnsupportedOperationException(); + if (Thread.currentThread() instanceof ExecutionThread) { + ExecutionThread executionThread = (ExecutionThread) Thread + .currentThread(); + executionThread.registerDestructionCallback(name, callback); + } } public Object remove(String name) {