@@ -14,7 +14,6 @@ dependencies { | |||
compile 'com.google.protobuf:protobuf-java' | |||
compile 'com.squareup.okhttp3:okhttp' | |||
compile 'commons-io:commons-io' | |||
compileOnly 'com.google.code.findbugs:jsr305' | |||
compileOnly project(path: ':sonar-plugin-api', configuration: 'shadow') |
@@ -0,0 +1,67 @@ | |||
/* | |||
* SonarQube | |||
* Copyright (C) 2009-2019 SonarSource SA | |||
* mailto:info AT sonarsource DOT com | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 3 of the License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public License | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonarqube.ws; | |||
import static java.util.Objects.requireNonNull; | |||
/** | |||
* Extracted from org.apache.commons.io.FilenameUtils | |||
*/ | |||
public class FilenameUtils { | |||
private static final int NOT_FOUND = -1; | |||
private static final char EXTENSION_SEPARATOR = '.'; | |||
/** | |||
* The Unix separator character. | |||
*/ | |||
private static final char UNIX_SEPARATOR = '/'; | |||
/** | |||
* The Windows separator character. | |||
*/ | |||
private static final char WINDOWS_SEPARATOR = '\\'; | |||
private FilenameUtils() { | |||
// Only static methods here | |||
} | |||
public static String getExtension(String filename) { | |||
requireNonNull(filename); | |||
final int index = indexOfExtension(filename); | |||
if (index == NOT_FOUND) { | |||
return ""; | |||
} else { | |||
return filename.substring(index + 1); | |||
} | |||
} | |||
private static int indexOfExtension(String filename) { | |||
final int extensionPos = filename.lastIndexOf(EXTENSION_SEPARATOR); | |||
final int lastSeparator = indexOfLastSeparator(filename); | |||
return lastSeparator > extensionPos ? NOT_FOUND : extensionPos; | |||
} | |||
private static int indexOfLastSeparator(String filename) { | |||
final int lastUnixPos = filename.lastIndexOf(UNIX_SEPARATOR); | |||
final int lastWindowsPos = filename.lastIndexOf(WINDOWS_SEPARATOR); | |||
return Math.max(lastUnixPos, lastWindowsPos); | |||
} | |||
} |
@@ -22,7 +22,6 @@ package org.sonarqube.ws; | |||
import java.util.HashMap; | |||
import java.util.Locale; | |||
import java.util.Map; | |||
import org.apache.commons.io.FilenameUtils; | |||
import static org.sonarqube.ws.WsUtils.isNullOrEmpty; | |||
@@ -49,4 +49,5 @@ public class WsUtils { | |||
public static String nullToEmpty(@Nullable String string) { | |||
return string == null ? "" : string; | |||
} | |||
} |
@@ -25,7 +25,6 @@ import java.io.InputStream; | |||
import java.util.Collection; | |||
import javax.annotation.CheckForNull; | |||
import javax.annotation.Nullable; | |||
import org.apache.commons.io.IOUtils; | |||
import org.sonarqube.ws.MediaTypes; | |||
import static org.sonarqube.ws.WsUtils.checkArgument; | |||
@@ -54,9 +53,8 @@ public abstract class BaseService { | |||
public static <T extends Message> T convert(WsResponse response, Parser<T> parser) { | |||
try (InputStream byteStream = response.contentStream()) { | |||
byte[] bytes = IOUtils.toByteArray(byteStream); | |||
// HTTP header "Content-Type" is not verified. It may be different than protobuf. | |||
return parser.parseFrom(bytes); | |||
return parser.parseFrom(byteStream); | |||
} catch (Exception e) { | |||
throw new IllegalStateException("Fail to parse protobuf response of " + response.requestUrl(), e); | |||
} |
@@ -20,7 +20,6 @@ | |||
package org.sonarqube.ws.client; | |||
import java.io.ByteArrayInputStream; | |||
import java.io.IOException; | |||
import java.io.InputStream; | |||
import java.io.Reader; | |||
import java.io.StringReader; | |||
@@ -29,7 +28,6 @@ import java.nio.charset.StandardCharsets; | |||
import java.util.HashMap; | |||
import java.util.Map; | |||
import java.util.Optional; | |||
import org.apache.commons.io.IOUtils; | |||
import org.sonarqube.ws.MediaTypes; | |||
import static java.util.Objects.requireNonNull; | |||
@@ -41,7 +39,7 @@ public class MockWsResponse extends BaseResponse { | |||
private int code = HttpURLConnection.HTTP_OK; | |||
private String requestUrl; | |||
private byte[] content; | |||
private final Map<String,String> headers = new HashMap<>(); | |||
private final Map<String, String> headers = new HashMap<>(); | |||
@Override | |||
public int code() { | |||
@@ -73,14 +71,6 @@ public class MockWsResponse extends BaseResponse { | |||
return this; | |||
} | |||
public MockWsResponse setContent(InputStream is) { | |||
try { | |||
return setContent(IOUtils.toByteArray(is)); | |||
} catch (IOException e) { | |||
throw new IllegalArgumentException(e); | |||
} | |||
} | |||
public MockWsResponse setContent(byte[] b) { | |||
this.content = b; | |||
return this; |