Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use StandardCharsets. #2131

Merged
merged 6 commits into from
Aug 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -313,13 +313,13 @@ android {
jumboMode = true
javaMaxHeapSize "4g"
}
lintOptions {

lint {
abortOnError true
baseline file("lint-baseline.xml")
baseline file('lint-baseline.xml')
checkReleaseBuilds false
}

sourceSets {
String commonTestJava = 'src/testCommon/java'
String commonTestResources = 'src/testCommon/resources'
Expand Down Expand Up @@ -676,8 +676,8 @@ dependencies {
testImplementation 'xmlpull:xmlpull:1.1.3.1'
testImplementation 'net.sf.kxml:kxml2:2.3.0'
testImplementation 'org.robolectric:robolectric:4.10.3'
testImplementation 'androidx.test.ext:junit:1.1.5'
testImplementation 'androidx.test:rules:1.5.0'
testImplementation 'androidx.test.ext:junit:1.2.1'
testImplementation 'androidx.test:rules:1.6.1'
testImplementation "com.squareup.okhttp3:mockwebserver:$okHttpVersion"
testImplementation "pl.droidsonroids.yaml:snakeyaml:1.18-android"
testImplementation ("com.orhanobut:mockwebserverplus:1.0.0") {
Expand All @@ -686,15 +686,15 @@ dependencies {
testImplementation "androidx.work:work-testing:$work_version"

// Instrumentation tests
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test:rules:1.5.0'
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
androidTestImplementation 'androidx.test:rules:1.6.1'
androidTestImplementation "org.hamcrest:hamcrest-library:2.2"
androidTestImplementation "com.squareup.okhttp3:mockwebserver:$okHttpVersion"
androidTestImplementation "pl.droidsonroids.yaml:snakeyaml:1.18-android"
androidTestImplementation ("com.orhanobut:mockwebserverplus:1.0.0") {
exclude group: 'org.yaml', module: 'snakeyaml'
}
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.3.0'
androidTestImplementation "androidx.work:work-testing:$work_version"
}

Expand Down
3 changes: 1 addition & 2 deletions src/androidTest/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="de.blau.android.test" >
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Expand Down
3 changes: 1 addition & 2 deletions src/debug/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="de.blau.android" >
xmlns:tools="http://schemas.android.com/tools">

<!-- use this just for generating test coverage on Android 11 and higher
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> -->
Expand Down
1 change: 0 additions & 1 deletion src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="de.blau.android"
android:installLocation="auto"
android:versionCode="2905"
android:versionName="@string/app_version" >
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/de/blau/android/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -187,10 +187,15 @@ public class App extends Application implements android.app.Application.Activity
private ScheduledThreadPoolExecutor autosaveExecutor = new ScheduledThreadPoolExecutor(1);
private ScheduledFuture<?> autosaveFuture = null;

private static FSTConfiguration singletonConf;

@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);

singletonConf = FSTConfiguration.createAndroidDefaultConfiguration();
singletonConf.registerSerializer(TreeMap.class, new FSTMapSerializer(), true);
}

@Override
Expand Down Expand Up @@ -764,11 +769,6 @@ public static String getUserAgent() {
return userAgent;
}

private static FSTConfiguration singletonConf = FSTConfiguration.createAndroidDefaultConfiguration();
static {
singletonConf.registerSerializer(TreeMap.class, new FSTMapSerializer(), true);
}

/**
* Get the current serialisation singleton
*
Expand Down
13 changes: 9 additions & 4 deletions src/main/java/de/blau/android/LicenseViewer.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,19 @@

import java.io.InputStreamReader;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import de.blau.android.osm.OsmXml;

import java.nio.charset.StandardCharsets;

import de.blau.android.util.ConfigurationChangeAwareActivity;

/**
Expand Down Expand Up @@ -76,9 +80,10 @@ private String load(@NonNull String filename) {
* @param filename the name of the file
* @param builder the StringBuilder
*/
@SuppressLint("NewApi") // StandardCharsets is desugared for APIs < 19.
private void load(@NonNull String filename, @NonNull StringBuilder builder) {
builder.append("== " + filename + " ==\n");
try (InputStreamReader reader = new InputStreamReader(getAssets().open(filename), OsmXml.UTF_8)) {
builder.append("== ").append(filename).append(" ==\n");
try (InputStreamReader reader = new InputStreamReader(getAssets().open(filename), StandardCharsets.UTF_8)) {
int read = 0;
do {
char[] buf = new char[4096];
Expand All @@ -88,7 +93,7 @@ private void load(@NonNull String filename, @NonNull StringBuilder builder) {
}
} while (read > 0);
} catch (Exception e) {
builder.append("Error while loading file: " + e.getMessage());
builder.append("Error while loading file: ").append(e.getMessage());
}
builder.append("\n\n\n\n");
}
Expand Down
33 changes: 18 additions & 15 deletions src/main/java/de/blau/android/geocode/QueryPhoton.java
Original file line number Diff line number Diff line change
@@ -1,30 +1,32 @@
package de.blau.android.geocode;

import android.annotation.SuppressLint;
import android.net.Uri;
import android.util.Log;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.mapbox.geojson.Feature;
import com.mapbox.geojson.FeatureCollection;
import com.mapbox.geojson.Geometry;
import com.mapbox.geojson.Point;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.mapbox.geojson.Feature;
import com.mapbox.geojson.FeatureCollection;
import com.mapbox.geojson.Geometry;
import com.mapbox.geojson.Point;

import android.net.Uri;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;
import de.blau.android.App;
import de.blau.android.geocode.Search.SearchResult;
import de.blau.android.osm.OsmXml;
import de.blau.android.osm.ViewBox;
import de.blau.android.presets.Preset;
import de.blau.android.presets.PresetItem;
Expand Down Expand Up @@ -57,6 +59,7 @@ public QueryPhoton(@Nullable FragmentActivity activity, @NonNull String url, @Nu
super(activity, url, bbox);
}

@SuppressLint("NewApi") // StandardCharsets is desugared for APIs < 19.
@Override
protected List<SearchResult> doInBackground(String query) {
List<SearchResult> result = new ArrayList<>();
Expand All @@ -77,7 +80,7 @@ protected List<SearchResult> doInBackground(String query) {
if (searchCallResponse.isSuccessful()) {
try (ResponseBody responseBody = searchCallResponse.body(); InputStream inputStream = responseBody.byteStream()) {
if (inputStream != null) {
BufferedReader rd = new BufferedReader(new InputStreamReader(inputStream, Charset.forName(OsmXml.UTF_8))); // NOSONAR
BufferedReader rd = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
FeatureCollection fc = FeatureCollection.fromJson(FileUtil.readToString(rd));
for (Feature f : fc.features()) {
SearchResult searchResult = readPhotonResult(f);
Expand Down
7 changes: 4 additions & 3 deletions src/main/java/de/blau/android/layer/geojson/MapOverlay.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
Expand All @@ -32,6 +32,7 @@
import com.mapbox.turf.TurfException;
import com.mapbox.turf.TurfJoins;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
Expand Down Expand Up @@ -59,7 +60,6 @@
import de.blau.android.layer.StyleableFileLayer;
import de.blau.android.layer.StyleableLayer;
import de.blau.android.osm.BoundingBox;
import de.blau.android.osm.OsmXml;
import de.blau.android.osm.Server;
import de.blau.android.osm.ViewBox;
import de.blau.android.prefs.Preferences;
Expand Down Expand Up @@ -491,11 +491,12 @@ protected Boolean doInBackground(Void arg) {
* @return true if successful
* @throws IOException if reading the InputStream fails
*/
@SuppressLint("NewApi") // StandardCharsets is desugared for APIs < 19.
public boolean loadGeoJsonFile(@NonNull Context ctx, @NonNull InputStream is, boolean fromState) throws IOException {
boolean successful = false;
// don't draw while we are loading
setVisible(false);
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName(OsmXml.UTF_8))); // NOSONAR
BufferedReader rd = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
try {
String json = FileUtil.readToString(rd);
data = new RTree<>(2, 12);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand All @@ -24,6 +24,7 @@
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
Expand All @@ -39,7 +40,6 @@
import de.blau.android.contract.MimeTypes;
import de.blau.android.contract.Schemes;
import de.blau.android.dialogs.ImageInfo;
import de.blau.android.osm.OsmXml;
import de.blau.android.util.ExecutorTask;
import de.blau.android.util.FileUtil;
import de.blau.android.util.ImageLoader;
Expand Down Expand Up @@ -88,6 +88,7 @@ class MapillaryLoader extends ImageLoader {
this.ids = ids;
}

@SuppressLint("NewApi") // StandardCharsets is desugared for APIs < 19.
@Override
public void load(SubsamplingScaleImageView view, String key) {
File imageFile = new File(cacheDir, key + JPG);
Expand Down Expand Up @@ -125,7 +126,7 @@ public void load(SubsamplingScaleImageView view, String key) {
if (inputStream == null) {
throw new IOException("No InputStream");
}
JsonElement root = JsonParser.parseReader(new BufferedReader(new InputStreamReader(inputStream, Charset.forName(OsmXml.UTF_8))));
JsonElement root = JsonParser.parseReader(new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)));
if (!root.isJsonObject() || !((JsonObject) root).has(THUMB_2048_URL_FIELD)) {
throw new IOException("Unexpected / missing response");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package de.blau.android.net;

import android.annotation.SuppressLint;

import androidx.annotation.NonNull;

import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

import androidx.annotation.NonNull;

/*
* Copyright 2002-2020 the original author or authors.
*
Expand All @@ -32,10 +35,6 @@
* @author Rossen Stoyanchev
*/
public final class ContentDispositionFileNameParser {

private static final Charset US_ASCII = Charset.forName("US-ASCII");
private static final Charset UTF_8 = Charset.forName("UTF-8");
private static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1");
private static final String FILENAME_ATTR = "filename*";
private static final String INVALID_HEADER_FIELD_PARAMETER_FORMAT = "Invalid header field parameter format (as defined in RFC 5987)";

Expand All @@ -53,6 +52,7 @@ private ContentDispositionFileNameParser() {
* @return Return the value of the {@literal filename} parameter (or the value of the {@literal filename*} one
* decoded as defined in the RFC 5987), or {@code null} if not defined.
*/
@SuppressLint("NewApi") // StandardCharsets is desugared for APIs < 19.
public static String parse(@NonNull String contentDisposition) {
List<String> parts = tokenize(contentDisposition);
String filename = null;
Expand All @@ -69,13 +69,13 @@ public static String parse(@NonNull String contentDisposition) {
int idx2 = value.indexOf('\'', idx1 + 1);
if (idx1 != -1 && idx2 != -1) {
charset = Charset.forName(value.substring(0, idx1).trim());
if (!(UTF_8.equals(charset) || ISO_8859_1.equals(charset))) {
if (!(StandardCharsets.UTF_8.equals(charset) || StandardCharsets.ISO_8859_1.equals(charset))) {
throw new IllegalArgumentException("Charset should be UTF-8 or ISO-8859-1");
}
filename = decodeFilename(value.substring(idx2 + 1), charset);
} else {
// US ASCII
filename = decodeFilename(value, US_ASCII);
filename = decodeFilename(value, StandardCharsets.US_ASCII);
}
} else if (attribute.equals(FILENAME_ATTR) && (filename == null)) {
filename = value;
Expand Down
20 changes: 12 additions & 8 deletions src/main/java/de/blau/android/osm/DiscardedTags.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
package de.blau.android.osm;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.AssetManager;
import android.util.Log;

import androidx.annotation.NonNull;

import com.google.gson.stream.JsonReader;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;

import com.google.gson.stream.JsonReader;

import android.content.Context;
import android.content.res.AssetManager;
import android.util.Log;
import androidx.annotation.NonNull;

/**
* Tags that we want to remove before saving to server. List is in discarded.json from the iD repository
*
Expand All @@ -35,10 +38,11 @@ public class DiscardedTags {
*
* @param context Android Context
*/
@SuppressLint("NewApi") // StandardCharsets is desugared for APIs < 19.
public DiscardedTags(@NonNull Context context) {
Log.d(DEBUG_TAG, "Parsing configuration file");
AssetManager assetManager = context.getAssets();
try (InputStream is = assetManager.open(ASSET_FILE); JsonReader reader = new JsonReader(new InputStreamReader(is, OsmXml.UTF_8));) {
try (InputStream is = assetManager.open(ASSET_FILE); JsonReader reader = new JsonReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
reader.beginObject();
while (reader.hasNext()) {
redundantTags.add(reader.nextName());
Expand Down
Loading
Loading