Author: ivol37 at gmail.com
Date: Thu Jan 6 14:07:52 2011
New Revision: 569
Log:
[AMDATU-240] Fixed encoding issues in REST APIs. This was caused by the
additional dispatcher, which forwarded the request using a decoded URL
Modified:
trunk/amdatu-authorization/login-gadget/src/main/resources/jsp/LoginGadget.jsp
trunk/amdatu-authorization/useradmin-gadget/src/main/resources/static/js/useradmin.js
trunk/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkServletFilter.java
trunk/src/main/resources/shell/run.sh
trunk/src/main/resources/shell/startup.bat
Modified:
trunk/amdatu-authorization/login-gadget/src/main/resources/jsp/LoginGadget.jsp
==============================================================================
---
trunk/amdatu-authorization/login-gadget/src/main/resources/jsp/LoginGadget.jsp
(original)
+++
trunk/amdatu-authorization/login-gadget/src/main/resources/jsp/LoginGadget.jsp
Thu Jan 6 14:07:52 2011
@@ -84,8 +84,8 @@
function login() {
var postdata = {
- username : document.getElementById('username').value,
- password : document.getElementById('password').value
+ username : document.getElementById('username').value.to_rfc3986(),
+ password : document.getElementById('password').value.to_rfc3986()
};
var url = "${baseRestUrl}/login";
@@ -173,6 +173,16 @@
}
}
+ String.prototype.to_rfc3986 = function (){
+ var tmp = encodeURIComponent(this);
+ tmp = tmp.replace('!','%21');
+ tmp = tmp.replace('*','%2A');
+ tmp = tmp.replace('(','%28');
+ tmp = tmp.replace(')','%29');
+ tmp = tmp.replace("'",'%27');
+ return tmp;
+ }
+
getLoginStatus();
</script>
]]>
Modified:
trunk/amdatu-authorization/useradmin-gadget/src/main/resources/static/js/useradmin.js
==============================================================================
---
trunk/amdatu-authorization/useradmin-gadget/src/main/resources/static/js/useradmin.js
(original)
+++
trunk/amdatu-authorization/useradmin-gadget/src/main/resources/static/js/useradmin.js
Thu Jan 6 14:07:52 2011
@@ -184,7 +184,7 @@
if (response.rc == 200) {
// Role added successfully
showInfo(prefs.getMsg('member_added'));
- var url = escape(restUrl + "/groups/" + encodeURIComponent(selectedRole));
+ var url = escape(restUrl + "/groups/" + selectedRole.to_rfc3986());
loadRole(url, onRoleLoaded);
gadgets.window.adjustHeight();
} else if (response.rc == 304) {
@@ -200,7 +200,7 @@
if (response.rc == 200) {
// Member removed successfully
showInfo(prefs.getMsg('member_removed'));
- var url = escape(restUrl + "/groups/" + encodeURIComponent(selectedRole));
+ var url = escape(restUrl + "/groups/" + selectedRole.to_rfc3986());
loadRole(url, onRoleLoaded);
gadgets.window.adjustHeight();
} else if (response.rc == 304) {
@@ -221,15 +221,15 @@
}
function confirmDeleteMember(role) {
- var removeFromRole = encodeURIComponent(selectedRole);
- var removeRole = encodeURIComponent(unescape(role));
+ var removeFromRole = selectedRole.to_rfc3986();
+ var removeRole = unescape(role).to_rfc3986();
var url = "/rest/groups/" + removeFromRole + "/members/" + removeRole;
deleteMember(url, onMemberRemoved);
}
function onAddMember(role) {
- var addToRole = encodeURIComponent(selectedRole);
- var addRole = encodeURIComponent(unescape(role));
+ var addToRole = selectedRole.to_rfc3986();
+ var addRole = unescape(role).to_rfc3986();
if (addToBasicMembers) {
var url = "/rest/groups/" + addToRole + "/basicmembers/" + addRole;
} else {
@@ -249,7 +249,7 @@
function saveRole() {
var method = document.getElementById(currentView + "_method").value;
- var name = encodeURIComponent(document.getElementById(currentView +
"_name").value);
+ var name = document.getElementById(currentView + "_name").value.to_rfc3986();
if (currentView == "user") {
var newpassword = document.getElementById('password').value
@@ -380,6 +380,16 @@
loadRoles(url, onRolesLoadedForSelection);
}
+String.prototype.to_rfc3986 = function (){
+ var tmp = encodeURIComponent(this);
+ tmp = tmp.replace('!','%21');
+ tmp = tmp.replace('*','%2A');
+ tmp = tmp.replace('(','%28');
+ tmp = tmp.replace(')','%29');
+ tmp = tmp.replace("'",'%27');
+ return tmp;
+}
+
$(document).ready(function(){
loadRoles(restUrl + "/users?maxResults=5", onRolesLoaded);
});
Modified:
trunk/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkServletFilter.java
==============================================================================
---
trunk/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkServletFilter.java
(original)
+++
trunk/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkServletFilter.java
Thu Jan 6 14:07:52 2011
@@ -60,7 +60,7 @@
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
- String path = ((HttpServletRequest) request).getPathInfo();
+ String path = ((HttpServletRequest) request).getRequestURI();
// To prevent endless recursion we verify that the path doesn't start
with our target path. There is one
// situation in which this fails; the case that a rest service with
path 'example' also annotates one of
Modified: trunk/src/main/resources/shell/run.sh
==============================================================================
--- trunk/src/main/resources/shell/run.sh (original)
+++ trunk/src/main/resources/shell/run.sh Thu Jan 6 14:07:52 2011
@@ -9,5 +9,8 @@
# Felix property file
JAVA_OPTS="$JAVA_OPTS
-Dfelix.config.properties=file:conf/felix-config.properties"
+# Set encoding to UTF-8
+JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=utf-8"
+
# Run the platform...
-java $JAVA_OPTS -jar amdatu-system/org.apache.felix.main-2.0.5.jar
+java $JAVA_OPTS -jar amdatu-system/org.apache.felix.main-2.0.5.jar
Modified: trunk/src/main/resources/shell/startup.bat
==============================================================================
--- trunk/src/main/resources/shell/startup.bat (original)
+++ trunk/src/main/resources/shell/startup.bat Thu Jan 6 14:07:52 2011
@@ -7,5 +7,8 @@
rem Felix property file
set JAVA_OPTS=%JAVA_OPTS%
-Dfelix.config.properties=file:conf/felix-config.properties
-java %JAVA_OPTS% -jar amdatu-system/org.apache.felix.main-2.0.5.jar
+rem Set encoding to UTF-8
+set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=utf-8
+
+java %JAVA_OPTS% -jar amdatu-system/org.apache.felix.main-2.0.5.jar