You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dk...@apache.org on 2011/12/02 18:03:50 UTC

svn commit: r1209585 [9/22] - in /camel/trunk: ./ apache-camel/ buildingtools/ camel-core/ camel-core/src/main/java/org/apache/camel/ camel-core/src/main/java/org/apache/camel/api/management/ camel-core/src/main/java/org/apache/camel/builder/ camel-cor...

Modified: camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecException.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecException.java?rev=1209585&r1=1209584&r2=1209585&view=diff
==============================================================================
--- camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecException.java (original)
+++ camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecException.java Fri Dec  2 17:03:07 2011
@@ -1,42 +1,42 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on 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.apache.camel.component.exec;
-
-import org.apache.camel.RuntimeCamelException;
-
-/**
- * Exception thrown when there is an execution failure.
- */
-public class ExecException extends RuntimeCamelException {
-
-    private static final long serialVersionUID = 7808703605527644487L;
-
-    public ExecException() {
-    }
-
-    public ExecException(String message) {
-        super(message);
-    }
-
-    public ExecException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    public ExecException(Throwable cause) {
-        super(cause);
-    }
-}
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on 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.apache.camel.component.exec;
+
+import org.apache.camel.RuntimeCamelException;
+
+/**
+ * Exception thrown when there is an execution failure.
+ */
+public class ExecException extends RuntimeCamelException {
+
+    private static final long serialVersionUID = 7808703605527644487L;
+
+    public ExecException() {
+    }
+
+    public ExecException(String message) {
+        super(message);
+    }
+
+    public ExecException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public ExecException(Throwable cause) {
+        super(cause);
+    }
+}

