X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2FExecutionParameterPostProcessor.java;h=158bdd12e7368f2ae9c2841899f2558d61c89a85;hb=a0a151ee3a0aed29a3cb03d81e35d540ca9fdb03;hp=2ba426e13ebd1fe0f411378c9a2941af5611cf1c;hpb=1fdb1b4e7b1d2b0cabb6483238301b857a6392fa;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionParameterPostProcessor.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionParameterPostProcessor.java index 2ba426e13..158bdd12e 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionParameterPostProcessor.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionParameterPostProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Mathieu Baudier + * Copyright (C) 2007-2012 Mathieu Baudier * * 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 java.beans.PropertyDescriptor; @@ -41,6 +40,12 @@ import org.springframework.beans.factory.support.ManagedSet; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; +/** + * Spring post processor which ensures that execution parameters are properly + * set. It is used at two levels: first during instantiation for instantiation + * parameters which allow to implement templates, then at runtime in order to + * interpret @{} placeholders when object of scope execution are instantiated. + */ public class ExecutionParameterPostProcessor extends InstantiationAwareBeanPostProcessorAdapter { @@ -102,7 +107,7 @@ public class ExecutionParameterPostProcessor extends placeholder).toString(); else {// execution - // next call fail if no execution context available + // next call fail if no execution context available Object obj = executionContext.getVariable(placeholder); if (obj != null) { return obj.toString(); @@ -131,12 +136,12 @@ public class ExecutionParameterPostProcessor extends return convertedValue.equals(originalValue) ? value : convertedValue; } else if (value instanceof ManagedMap) { - Map mapVal = (Map) value; + Map mapVal = (Map) value; - Map newContent = new ManagedMap(); + Map newContent = new ManagedMap(); boolean entriesModified = false; - for (Iterator it = mapVal.entrySet().iterator(); it.hasNext();) { - Map.Entry entry = (Map.Entry) it.next(); + for (Iterator it = mapVal.entrySet().iterator(); it.hasNext();) { + Map.Entry entry = (Map.Entry) it.next(); Object key = entry.getKey(); int keyHash = (key != null ? key.hashCode() : 0); Object newKey = resolveValue(beanName, bean, key); @@ -150,8 +155,8 @@ public class ExecutionParameterPostProcessor extends return entriesModified ? newContent : value; } else if (value instanceof ManagedList) { - List listVal = (List) value; - List newContent = new ManagedList(); + List listVal = (List) value; + List newContent = new ManagedList(); boolean valueModified = false; for (int i = 0; i < listVal.size(); i++) { @@ -164,10 +169,10 @@ public class ExecutionParameterPostProcessor extends } return valueModified ? newContent : value; } else if (value instanceof ManagedSet) { - Set setVal = (Set) value; - Set newContent = new ManagedSet(); + Set setVal = (Set) value; + Set newContent = new ManagedSet(); boolean entriesModified = false; - for (Iterator it = setVal.iterator(); it.hasNext();) { + for (Iterator it = setVal.iterator(); it.hasNext();) { Object elem = it.next(); int elemHash = (elem != null ? elem.hashCode() : 0); Object newVal = resolveValue(beanName, bean, elem); @@ -257,8 +262,8 @@ public class ExecutionParameterPostProcessor extends // previously resolved placeholder value. propVal = parseStringValue(bean, propVal, visitedPlaceholders); - buf.replace(startIndex, endIndex - + placeholderSuffix.length(), propVal); + buf.replace(startIndex, + endIndex + placeholderSuffix.length(), propVal); if (log.isTraceEnabled()) { log.trace("Resolved placeholder '" + placeholder + "'"); }