| /***************************************************************** |
| * 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 '/'; |
| } |
| |
| } |