Propchange: camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecProducer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecResult.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecResult.java?rev=1209585&r1=1209584&r2=1209585&view=diff
==============================================================================
--- camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecResult.java (original)
+++ camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecResult.java Fri Dec  2 17:03:07 2011
@@ -1,97 +1,97 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on 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.apache.camel.component.exec;
-
-import java.io.InputStream;
-import java.io.Serializable;
-
-import static org.apache.camel.util.ObjectHelper.notNull;
-
-/**
- * Value object, that represents the result of an {@link ExecCommand} execution.
- */
-public class ExecResult implements Serializable {
-
-    private static final long serialVersionUID = -2238558080056724637L;
-
-    private final ExecCommand command;
-
-    private final int exitValue;
-
-    private final InputStream stdout;
-
-    private final InputStream stderr;
-
-    /**
-     * Creates a <code>ExecResult</code> instance.
-     * 
-     * @param command A not-null reference of {@link ExecCommand}, that produced
-     *            the result.
-     * @param stdout InputStream with the stdout of the command executable. If
-     *            there was no stdout, the value must be <code>null</code>.
-     * @param stderr InputStream with the stderr of the command executable. If
-     *            there was no stderr, the value must be <code>null</code>.
-     * @param exitValue the exit value of the command executable.
-     */
-    public ExecResult(ExecCommand command, InputStream stdout, InputStream stderr, int exitValue) {
-        notNull(command, "command");
-        this.command = command;
-
-        this.stdout = stdout;
-        this.stderr = stderr;
-        this.exitValue = exitValue;
-    }
-
-    /**
-     * The executed command, that produced this result. The returned object is
-     * never <code>null</code>.
-     * 
-     * @return The executed command, that produced this result.
-     */
-    public ExecCommand getCommand() {
-        return command;
-    }
-
-    /**
-     * The exit value of the command executable.
-     * 
-     * @return The exit value of the command executable
-     */
-    public int getExitValue() {
-        return exitValue;
-    }
-
-    /**
-     * Returns the content of the standart output (stdout) of the executed
-     * command or <code>null</code>, if no output was produced in the stdout.
-     * 
-     * @return The standart output (stdout) of the command executable.
-     */
-    public InputStream getStdout() {
-        return stdout;
-    }
-
-    /**
-     * Returns the content of the standart error output (stderr) of the executed
-     * command or <code>null</code>, if no output was produced in the stderr.
-     * 
-     * @return The standart error output (stderr) of the command executable.
-     */
-    public InputStream getStderr() {
-        return stderr;
-    }
-}
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on 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.apache.camel.component.exec;
+
+import java.io.InputStream;
+import java.io.Serializable;
+
+import static org.apache.camel.util.ObjectHelper.notNull;
+
+/**
+ * Value object, that represents the result of an {@link ExecCommand} execution.
+ */
+public class ExecResult implements Serializable {
+
+    private static final long serialVersionUID = -2238558080056724637L;
+
+    private final ExecCommand command;
+
+    private final int exitValue;
+
+    private final InputStream stdout;
+
+    private final InputStream stderr;
+
+    /**
+     * Creates a <code>ExecResult</code> instance.
+     * 
+     * @param command A not-null reference of {@link ExecCommand}, that produced
+     *            the result.
+     * @param stdout InputStream with the stdout of the command executable. If
+     *            there was no stdout, the value must be <code>null</code>.
+     * @param stderr InputStream with the stderr of the command executable. If
+     *            there was no stderr, the value must be <code>null</code>.
+     * @param exitValue the exit value of the command executable.
+     */
+    public ExecResult(ExecCommand command, InputStream stdout, InputStream stderr, int exitValue) {
+        notNull(command, "command");
+        this.command = command;
+
+        this.stdout = stdout;
+        this.stderr = stderr;
+        this.exitValue = exitValue;
+    }
+
+    /**
+     * The executed command, that produced this result. The returned object is
+     * never <code>null</code>.
+     * 
+     * @return The executed command, that produced this result.
+     */
+    public ExecCommand getCommand() {
+        return command;
+    }
+
+    /**
+     * The exit value of the command executable.
+     * 
+     * @return The exit value of the command executable
+     */
+    public int getExitValue() {
+        return exitValue;
+    }
+
+    /**
+     * Returns the content of the standart output (stdout) of the executed
+     * command or <code>null</code>, if no output was produced in the stdout.
+     * 
+     * @return The standart output (stdout) of the command executable.
+     */
+    public InputStream getStdout() {
+        return stdout;
+    }
+
+    /**
+     * Returns the content of the standart error output (stderr) of the executed
+     * command or <code>null</code>, if no output was produced in the stderr.
+     * 
+     * @return The standart error output (stderr) of the command executable.
+     */
+    public InputStream getStderr() {
+        return stderr;
+    }
+}

