From 5907c1389f144d01b66324e5e24a9fabc64e5b08 Mon Sep 17 00:00:00 2001 From: David Turanski Date: Tue, 5 Feb 2013 14:33:24 -0500 Subject: [PATCH] moved EnableGemfireFunction* annotations to config package and enhanced ForkUtils to handle spaces in file paths --- ...nFunctionExecutionConfigurationSource.java | 1 - .../EnableGemfireFunctionExecutions.java | 3 +- .../EnableGemfireFunctions.java | 3 +- .../data/gemfire/ForkUtil.java | 51 ++++++++++++++----- .../FunctionExecutionClientCacheTests.java | 1 - .../FunctionExecutionIntegrationTests.java | 1 - .../execution/FunctionIntegrationTests.java | 4 +- ...unctionIntegrationTests-server-context.xml | 2 +- 8 files changed, 42 insertions(+), 24 deletions(-) rename src/main/java/org/springframework/data/gemfire/function/{annotation => config}/EnableGemfireFunctionExecutions.java (94%) rename src/main/java/org/springframework/data/gemfire/function/{annotation => config}/EnableGemfireFunctions.java (89%) 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"> - +