[3/4] git commit: Adds usage of new urlRegex field in client side validation

2014-03-09 Thread lukaszlenart
Adds usage of new urlRegex field in client side validation


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/3f6ce657
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/3f6ce657
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/3f6ce657

Branch: refs/heads/feature/WW-4198-update-form-close
Commit: 3f6ce657da3ac6c133939bfcebb4e4e5f6bd2bc1
Parents: 3457a65
Author: Lukasz Lenart 
Authored: Sun Mar 9 21:02:27 2014 +0100
Committer: Lukasz Lenart 
Committed: Sun Mar 9 21:02:27 2014 +0100

--
 core/src/main/resources/template/xhtml/form-close-validate.ftl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/3f6ce657/core/src/main/resources/template/xhtml/form-close-validate.ftl
--
diff --git a/core/src/main/resources/template/xhtml/form-close-validate.ftl 
b/core/src/main/resources/template/xhtml/form-close-validate.ftl
index 81a17e1..f129156 100644
--- a/core/src/main/resources/template/xhtml/form-close-validate.ftl
+++ b/core/src/main/resources/template/xhtml/form-close-validate.ftl
@@ -120,7 +120,7 @@ END SNIPPET: supported-validators
 <#if validator.shortCircuit>continueValidation = false;
 }
 <#elseif validator.validatorType = "url">