Propchange: camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecResult.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecResultConverter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/impl/DefaultExecBinding.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/impl/DefaultExecCommandExecutor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/impl/ExecParseUtils.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/impl/ExecParseUtils.java?rev=1209585&r1=1209584&r2=1209585&view=diff
==============================================================================
--- camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/impl/ExecParseUtils.java (original)
+++ camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/impl/ExecParseUtils.java Fri Dec  2 17:03:07 2011
@@ -1,118 +1,118 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on 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.apache.camel.component.exec.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-/**
- * Utility class for parsing, used by the Camel Exec component.<br>
- * Note: the class should be dropped, when the the commons-exec library
- * implements similar functionality.
- */
-public final class ExecParseUtils {
-
-    public static final String WHITESPACE = " ";
-
-    public static final String QUOTE_CHAR = "\"";
-
-    private ExecParseUtils() {
-    }
-
-    /**
-     * Splits the input line string by {@link #WHITESPACE}. Supports quoting the
-     * white-spaces with a {@link #QUOTE_CHAR}. A quote itself can also be
-     * enclosed within #{@link #QUOTE_CHAR}#{@link #QUOTE_CHAR}. More than two
-     * double-quotes in a sequence is not allowed. Nested quotes are not
-     * allowed.<br>
-     * E.g. The string
-     * <code>"arg 1"  arg2<code> will return the tokens <code>arg 1</code>,
-     * <code>arg2</code><br>
-     * The string
-     * <code>""arg 1""  "arg2" arg 3<code> will return the tokens <code>"arg 1"</code>
-     * , <code>arg2</code>,<code>arg</code> and <code>3</code> <br>
-     * 
-     * @param input the input to split.
-     * @return a not-null list of tokens
-     */
-    public static List<String> splitToWhiteSpaceSeparatedTokens(String input) {
-        if (input == null) {
-            return new ArrayList<String>();
-        }
-        StringTokenizer tokenizer = new StringTokenizer(input.trim(), QUOTE_CHAR + WHITESPACE, true);
-        List<String> tokens = new ArrayList<String>();
-
-        StringBuilder quotedText = new StringBuilder();
-
-        while (tokenizer.hasMoreTokens()) {
-            String token = tokenizer.nextToken();
-            if (QUOTE_CHAR.equals(token)) {
-                // if we have a quote, add the next tokens to the quoted text
-                // until the quoting has finished
-                quotedText.append(QUOTE_CHAR);
-                String buffer = quotedText.toString();
-                if (isSingleQuoted(buffer) || isDoubleQuoted(buffer)) {
-                    tokens.add(buffer.substring(1, buffer.length() - 1));
-                    quotedText = new StringBuilder();
-                }
-            } else if (WHITESPACE.equals(token)) {
-                // a white space, if in quote, add the white space, otherwise
-                // skip it
-                if (quotedText.length() > 0) {
-                    quotedText.append(WHITESPACE);
-                }
-            } else {
-                if (quotedText.length() > 0) {
-                    quotedText.append(token);
-                } else {
-                    tokens.add(token);
-                }
-            }
-        }
-        if (quotedText.length() > 0) {
-            throw new IllegalArgumentException("Invalid quoting found in args " + quotedText);
-        }
-        return tokens;
-    }
-
-    /**
-     * Tests if the input is enclosed within {@link #QUOTE_CHAR} characters
-     * 
-     * @param input a not null String
-     * @return true if the regular expression is matched
-     */
-    protected static boolean isSingleQuoted(String input) {
-        if (input == null || input.trim().length() == 0) {
-            return false;
-        }
-        return input.matches("(^" + QUOTE_CHAR + "{1}([^" + QUOTE_CHAR + "]+)" + QUOTE_CHAR + "{1})");
-    }
-
-    /**
-     * Tests if the input is enclosed within a double-{@link #QUOTE_CHAR} string
-     * 
-     * @param input a not null String
-     * @return true if the regular expression is matched
-     */
-    protected static boolean isDoubleQuoted(String input) {
-        if (input == null || input.trim().length() == 0) {
-            return false;
-        }
-        return input.matches("(^" + QUOTE_CHAR + "{2}([^" + QUOTE_CHAR + "]+)" + QUOTE_CHAR + "{2})");
-    }
-}
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on 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.apache.camel.component.exec.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
+/**
+ * Utility class for parsing, used by the Camel Exec component.<br>
+ * Note: the class should be dropped, when the the commons-exec library
+ * implements similar functionality.
+ */
+public final class ExecParseUtils {
+
+    public static final String WHITESPACE = " ";
+
+    public static final String QUOTE_CHAR = "\"";
+
+    private ExecParseUtils() {
+    }
+
+    /**
+     * Splits the input line string by {@link #WHITESPACE}. Supports quoting the
+     * white-spaces with a {@link #QUOTE_CHAR}. A quote itself can also be
+     * enclosed within #{@link #QUOTE_CHAR}#{@link #QUOTE_CHAR}. More than two
+     * double-quotes in a sequence is not allowed. Nested quotes are not
+     * allowed.<br>
+     * E.g. The string
+     * <code>"arg 1"  arg2<code> will return the tokens <code>arg 1</code>,
+     * <code>arg2</code><br>
+     * The string
+     * <code>""arg 1""  "arg2" arg 3<code> will return the tokens <code>"arg 1"</code>
+     * , <code>arg2</code>,<code>arg</code> and <code>3</code> <br>
+     * 
+     * @param input the input to split.
+     * @return a not-null list of tokens
+     */
+    public static List<String> splitToWhiteSpaceSeparatedTokens(String input) {
+        if (input == null) {
+            return new ArrayList<String>();
+        }
+        StringTokenizer tokenizer = new StringTokenizer(input.trim(), QUOTE_CHAR + WHITESPACE, true);
+        List<String> tokens = new ArrayList<String>();
+
+        StringBuilder quotedText = new StringBuilder();
+
+        while (tokenizer.hasMoreTokens()) {
+            String token = tokenizer.nextToken();
+            if (QUOTE_CHAR.equals(token)) {
+                // if we have a quote, add the next tokens to the quoted text
+                // until the quoting has finished
+                quotedText.append(QUOTE_CHAR);
+                String buffer = quotedText.toString();
+                if (isSingleQuoted(buffer) || isDoubleQuoted(buffer)) {
+                    tokens.add(buffer.substring(1, buffer.length() - 1));
+                    quotedText = new StringBuilder();
+                }
+            } else if (WHITESPACE.equals(token)) {
+                // a white space, if in quote, add the white space, otherwise
+                // skip it
+                if (quotedText.length() > 0) {
+                    quotedText.append(WHITESPACE);
+                }
+            } else {
+                if (quotedText.length() > 0) {
+                    quotedText.append(token);
+                } else {
+                    tokens.add(token);
+                }
+            }
+        }
+        if (quotedText.length() > 0) {
+            throw new IllegalArgumentException("Invalid quoting found in args " + quotedText);
+        }
+        return tokens;
+    }
+
+    /**
+     * Tests if the input is enclosed within {@link #QUOTE_CHAR} characters
+     * 
+     * @param input a not null String
+     * @return true if the regular expression is matched
+     */
+    protected static boolean isSingleQuoted(String input) {
+        if (input == null || input.trim().length() == 0) {
+            return false;
+        }
+        return input.matches("(^" + QUOTE_CHAR + "{1}([^" + QUOTE_CHAR + "]+)" + QUOTE_CHAR + "{1})");
+    }
+
+    /**
+     * Tests if the input is enclosed within a double-{@link #QUOTE_CHAR} string
+     * 
+     * @param input a not null String
+     * @return true if the regular expression is matched
+     */
+    protected static boolean isDoubleQuoted(String input) {
+        if (input == null || input.trim().length() == 0) {
+            return false;
+        }
+        return input.matches("(^" + QUOTE_CHAR + "{2}([^" + QUOTE_CHAR + "]+)" + QUOTE_CHAR + "{2})");
+    }
+}

