diff --git a/src/main/java/org/springframework/data/gemfire/function/config/AnnotationFunctionExecutionConfigurationSource.java b/src/main/java/org/springframework/data/gemfire/function/config/AnnotationFunctionExecutionConfigurationSource.java
index efa2818c..a75d002c 100644
--- a/src/main/java/org/springframework/data/gemfire/function/config/AnnotationFunctionExecutionConfigurationSource.java
+++ b/src/main/java/org/springframework/data/gemfire/function/config/AnnotationFunctionExecutionConfigurationSource.java
@@ -27,7 +27,6 @@ import org.springframework.core.type.AnnotationMetadata;
import org.springframework.core.type.filter.AnnotationTypeFilter;
import org.springframework.core.type.filter.AssignableTypeFilter;
import org.springframework.core.type.filter.TypeFilter;
-import org.springframework.data.gemfire.function.annotation.EnableGemfireFunctionExecutions;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
diff --git a/src/main/java/org/springframework/data/gemfire/function/annotation/EnableGemfireFunctionExecutions.java b/src/main/java/org/springframework/data/gemfire/function/config/EnableGemfireFunctionExecutions.java
similarity index 94%
rename from src/main/java/org/springframework/data/gemfire/function/annotation/EnableGemfireFunctionExecutions.java
rename to src/main/java/org/springframework/data/gemfire/function/config/EnableGemfireFunctionExecutions.java
index 5e0c6787..123175c4 100644
--- a/src/main/java/org/springframework/data/gemfire/function/annotation/EnableGemfireFunctionExecutions.java
+++ b/src/main/java/org/springframework/data/gemfire/function/config/EnableGemfireFunctionExecutions.java
@@ -10,7 +10,7 @@
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
-package org.springframework.data.gemfire.function.annotation;
+package org.springframework.data.gemfire.function.config;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
@@ -21,7 +21,6 @@ import java.lang.annotation.Target;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Import;
-import org.springframework.data.gemfire.function.config.FunctionExecutionBeanDefinitionRegistrar;
/**
* Enables classpath scanning for interfaces annotated as GemFire function executions (function invocations).
diff --git a/src/main/java/org/springframework/data/gemfire/function/annotation/EnableGemfireFunctions.java b/src/main/java/org/springframework/data/gemfire/function/config/EnableGemfireFunctions.java
similarity index 89%
rename from src/main/java/org/springframework/data/gemfire/function/annotation/EnableGemfireFunctions.java
rename to src/main/java/org/springframework/data/gemfire/function/config/EnableGemfireFunctions.java
index b61be779..8f2f1ea7 100644
--- a/src/main/java/org/springframework/data/gemfire/function/annotation/EnableGemfireFunctions.java
+++ b/src/main/java/org/springframework/data/gemfire/function/config/EnableGemfireFunctions.java
@@ -10,7 +10,7 @@
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
-package org.springframework.data.gemfire.function.annotation;
+package org.springframework.data.gemfire.function.config;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
@@ -20,7 +20,6 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.context.annotation.Import;
-import org.springframework.data.gemfire.function.config.GemfireFunctionPostBeanProcessorRegistrar;
/**
*
diff --git a/src/test/java/org/springframework/data/gemfire/ForkUtil.java b/src/test/java/org/springframework/data/gemfire/ForkUtil.java
index 4ab4f224..505dbf25 100644
--- a/src/test/java/org/springframework/data/gemfire/ForkUtil.java
+++ b/src/test/java/org/springframework/data/gemfire/ForkUtil.java
@@ -23,6 +23,8 @@ import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.concurrent.atomic.AtomicBoolean;
+import org.springframework.util.StringUtils;
+
/**
* Utility for forking Java processes.
@@ -35,32 +37,55 @@ public class ForkUtil {
- public static OutputStream cloneJVM(String arguments) {
+ private static OutputStream cloneJVM(String arguments) {
String cp = System.getProperty("java.class.path");
String home = System.getProperty("java.home");
Process proc = null;
String sp = System.getProperty("file.separator");
String java = home + sp + "bin" + sp + "java";
- String argCp = " -cp " + cp;
-
-
- String cmd = java + argCp + " " + arguments;
+
+ String[] args = arguments.split("\\s+");
+ String[] cmd = new String[args.length + 3];
+ cmd[0]=java;
+ cmd[1]="-cp";
+ cmd[2]=cp;
+ for (int i=3; i< cmd.length; i++) {
+ cmd[i] = args[i-3];
+ }
+
try {
- //ProcessBuilder builder = new ProcessBuilder(cmd, argCp, argClass);
- //builder.redirectErrorStream(true);
- proc = Runtime.getRuntime().exec(cmd);
+ proc = Runtime.getRuntime().exec(cmd);
} catch (IOException ioe) {
- throw new IllegalStateException("Cannot start command " + cmd, ioe);
+ System.out.println("[FORK-ERROR] " + ioe.getMessage());
+ throw new IllegalStateException("Cannot start command " + StringUtils.arrayToDelimitedString(cmd," "), ioe);
}
- System.out.println("Started fork from command\n" + cmd);
+ System.out.println("Started fork from command\n" + StringUtils.arrayToDelimitedString(cmd," "));
final Process p = proc;
final BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ final BufferedReader er = new BufferedReader(new InputStreamReader(p.getErrorStream()));
final AtomicBoolean run = new AtomicBoolean(true);
- Thread reader = new Thread(new Runnable() {
+ new Thread(new Runnable() {
+ public void run() {
+ try {
+ String line = null;
+ do {
+ while ((line = er.readLine()) != null) {
+ System.out.println("[FORK-ERROR] " + line);
+ }
+ Thread.sleep(200);
+ } while (run.get());
+ } catch (Exception ex) {
+ // ignore and exit
+ }
+ }
+ }).start();
+
+
+ new Thread(new Runnable() {
public void run() {
try {
@@ -75,9 +100,7 @@ public class ForkUtil {
// ignore and exit
}
}
- });
-
- reader.start();
+ }).start();
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
diff --git a/src/test/java/org/springframework/data/gemfire/function/config/FunctionExecutionClientCacheTests.java b/src/test/java/org/springframework/data/gemfire/function/config/FunctionExecutionClientCacheTests.java
index 546a153b..655760d3 100644
--- a/src/test/java/org/springframework/data/gemfire/function/config/FunctionExecutionClientCacheTests.java
+++ b/src/test/java/org/springframework/data/gemfire/function/config/FunctionExecutionClientCacheTests.java
@@ -24,7 +24,6 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
-import org.springframework.data.gemfire.function.annotation.EnableGemfireFunctionExecutions;
import org.springframework.data.gemfire.function.execution.GemfireOnServerFunctionTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
diff --git a/src/test/java/org/springframework/data/gemfire/function/config/FunctionExecutionIntegrationTests.java b/src/test/java/org/springframework/data/gemfire/function/config/FunctionExecutionIntegrationTests.java
index 026123b5..afda9bf8 100644
--- a/src/test/java/org/springframework/data/gemfire/function/config/FunctionExecutionIntegrationTests.java
+++ b/src/test/java/org/springframework/data/gemfire/function/config/FunctionExecutionIntegrationTests.java
@@ -22,7 +22,6 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.data.gemfire.TestUtils;
-import org.springframework.data.gemfire.function.annotation.EnableGemfireFunctionExecutions;
import org.springframework.data.gemfire.function.config.two.TestOnRegionFunction;
import org.springframework.data.gemfire.function.execution.GemfireOnRegionFunctionTemplate;
import org.springframework.data.gemfire.function.execution.OnRegionFunctionProxyFactoryBean;
diff --git a/src/test/java/org/springframework/data/gemfire/function/execution/FunctionIntegrationTests.java b/src/test/java/org/springframework/data/gemfire/function/execution/FunctionIntegrationTests.java
index 4e87ff5f..f60111f7 100644
--- a/src/test/java/org/springframework/data/gemfire/function/execution/FunctionIntegrationTests.java
+++ b/src/test/java/org/springframework/data/gemfire/function/execution/FunctionIntegrationTests.java
@@ -53,8 +53,8 @@ public class FunctionIntegrationTests {
@BeforeClass
public static void startUp() throws Exception {
- ForkUtil.startCacheServer(SpringCacheServerProcess.class.getName() + " "
- + " /org/springframework/data/gemfire/function/execution/FunctionIntegrationTests-server-context.xml");
+ ForkUtil.startCacheServer(SpringCacheServerProcess.class.getName() +
+ " /org/springframework/data/gemfire/function/execution/FunctionIntegrationTests-server-context.xml");
}
@AfterClass
diff --git a/src/test/resources/org/springframework/data/gemfire/function/execution/FunctionIntegrationTests-server-context.xml b/src/test/resources/org/springframework/data/gemfire/function/execution/FunctionIntegrationTests-server-context.xml
index 183e8ce8..a00f671f 100644
--- a/src/test/resources/org/springframework/data/gemfire/function/execution/FunctionIntegrationTests-server-context.xml
+++ b/src/test/resources/org/springframework/data/gemfire/function/execution/FunctionIntegrationTests-server-context.xml
@@ -8,7 +8,7 @@
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
-
+