-if (continueValidation && fieldValue != null && fieldValue.length 
> 0 && fieldValue.match("${validator.regex?js_string}")==null) {
+if (continueValidation && fieldValue != null && fieldValue.length 
> 0 && fieldValue.match("/${validator.urlRegex?js_string}/i")==null) {
 addError(field, error);
 errors = true;
 <#if validator.shortCircuit>continueValidation = false;



[1/4] git commit: Extends validator to allow set predefined regex used to validate URLs

2014-03-09 Thread lukaszlenart
Repository: struts
Updated Branches:
  refs/heads/feature/WW-4198-update-form-close [created] e66a30629


Extends validator to allow set predefined regex used to validate URLs


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/31be88af
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/31be88af
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/31be88af

Branch: refs/heads/feature/WW-4198-update-form-close
Commit: 31be88afa28fb9b1e9854d0d7673ab9b979cf9be
Parents: bcd61a0
Author: Lukasz Lenart 
Authored: Sun Mar 9 21:01:15 2014 +0100
Committer: Lukasz Lenart 
Committed: Sun Mar 9 21:01:15 2014 +0100

--
 .../validator/validators/URLValidator.java  | 46 ++
 .../xwork2/validator/URLValidatorTest.java  | 50 
 2 files changed, 96 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/31be88af/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
--
diff --git 
a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
 
b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
index b4a1287..4f63961 100644
--- 
a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
+++ 
b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
@@ -17,6 +17,7 @@ package com.opensymphony.xwork2.validator.validators;
 
 import com.opensymphony.xwork2.validator.ValidationException;
 import com.opensymphony.xwork2.util.URLUtil;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * 
@@ -31,6 +32,8 @@ import com.opensymphony.xwork2.util.URLUtil;
  * 
  * 
  * fieldName - The field name this validator is validating. 
Required if using Plain-Validator Syntax otherwise not required
+ * urlRegexExpression - The regex defined as expression used 
to validate url. If not defined 'urlRegex' will be used instead
+ * urlRegex - The regex used to validate url. If not defined 
default regex will be used
  * 
  * 
  * 
@@ -62,6 +65,9 @@ import com.opensymphony.xwork2.util.URLUtil;
  */
 public class URLValidator extends FieldValidatorSupport {
 
+private String urlRegex;
+private String urlRegexExpression;
+
 public void validate(Object object) throws ValidationException {
 String fieldName = getFieldName();
 Object value = this.getFieldValue(fieldName, object);
@@ -72,8 +78,48 @@ public class URLValidator extends FieldValidatorSupport {
 return;
 }
 
+// FIXME deprecated! the same regex below should be used instead
+// replace logic with next major release
 if (!(value.getClass().equals(String.class)) || 
!URLUtil.verifyUrl((String) value)) {
 addFieldError(fieldName, object);
 }
 }
+
+/**
+ * This is used to support client-side validation, it's based on
+ * 
http://stackoverflow.com/questions/161738/what-is-the-best-regular-expression-to-check-if-a-string-is-a-valid-url
+ *
+ * @return regex to validate URLs
+ */
+public String getUrlRegex() {
+if (StringUtils.isNotEmpty(urlRegexExpression)) {
+return (String) parse(urlRegexExpression, String.class);
+} else if (StringUtils.isNotEmpty(urlRegex)) {
+return urlRegex;
+} else {
+return "^(https?|ftp):\\/\\/" +
+"(([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=-]|%[0-9a-f]{2})+" +
+
"(:([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=-]|%[0-9a-f]{2})+)?" +
+"@)?(#?" +
+")((([a-z0-9]\\.|[a-z0-9][a-z0-9-]*[a-z0-9]\\.)*" +
+"[a-z][a-z0-9-]*[a-z0-9]" +
+"|((\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])\\.){3}" +
+"(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])" +
+")(:\\d+)?" +
+
")(((\\/+([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)*" +
+
"(\\?([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)" +
+"?)?)?" +
+"(#([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)?" 
+
+"$";
+}
+}
+
+public void setUrlRegex(String urlRegex) {
+this.urlRegex = urlRegex;
+}
+
+public void setUrlRegexExpression(String urlRegexExpression) {
+this.urlRegexExpression = urlRegexExpression;
+}
+
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/31be88af/xwork-core/src/test/java/com/opensymphony/xwork2/validator/URLValidatorTest.java
--
diff --git 
a/xwork-co

[4/4] git commit: Extends annotation to support new URL regex parameters

2014-03-09 Thread lukaszlenart
Extends annotation to support new URL regex parameters


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/e66a3062
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/e66a3062
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/e66a3062

Branch: refs/heads/feature/WW-4198-update-form-close
Commit: e66a3062992fac588cf3f570a224bbe7d9ce5ef5
Parents: 3f6ce65
Author: Lukasz Lenart 
Authored: Sun Mar 9 21:04:11 2014 +0100
Committer: Lukasz Lenart 
Committed: Sun Mar 9 21:04:11 2014 +0100

--
 ...nnotationValidationConfigurationBuilder.java |  6 ++
 .../validator/annotations/UrlValidator.java | 74 +++-
 2 files changed, 16 insertions(+), 64 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/e66a3062/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java
--
diff --git 
a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java
 
b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java
index 6ab06a9..dbd8975 100644
--- 
a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java
+++ 
b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java
@@ -528,6 +528,12 @@ public class AnnotationValidationConfigurationBuilder {
 } else if (v.fieldName() != null && v.fieldName().length() > 0) {
 params.put("fieldName", v.fieldName());
 }
+if (StringUtils.isNotEmpty(v.urlRegex())) {
+params.put("urlRegex", v.urlRegex());
+}
+if (StringUtils.isNotEmpty(v.urlRegexExpression())) {
+params.put("urlRegexExpression", v.urlRegexExpression());
+}
 
 validatorFactory.lookupRegisteredValidatorType(validatorType);
 return new ValidatorConfig.Builder(validatorType)

http://git-wip-us.apache.org/repos/asf/struts/blob/e66a3062/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/UrlValidator.java
--
diff --git 
a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/UrlValidator.java
 
b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/UrlValidator.java
index fb6fa3c..a06db12 100644
--- 
a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/UrlValidator.java
+++ 
b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/UrlValidator.java
@@ -22,75 +22,12 @@ import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
 /**
- * 
  * This validator checks that a field is a valid URL.
- * 
- *
- *  Annotation usage:
- *
- * 
- * The annotation must be applied at method level.
- * 
- *
- *  Annotation parameters:
- *
- * 
- * 
- * 
- *  Parameter 
- *  Required 
- *  Default 
- *  Notes 
- * 
- * 
- * message
- * yes
- *  
- * field error message
- * 
- * 
- * key
- * no
- *  
- * i18n key from language specific properties 
file.
- * 
- * 
- * messageParams
- * no
- *  
- * Additional params to be used to customize message 
- will be evaluated against the Value Stack
- * 
- * 
- * fieldName
- * no
- *  
- *  
- * 
- * 
- * shortCircuit
- * no
- * false
- * If this validator should be used as 
shortCircuit.
- * 
- * 
- * type
- * yes
- * ValidatorType.FIELD
- * Enum value from ValidatorType. Either FIELD or 
SIMPLE can be used here.
- * 
- * 
- * 
- *
- *  Example code:
  *
  * 
- * 
  * @UrlValidator(message = "Default message", key = "i18n.key", 
shortCircuit = true)
- * 
  * 
  *
- * @author Rainer Hermanns
- * @version $Id$
  */
 @Target({ElementType.METHOD})
 @Retention(RetentionPolicy.RUNTIME)
@@ -121,7 +58,6 @@ public @interface UrlValidator {
  * If this is activated, the validator will be used as short-circuit.
  *
  * Adds the short-circuit="true" attribute value if true.
- *
  */
 boolean shortCircuit() default false;
 
@@ -130,4 +66,14 @@ public @interface UrlValidator {
  */
 ValidatorType type() default ValidatorType.FIELD;
 
+/**
+ * Defines regex to use to validate url
+ */
+String urlRegex() default "";
+
+/**
+ * Defines regex as an expression which will be evaluated to string and 
used to validate url
+ */
+String urlRegexExpression() default "";
+
 }



[2/4] git commit: Marks method as deprecated

2014-03-09 Thread lukaszlenart
Marks method as deprecated


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/3457a656
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/3457a656
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/3457a656

Branch: refs/heads/feature/WW-4198-update-form-close
Commit: 3457a656ba95539145ef3b19d254fe0129b4d187
Parents: 31be88a
Author: Lukasz Lenart 
Authored: Sun Mar 9 21:01:44 2014 +0100
Committer: Lukasz Lenart 
Committed: Sun Mar 9 21:01:44 2014 +0100

--
 xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java | 1 +
 1 file changed, 1 insertion(+)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/3457a656/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
--
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java 
b/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
index b9aaee7..160a5b9 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
@@ -33,6 +33,7 @@ public class URLUtil {
  * @param url The url string to verify.
  * @return a boolean indicating whether the URL seems to be incorrect.
  */
+@Deprecated
 public static boolean verifyUrl(String url) {
 if (LOG.isDebugEnabled()) {
 LOG.debug("Checking if url [#0] is valid", url);



git commit: Moves snippets to wiki

2014-03-09 Thread lukaszlenart
Repository: struts
Updated Branches:
  refs/heads/feature/WW-4198-update-form-close e66a30629 -> e58549065


Moves snippets to wiki


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/e5854906
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/e5854906
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/e5854906

Branch: refs/heads/feature/WW-4198-update-form-close
Commit: e585490656225f88dc28300b722ec38dcffbb6ba
Parents: e66a306
Author: Lukasz Lenart 
Authored: Sun Mar 9 21:22:28 2014 +0100
Committer: Lukasz Lenart 
Committed: Sun Mar 9 21:22:28 2014 +0100

--
 .../validator/annotations/UrlValidator.java |  2 --
 .../validator/validators/URLValidator.java  | 24 
 2 files changed, 26 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/e5854906/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/UrlValidator.java
--
diff --git 
a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/UrlValidator.java
 
b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/UrlValidator.java
index a06db12..9ad9223 100644
--- 
a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/UrlValidator.java
+++ 
b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/UrlValidator.java
@@ -13,7 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.opensymphony.xwork2.validator.annotations;
 
 import java.lang.annotation.ElementType;
@@ -27,7 +26,6 @@ import java.lang.annotation.Target;
  * 
  * @UrlValidator(message = "Default message", key = "i18n.key", 
shortCircuit = true)
  * 
- *
  */
 @Target({ElementType.METHOD})
 @Retention(RetentionPolicy.RUNTIME)

http://git-wip-us.apache.org/repos/asf/struts/blob/e5854906/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
--
diff --git 
a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
 
b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
index 4f63961..767416d 100644
--- 
a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
+++ 
b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/URLValidator.java
@@ -20,28 +20,9 @@ import com.opensymphony.xwork2.util.URLUtil;
 import org.apache.commons.lang3.StringUtils;
 
 /**
- * 
- * 
  * URLValidator checks that a given field is a String and a valid URL
- * 
- * 
- * 
- * 
- * 
- * 
- * 
- * 
- * fieldName - The field name this validator is validating. 
Required if using Plain-Validator Syntax otherwise not required
- * urlRegexExpression - The regex defined as expression used 
to validate url. If not defined 'urlRegex' will be used instead
- * urlRegex - The regex used to validate url. If not defined 
default regex will be used
- * 
- * 
- * 
- *
- * 
  *
  * 
- * 
  * 
  *  
  *  
@@ -56,12 +37,7 @@ import org.apache.commons.lang3.StringUtils;
  *  
  *  
  * 
- * 
  * 
- *
- *
- * @author $Author$
- * @version $Date$ $Revision$
  */
 public class URLValidator extends FieldValidatorSupport {
 



[2/2] git commit: Extends logic how protocol part of url is extracted

2014-03-09 Thread lukaszlenart
Extends logic how protocol part of url is extracted


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/1ca55b8a
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/1ca55b8a
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/1ca55b8a

Branch: refs/heads/feature/WW-4187-correctly-identify-protocols
Commit: 1ca55b8a79cc118128391bddd3b776024def79f8
Parents: 4b7d2e3
Author: Lukasz Lenart 
Authored: Sun Mar 9 21:57:58 2014 +0100
Committer: Lukasz Lenart 
Committed: Sun Mar 9 21:57:58 2014 +0100

--
 .../dispatcher/ServletRedirectResult.java   | 26 +---
 1 file changed, 22 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/1ca55b8a/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
--
diff --git 
a/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java 
b/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
index 038d8c3..9820295 100644
--- 
a/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
+++ 
b/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
@@ -37,9 +37,8 @@ import org.apache.struts2.views.util.UrlHelper;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
 import java.net.URI;
-import java.net.URLConnection;
 import java.util.*;
 
 import static javax.servlet.http.HttpServletResponse.SC_FOUND;
@@ -273,9 +272,28 @@ public class ServletRedirectResult extends 
StrutsResultSupport implements Reflec
  */
 protected boolean isPathUrl(String url) {
 try {
-return URI.create(url).getScheme() == null;
+URI uri = URI.create(url);
+if (uri.isAbsolute()) {
+uri.toURL();
+if (LOG.isDebugEnabled()) {
+LOG.debug("[#0] is full url, not a path", url);
+}
+return true;
+} else {
+if (LOG.isDebugEnabled()) {
+LOG.debug("[#0] isn't absolute URI, assuming it's a path", 
url);
+}
+return false;
+}
 } catch (IllegalArgumentException e) {
-LOG.debug("[#0] isn't a valid URL", e, url);
+if (LOG.isDebugEnabled()) {
+LOG.debug("[#0] isn't a valid URL, assuming it's a path", e, 
url);
+}
+return false;
+} catch (MalformedURLException e) {
+if (LOG.isDebugEnabled()) {
+LOG.debug("[#0] isn't a valid URL, assuming it's a path", e, 
url);
+}
 return false;
 }
 }



[1/2] git commit: Uses URL class to check if location is path or full url

2014-03-09 Thread lukaszlenart
Repository: struts
Updated Branches:
  refs/heads/feature/WW-4187-correctly-identify-protocols [created] 1ca55b8a7


Uses URL class to check if location is path or full url


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/4b7d2e35
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/4b7d2e35
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/4b7d2e35

Branch: refs/heads/feature/WW-4187-correctly-identify-protocols
Commit: 4b7d2e35d09225a7c8b3b410588131b692b2730f
Parents: bcd61a0
Author: Lukasz Lenart 
Authored: Sun Mar 9 21:46:33 2014 +0100
Committer: Lukasz Lenart 
Committed: Sun Mar 9 21:46:33 2014 +0100

--
 .../dispatcher/ServletRedirectResult.java   | 23 ++--
 1 file changed, 16 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/struts/blob/4b7d2e35/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
--
diff --git 
a/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java 
b/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
index abc69eb..038d8c3 100644
--- 
a/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
+++ 
b/core/src/main/java/org/apache/struts2/dispatcher/ServletRedirectResult.java
@@ -37,6 +37,9 @@ import org.apache.struts2.views.util.UrlHelper;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URI;
+import java.net.URLConnection;
 import java.util.*;
 
 import static javax.servlet.http.HttpServletResponse.SC_FOUND;
@@ -262,13 +265,19 @@ public class ServletRedirectResult extends 
StrutsResultSupport implements Reflec
 
 }
 
-private boolean isPathUrl(String url) {
-// filter out "http:", "https:", "mailto:";, "file:", "ftp:"
-return !url.startsWith("http:")
-&& !url.startsWith("https:")
-&& !url.startsWith("mailto:";)
-&& !url.startsWith("file:")
-&& !url.startsWith("ftp:");
+/**
+ * Checks if url is simple path or either full url
+ *
+ * @param url string
+ * @return true if it's just a path not a full url
+ */
+protected boolean isPathUrl(String url) {
+try {
+return URI.create(url).getScheme() == null;
+} catch (IllegalArgumentException e) {
+LOG.debug("[#0] isn't a valid URL", e, url);
+return false;
+}
 }
 
 /**



[CONF] Confluence Changes in the last 24 hours

2014-03-09 Thread Anonymous (Confluence)
















  Confluence Changes in the last 24 hours  




 Apache Ambari 

Pages

 Page: Adding a New Service to an Existing Cluster edited by Sumit Mohanty [06:18 PM] (View Changes) 


 Apache Camel 

Pages

 Page: Camel 1.6.1 Release edited by Christian Mueller [11:20 PM] (View Changes) 
 Page: Camel 1.6.0 Release edited by Christian Mueller [11:17 PM] (View Changes) 
 Page: Camel 2.0.0 Release edited by Christian Mueller [11:16 PM] (View Changes) 
 Page: Camel 2.1.0 Release edited by Christian Mueller [11:14 PM] (View Changes) 
 Page: Camel 2.2.0 Release edited by Christian Mueller [11:12 PM] (View Changes) 
 Page: Camel 2.3.0 Release edited by Christian Mueller [11:10 PM] (View Changes) 
 Page: Camel 2.4.0 Release edited by Christian Mueller [11:09 PM] (View Changes) 
 Page: Camel 2.5.0 Release edited by Christian Mueller [11:07 PM] (View Changes) 
 Page: Camel 2.6.0 Release edited by Christian Mueller [11:05 PM] (View Changes) 
 Page: Camel 2.7.5 Release edited by Christian Mueller [11:02 PM] (View Changes) 
 Page: Camel 2.7.4 Release edited by Christian Mueller [11:00 PM] (View Changes) 
 Page: Camel 2.7.3 Release edited by Christian Mueller [10:58 PM] (View Changes) 
 Page: Camel 2.7.2 Release edited by Christian Mueller [10:56 PM] (View Changes) 
 Page: Camel 2.7.1 Release edited by Christian Mueller [10:50 PM] (View Changes) 
 Page: Camel 2.7.0 Release edited by Christian Mueller [10:46 PM] (View Changes) 
 Page: Camel 2.8.6 Release edited by Christian Mueller [10:26 PM] (View Changes) 
 Page: Camel 2.8.5 Release edited by Christian Mueller [10:24 PM] (View Changes) 
 Page: Camel 2.8.4 Release edited by Christian Mueller [10:23 PM] (View Changes) 
 Page: Camel 2.8.3 Release edited by Christian Mueller [10:22 PM] (View Changes) 
 Page: Camel 2.8.2 Release edited by Christian Mueller [10:20 PM] (View Changes) 
 Page: Camel 2.8.1 Release edited by Christian Mueller [10:19 PM] (View Changes) 
 Page: Camel 2.8.0 Release edited by Christian Mueller [10:17 PM] (View Changes) 
 Page: Camel 2.9.8 Release edited by Christian Mueller [10:15 PM] (View Changes) 
 Page: Camel 2.9.7 Release edited by Christian Mueller [10:14 PM] (View Changes) 
 Page: Camel 2.9.6 Release edited by Christian Mueller [10:13 PM] (View Changes) 
 Page: Camel 2.9.5 Release edited by Christian Mueller [10:12 PM] (View Changes) 
 Page: Camel 2.9.4 Release edited by Christian Mueller [10:09 PM] (View Changes)