diff --git a/src/net/java/sip/communicator/plugin/provisioning/ProvisioningServiceImpl.java b/src/net/java/sip/communicator/plugin/provisioning/ProvisioningServiceImpl.java index 1ffae8c95..8a63586ce 100644 --- a/src/net/java/sip/communicator/plugin/provisioning/ProvisioningServiceImpl.java +++ b/src/net/java/sip/communicator/plugin/provisioning/ProvisioningServiceImpl.java @@ -376,15 +376,15 @@ private File retrieveConfigurationFile(String url) url = url.substring(0, url.indexOf('?')); } - String[] paramNames = null; - String[] paramValues = null; + ArrayList paramNames = null; + ArrayList paramValues = null; int usernameIx = -1; int passwordIx = -1; if(args != null && args.length > 0) { - paramNames = new String[args.length]; - paramValues = new String[args.length]; + paramNames = new ArrayList(args.length); + paramValues = new ArrayList(args.length); for(int i = 0; i < args.length; i++) { @@ -398,19 +398,30 @@ private File retrieveConfigurationFile(String url) if(s.indexOf(usernameParam) != -1) { s = s.replace(usernameParam, ""); - usernameIx = i; + usernameIx = paramNames.size(); } else if(s.indexOf(passwordParam) != -1) { s = s.replace(passwordParam, ""); - passwordIx = i; + passwordIx = paramNames.size(); } int equalsIndex = s.indexOf("="); - if (equalsIndex > 0) + if (equalsIndex > -1) { - paramNames[i] = s.substring(0, equalsIndex); - paramValues[i] = s.substring(equalsIndex + 1); + paramNames.add(s.substring(0, equalsIndex)); + paramValues.add(s.substring(equalsIndex + 1)); + } + else + { + if(logger.isInfoEnabled()) + { + logger.info( + "Invalid provisioning request parameter: \"" + + s + "\", is replaced by \"" + s + "=\""); + } + paramNames.add(s); + paramValues.add(""); } } } diff --git a/src/net/java/sip/communicator/service/httputil/HttpUtils.java b/src/net/java/sip/communicator/service/httputil/HttpUtils.java index 7c9f18e1c..2b92f3e14 100644 --- a/src/net/java/sip/communicator/service/httputil/HttpUtils.java +++ b/src/net/java/sip/communicator/service/httputil/HttpUtils.java @@ -334,8 +334,8 @@ public static HTTPResponseResult postFile(String address, public static HTTPResponseResult postForm(String address, String usernamePropertyName, String passwordPropertyName, - String[] formParamNames, - String[] formParamValues, + ArrayList formParamNames, + ArrayList formParamValues, int usernameParamIx, int passwordParamIx) { @@ -437,8 +437,8 @@ private static HttpEntity postForm( String address, String usernamePropertyName, String passwordPropertyName, - String[] formParamNames, - String[] formParamValues, + ArrayList formParamNames, + ArrayList formParamValues, int usernameParamIx, int passwordParamIx) throws Throwable @@ -447,9 +447,9 @@ private static HttpEntity postForm( // retrieve their values Credentials creds = null; if(usernameParamIx != -1 - && usernameParamIx < formParamNames.length + && usernameParamIx < formParamNames.size() && passwordParamIx != -1 - && passwordParamIx < formParamNames.length) + && passwordParamIx < formParamNames.size()) { URL url = new URL(address); HTTPCredentialsProvider prov = (HTTPCredentialsProvider) @@ -477,23 +477,23 @@ private static HttpEntity postForm( // there can be no params if(formParamNames != null) { - for(int i = 0; i < formParamNames.length; i++) + for(int i = 0; i < formParamNames.size(); i++) { // we are on the username index, insert retrieved username value if(i == usernameParamIx && creds != null) { parameters.add(new BasicNameValuePair( - formParamNames[i], creds.getUserPrincipal().getName())); + formParamNames.get(i), creds.getUserPrincipal().getName())); }// we are on the password index, insert retrieved password val else if(i == passwordParamIx && creds != null) { parameters.add(new BasicNameValuePair( - formParamNames[i], creds.getPassword())); + formParamNames.get(i), creds.getPassword())); } else // common name value pair, all info is present { parameters.add(new BasicNameValuePair( - formParamNames[i], formParamValues[i])); + formParamNames.get(i), formParamValues.get(i))); } } }