Propchange: camel/trunk/components/camel-exec/src/main/java/org/apache/camel/component/exec/impl/ExecParseUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: camel/trunk/components/camel-exec/src/main/resources/META-INF/LICENSE.txt
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-exec/src/main/resources/META-INF/LICENSE.txt?rev=1209585&r1=1209584&r2=1209585&view=diff
==============================================================================
--- camel/trunk/components/camel-exec/src/main/resources/META-INF/LICENSE.txt (original)
+++ camel/trunk/components/camel-exec/src/main/resources/META-INF/LICENSE.txt Fri Dec  2 17:03:07 2011
@@ -1,203 +1,203 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on 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.
-
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on 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.
+

Propchange: camel/trunk/components/camel-exec/src/main/resources/META-INF/LICENSE.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-exec/src/main/resources/META-INF/LICENSE.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: camel/trunk/components/camel-exec/src/main/resources/META-INF/NOTICE.txt
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-exec/src/main/resources/META-INF/NOTICE.txt?rev=1209585&r1=1209584&r2=1209585&view=diff
==============================================================================
--- camel/trunk/components/camel-exec/src/main/resources/META-INF/NOTICE.txt (original)
+++ camel/trunk/components/camel-exec/src/main/resources/META-INF/NOTICE.txt Fri Dec  2 17:03:07 2011
@@ -1,11 +1,11 @@
-   =========================================================================
-   ==  NOTICE file corresponding to the section 4 d of                    ==
-   ==  the Apache License, Version 2.0,                                   ==
-   ==  in this case for the Apache Camel distribution.                    ==
-   =========================================================================
-
-   This product includes software developed by
-   The Apache Software Foundation (http://www.apache.org/).
-
-   Please read the different LICENSE files present in the licenses directory of
-   this distribution.
+   =========================================================================
+   ==  NOTICE file corresponding to the section 4 d of                    ==
+   ==  the Apache License, Version 2.0,                                   ==
+   ==  in this case for the Apache Camel distribution.                    ==
+   =========================================================================
+
+   This product includes software developed by
+   The Apache Software Foundation (http://www.apache.org/).
+
+   Please read the different LICENSE files present in the licenses directory of
+   this distribution.

Propchange: camel/trunk/components/camel-exec/src/main/resources/META-INF/NOTICE.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-exec/src/main/resources/META-INF/NOTICE.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: camel/trunk/components/camel-exec/src/test/java/org/apache/camel/component/exec/ExecEndpointTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-exec/src/test/java/org/apache/camel/component/exec/ExecEndpointTest.java?rev=1209585&r1=1209584&r2=1209585&view=diff
==============================================================================
--- camel/trunk/components/camel-exec/src/test/java/org/apache/camel/component/exec/ExecEndpointTest.java (original)
+++ camel/trunk/components/camel-exec/src/test/java/org/apache/camel/component/exec/ExecEndpointTest.java Fri Dec  2 17:03:07 2011
@@ -1,210 +1,210 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on 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.apache.camel.component.exec;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Component;
-import org.apache.camel.util.UnsafeUriCharactersEncoder;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
-
-import static org.apache.camel.component.exec.ExecEndpoint.NO_TIMEOUT;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-/**
- * Test the configuration of {@link ExecEndpoint}
- */
-@ContextConfiguration
-public class ExecEndpointTest extends AbstractJUnit4SpringContextTests {
-
-    @Autowired
-    private CamelContext camelContext;
-
-    @Autowired
-    private ExecBinding customBinding;
-
-    @Autowired
-    private ExecCommandExecutor customExecutor;
-
-    private Component component;
-
-    @Before
-    public void setUp() throws Exception {
-        component = camelContext.getComponent("exec");
-    }
-
-    @Test
-    @DirtiesContext
-    public void testValidComponentDescriptor() {
-        assertNotNull("The Camel Exec component can not be resolved", component);
-    }
-
-    @Test
-    @DirtiesContext
-    public void testCreateEndpointDefaultConf() throws Exception {
-        ExecEndpoint e = createExecEndpoint("exec:test");
-        assertTrue("The Camel Exec component must create instances of " + ExecEndpoint.class.getSimpleName(), e instanceof ExecEndpoint);
-        assertNull(e.getArgs());
-        assertNull(e.getWorkingDir());
-        assertNull(e.getOutFile());
-
-        assertEquals(NO_TIMEOUT, e.getTimeout());
-        assertEquals("test", e.getExecutable());
-        assertNotNull(e.getCommandExecutor());
-        assertNotNull(e.getBinding());
-    }
-
-    @Test
-    @DirtiesContext
-    public void testCreateEndpointDefaultNoTimeout() throws Exception {
-        ExecEndpoint e = createExecEndpoint("exec:test");
-        assertEquals(ExecEndpoint.NO_TIMEOUT, e.getTimeout());
-    }
-
-    @Test
-    @DirtiesContext
-    public void testCreateEndpointCustomBinding() throws Exception {
-        ExecEndpoint e = createExecEndpoint("exec:test?binding=#customBinding");
-        assertSame("Expected is the custom customBinding reference from the application context", customBinding, e.getBinding());
-    }
-
-    @Test
-    @DirtiesContext
-    public void testCreateEndpointCustomCommandExecutor() throws Exception {
-        ExecEndpoint e = createExecEndpoint("exec:test?commandExecutor=#customExecutor");
-        assertSame("Expected is the custom customExecutor reference from the application context", customExecutor, e.getCommandExecutor());
-    }
-
-    @Test
-    @DirtiesContext
-    public void testCreateEndpointWithArgs() throws Exception {
-        String args = "arg1 arg2 arg3";
-        // Need to properly encode the URI
-        ExecEndpoint e = createExecEndpoint("exec:test?args=" + args.replaceAll(" ", "+"));
-        assertEquals(args, e.getArgs());
-    }
-
-    @Test
-    @DirtiesContext
-    public void testCreateEndpointWithArgs2() throws Exception {
-        String args = "arg1 \"arg2 \" arg3";
-        ExecEndpoint e = createExecEndpoint("exec:test?args=" + UnsafeUriCharactersEncoder.encode(args));
-        assertEquals(args, e.getArgs());
-    }
-
-    @Test
-    @DirtiesContext
-    public void testCreateEndpointWithTimeout() throws Exception {
-        long timeout = 1999999L;
-        ExecEndpoint e = createExecEndpoint("exec:test?timeout=" + timeout);
-        assertEquals(timeout, e.getTimeout());
-    }
-
-    @Test
-    @DirtiesContext
-    public void testCreateEndpointWithOutFile() throws Exception {
-        String outFile = "output.txt";
-        ExecEndpoint e = createExecEndpoint("exec:test?outFile=" + outFile);
-        assertEquals(outFile, e.getOutFile());
-    }
-
-    @Test
-    @DirtiesContext
-    public void testCreateEndpointWithWorkingDir() throws Exception {
-        String workingDir = "/workingdir";
-        ExecEndpoint e = createExecEndpoint("exec:test?workingDir=" + workingDir);
-        assertEquals(workingDir, e.getWorkingDir());
-    }
-
-    @Test
-    @DirtiesContext
-    public void testCreateEndpointEscapedWorkingDir() throws Exception {
-        String cmd = "temp.exe";
-        String dir = "\"c:/program files/wokr/temp\"";
-        String uri = "exec:" + cmd + "?workingDir=" + dir;
-
-        ExecEndpoint endpoint = createExecEndpoint(UnsafeUriCharactersEncoder.encode(uri));
-        assertEquals(cmd, endpoint.getExecutable());
-        assertNull(endpoint.getArgs());
-        assertNotNull(endpoint.getCommandExecutor());
-
-        assertEquals(dir, endpoint.getWorkingDir());
-    }
-
-    @Test
-    @DirtiesContext
-    public void testCreateEndpointEscapedCommand() throws Exception {
-        String executable = "C:/Program Files/test/text.exe";
-        String uri = "exec:" + executable;
-
-        ExecEndpoint endpoint = createExecEndpoint(UnsafeUriCharactersEncoder.encode(uri));
-
-        assertNull(endpoint.getArgs());
-        assertNull(endpoint.getWorkingDir());
-        assertNotNull(endpoint.getCommandExecutor());
-
-        assertEquals(executable, endpoint.getExecutable());
-    }
-
-    @Test
-    @DirtiesContext
-    public void testCreateEndpointComposite() throws Exception {
-        String workingDir = "/workingdir";
-        String argsEscaped = "arg1 arg2 \"arg 3\"";
-        long timeout = 10000L;
-
-        String uri = "exec:executable.exe?workingDir=" + workingDir + "&timeout=" + timeout + "&args=" + argsEscaped;
-        ExecEndpoint e = createExecEndpoint(UnsafeUriCharactersEncoder.encode(uri));
-        assertEquals(workingDir, e.getWorkingDir());
-        assertEquals(argsEscaped, e.getArgs());
-        assertEquals(timeout, e.getTimeout());
-    }
-
-    @Test
-    @DirtiesContext
-    public void testCreateEndpointComposite2() throws Exception {
-        String workingDir = "/workingdir";
-        String outFile = "target/outfile.xml";
-        long timeout = 10000;
-        StringBuilder builder = new StringBuilder();
-        builder.append("exec:executable.exe").append("?workingDir=" + workingDir).append("&timeout=" + timeout);
-        builder.append("&outFile=" + outFile);
-        builder.append("&commandExecutor=#customExecutor&binding=#customBinding");
-
-        ExecEndpoint e = createExecEndpoint(UnsafeUriCharactersEncoder.encode(builder.toString()));
-        assertEquals(workingDir, e.getWorkingDir());
-        assertEquals(timeout, e.getTimeout());
-        assertEquals(outFile, e.getOutFile());
-        assertSame(customBinding, e.getBinding());
-        assertSame(customExecutor, e.getCommandExecutor());
-    }
-
-    private ExecEndpoint createExecEndpoint(String uri) throws Exception {
-        logger.debug("Using Exec endpoint URI " + uri);
-        return (ExecEndpoint)component.createEndpoint(uri);
-    }
-}
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on 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.apache.camel.component.exec;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Component;
+import org.apache.camel.util.UnsafeUriCharactersEncoder;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
+
+import static org.apache.camel.component.exec.ExecEndpoint.NO_TIMEOUT;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Test the configuration of {@link ExecEndpoint}
+ */
+@ContextConfiguration
+public class ExecEndpointTest extends AbstractJUnit4SpringContextTests {
+
+    @Autowired
+    private CamelContext camelContext;
+
+    @Autowired
+    private ExecBinding customBinding;
+
+    @Autowired
+    private ExecCommandExecutor customExecutor;
+
+    private Component component;
+
+    @Before
+    public void setUp() throws Exception {
+        component = camelContext.getComponent("exec");
+    }
+
+    @Test
+    @DirtiesContext
+    public void testValidComponentDescriptor() {
+        assertNotNull("The Camel Exec component can not be resolved", component);
+    }
+
+    @Test
+    @DirtiesContext
+    public void testCreateEndpointDefaultConf() throws Exception {
+        ExecEndpoint e = createExecEndpoint("exec:test");
+        assertTrue("The Camel Exec component must create instances of " + ExecEndpoint.class.getSimpleName(), e instanceof ExecEndpoint);
+        assertNull(e.getArgs());
+        assertNull(e.getWorkingDir());
+        assertNull(e.getOutFile());
+
+        assertEquals(NO_TIMEOUT, e.getTimeout());
+        assertEquals("test", e.getExecutable());
+        assertNotNull(e.getCommandExecutor());
+        assertNotNull(e.getBinding());
+    }
+
+    @Test
+    @DirtiesContext
+    public void testCreateEndpointDefaultNoTimeout() throws Exception {
+        ExecEndpoint e = createExecEndpoint("exec:test");
+        assertEquals(ExecEndpoint.NO_TIMEOUT, e.getTimeout());
+    }
+
+    @Test
+    @DirtiesContext
+    public void testCreateEndpointCustomBinding() throws Exception {
+        ExecEndpoint e = createExecEndpoint("exec:test?binding=#customBinding");
+        assertSame("Expected is the custom customBinding reference from the application context", customBinding, e.getBinding());
+    }
+
+    @Test
+    @DirtiesContext
+    public void testCreateEndpointCustomCommandExecutor() throws Exception {
+        ExecEndpoint e = createExecEndpoint("exec:test?commandExecutor=#customExecutor");
+        assertSame("Expected is the custom customExecutor reference from the application context", customExecutor, e.getCommandExecutor());
+    }
+
+    @Test
+    @DirtiesContext
+    public void testCreateEndpointWithArgs() throws Exception {
+        String args = "arg1 arg2 arg3";
+        // Need to properly encode the URI
+        ExecEndpoint e = createExecEndpoint("exec:test?args=" + args.replaceAll(" ", "+"));
+        assertEquals(args, e.getArgs());
+    }
+
+    @Test
+    @DirtiesContext
+    public void testCreateEndpointWithArgs2() throws Exception {
+        String args = "arg1 \"arg2 \" arg3";
+        ExecEndpoint e = createExecEndpoint("exec:test?args=" + UnsafeUriCharactersEncoder.encode(args));
+        assertEquals(args, e.getArgs());
+    }
+
+    @Test
+    @DirtiesContext
+    public void testCreateEndpointWithTimeout() throws Exception {
+        long timeout = 1999999L;
+        ExecEndpoint e = createExecEndpoint("exec:test?timeout=" + timeout);
+        assertEquals(timeout, e.getTimeout());
+    }
+
+    @Test
+    @DirtiesContext
+    public void testCreateEndpointWithOutFile() throws Exception {
+        String outFile = "output.txt";
+        ExecEndpoint e = createExecEndpoint("exec:test?outFile=" + outFile);
+        assertEquals(outFile, e.getOutFile());
+    }
+
+    @Test
+    @DirtiesContext
+    public void testCreateEndpointWithWorkingDir() throws Exception {
+        String workingDir = "/workingdir";
+        ExecEndpoint e = createExecEndpoint("exec:test?workingDir=" + workingDir);
+        assertEquals(workingDir, e.getWorkingDir());
+    }
+
+    @Test
+    @DirtiesContext
+    public void testCreateEndpointEscapedWorkingDir() throws Exception {
+        String cmd = "temp.exe";
+        String dir = "\"c:/program files/wokr/temp\"";
+        String uri = "exec:" + cmd + "?workingDir=" + dir;
+
+        ExecEndpoint endpoint = createExecEndpoint(UnsafeUriCharactersEncoder.encode(uri));
+        assertEquals(cmd, endpoint.getExecutable());
+        assertNull(endpoint.getArgs());
+        assertNotNull(endpoint.getCommandExecutor());
+
+        assertEquals(dir, endpoint.getWorkingDir());
+    }
+
+    @Test
+    @DirtiesContext
+    public void testCreateEndpointEscapedCommand() throws Exception {
+        String executable = "C:/Program Files/test/text.exe";
+        String uri = "exec:" + executable;
+
+        ExecEndpoint endpoint = createExecEndpoint(UnsafeUriCharactersEncoder.encode(uri));
+
+        assertNull(endpoint.getArgs());
+        assertNull(endpoint.getWorkingDir());
+        assertNotNull(endpoint.getCommandExecutor());
+
+        assertEquals(executable, endpoint.getExecutable());
+    }
+
+    @Test
+    @DirtiesContext
+    public void testCreateEndpointComposite() throws Exception {
+        String workingDir = "/workingdir";
+        String argsEscaped = "arg1 arg2 \"arg 3\"";
+        long timeout = 10000L;
+
+        String uri = "exec:executable.exe?workingDir=" + workingDir + "&timeout=" + timeout + "&args=" + argsEscaped;
+        ExecEndpoint e = createExecEndpoint(UnsafeUriCharactersEncoder.encode(uri));
+        assertEquals(workingDir, e.getWorkingDir());
+        assertEquals(argsEscaped, e.getArgs());
+        assertEquals(timeout, e.getTimeout());
+    }
+
+    @Test
+    @DirtiesContext
+    public void testCreateEndpointComposite2() throws Exception {
+        String workingDir = "/workingdir";
+        String outFile = "target/outfile.xml";
+        long timeout = 10000;
+        StringBuilder builder = new StringBuilder();
+        builder.append("exec:executable.exe").append("?workingDir=" + workingDir).append("&timeout=" + timeout);
+        builder.append("&outFile=" + outFile);
+        builder.append("&commandExecutor=#customExecutor&binding=#customBinding");
+
+        ExecEndpoint e = createExecEndpoint(UnsafeUriCharactersEncoder.encode(builder.toString()));
+        assertEquals(workingDir, e.getWorkingDir());
+        assertEquals(timeout, e.getTimeout());
+        assertEquals(outFile, e.getOutFile());
+        assertSame(customBinding, e.getBinding());
+        assertSame(customExecutor, e.getCommandExecutor());
+    }
+
+    private ExecEndpoint createExecEndpoint(String uri) throws Exception {
+        logger.debug("Using Exec endpoint URI " + uri);
+        return (ExecEndpoint)component.createEndpoint(uri);
+    }
+}

Propchange: camel/trunk/components/camel-exec/src/test/java/org/apache/camel/component/exec/ExecEndpointTest.java
------------------------------------------------------------------------------
    svn:eol-style = native