You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2009/07/22 14:16:23 UTC
svn commit: r796685 - in /camel/trunk/components/camel-web/src/main:
java/org/apache/camel/web/model/ java/org/apache/camel/web/resources/
java/org/apache/camel/web/util/
webapp/org/apache/camel/web/resources/RouteResource/
Author: janstey
Date: Wed Jul 22 12:16:22 2009
New Revision: 796685
URL: http://svn.apache.org/viewvc?rev=796685&view=rev
Log:
CAMEL-1392 - Latest contribution from Xueqiang. Thanks!
1. javascript for avoiding to re-build a route without any changes;
2. encoder the endpoint URI (see CAMEL-1839)
Added:
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java (with props)
Modified:
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/model/EndpointLink.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java
camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/web/resources/RouteResource/edit.jsp
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/model/EndpointLink.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/model/EndpointLink.java?rev=796685&r1=796684&r2=796685&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/model/EndpointLink.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/model/EndpointLink.java Wed Jul 22 12:16:22 2009
@@ -22,6 +22,7 @@
import javax.xml.bind.annotation.XmlRootElement;
import org.apache.camel.Endpoint;
+import org.apache.camel.web.util.UriCharactersEncoder;
/**
* @version $Revision$
@@ -81,8 +82,7 @@
protected String createHref(String uri) {
// must not include :// in endpoint link
// TODO: might need to use org.apache.camel.util.UnsafeUriCharactersEncoder to safely encode URI for the web
- String href = uri.contains("://") ? uri.replace("://", ":") : uri;
- return "/endpoints/" + href;
+ return "/endpoints/" + UriCharactersEncoder.encode(uri);
}
}
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java?rev=796685&r1=796684&r2=796685&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java Wed Jul 22 12:16:22 2009
@@ -184,9 +184,15 @@
// TODO replace the Form class with an injected bean?
String language = formData.getFirst("language", String.class);
String body = formData.getFirst("route", String.class);
+ String edited = formData.getFirst("edited", String.class);
+
+ if (edited.equals("false")) {
+ return Response.seeOther(new URI("/routes")).build();
+ }
if (LOG.isDebugEnabled()) {
LOG.debug("new Route is: " + body);
}
+
LOG.info(body);
if (body == null) {
error = "No Route submitted!";
Added: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java?rev=796685&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java (added)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java Wed Jul 22 12:16:22 2009
@@ -0,0 +1,101 @@
+/**
+ * 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.web.util;
+
+import java.io.UnsupportedEncodingException;
+import java.util.BitSet;
+
+import org.apache.camel.util.UnsafeUriCharactersEncoder;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ */
+public class UriCharactersEncoder {
+ private static BitSet unsafeCharacters;
+ private static final transient Log LOG = LogFactory.getLog(UriCharactersEncoder.class);
+ private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B',
+ 'C', 'D', 'E', 'F'};
+
+ static {
+ unsafeCharacters = new BitSet(256);
+ unsafeCharacters.set(' ');
+ unsafeCharacters.set('"');
+ unsafeCharacters.set('<');
+ unsafeCharacters.set('>');
+ unsafeCharacters.set('#');
+ unsafeCharacters.set('%');
+ unsafeCharacters.set('{');
+ unsafeCharacters.set('}');
+ unsafeCharacters.set('|');
+ unsafeCharacters.set('\\');
+ unsafeCharacters.set('^');
+ unsafeCharacters.set('~');
+ unsafeCharacters.set('[');
+ unsafeCharacters.set(']');
+ unsafeCharacters.set('`');
+ unsafeCharacters.set('/');
+ unsafeCharacters.set('$');
+ }
+
+ private UriCharactersEncoder() {
+ // util class
+ }
+
+ public static String encode(String s) {
+ int n = s.length();
+ if (n == 0) {
+ return s;
+ }
+
+ try {
+ // First check whether we actually need to encode
+ byte[] bytes = s.getBytes("UTF8");
+ for (int i = 0;;) {
+ if (unsafeCharacters.get(bytes[i])) {
+ break;
+ }
+ if (++i >= bytes.length) {
+ return s;
+ }
+ }
+
+ // okay there are some unsafe characters so we do need to encode
+ StringBuffer sb = new StringBuffer();
+ for (byte b : bytes) {
+ if (unsafeCharacters.get(b)) {
+ appendEscape(sb, b);
+ } else {
+ sb.append((char)b);
+ }
+ }
+ return sb.toString();
+ } catch (UnsupportedEncodingException e) {
+ LOG.error("Can't encoding the uri: ", e);
+ return null;
+ }
+ }
+
+ private static void appendEscape(StringBuffer sb, byte b) {
+ sb.append('%');
+ sb.append(HEX_DIGITS[(b >> 4) & 0x0f]);
+ sb.append(HEX_DIGITS[(b >> 0) & 0x0f]);
+ }
+
+}
Propchange: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/UriCharactersEncoder.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/web/resources/RouteResource/edit.jsp
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/web/resources/RouteResource/edit.jsp?rev=796685&r1=796684&r2=796685&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/web/resources/RouteResource/edit.jsp (original)
+++ camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/web/resources/RouteResource/edit.jsp Wed Jul 22 12:16:22 2009
@@ -30,8 +30,9 @@
</tr>
<tr>
<td colspan="2"><textarea id="route" name="route"
+ onchange="dojo.byId('edited').value = true;"
style="width: 800px; height: 300px; border: 10px solid #ddd; -moz-border-radius: 10px; -webkit-border-radius: 10px;">${it.routeDefinition}</textarea>
- </td>
+ <input id="edited" name="edited" type="hidden" value="false" /></td>
</tr>
</table>