blob: cb5cca97ffb03b98d369e836eb3dd11d28b547f5 [file] [log] [blame]
/*****************************************************************
* 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
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* 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.cayenne.rop;
import java.util.Map;
public class ROPUtil {
public static String getLogConnect(String url, String username, boolean password) {
return getLogConnect(url, username, password, null);
}
public static String getLogConnect(String url, String username, boolean password, String sharedSessionName) {
StringBuilder log = new StringBuilder("Connecting to [");
if (username != null) {
log.append(username);
if (password) {
log.append(":*******");
}
log.append("@");
}
log.append(url);
log.append("]");
if (sharedSessionName != null) {
log.append(" - shared session '").append(sharedSessionName).append("'");
} else {
log.append(" - dedicated session.");
}
return log.toString();
}
public static String getLogDisconnect(String url, String username, boolean password) {
StringBuilder log = new StringBuilder("Disconnecting from [");
if (username != null) {
log.append(username);
if (password) {
log.append(":*******");
}
log.append("@");
}
log.append(url);
log.append("]");
return log.toString();
}
public static String getParamsAsString(Map<String, String> params) {
StringBuilder urlParams = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
if (urlParams.length() > 0) {
urlParams.append('&');
}
urlParams.append(entry.getKey());
urlParams.append('=');
urlParams.append(entry.getValue());
}
return urlParams.toString();
}
public static String getBasicAuth(String username, String password) {
if (username != null && password != null) {
return "Basic " + base64(username + ":" + password);
}
return null;
}
/**
* Creates the Base64 value.
*/
public static String base64(String value) {
StringBuffer cb = new StringBuffer();
int i = 0;
for (i = 0; i + 2 < value.length(); i += 3) {
long chunk = (int) value.charAt(i);
chunk = (chunk << 8) + (int) value.charAt(i + 1);
chunk = (chunk << 8) + (int) value.charAt(i + 2);
cb.append(encode(chunk >> 18));
cb.append(encode(chunk >> 12));
cb.append(encode(chunk >> 6));
cb.append(encode(chunk));
}
if (i + 1 < value.length()) {
long chunk = (int) value.charAt(i);
chunk = (chunk << 8) + (int) value.charAt(i + 1);
chunk <<= 8;
cb.append(encode(chunk >> 18));
cb.append(encode(chunk >> 12));
cb.append(encode(chunk >> 6));
cb.append('=');
} else if (i < value.length()) {
long chunk = (int) value.charAt(i);
chunk <<= 16;
cb.append(encode(chunk >> 18));
cb.append(encode(chunk >> 12));
cb.append('=');
cb.append('=');
}
return cb.toString();
}
public static char encode(long d) {
d &= 0x3f;
if (d < 26)
return (char) (d + 'A');
else if (d < 52)
return (char) (d + 'a' - 26);
else if (d < 62)
return (char) (d + '0' - 52);
else if (d == 62)
return '+';
else
return '/';
}
}