Skip to content

Commit f7f3fd6

Browse files
committed
pass manual configuration overrides to async executors
1 parent 4509d10 commit f7f3fd6

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

ipp-v3-java-devkit/src/main/java/com/intuit/ipp/interceptors/IntuitInterceptorProvider.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.intuit.ipp.util.Config;
2828
import com.intuit.ipp.util.Logger;
2929
import com.intuit.ipp.util.StringUtils;
30+
import org.apache.commons.configuration.Configuration;
3031

3132
/**
3233
* Class to provide the provision to add interceptors in the order those have to be executed.
@@ -53,6 +54,11 @@ public class IntuitInterceptorProvider implements Callable<Void> {
5354
* variable intuitMessage
5455
*/
5556
private IntuitMessage intuitMessage = null;
57+
58+
/**
59+
* Manual configuration properties to be used while executing the interceptors in async mode.
60+
*/
61+
private Configuration configuration = null;
5662

5763
/**
5864
* Constructor IntuitInterceptorProvider
@@ -116,6 +122,7 @@ protected void executeResponseInterceptors(final IntuitMessage intuitMessage) th
116122
*/
117123
public void executeAsyncInterceptors(final IntuitMessage intuitMessage) {
118124
this.intuitMessage = intuitMessage;
125+
this.configuration = Config.cloneConfigurationOverrides();
119126
ExecutorService executorService = Executors.newSingleThreadExecutor();
120127
executorService.submit(this);
121128
}
@@ -138,6 +145,8 @@ private Interceptor getConnectionInterceptor() {
138145
public Void call() throws FMSException {
139146
CallbackMessage callbackMessage = new CallbackMessage();
140147
try {
148+
// add configuration properties from the caller thread
149+
Config.addConfigurationOverrides(configuration);
141150
executeInterceptors(intuitMessage);
142151
} catch (FMSException e) {
143152
callbackMessage.setFMSException(e);

ipp-v3-java-devkit/src/main/java/com/intuit/ipp/util/Config.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
package com.intuit.ipp.util;
1717

1818
import org.apache.commons.configuration.CompositeConfiguration;
19+
import org.apache.commons.configuration.Configuration;
20+
import org.apache.commons.configuration.ConfigurationUtils;
1921
import org.apache.commons.configuration.ConfigurationException;
2022
import org.apache.commons.configuration.EnvironmentConfiguration;
2123
import org.apache.commons.configuration.XMLConfiguration;
@@ -273,4 +275,24 @@ public static Boolean getBooleanProperty(String key, Boolean defaultValue) {
273275
return Boolean.parseBoolean(value);
274276
}
275277

278+
/**
279+
* Returns a copy of manual configuration overrides. This implementation will create a deep
280+
* clone, i.e. all manual configurations contained in this composite will also be
281+
* cloned.
282+
*
283+
* @return the copy
284+
*/
285+
public static Configuration cloneConfigurationOverrides(){
286+
return ConfigurationUtils
287+
.cloneConfiguration(local.get().cc.getInMemoryConfiguration());
288+
}
289+
290+
/**
291+
* Adds given manual configuration overrides to the {@link CompositeConfiguration} stored in ThreadLocal.
292+
* @param configuration The configuration to add.
293+
*/
294+
public static void addConfigurationOverrides(Configuration configuration){
295+
ConfigurationUtils.copy(configuration, local.get().cc);
296+
}
297+
276298
}

0 commit comments

Comments
 (0)