diff --git a/community/bolt/src/main/java/org/neo4j/bolt/v1/packstream/PackStream.java b/community/bolt/src/main/java/org/neo4j/bolt/v1/packstream/PackStream.java index 23403416d439d..a613f704daf76 100644 --- a/community/bolt/src/main/java/org/neo4j/bolt/v1/packstream/PackStream.java +++ b/community/bolt/src/main/java/org/neo4j/bolt/v1/packstream/PackStream.java @@ -20,7 +20,7 @@ package org.neo4j.bolt.v1.packstream; import java.io.IOException; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; /** * PackStream is a messaging serialisation format heavily inspired by MessagePack. @@ -155,8 +155,6 @@ public class PackStream private static final long MINUS_2_TO_THE_15 = -32768L; private static final long MINUS_2_TO_THE_31 = -2147483648L; - public static final Charset UTF_8 = Charset.forName( "UTF-8" ); - private PackStream() { } @@ -234,7 +232,7 @@ public void pack( String value ) throws IOException if ( value == null ) { packNull(); } else { - byte[] utf8 = value.getBytes( UTF_8 ); + byte[] utf8 = value.getBytes( StandardCharsets.UTF_8 ); packTextHeader( utf8.length ); packRaw( utf8 ); } @@ -500,7 +498,7 @@ public double unpackDouble() throws IOException public String unpackText() throws IOException { - return new String( unpackUTF8(), UTF_8 ); + return new String( unpackUTF8(), StandardCharsets.UTF_8 ); } private int unpackBytesHeader() throws IOException diff --git a/community/bolt/src/test/java/org/neo4j/bolt/v1/packstream/PackStreamTest.java b/community/bolt/src/test/java/org/neo4j/bolt/v1/packstream/PackStreamTest.java index 0ca828a3d9f11..bb773f5625fdd 100644 --- a/community/bolt/src/test/java/org/neo4j/bolt/v1/packstream/PackStreamTest.java +++ b/community/bolt/src/test/java/org/neo4j/bolt/v1/packstream/PackStreamTest.java @@ -42,8 +42,6 @@ import static org.hamcrest.Matchers.lessThanOrEqualTo; import static org.junit.Assert.assertEquals; -import static org.neo4j.bolt.v1.packstream.PackStream.UTF_8; - public class PackStreamTest { diff --git a/community/browser/src/test/java/org/neo4j/browser/CannedCypherExecutionTest.java b/community/browser/src/test/java/org/neo4j/browser/CannedCypherExecutionTest.java index 9dbb9fe0e83e5..5beb3cb7c56d0 100644 --- a/community/browser/src/test/java/org/neo4j/browser/CannedCypherExecutionTest.java +++ b/community/browser/src/test/java/org/neo4j/browser/CannedCypherExecutionTest.java @@ -19,8 +19,15 @@ */ package org.neo4j.browser; +import org.apache.commons.collections4.CollectionUtils; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.junit.Test; + import java.io.IOException; import java.net.URL; +import java.nio.charset.StandardCharsets; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; @@ -33,23 +40,15 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.commons.collections4.CollectionUtils; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; -import org.junit.Test; - import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Notification; import org.neo4j.graphdb.QueryExecutionException; import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.impl.notification.NotificationCode; import org.neo4j.io.fs.FileUtils; -import org.neo4j.kernel.impl.util.Charsets; import org.neo4j.test.TestGraphDatabaseFactory; import static java.lang.String.format; - import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.empty; @@ -87,7 +86,7 @@ public FileVisitResult visitFile( Path file, BasicFileAttributes attributes ) th String fileName = file.getFileName().toString(); if ( fileName.endsWith( ".html" ) ) { - String content = FileUtils.readTextFile( file.toFile(), Charsets.UTF_8 ); + String content = FileUtils.readTextFile( file.toFile(), StandardCharsets.UTF_8 ); Elements cypherElements = Jsoup.parse( content ).select( "pre.runnable" ) .not( ".standalone-example" ); for ( Element cypherElement : cypherElements ) diff --git a/community/csv/src/main/java/org/neo4j/csv/reader/Magic.java b/community/csv/src/main/java/org/neo4j/csv/reader/Magic.java index 0e0464b78810d..fda5f3c3626cf 100644 --- a/community/csv/src/main/java/org/neo4j/csv/reader/Magic.java +++ b/community/csv/src/main/java/org/neo4j/csv/reader/Magic.java @@ -25,6 +25,7 @@ import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -49,9 +50,9 @@ public class Magic /** A couple of BOM magics */ public static final Magic BOM_UTF_32_BE = define( "BOM_UTF_32_BE", forName( "UTF-32" ), 0x0, 0x0, 0xFE, 0xFF ); public static final Magic BOM_UTF_32_LE = define( "BOM_UTF_32_LE", forName( "UTF-32" ), 0xFF, 0xFE, 0x0, 0x0 ); - public static final Magic BOM_UTF_16_BE = define( "BOM_UTF_16_BE", forName( "UTF-16" ), 0xFE, 0xFF ); - public static final Magic BOM_UTF_16_LE = define( "BOM_UTF_16_LE", forName( "UTF-16" ), 0xFF, 0xFE ); - public static final Magic BOM_UTF_8 = define( "BOM_UTF8", forName( "UTF-8" ), 0xEF, 0xBB, 0xBF ); + public static final Magic BOM_UTF_16_BE = define( "BOM_UTF_16_BE", StandardCharsets.UTF_16BE, 0xFE, 0xFF ); + public static final Magic BOM_UTF_16_LE = define( "BOM_UTF_16_LE", StandardCharsets.UTF_16LE, 0xFF, 0xFE ); + public static final Magic BOM_UTF_8 = define( "BOM_UTF8", StandardCharsets.UTF_8, 0xEF, 0xBB, 0xBF ); /** * Defines a magic signature which can later be detected in {@link #of(File)} and {@link #of(byte[])}. diff --git a/community/csv/src/test/java/org/neo4j/csv/reader/ReadablesTest.java b/community/csv/src/test/java/org/neo4j/csv/reader/ReadablesTest.java index 4edb69140e55e..4626228434d74 100644 --- a/community/csv/src/test/java/org/neo4j/csv/reader/ReadablesTest.java +++ b/community/csv/src/test/java/org/neo4j/csv/reader/ReadablesTest.java @@ -32,20 +32,20 @@ import java.io.StringReader; import java.io.Writer; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.zip.GZIPOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import org.neo4j.test.TestDirectory; +import static java.util.Arrays.copyOfRange; import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; -import static java.util.Arrays.copyOfRange; - public class ReadablesTest { @Test @@ -148,13 +148,13 @@ public void shouldTrackPosition() throws Exception @Test public void shouldComplyWithUtf8CharsetForExample() throws Exception { - shouldComplyWithSpecifiedCharset( Charset.forName( "utf-8" ) ); + shouldComplyWithSpecifiedCharset( StandardCharsets.UTF_8 ); } @Test public void shouldComplyWithIso88591CharsetForExample() throws Exception { - shouldComplyWithSpecifiedCharset( Charset.forName( "iso-8859-1" ) ); + shouldComplyWithSpecifiedCharset( StandardCharsets.ISO_8859_1 ); } @Test diff --git a/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/spi/CSVResources.scala b/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/spi/CSVResources.scala index 12a5296bbd7bb..7cd246dc07d45 100644 --- a/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/spi/CSVResources.scala +++ b/community/cypher/cypher-compiler-3.0/src/main/scala/org/neo4j/cypher/internal/compiler/v3_0/spi/CSVResources.scala @@ -21,7 +21,7 @@ package org.neo4j.cypher.internal.compiler.v3_0.spi import java.io._ import java.net.{CookieHandler, CookieManager, CookiePolicy, URL} -import java.nio.charset.Charset +import java.nio.charset.StandardCharsets import java.nio.file.Paths import java.util.zip.{GZIPInputStream, InflaterInputStream} @@ -55,10 +55,10 @@ class CSVResources(cleaner: TaskCloser) extends ExternalResource { val inputStream = openStream(url) val reader = if (url.getProtocol == "file") { - Readables.files(Charset.forName("UTF-8"), Paths.get(url.toURI).toFile) + Readables.files(StandardCharsets.UTF_8, Paths.get(url.toURI).toFile) } else - Readables.wrap(inputStream, url.toString, Charset.forName("UTF-8")) + Readables.wrap(inputStream, url.toString, StandardCharsets.UTF_8) val delimiter: Char = fieldTerminator.map(_.charAt(0)).getOrElse(CSVResources.DEFAULT_FIELD_TERMINATOR) val seeker = CharSeekers.charSeeker(reader, CSVResources.defaultConfig, true) val extractor = new Extractors(delimiter).string() diff --git a/community/embedded-examples/src/main/java/org/neo4j/examples/Neo4jShell.java b/community/embedded-examples/src/main/java/org/neo4j/examples/Neo4jShell.java index 8871b7b5b9019..19dfc48264e06 100644 --- a/community/embedded-examples/src/main/java/org/neo4j/examples/Neo4jShell.java +++ b/community/embedded-examples/src/main/java/org/neo4j/examples/Neo4jShell.java @@ -20,6 +20,7 @@ import java.io.BufferedReader; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -97,7 +98,7 @@ private static String waitForUserInput( final String textToSystemOut ) throws Exception { System.out.print( textToSystemOut ); - return new BufferedReader( new InputStreamReader( System.in, "UTF-8" ) ) + return new BufferedReader( new InputStreamReader( System.in, StandardCharsets.UTF_8 ) ) .readLine(); } diff --git a/community/graphviz/src/main/java/org/neo4j/visualization/asciidoc/AsciidocHelper.java b/community/graphviz/src/main/java/org/neo4j/visualization/asciidoc/AsciidocHelper.java index f9a0dd688066d..3ce04459f0b49 100644 --- a/community/graphviz/src/main/java/org/neo4j/visualization/asciidoc/AsciidocHelper.java +++ b/community/graphviz/src/main/java/org/neo4j/visualization/asciidoc/AsciidocHelper.java @@ -22,6 +22,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import java.util.regex.Pattern; import org.neo4j.graphdb.GraphDatabaseService; @@ -155,9 +156,9 @@ public static String createGraphViz( String title, try { return "." + title + "\n[\"dot\", \"" - + (safeTitle + "-" + identifier).replace( " ", "-" ) - + ".svg\", \"neoviz\", \"" + graphvizOptions + "\"]\n" - + "----\n" + out.toString( "UTF-8" ) + "----\n"; + + (safeTitle + "-" + identifier).replace( " ", "-" ) + + ".svg\", \"neoviz\", \"" + graphvizOptions + "\"]\n" + + "----\n" + out.toString( StandardCharsets.UTF_8.name() ) + "----\n"; } catch ( UnsupportedEncodingException e ) { diff --git a/community/graphviz/src/main/java/org/neo4j/visualization/graphviz/ConfigurationParser.java b/community/graphviz/src/main/java/org/neo4j/visualization/graphviz/ConfigurationParser.java index 01a3b74f38780..c10dc1364e09c 100644 --- a/community/graphviz/src/main/java/org/neo4j/visualization/graphviz/ConfigurationParser.java +++ b/community/graphviz/src/main/java/org/neo4j/visualization/graphviz/ConfigurationParser.java @@ -24,9 +24,9 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -76,7 +76,7 @@ public ConfigurationParser( Iterable format ) try { method = type.getMethod( name, String.class ); - args = new String[] { parts[1] }; + args = new String[]{parts[1]}; } catch ( NoSuchMethodException nsm ) { @@ -126,7 +126,10 @@ public ConfigurationParser( Iterable format ) public final StyleParameter[] styles( StyleParameter... params ) { - if ( params == null ) params = new StyleParameter[0]; + if ( params == null ) + { + params = new StyleParameter[0]; + } StyleParameter[] result = styles.toArray( new StyleParameter[styles.size() + params.length] ); System.arraycopy( params, 0, result, styles.size(), params.length ); return result; @@ -159,11 +162,13 @@ public String getTitle( Relationship container ) public void nodePropertyFilter( String nodeProperties ) { final String nodePropertiesString = nodeProperties; - styles.add( new StyleParameter.NodePropertyFilter() { - public boolean acceptProperty(String key) { - return Arrays.asList(nodePropertiesString.split(",")).contains(key); - } - }); + styles.add( new StyleParameter.NodePropertyFilter() + { + public boolean acceptProperty( String key ) + { + return Arrays.asList( nodePropertiesString.split( "," ) ).contains( key ); + } + } ); } public void reverseOrder( String... typeNames ) @@ -242,18 +247,18 @@ private String getSpecial( String attribute, PropertyContainer container ) { if ( container instanceof Node ) { - return "" + ( (Node) container ).getId(); + return "" + ((Node) container).getId(); } else if ( container instanceof Relationship ) { - return "" + ( (Relationship) container ).getId(); + return "" + ((Relationship) container).getId(); } } else if ( attribute.equals( "type" ) ) { if ( container instanceof Relationship ) { - return ( (Relationship) container ).getType().name(); + return ((Relationship) container).getType().name(); } } return "@" + attribute; @@ -278,16 +283,13 @@ private static BufferedReader fileReader( File file ) { try { - return new BufferedReader( new InputStreamReader( new FileInputStream( file ), "UTF-8" ) ); + return new BufferedReader( + new InputStreamReader( new FileInputStream( file ), StandardCharsets.UTF_8 ) ); } catch ( FileNotFoundException e ) { return null; } - catch ( UnsupportedEncodingException e ) - { - throw new RuntimeException( e ); - } } @Override diff --git a/community/graphviz/src/main/java/org/neo4j/visualization/graphviz/GraphvizWriter.java b/community/graphviz/src/main/java/org/neo4j/visualization/graphviz/GraphvizWriter.java index 31a1ff0600cf1..7788e42806307 100644 --- a/community/graphviz/src/main/java/org/neo4j/visualization/graphviz/GraphvizWriter.java +++ b/community/graphviz/src/main/java/org/neo4j/visualization/graphviz/GraphvizWriter.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; +import java.nio.charset.StandardCharsets; import org.neo4j.visualization.Visualizer; import org.neo4j.walk.Walker; @@ -87,13 +88,14 @@ public void emit( OutputStream outputStream, Walker walker ) } else { - emit( walker, new GraphvizRenderer( style, new PrintStream( outputStream, true, "UTF-8" ) ) ); + emit( walker, new GraphvizRenderer( style, + new PrintStream( outputStream, true, StandardCharsets.UTF_8.name() ) ) ); } } private void emit( Walker walker, GraphvizRenderer renderer ) throws IOException { - walker.accept( new Visualizer( renderer ) ); + walker.accept( new Visualizer<>( renderer ) ); } } diff --git a/community/import-tool/src/test/java/org/neo4j/tooling/ImportToolDocIT.java b/community/import-tool/src/test/java/org/neo4j/tooling/ImportToolDocIT.java index 20990bac0ab7e..2c5bb5216cb26 100644 --- a/community/import-tool/src/test/java/org/neo4j/tooling/ImportToolDocIT.java +++ b/community/import-tool/src/test/java/org/neo4j/tooling/ImportToolDocIT.java @@ -19,13 +19,15 @@ */ package org.neo4j.tooling; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import org.apache.commons.lang3.StringUtils; +import org.junit.Rule; +import org.junit.Test; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintStream; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; @@ -40,13 +42,14 @@ import org.neo4j.graphdb.ResourceIterator; import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.factory.GraphDatabaseFactory; -import org.neo4j.kernel.impl.util.Charsets; import org.neo4j.test.TargetDirectory; import org.neo4j.test.TargetDirectory.TestDirectory; import org.neo4j.test.TestGraphDatabaseFactory; import org.neo4j.tooling.ImportTool.Options; import org.neo4j.unsafe.impl.batchimport.Configuration; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import static org.neo4j.helpers.ArrayUtil.join; import static org.neo4j.helpers.collection.IteratorUtil.asSet; import static org.neo4j.helpers.collection.IteratorUtil.count; @@ -55,10 +58,6 @@ import static org.neo4j.tooling.GlobalGraphOperations.at; import static org.neo4j.tooling.ImportTool.MULTI_FILE_DELIMITER; -import org.apache.commons.lang3.StringUtils; -import org.junit.Rule; -import org.junit.Test; - public class ImportToolDocIT { private static final int NODE_COUNT = 6; @@ -736,7 +735,7 @@ public void printOptionsForManual() throws Exception private void printFileWithPathsRemoved( File badFile, String realDir, String destinationFileName ) throws IOException { - String contents = readTextFile( badFile, Charsets.UTF_8 ); + String contents = readTextFile( badFile, StandardCharsets.UTF_8 ); String cleanedContents = contents.replace( realDir + File.separator, "" ); writeToFile( file( "ops", destinationFileName ), cleanedContents, false ); } diff --git a/community/io/src/main/java/org/neo4j/io/fs/DefaultFileSystemAbstraction.java b/community/io/src/main/java/org/neo4j/io/fs/DefaultFileSystemAbstraction.java index 5595cd36cbf17..a9698b206bbe2 100644 --- a/community/io/src/main/java/org/neo4j/io/fs/DefaultFileSystemAbstraction.java +++ b/community/io/src/main/java/org/neo4j/io/fs/DefaultFileSystemAbstraction.java @@ -32,6 +32,7 @@ import java.io.Reader; import java.io.Writer; import java.nio.channels.FileChannel; +import java.nio.charset.Charset; import java.util.HashMap; import java.util.Map; @@ -42,8 +43,7 @@ /** * Default file system abstraction that creates files using the underlying file system. */ -public class DefaultFileSystemAbstraction - implements FileSystemAbstraction +public class DefaultFileSystemAbstraction implements FileSystemAbstraction { static final String UNABLE_TO_CREATE_DIRECTORY_FORMAT = "Unable to create directory path [%s] for Neo4j store."; @@ -68,15 +68,15 @@ public InputStream openAsInputStream( File fileName ) throws IOException } @Override - public Reader openAsReader( File fileName, String encoding ) throws IOException + public Reader openAsReader( File fileName, Charset charset ) throws IOException { - return new InputStreamReader( new FileInputStream( fileName ), encoding ); + return new InputStreamReader( new FileInputStream( fileName ), charset ); } @Override - public Writer openAsWriter( File fileName, String encoding, boolean append ) throws IOException + public Writer openAsWriter( File fileName, Charset charset, boolean append ) throws IOException { - return new OutputStreamWriter( new FileOutputStream( fileName, append ), encoding ); + return new OutputStreamWriter( new FileOutputStream( fileName, append ), charset ); } @Override diff --git a/community/io/src/main/java/org/neo4j/io/fs/DelegateFileSystemAbstraction.java b/community/io/src/main/java/org/neo4j/io/fs/DelegateFileSystemAbstraction.java index b39ec89035596..a6e18d8d7df6c 100644 --- a/community/io/src/main/java/org/neo4j/io/fs/DelegateFileSystemAbstraction.java +++ b/community/io/src/main/java/org/neo4j/io/fs/DelegateFileSystemAbstraction.java @@ -29,6 +29,7 @@ import java.io.Reader; import java.io.Writer; import java.nio.channels.FileChannel; +import java.nio.charset.Charset; import java.nio.file.DirectoryStream; import java.nio.file.FileSystem; import java.nio.file.Files; @@ -83,15 +84,15 @@ public InputStream openAsInputStream( File fileName ) throws IOException } @Override - public Reader openAsReader( File fileName, String encoding ) throws IOException + public Reader openAsReader( File fileName, Charset charset ) throws IOException { - return new InputStreamReader( openAsInputStream( fileName ), encoding ); + return new InputStreamReader( openAsInputStream( fileName ), charset ); } @Override - public Writer openAsWriter( File fileName, String encoding, boolean append ) throws IOException + public Writer openAsWriter( File fileName, Charset charset, boolean append ) throws IOException { - return new OutputStreamWriter( openAsOutputStream( fileName, append ), encoding ); + return new OutputStreamWriter( openAsOutputStream( fileName, append ), charset ); } @Override diff --git a/community/io/src/main/java/org/neo4j/io/fs/FileSystemAbstraction.java b/community/io/src/main/java/org/neo4j/io/fs/FileSystemAbstraction.java index e324d0c30ae4b..9a4e6e59a1b1f 100644 --- a/community/io/src/main/java/org/neo4j/io/fs/FileSystemAbstraction.java +++ b/community/io/src/main/java/org/neo4j/io/fs/FileSystemAbstraction.java @@ -26,6 +26,7 @@ import java.io.OutputStream; import java.io.Reader; import java.io.Writer; +import java.nio.charset.Charset; import java.util.zip.ZipOutputStream; import org.neo4j.function.Function; @@ -38,9 +39,9 @@ public interface FileSystemAbstraction InputStream openAsInputStream( File fileName ) throws IOException; - Reader openAsReader( File fileName, String encoding ) throws IOException; + Reader openAsReader( File fileName, Charset charset ) throws IOException; - Writer openAsWriter( File fileName, String encoding, boolean append ) throws IOException; + Writer openAsWriter( File fileName, Charset charset, boolean append ) throws IOException; StoreChannel create( File fileName ) throws IOException; diff --git a/community/io/src/main/java/org/neo4j/io/fs/FileUtils.java b/community/io/src/main/java/org/neo4j/io/fs/FileUtils.java index dc62838be4a1c..283f1bfcaeb6e 100644 --- a/community/io/src/main/java/org/neo4j/io/fs/FileUtils.java +++ b/community/io/src/main/java/org/neo4j/io/fs/FileUtils.java @@ -41,6 +41,7 @@ import java.nio.channels.FileChannel; import java.nio.channels.SeekableByteChannel; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.OpenOption; @@ -340,7 +341,7 @@ public static void writeToFile( File target, String text, boolean append ) throw target.createNewFile(); } - try ( Writer out = new OutputStreamWriter( new FileOutputStream( target, append ), "UTF-8" ) ) + try ( Writer out = new OutputStreamWriter( new FileOutputStream( target, append ), StandardCharsets.UTF_8 ) ) { out.write( text ); } diff --git a/community/io/src/test/java/org/neo4j/adversaries/fs/AdversarialFileSystemAbstraction.java b/community/io/src/test/java/org/neo4j/adversaries/fs/AdversarialFileSystemAbstraction.java index d16898f3db200..09ecaf85acdb1 100644 --- a/community/io/src/test/java/org/neo4j/adversaries/fs/AdversarialFileSystemAbstraction.java +++ b/community/io/src/test/java/org/neo4j/adversaries/fs/AdversarialFileSystemAbstraction.java @@ -31,6 +31,7 @@ import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; +import java.nio.charset.Charset; import java.util.HashMap; import java.util.Map; @@ -102,18 +103,18 @@ public File[] listFiles( File directory, FilenameFilter filter ) return delegate.listFiles( directory, filter ); } - public Writer openAsWriter( File fileName, String encoding, boolean append ) throws IOException + public Writer openAsWriter( File fileName, Charset charset, boolean append ) throws IOException { adversary.injectFailure( UnsupportedEncodingException.class, FileNotFoundException.class, SecurityException.class ); - return new AdversarialWriter( delegate.openAsWriter( fileName, encoding, append ), adversary ); + return new AdversarialWriter( delegate.openAsWriter( fileName, charset, append ), adversary ); } - public Reader openAsReader( File fileName, String encoding ) throws IOException + public Reader openAsReader( File fileName, Charset charset ) throws IOException { adversary.injectFailure( UnsupportedEncodingException.class, FileNotFoundException.class, SecurityException.class ); - return new AdversarialReader( delegate.openAsReader( fileName, encoding ), adversary ); + return new AdversarialReader( delegate.openAsReader( fileName, charset ), adversary ); } public long getFileSize( File fileName ) @@ -181,7 +182,6 @@ public void deleteRecursively( File directory ) throws IOException private final Map, ThirdPartyFileSystem> thirdPartyFileSystems = new HashMap<>(); - @Override public synchronized K getOrCreateThirdPartyFileSystem( Class clazz, Function, K> creator ) @@ -196,7 +196,6 @@ public synchronized K getOrCreateThirdPartyFile return (K) fileSystem; } - @Override public void truncate( File path, long size ) throws IOException { adversary.injectFailure( FileNotFoundException.class, IOException.class, IllegalArgumentException.class, diff --git a/community/io/src/test/java/org/neo4j/graphdb/mockfs/DelegatingFileSystemAbstraction.java b/community/io/src/test/java/org/neo4j/graphdb/mockfs/DelegatingFileSystemAbstraction.java index b20883fd6655b..54a951be251f1 100644 --- a/community/io/src/test/java/org/neo4j/graphdb/mockfs/DelegatingFileSystemAbstraction.java +++ b/community/io/src/test/java/org/neo4j/graphdb/mockfs/DelegatingFileSystemAbstraction.java @@ -26,6 +26,7 @@ import java.io.OutputStream; import java.io.Reader; import java.io.Writer; +import java.nio.charset.Charset; import org.neo4j.function.Function; import org.neo4j.io.fs.FileSystemAbstraction; @@ -132,9 +133,9 @@ public long getFileSize( File fileName ) } @Override - public Writer openAsWriter( File fileName, String encoding, boolean append ) throws IOException + public Writer openAsWriter( File fileName, Charset charset, boolean append ) throws IOException { - return delegate.openAsWriter( fileName, encoding, append ); + return delegate.openAsWriter( fileName, charset, append ); } @Override @@ -156,9 +157,9 @@ public OutputStream openAsOutputStream( File fileName, boolean append ) throws I } @Override - public Reader openAsReader( File fileName, String encoding ) throws IOException + public Reader openAsReader( File fileName, Charset charset ) throws IOException { - return delegate.openAsReader( fileName, encoding ); + return delegate.openAsReader( fileName, charset ); } @Override diff --git a/community/io/src/test/java/org/neo4j/graphdb/mockfs/EphemeralFileSystemAbstraction.java b/community/io/src/test/java/org/neo4j/graphdb/mockfs/EphemeralFileSystemAbstraction.java index 33a5d51e60180..e2a3015a1117b 100644 --- a/community/io/src/test/java/org/neo4j/graphdb/mockfs/EphemeralFileSystemAbstraction.java +++ b/community/io/src/test/java/org/neo4j/graphdb/mockfs/EphemeralFileSystemAbstraction.java @@ -39,6 +39,7 @@ import java.nio.channels.OverlappingFileLockException; import java.nio.channels.ReadableByteChannel; import java.nio.channels.WritableByteChannel; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -234,15 +235,15 @@ public InputStream openAsInputStream( File fileName ) throws IOException } @Override - public Reader openAsReader( File fileName, String encoding ) throws IOException + public Reader openAsReader( File fileName, Charset charset ) throws IOException { - return new InputStreamReader( openAsInputStream( fileName ), encoding ); + return new InputStreamReader( openAsInputStream( fileName ), charset ); } @Override - public Writer openAsWriter( File fileName, String encoding, boolean append ) throws IOException + public Writer openAsWriter( File fileName, Charset charset, boolean append ) throws IOException { - return new OutputStreamWriter( openAsOutputStream( fileName, append ), encoding ); + return new OutputStreamWriter( openAsOutputStream( fileName, append ), charset ); } @Override diff --git a/community/io/src/test/java/org/neo4j/graphdb/mockfs/LimitedFilesystemAbstraction.java b/community/io/src/test/java/org/neo4j/graphdb/mockfs/LimitedFilesystemAbstraction.java index 197caea9de69d..dafa01b4a1cc0 100644 --- a/community/io/src/test/java/org/neo4j/graphdb/mockfs/LimitedFilesystemAbstraction.java +++ b/community/io/src/test/java/org/neo4j/graphdb/mockfs/LimitedFilesystemAbstraction.java @@ -27,6 +27,7 @@ import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; +import java.nio.charset.Charset; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.fs.StoreChannel; @@ -61,13 +62,13 @@ public InputStream openAsInputStream( File fileName ) throws IOException } @Override - public Reader openAsReader( File fileName, String encoding ) throws IOException + public Reader openAsReader( File fileName, Charset charset ) throws IOException { - return new InputStreamReader( openAsInputStream( fileName ), encoding ); + return new InputStreamReader( openAsInputStream( fileName ), charset ); } @Override - public Writer openAsWriter( File fileName, String encoding, boolean append ) throws IOException + public Writer openAsWriter( File fileName, Charset charset, boolean append ) throws IOException { return new OutputStreamWriter( openAsOutputStream( fileName, append ) ); } diff --git a/community/io/src/test/java/org/neo4j/io/fs/StoreFileChannelTest.java b/community/io/src/test/java/org/neo4j/io/fs/StoreFileChannelTest.java index acec2365bcf5b..af6cfe2eb3f64 100644 --- a/community/io/src/test/java/org/neo4j/io/fs/StoreFileChannelTest.java +++ b/community/io/src/test/java/org/neo4j/io/fs/StoreFileChannelTest.java @@ -21,6 +21,7 @@ import java.nio.ByteBuffer; import java.nio.channels.FileChannel; +import java.nio.charset.StandardCharsets; import org.junit.Test; @@ -35,7 +36,7 @@ public void shouldHandlePartialWrites() throws Exception FileChannel mockChannel = mock(FileChannel.class); when(mockChannel.write( any(ByteBuffer.class), anyLong() )).thenReturn( 4 ); - ByteBuffer buffer = ByteBuffer.wrap( "Hello, world!".getBytes( "UTF-8" ) ); + ByteBuffer buffer = ByteBuffer.wrap( "Hello, world!".getBytes( StandardCharsets.UTF_8 ) ); StoreFileChannel channel = new StoreFileChannel( mockChannel ); diff --git a/community/io/src/test/java/org/neo4j/io/pagecache/randomharness/StandardRecordFormat.java b/community/io/src/test/java/org/neo4j/io/pagecache/randomharness/StandardRecordFormat.java index 8cd04eaec7a0d..662e2f6ee2671 100644 --- a/community/io/src/test/java/org/neo4j/io/pagecache/randomharness/StandardRecordFormat.java +++ b/community/io/src/test/java/org/neo4j/io/pagecache/randomharness/StandardRecordFormat.java @@ -21,15 +21,13 @@ import java.io.File; import java.io.IOException; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import org.neo4j.io.pagecache.PageCursor; import org.neo4j.io.pagecache.impl.muninn.MuninnPageCache; public class StandardRecordFormat extends RecordFormat { - private static final Charset CHARSET = Charset.forName( "UTF-8" ); - @Override public int getRecordSize() { @@ -79,7 +77,7 @@ public void write( Record record, PageCursor cursor ) { StandardRecord r = (StandardRecord) record; cursor.putByte( r.type ); - byte[] pathBytes = r.file.getPath().getBytes( CHARSET ); + byte[] pathBytes = r.file.getPath().getBytes( StandardCharsets.UTF_8 ); cursor.putByte( pathBytes[pathBytes.length - 1] ); cursor.putShort( r.fill1 ); cursor.putInt( r.recordId ); @@ -149,8 +147,8 @@ private boolean filesEqual( StandardRecord record ) return false; } // We only look at the last letter of the path, because that's all that we can store in the record. - byte[] thisPath = file.getPath().getBytes( CHARSET ); - byte[] thatPath = record.file.getPath().getBytes( CHARSET ); + byte[] thisPath = file.getPath().getBytes( StandardCharsets.UTF_8 ); + byte[] thatPath = record.file.getPath().getBytes( StandardCharsets.UTF_8 ); return thisPath[thisPath.length - 1] == thatPath[thatPath.length - 1]; } diff --git a/community/kernel/src/main/java/org/neo4j/helpers/Exceptions.java b/community/kernel/src/main/java/org/neo4j/helpers/Exceptions.java index 3886de811c81a..432c1c439d012 100644 --- a/community/kernel/src/main/java/org/neo4j/helpers/Exceptions.java +++ b/community/kernel/src/main/java/org/neo4j/helpers/Exceptions.java @@ -28,6 +28,8 @@ import org.neo4j.kernel.impl.locking.Locks.Client; +import static java.nio.charset.StandardCharsets.UTF_8; + public class Exceptions { private static final String UNEXPECTED_MESSAGE = "Unexpected Exception"; @@ -212,12 +214,12 @@ public static String stringify( Throwable cause ) try { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - PrintStream target = new PrintStream( bytes, true, "UTF-8" ); + PrintStream target = new PrintStream( bytes, true, UTF_8.name() ); cause.printStackTrace( target ); target.flush(); - return bytes.toString("UTF-8"); + return bytes.toString( UTF_8.name()); } - catch(UnsupportedEncodingException e) + catch ( UnsupportedEncodingException e ) { cause.printStackTrace(System.err); return "[ERROR: Unable to serialize stacktrace, UTF-8 not supported.]"; diff --git a/community/kernel/src/main/java/org/neo4j/helpers/UTF8.java b/community/kernel/src/main/java/org/neo4j/helpers/UTF8.java index c9d5ceacd7712..d6ec6c63aaeda 100644 --- a/community/kernel/src/main/java/org/neo4j/helpers/UTF8.java +++ b/community/kernel/src/main/java/org/neo4j/helpers/UTF8.java @@ -19,14 +19,15 @@ */ package org.neo4j.helpers; -import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; /** * Utility class for converting strings to and from UTF-8 encoded bytes. */ public final class UTF8 { + public static final Function encode = new Function() { @Override @@ -47,38 +48,17 @@ public String apply( byte[] bytes ) public static byte[] encode( String string ) { - try - { - return string.getBytes( "UTF-8" ); - } - catch ( UnsupportedEncodingException e ) - { - throw cantBelieveUtf8IsntAvailableInThisJvmError( e ); - } + return string.getBytes( StandardCharsets.UTF_8 ); } public static String decode( byte[] bytes ) { - try - { - return new String( bytes, "UTF-8" ); - } - catch ( UnsupportedEncodingException e ) - { - throw cantBelieveUtf8IsntAvailableInThisJvmError( e ); - } + return new String( bytes, StandardCharsets.UTF_8 ); } public static String decode( byte[] bytes, int offset, int length ) { - try - { - return new String( bytes, offset, length, "UTF-8" ); - } - catch ( UnsupportedEncodingException e ) - { - throw cantBelieveUtf8IsntAvailableInThisJvmError( e ); - } + return new String( bytes, offset, length, StandardCharsets.UTF_8 ); } public static String getDecodedStringFrom( ByteBuffer source ) @@ -102,11 +82,6 @@ public static int computeRequiredByteBufferSize( String text ) return encode( text ).length + 4; } - private static Error cantBelieveUtf8IsntAvailableInThisJvmError( UnsupportedEncodingException e ) - { - return new Error( "UTF-8 should be available on all JVMs", e ); - } - private UTF8() { // No need to instantiate, all methods are static diff --git a/community/kernel/src/main/java/org/neo4j/helpers/collection/IteratorUtil.java b/community/kernel/src/main/java/org/neo4j/helpers/collection/IteratorUtil.java index 912b937e1f0d5..e543a678691f4 100644 --- a/community/kernel/src/main/java/org/neo4j/helpers/collection/IteratorUtil.java +++ b/community/kernel/src/main/java/org/neo4j/helpers/collection/IteratorUtil.java @@ -21,6 +21,7 @@ import java.io.File; import java.io.IOException; +import java.nio.charset.Charset; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; @@ -810,10 +811,10 @@ public static > Set asEnumNameSet( Class clazz) /** * Creates an {@link Iterable} for iterating over the lines of a text file. * @param file the file to get the lines for. - * @param encoding the encoding of the file + * @param charset file charset * @return an {@link Iterable} for iterating over the lines of a text file. */ - public static ClosableIterable asIterable( final File file, final String encoding ) + public static ClosableIterable asIterable( final File file, final Charset charset ) { return new ClosableIterable() { @@ -828,7 +829,7 @@ public Iterator iterator() { mostRecentIterator.close(); } - mostRecentIterator = asIterator( file, encoding ); + mostRecentIterator = asIterator( file, charset ); return mostRecentIterator; } catch ( IOException e ) @@ -853,13 +854,13 @@ public void close() * The opened file is closed if an exception occurs during reading or when * the files has been read through all the way. * @param file the file to get the lines for. - * @param encoding to be used for reading the file + * @param charset to be used for reading the file * @return an {@link Iterator} for iterating over the lines of a text file. * @throws IOException from underlying I/O operations */ - public static ClosableIterator asIterator( File file, String encoding ) throws IOException + public static ClosableIterator asIterator( File file, Charset charset ) throws IOException { - return new LinesOfFileIterator( file, encoding ); + return new LinesOfFileIterator( file, charset ); } public static Iterable asIterable( final long... array ) diff --git a/community/kernel/src/main/java/org/neo4j/helpers/collection/LinesOfFileIterator.java b/community/kernel/src/main/java/org/neo4j/helpers/collection/LinesOfFileIterator.java index 69602e82f1e53..bb11f7a1adc13 100644 --- a/community/kernel/src/main/java/org/neo4j/helpers/collection/LinesOfFileIterator.java +++ b/community/kernel/src/main/java/org/neo4j/helpers/collection/LinesOfFileIterator.java @@ -25,17 +25,18 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; +import java.nio.charset.Charset; public class LinesOfFileIterator extends PrefetchingIterator implements ClosableIterator { private final BufferedReader reader; private boolean closed; - public LinesOfFileIterator( File file, String encoding ) throws IOException + public LinesOfFileIterator( File file, Charset charset ) throws IOException { try { - reader = new BufferedReader( new InputStreamReader(new FileInputStream(file), encoding) ); + reader = new BufferedReader( new InputStreamReader(new FileInputStream(file), charset) ); } catch ( FileNotFoundException e ) { diff --git a/community/kernel/src/main/java/org/neo4j/helpers/progress/ProgressMonitorFactory.java b/community/kernel/src/main/java/org/neo4j/helpers/progress/ProgressMonitorFactory.java index 9ae64ab250c63..b715162626ad8 100644 --- a/community/kernel/src/main/java/org/neo4j/helpers/progress/ProgressMonitorFactory.java +++ b/community/kernel/src/main/java/org/neo4j/helpers/progress/ProgressMonitorFactory.java @@ -22,8 +22,8 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; -import java.io.UnsupportedEncodingException; import java.io.Writer; +import java.nio.charset.StandardCharsets; import java.util.HashSet; import java.util.Set; @@ -46,14 +46,7 @@ protected Indicator.OpenEnded newOpenEndedIndicator( String process, int resolut public static ProgressMonitorFactory textual( final OutputStream out ) { - try - { - return textual( new OutputStreamWriter( out, "UTF-8" ) ); - } - catch ( UnsupportedEncodingException e ) - { - throw new RuntimeException( e ); - } + return textual( new OutputStreamWriter( out, StandardCharsets.UTF_8 ) ); } public static ProgressMonitorFactory textual( final Writer out ) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/index/ArrayEncoder.java b/community/kernel/src/main/java/org/neo4j/kernel/api/index/ArrayEncoder.java index 8954d4cb1e9c4..e6b5776eaa524 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/index/ArrayEncoder.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/index/ArrayEncoder.java @@ -25,7 +25,7 @@ import java.io.OutputStream; import java.lang.reflect.Array; -import org.neo4j.kernel.impl.util.Charsets; +import org.neo4j.helpers.UTF8; public class ArrayEncoder { @@ -83,7 +83,7 @@ else if ( o instanceof Boolean ) { type = "L"; String str = o.toString(); - builder.append( base64Encoder.encode( str.getBytes( Charsets.UTF_8 ) ) ); + builder.append( base64Encoder.encode( UTF8.encode( str ) ) ); } builder.append( "|" ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/index/util/FailureStorage.java b/community/kernel/src/main/java/org/neo4j/kernel/api/index/util/FailureStorage.java index 2642fff221d73..03fa06756c53e 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/index/util/FailureStorage.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/index/util/FailureStorage.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.nio.ByteBuffer; +import org.neo4j.helpers.UTF8; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.fs.StoreChannel; @@ -117,7 +118,7 @@ public synchronized void storeIndexFailure( long indexId, String failure ) throw File failureFile = failureFile( indexId ); try ( StoreChannel channel = fs.open( failureFile, "rw" ) ) { - byte[] data = failure.getBytes( "utf-8" ); + byte[] data = UTF8.encode( failure ); channel.write( ByteBuffer.wrap( data, 0, Math.min( data.length, MAX_FAILURE_SIZE ) ) ); channel.force( true ); @@ -139,7 +140,7 @@ private String readFailure( File failureFile ) throws IOException int readData = channel.read( ByteBuffer.wrap( data ) ); channel.close(); - return readData <= 0 ? "" : new String( withoutZeros( data ), "utf-8" ); + return readData <= 0 ? "" : UTF8.decode( withoutZeros( data ) ); } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/annotations/AnnotationProcessor.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/annotations/AnnotationProcessor.java index fc0cca9a86675..0616c1e37159f 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/annotations/AnnotationProcessor.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/annotations/AnnotationProcessor.java @@ -23,11 +23,11 @@ import java.io.IOException; import java.lang.annotation.Annotation; import java.net.URI; +import java.nio.charset.StandardCharsets; import java.util.Collections; import java.util.Map; import java.util.Set; import java.util.regex.Pattern; - import javax.annotation.processing.AbstractProcessor; import javax.annotation.processing.ProcessingEnvironment; import javax.annotation.processing.RoundEnvironment; @@ -40,7 +40,6 @@ import javax.tools.FileObject; import javax.tools.StandardLocation; -import static org.neo4j.kernel.impl.util.Charsets.UTF_8; import static org.neo4j.io.fs.FileUtils.newFilePrintWriter; public abstract class AnnotationProcessor extends AbstractProcessor @@ -174,7 +173,7 @@ void addTo( String line, String... path ) throws IOException file.getParentFile().mkdirs(); } - newFilePrintWriter( file, UTF_8 ).append( line ).append( "\n" ).close(); + newFilePrintWriter( file, StandardCharsets.UTF_8 ).append( line ).append( "\n" ).close(); } private String path( String[] path ) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/LongerShortString.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/LongerShortString.java index cfc0f23dfcc3e..b9f985f31e979 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/LongerShortString.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/LongerShortString.java @@ -19,9 +19,10 @@ */ package org.neo4j.kernel.impl.store; -import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import java.util.Arrays; +import org.neo4j.helpers.UTF8; import org.neo4j.kernel.impl.store.record.PropertyBlock; import org.neo4j.kernel.impl.util.Bits; import org.neo4j.unsafe.impl.internal.dragons.UnsafeUtil; @@ -844,27 +845,19 @@ public static boolean writeLatin1Characters( String string, Bits bits ) return true; } - private static boolean encodeUTF8( int keyId, String string, - PropertyBlock target, int payloadSize ) + private static boolean encodeUTF8( int keyId, String string, PropertyBlock target, int payloadSize ) { - try - { - byte[] bytes = string.getBytes( "UTF-8" ); - final int length = bytes.length; - if ( length > payloadSize-3/*key*/-2/*enc+len*/ ) return false; - Bits bits = newBitsForStep8(length); - writeHeader( bits, keyId, ENCODING_UTF8, length); // In this case it isn't the string length, but the number of bytes - for ( byte value : bytes ) - { - bits.put( value ); - } - target.setValueBlocks( bits.getLongs() ); - return true; - } - catch ( UnsupportedEncodingException e ) + byte[] bytes = string.getBytes( StandardCharsets.UTF_8 ); + final int length = bytes.length; + if ( length > payloadSize-3/*key*/-2/*enc+len*/ ) return false; + Bits bits = newBitsForStep8(length); + writeHeader( bits, keyId, ENCODING_UTF8, length); // In this case it isn't the string length, but the number of bytes + for ( byte value : bytes ) { - throw new IllegalStateException( "All JVMs must support UTF-8", e ); + bits.put( value ); } + target.setValueBlocks( bits.getLongs() ); + return true; } private boolean doEncode(int keyId, byte[] data, PropertyBlock target, @@ -903,14 +896,7 @@ private static String decodeUTF8( Bits bits, int stringLength ) { result[i] = bits.getByte(); } - try - { - return new String( result, "UTF-8" ); - } - catch ( UnsupportedEncodingException e ) - { - throw new IllegalStateException( "All JVMs must support UTF-8", e ); - } + return UTF8.decode( result ); } public static int calculateNumberOfBlocksUsed( long firstBlock ) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/MigrationStatus.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/MigrationStatus.java index a757539091bfb..894521e476992 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/MigrationStatus.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/MigrationStatus.java @@ -24,6 +24,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.Writer; +import java.nio.charset.StandardCharsets; import org.neo4j.helpers.Pair; import org.neo4j.io.fs.FileSystemAbstraction; @@ -64,7 +65,7 @@ public static MigrationStatus readMigrationStatus( FileSystemAbstraction fs, Fil private static Pair readFromFile( FileSystemAbstraction fs, File file, MigrationStatus expectedSate ) { - try ( BufferedReader reader = new BufferedReader( fs.openAsReader( file, "utf-8" ) ) ) + try ( BufferedReader reader = new BufferedReader( fs.openAsReader( file, StandardCharsets.UTF_8 ) ) ) { String state = reader.readLine().trim(); if ( expectedSate != null && !expectedSate.name().equals( state ) ) @@ -99,7 +100,7 @@ public void setMigrationStatus( FileSystemAbstraction fs, File stateFile, String } } - try ( Writer writer = fs.openAsWriter( stateFile, "utf-8", false ) ) + try ( Writer writer = fs.openAsWriter( stateFile, StandardCharsets.UTF_8, false ) ) { writer.write( name() ); writer.write( '\n' ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/StoreMigrator.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/StoreMigrator.java index ff8ab33b1ece7..1b0c31f877242 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/StoreMigrator.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/StoreMigrator.java @@ -74,7 +74,6 @@ import org.neo4j.kernel.impl.storemigration.monitoring.MigrationProgressMonitor; import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.TransactionIdStore; -import org.neo4j.kernel.impl.util.Charsets; import org.neo4j.kernel.lifecycle.Lifespan; import org.neo4j.logging.NullLogProvider; import org.neo4j.unsafe.impl.batchimport.AdditionalInitialIds; @@ -94,6 +93,7 @@ import org.neo4j.unsafe.impl.batchimport.staging.ExecutionMonitor; import org.neo4j.unsafe.impl.batchimport.store.BatchingNeoStores; +import static java.nio.charset.StandardCharsets.UTF_8; import static org.neo4j.helpers.UTF8.encode; import static org.neo4j.helpers.collection.Iterables.iterable; import static org.neo4j.helpers.collection.IteratorUtil.first; @@ -119,8 +119,6 @@ */ public class StoreMigrator implements StoreMigrationParticipant { - private static final String UTF8 = Charsets.UTF_8.name(); - // Developers: There is a benchmark, storemigrate-benchmark, that generates large stores and benchmarks // the upgrade process. Please utilize that when writing upgrade code to ensure the code is fast enough to // complete upgrades in a reasonable time period. @@ -193,7 +191,7 @@ public void migrate( File storeDir, File migrationDir, SchemaIndexProvider schem private void writeLastTxChecksum( File migrationDir, long lastTxChecksum ) throws IOException { - try ( Writer writer = fileSystem.openAsWriter( lastTxChecksumFile( migrationDir ), UTF8, false ) ) + try ( Writer writer = fileSystem.openAsWriter( lastTxChecksumFile( migrationDir ), UTF_8, false ) ) { writer.write( String.valueOf( lastTxChecksum ) ); } @@ -201,7 +199,7 @@ private void writeLastTxChecksum( File migrationDir, long lastTxChecksum ) throw private void writeLastTxLogPosition( File migrationDir, LogPosition lastTxLogPosition ) throws IOException { - try ( Writer writer = fileSystem.openAsWriter( lastTxLogPositionFile( migrationDir ), UTF8, false ) ) + try ( Writer writer = fileSystem.openAsWriter( lastTxLogPositionFile( migrationDir ), UTF_8, false ) ) { writer.write( lastTxLogPosition.getLogVersion() + "A" + lastTxLogPosition.getByteOffset() ); } @@ -209,7 +207,7 @@ private void writeLastTxLogPosition( File migrationDir, LogPosition lastTxLogPos private long readLastTxChecksum( File migrationDir ) throws IOException { - try ( Reader reader = fileSystem.openAsReader( lastTxChecksumFile( migrationDir ), UTF8 ) ) + try ( Reader reader = fileSystem.openAsReader( lastTxChecksumFile( migrationDir ), UTF_8 ) ) { char[] buffer = new char[100]; int chars = reader.read( buffer ); @@ -219,7 +217,7 @@ private long readLastTxChecksum( File migrationDir ) throws IOException private LogPosition readLastTxLogPosition( File migrationDir ) throws IOException { - try ( Reader reader = fileSystem.openAsReader( lastTxLogPositionFile( migrationDir ), UTF8 ) ) + try ( Reader reader = fileSystem.openAsReader( lastTxLogPositionFile( migrationDir ), UTF_8 ) ) { char[] buffer = new char[4096]; int chars = reader.read( buffer ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/Charsets.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/Charsets.java deleted file mode 100644 index 92a4cde355229..0000000000000 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/Charsets.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2002-2015 "Neo Technology," - * Network Engine for Objects in Lund AB [http://neotechnology.com] - * - * This file is part of Neo4j. - * - * Neo4j is free software: you can redistribute it and/or modify - * it under the terms of the GNU 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.neo4j.kernel.impl.util; - -import java.nio.charset.Charset; - -public class Charsets -{ - public static final Charset UTF_8 = Charset.forName( "UTF-8" ); -} diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/IoPrimitiveUtils.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/IoPrimitiveUtils.java index bc4cec4f61ded..63fd00cec628c 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/IoPrimitiveUtils.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/IoPrimitiveUtils.java @@ -26,6 +26,7 @@ import java.util.HashMap; import java.util.Map; +import org.neo4j.helpers.UTF8; import org.neo4j.io.fs.StoreChannel; import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; import org.neo4j.kernel.impl.transaction.log.WritableLogChannel; @@ -37,12 +38,12 @@ public static String readString( ReadableLogChannel channel, int length ) throws assert length >= 0 : "invalid array length " + length; byte[] chars = new byte[length]; channel.get( chars, length ); - return new String(chars, "UTF-8"); + return UTF8.decode( chars ); } public static void write3bLengthAndString( WritableLogChannel channel, String string ) throws IOException { - byte[] chars = string.getBytes( "UTF-8" ); + byte[] chars = UTF8.encode( string ); // 3 bytes to represent the length (4 is a bit overkill)... maybe // this space optimization is a bit overkill also :) channel.putShort( (short)chars.length ); @@ -57,12 +58,12 @@ public static String read3bLengthAndString( ReadableLogChannel channel ) throws int length = (lengthByte << 16) | lengthShort; byte[] chars = new byte[length]; channel.get( chars, length ); - return new String(chars, "UTF-8"); + return UTF8.decode( chars ); } public static void write2bLengthAndString( WritableLogChannel channel, String string ) throws IOException { - byte[] chars = string.getBytes( "UTF-8" ); + byte[] chars = UTF8.encode( string ); channel.putShort( (short)chars.length ); channel.put(chars, chars.length); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/info/SystemDiagnostics.java b/community/kernel/src/main/java/org/neo4j/kernel/info/SystemDiagnostics.java index 6045db72864bc..54173985bea1b 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/info/SystemDiagnostics.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/info/SystemDiagnostics.java @@ -19,11 +19,6 @@ */ package org.neo4j.kernel.info; -import static java.net.NetworkInterface.getNetworkInterfaces; -import static org.neo4j.helpers.Format.bytes; -import static org.neo4j.kernel.impl.util.Charsets.UTF_8; -import static org.neo4j.io.fs.FileUtils.newBufferedFileReader; - import java.io.BufferedReader; import java.io.File; import java.io.IOException; @@ -40,6 +35,7 @@ import java.net.URL; import java.net.URLClassLoader; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -52,6 +48,10 @@ import org.neo4j.logging.Logger; +import static java.net.NetworkInterface.getNetworkInterfaces; +import static org.neo4j.helpers.Format.bytes; +import static org.neo4j.io.fs.FileUtils.newBufferedFileReader; + enum SystemDiagnostics implements DiagnosticsProvider { SYSTEM_MEMORY( "System memory information:" ) @@ -265,7 +265,7 @@ public boolean accept( File path ) { try { - BufferedReader reader = newBufferedFileReader( scheduler, UTF_8 ); + BufferedReader reader = newBufferedFileReader( scheduler, StandardCharsets.UTF_8 ); try { for ( String line; null != ( line = reader.readLine() ); ) diff --git a/community/kernel/src/test/java/examples/BatchInsertDocTest.java b/community/kernel/src/test/java/examples/BatchInsertDocTest.java index 20904e8fe1e64..e60ae4d3b01db 100644 --- a/community/kernel/src/test/java/examples/BatchInsertDocTest.java +++ b/community/kernel/src/test/java/examples/BatchInsertDocTest.java @@ -23,6 +23,7 @@ import java.io.FileReader; import java.io.IOException; import java.io.Writer; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -130,7 +131,8 @@ public void insertWithConfig() throws IOException @Test public void insertWithConfigFile() throws IOException { - try ( Writer fw = fileSystem.openAsWriter( new File( "target/docs/batchinsert-config" ).getAbsoluteFile(), "utf-8", false ) ) + try ( Writer fw = fileSystem.openAsWriter( new File( "target/docs/batchinsert-config" ).getAbsoluteFile(), + StandardCharsets.UTF_8, false ) ) { fw.append( "dbms.pagecache.memory=8m" ); } diff --git a/community/kernel/src/test/java/org/neo4j/graphdb/GraphDatabaseInternalLogIT.java b/community/kernel/src/test/java/org/neo4j/graphdb/GraphDatabaseInternalLogIT.java index c8714d79b9c8f..5de98213a84f1 100644 --- a/community/kernel/src/test/java/org/neo4j/graphdb/GraphDatabaseInternalLogIT.java +++ b/community/kernel/src/test/java/org/neo4j/graphdb/GraphDatabaseInternalLogIT.java @@ -24,6 +24,7 @@ import java.io.File; import java.io.StringWriter; +import java.nio.charset.StandardCharsets; import org.neo4j.function.Predicate; import org.neo4j.graphdb.factory.GraphDatabaseSettings; @@ -55,7 +56,7 @@ public void shouldWriteToInternalDiagnosticsLog() throws Exception assertThat( internalLog.isFile(), is( true ) ); assertThat( internalLog.length(), greaterThan( 0L ) ); - assertThat( IteratorUtil.count( asIterable( internalLog, "UTF-8" ), new Predicate() + assertThat( IteratorUtil.count( asIterable( internalLog, StandardCharsets.UTF_8 ), new Predicate() { @Override public boolean test( String line ) @@ -64,7 +65,7 @@ public boolean test( String line ) } } ), is( 1 ) ); - assertThat( IteratorUtil.count( asIterable( internalLog, "UTF-8" ), new Predicate() + assertThat( IteratorUtil.count( asIterable( internalLog, StandardCharsets.UTF_8 ), new Predicate() { @Override public boolean test( String line ) @@ -91,7 +92,7 @@ public void shouldNotWriteDebugToInternalDiagnosticsLogByDefault() throws Except assertThat( internalLog.isFile(), is( true ) ); assertThat( internalLog.length(), greaterThan( 0L ) ); - assertThat( IteratorUtil.count( asIterable( internalLog, "UTF-8" ), new Predicate() + assertThat( IteratorUtil.count( asIterable( internalLog, StandardCharsets.UTF_8 ), new Predicate() { @Override public boolean test( String line ) @@ -122,7 +123,7 @@ public void shouldWriteDebugToInternalDiagnosticsLogForEnabledContexts() throws assertThat( internalLog.isFile(), is( true ) ); assertThat( internalLog.length(), greaterThan( 0L ) ); - assertThat( IteratorUtil.count( asIterable( internalLog, "UTF-8" ), new Predicate() + assertThat( IteratorUtil.count( asIterable( internalLog, StandardCharsets.UTF_8 ), new Predicate() { @Override public boolean test( String line ) @@ -131,7 +132,7 @@ public boolean test( String line ) } } ), is( 1 ) ); - assertThat( IteratorUtil.count( asIterable( internalLog, "UTF-8" ), new Predicate() + assertThat( IteratorUtil.count( asIterable( internalLog, StandardCharsets.UTF_8 ), new Predicate() { @Override public boolean test( String line ) @@ -140,7 +141,7 @@ public boolean test( String line ) } } ), is( 0 ) ); - assertThat( IteratorUtil.count( asIterable( internalLog, "UTF-8" ), new Predicate() + assertThat( IteratorUtil.count( asIterable( internalLog, StandardCharsets.UTF_8 ), new Predicate() { @Override public boolean test( String line ) diff --git a/community/kernel/src/test/java/org/neo4j/helpers/collection/TestCommonIterators.java b/community/kernel/src/test/java/org/neo4j/helpers/collection/TestCommonIterators.java index 37258a669cdf1..2840409cb978d 100644 --- a/community/kernel/src/test/java/org/neo4j/helpers/collection/TestCommonIterators.java +++ b/community/kernel/src/test/java/org/neo4j/helpers/collection/TestCommonIterators.java @@ -28,6 +28,7 @@ import java.io.File; import java.io.IOException; import java.io.PrintStream; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -334,7 +335,7 @@ public void fileAsIterator() throws Exception File file = createTextFileWithLines( lines ); try { - Iterable iterable = IteratorUtil.asIterable( file, "UTF-8" ); + Iterable iterable = IteratorUtil.asIterable( file, StandardCharsets.UTF_8 ); assertEquals( Arrays.asList( lines ), IteratorUtil.asCollection( iterable ) ); } finally diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/core/JumpingFileSystemAbstraction.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/core/JumpingFileSystemAbstraction.java index 5530fa65ccf80..a0af6d20a7c0c 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/core/JumpingFileSystemAbstraction.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/core/JumpingFileSystemAbstraction.java @@ -28,20 +28,21 @@ import java.io.Reader; import java.io.Writer; import java.nio.ByteBuffer; +import java.nio.charset.Charset; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.graphdb.mockfs.DelegatingFileSystemAbstraction; +import org.neo4j.graphdb.mockfs.EphemeralFileSystemAbstraction; +import org.neo4j.io.fs.StoreChannel; +import org.neo4j.io.fs.StoreFileChannel; import org.neo4j.kernel.impl.store.AbstractDynamicStore; import org.neo4j.kernel.impl.store.NodeStore; import org.neo4j.kernel.impl.store.PropertyStore; import org.neo4j.kernel.impl.store.RelationshipGroupStore; import org.neo4j.kernel.impl.store.RelationshipStore; import org.neo4j.kernel.impl.store.SchemaStore; -import org.neo4j.io.fs.StoreChannel; -import org.neo4j.io.fs.StoreFileChannel; import org.neo4j.test.impl.ChannelInputStream; import org.neo4j.test.impl.ChannelOutputStream; -import org.neo4j.graphdb.mockfs.EphemeralFileSystemAbstraction; public class JumpingFileSystemAbstraction extends DelegatingFileSystemAbstraction { @@ -91,15 +92,15 @@ public InputStream openAsInputStream( File fileName ) throws IOException } @Override - public Reader openAsReader( File fileName, String encoding ) throws IOException + public Reader openAsReader( File fileName, Charset charset ) throws IOException { - return new InputStreamReader( openAsInputStream( fileName ), encoding ); + return new InputStreamReader( openAsInputStream( fileName ), charset ); } @Override - public Writer openAsWriter( File fileName, String encoding, boolean append ) throws IOException + public Writer openAsWriter( File fileName, Charset charset, boolean append ) throws IOException { - return new OutputStreamWriter( openAsOutputStream( fileName, append ), encoding ); + return new OutputStreamWriter( openAsOutputStream( fileName, append ), charset ); } @Override diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/RecordStoreConsistentReadTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/RecordStoreConsistentReadTest.java index f04d70da122be..bebf88684fadb 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/RecordStoreConsistentReadTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/RecordStoreConsistentReadTest.java @@ -32,6 +32,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import org.neo4j.graphdb.mockfs.EphemeralFileSystemAbstraction; +import org.neo4j.helpers.UTF8; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.pagecache.PageCache; import org.neo4j.kernel.impl.store.record.AbstractBaseRecord; @@ -275,7 +276,7 @@ public static class LabelTokenStoreConsistentReadTest extends RecordStoreConsist { private static final int NAME_RECORD_ID = 2; - private static final byte[] NAME_RECORD_DATA = "TheLabel".getBytes( Charset.forName( "UTF-8" ) ); + private static final byte[] NAME_RECORD_DATA = UTF8.encode( "TheLabel" ); @Override protected LabelTokenStore getStore( NeoStores neoStores ) diff --git a/community/kernel/src/test/java/org/neo4j/qa/tooling/DumpProcessInformationTest.java b/community/kernel/src/test/java/org/neo4j/qa/tooling/DumpProcessInformationTest.java index 4f46f2f479a2d..556d0679ef61f 100644 --- a/community/kernel/src/test/java/org/neo4j/qa/tooling/DumpProcessInformationTest.java +++ b/community/kernel/src/test/java/org/neo4j/qa/tooling/DumpProcessInformationTest.java @@ -26,6 +26,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.Iterator; import java.util.Set; @@ -81,7 +82,7 @@ public void shouldDumpProcessInformation() throws Exception private boolean fileContains( File file, String... expectedStrings ) { Set expectedStringSet = asSet( expectedStrings ); - for ( String line : asIterable( file, "UTF-8" ) ) + for ( String line : asIterable( file, StandardCharsets.UTF_8 ) ) { Iterator expectedStringIterator = expectedStringSet.iterator(); while ( expectedStringIterator.hasNext() ) diff --git a/community/kernel/src/test/java/org/neo4j/test/AsciiDocGenerator.java b/community/kernel/src/test/java/org/neo4j/test/AsciiDocGenerator.java index 5bbf9e6c7e93f..2e1f85a2e8596 100644 --- a/community/kernel/src/test/java/org/neo4j/test/AsciiDocGenerator.java +++ b/community/kernel/src/test/java/org/neo4j/test/AsciiDocGenerator.java @@ -25,6 +25,7 @@ import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Writer; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; @@ -151,8 +152,7 @@ public static Writer getFW( File dir, String filename ) throw new RuntimeException( "File exists: " + out.getAbsolutePath() ); } - return new OutputStreamWriter( new FileOutputStream( out, false ), - "UTF-8" ); + return new OutputStreamWriter( new FileOutputStream( out, false ), StandardCharsets.UTF_8 ); } catch ( Exception e ) { @@ -166,12 +166,10 @@ public static String dumpToSeparateFile( File dir, String testId, { if ( content == null || content.isEmpty() ) { - throw new IllegalArgumentException( "The content can not be empty(" - + content + ")." ); + throw new IllegalArgumentException( "The content can not be empty(" + content + ")." ); } String filename = testId + ".asciidoc"; - Writer writer = AsciiDocGenerator.getFW( new File( dir, "includes" ), - filename ); + Writer writer = AsciiDocGenerator.getFW( new File( dir, "includes" ), filename ); String title = ""; char firstChar = content.charAt( 0 ); if ( firstChar == '.' || firstChar == '_' ) diff --git a/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/input/csv/CsvInputBatchImportIT.java b/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/input/csv/CsvInputBatchImportIT.java index 21e49cc84e861..4d9edebec7086 100644 --- a/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/input/csv/CsvInputBatchImportIT.java +++ b/community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/input/csv/CsvInputBatchImportIT.java @@ -25,6 +25,7 @@ import java.io.File; import java.io.IOException; import java.io.Writer; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -170,7 +171,7 @@ public int denseNodeThreshold() private File relationshipDataAsFile( List relationshipData ) throws IOException { File file = directory.file( "relationships.csv" ); - try ( Writer writer = fs.openAsWriter( file, "utf-8", false ) ) + try ( Writer writer = fs.openAsWriter( file, StandardCharsets.UTF_8, false ) ) { // Header println( writer, ":start_id,:end_id,:type" ); @@ -187,7 +188,7 @@ private File relationshipDataAsFile( List relationshipData ) private File nodeDataAsFile( List nodeData ) throws IOException { File file = directory.file( "nodes.csv" ); - try ( Writer writer = fs.openAsWriter( file, "utf-8", false ) ) + try ( Writer writer = fs.openAsWriter( file, StandardCharsets.UTF_8, false ) ) { // Header println( writer, "id:ID,name,some-labels:LABEL" ); diff --git a/community/logging/src/main/java/org/neo4j/logging/FormattedLog.java b/community/logging/src/main/java/org/neo4j/logging/FormattedLog.java index ee3a1c6ad0765..5bc10371231ea 100644 --- a/community/logging/src/main/java/org/neo4j/logging/FormattedLog.java +++ b/community/logging/src/main/java/org/neo4j/logging/FormattedLog.java @@ -19,22 +19,22 @@ */ package org.neo4j.logging; -import org.neo4j.function.Consumer; -import org.neo4j.function.Function; -import org.neo4j.function.Supplier; -import org.neo4j.function.Suppliers; - import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Writer; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; import java.util.concurrent.atomic.AtomicReference; +import org.neo4j.function.Consumer; +import org.neo4j.function.Function; +import org.neo4j.function.Supplier; +import org.neo4j.function.Suppliers; + /** * A {@link Log} implementation that applies a simple formatting to each log message. */ @@ -53,11 +53,10 @@ public Date get() @Override public PrintWriter apply( OutputStream outputStream ) { - return new PrintWriter( new OutputStreamWriter( outputStream, UTF_8 ) ); + return new PrintWriter( new OutputStreamWriter( outputStream, StandardCharsets.UTF_8 ) ); } }; static final TimeZone UTC = TimeZone.getTimeZone( "UTC" ); - static final Charset UTF_8 = Charset.forName( "UTF-8" ); /** * A Builder for a {@link FormattedLog} diff --git a/community/logging/src/test/java/org/neo4j/logging/RotatingFileOutputStreamSupplierTest.java b/community/logging/src/test/java/org/neo4j/logging/RotatingFileOutputStreamSupplierTest.java index 91cb846a1c71f..84c204e9239ee 100644 --- a/community/logging/src/test/java/org/neo4j/logging/RotatingFileOutputStreamSupplierTest.java +++ b/community/logging/src/test/java/org/neo4j/logging/RotatingFileOutputStreamSupplierTest.java @@ -530,6 +530,7 @@ public void write( byte[] b, int off, int len ) throws IOException }; } + @Override public boolean fileExists( File fileName ) { // Default adversarial might throw a java.lang.SecurityException here, which is an exception diff --git a/community/neo4j-harness/src/main/java/org/neo4j/harness/internal/Fixtures.java b/community/neo4j-harness/src/main/java/org/neo4j/harness/internal/Fixtures.java index 4bd7a3ffc1aa0..d54fd712a6e1b 100644 --- a/community/neo4j-harness/src/main/java/org/neo4j/harness/internal/Fixtures.java +++ b/community/neo4j-harness/src/main/java/org/neo4j/harness/internal/Fixtures.java @@ -22,7 +22,7 @@ import java.io.File; import java.io.FileFilter; import java.io.IOException; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.LinkedList; import java.util.List; @@ -68,7 +68,7 @@ public void add( File fixturePath ) } return; } - add( FileUtils.readTextFile( fixturePath, Charset.forName( "UTF-8" ) ) ); + add( FileUtils.readTextFile( fixturePath, StandardCharsets.UTF_8 ) ); } catch ( IOException e ) { diff --git a/community/server-api/src/main/java/org/neo4j/server/plugins/ServerPlugin.java b/community/server-api/src/main/java/org/neo4j/server/plugins/ServerPlugin.java index 9fbb0d512e10e..3e6f3a3f3d575 100644 --- a/community/server-api/src/main/java/org/neo4j/server/plugins/ServerPlugin.java +++ b/community/server-api/src/main/java/org/neo4j/server/plugins/ServerPlugin.java @@ -22,6 +22,7 @@ import java.io.UnsupportedEncodingException; import java.lang.reflect.Method; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -114,7 +115,7 @@ static String verifyName( String name ) } try { - if ( !URLEncoder.encode( name, "UTF-8" ).equals( name ) ) + if ( !URLEncoder.encode( name, StandardCharsets.UTF_8.name() ).equals( name ) ) { throw new IllegalArgumentException( "Name contains illegal characters" ); } diff --git a/community/server-examples/src/main/java/org/neo4j/examples/server/unmanaged/HelloWorldResource.java b/community/server-examples/src/main/java/org/neo4j/examples/server/unmanaged/HelloWorldResource.java index 94cc7de4d6ad0..896ccdbe7f9e6 100644 --- a/community/server-examples/src/main/java/org/neo4j/examples/server/unmanaged/HelloWorldResource.java +++ b/community/server-examples/src/main/java/org/neo4j/examples/server/unmanaged/HelloWorldResource.java @@ -18,7 +18,6 @@ */ package org.neo4j.examples.server.unmanaged; -import java.nio.charset.Charset; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; @@ -29,6 +28,7 @@ import javax.ws.rs.core.Response.Status; import org.neo4j.graphdb.GraphDatabaseService; +import org.neo4j.helpers.UTF8; //START SNIPPET: HelloWorldResource @Path( "/helloworld" ) @@ -47,8 +47,7 @@ public HelloWorldResource( @Context GraphDatabaseService database ) public Response hello( @PathParam( "nodeId" ) long nodeId ) { // Do stuff with the database - return Response.status( Status.OK ).entity( - ("Hello World, nodeId=" + nodeId).getBytes( Charset.forName("UTF-8") ) ).build(); + return Response.status( Status.OK ).entity( UTF8.encode( "Hello World, nodeId=" + nodeId ) ).build(); } } // END SNIPPET: HelloWorldResource diff --git a/community/server/src/main/java/org/neo4j/server/rest/batch/StreamingBatchOperationResults.java b/community/server/src/main/java/org/neo4j/server/rest/batch/StreamingBatchOperationResults.java index 9090d4f29a32e..78aaf5d99be6c 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/batch/StreamingBatchOperationResults.java +++ b/community/server/src/main/java/org/neo4j/server/rest/batch/StreamingBatchOperationResults.java @@ -21,6 +21,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; @@ -43,7 +44,6 @@ public class StreamingBatchOperationResults { public static final int HEAD_BUFFER = 10; public static final int IS_ERROR = -1; - private final String encoding = "UTF-8"; private final Map locations = new HashMap(); private final JsonGenerator g; private final ServletOutputStream output; @@ -170,7 +170,7 @@ public void writeError( int status, String message ) throws IOException { if (message!=null && !message.trim().equals( Response.Status.fromStatusCode( status ).getReasonPhrase())) g.writeStringField( "message", message); else { if (errorStream!=null) { - g.writeStringField( "message", errorStream.toString( encoding )); + g.writeStringField( "message", errorStream.toString( StandardCharsets.UTF_8.name() )); } } g.close(); diff --git a/community/server/src/main/java/org/neo4j/server/rest/dbms/AuthorizationFilter.java b/community/server/src/main/java/org/neo4j/server/rest/dbms/AuthorizationFilter.java index 44362c3499c78..8100067afaad2 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/dbms/AuthorizationFilter.java +++ b/community/server/src/main/java/org/neo4j/server/rest/dbms/AuthorizationFilter.java @@ -21,8 +21,8 @@ import java.io.IOException; import java.net.URI; +import java.nio.charset.StandardCharsets; import java.util.regex.Pattern; - import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -35,7 +35,6 @@ import javax.ws.rs.core.UriBuilder; import org.neo4j.kernel.api.exceptions.Status; -import org.neo4j.kernel.impl.util.Charsets; import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; import org.neo4j.server.rest.domain.JsonHelper; @@ -148,7 +147,7 @@ void writeResponse( HttpServletResponse response ) throws IOException response.setStatus( statusCode ); response.addHeader( HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8" ); addHeaders( response ); - response.getOutputStream().write( JsonHelper.createJsonFrom( body() ).getBytes( Charsets.UTF_8 ) ); + response.getOutputStream().write( JsonHelper.createJsonFrom( body() ).getBytes( StandardCharsets.UTF_8 ) ); } } diff --git a/community/server/src/main/java/org/neo4j/server/rest/domain/URIHelper.java b/community/server/src/main/java/org/neo4j/server/rest/domain/URIHelper.java index 087f20207ad22..23cac9da7753a 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/domain/URIHelper.java +++ b/community/server/src/main/java/org/neo4j/server/rest/domain/URIHelper.java @@ -21,6 +21,7 @@ import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; public class URIHelper { @@ -28,7 +29,7 @@ public static String encode( String value ) { try { - return URLEncoder.encode( value, "utf-8" ) + return URLEncoder.encode( value, StandardCharsets.UTF_8.name() ) .replaceAll( "\\+", "%20" ); } catch ( UnsupportedEncodingException e ) diff --git a/community/server/src/main/java/org/neo4j/server/rest/management/JmxService.java b/community/server/src/main/java/org/neo4j/server/rest/management/JmxService.java index c8b1ba21f2277..5b66aca11fa2a 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/management/JmxService.java +++ b/community/server/src/main/java/org/neo4j/server/rest/management/JmxService.java @@ -22,6 +22,7 @@ import java.io.UnsupportedEncodingException; import java.lang.management.ManagementFactory; import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; @@ -130,13 +131,9 @@ private ObjectName createObjectName( final String domainName, final String objec { try { - return new ObjectName( domainName + ":" + URLDecoder.decode( objectName, "UTF-8" ) ); + return new ObjectName( domainName + ":" + URLDecoder.decode( objectName, StandardCharsets.UTF_8.name() ) ); } - catch ( MalformedObjectNameException e ) - { - throw new WebApplicationException( e, 400 ); - } - catch ( UnsupportedEncodingException e ) + catch ( MalformedObjectNameException | UnsupportedEncodingException e ) { throw new WebApplicationException( e, 400 ); } diff --git a/community/server/src/main/java/org/neo4j/server/rest/management/repr/JmxMBeanRepresentation.java b/community/server/src/main/java/org/neo4j/server/rest/management/repr/JmxMBeanRepresentation.java index 30ccb0a2ef6cc..4f57deb65e1e1 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/management/repr/JmxMBeanRepresentation.java +++ b/community/server/src/main/java/org/neo4j/server/rest/management/repr/JmxMBeanRepresentation.java @@ -22,6 +22,7 @@ import java.io.UnsupportedEncodingException; import java.lang.management.ManagementFactory; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import javax.management.InstanceNotFoundException; @@ -61,7 +62,7 @@ public ValueRepresentation getUrl() { try { - String value = URLEncoder.encode( beanName.toString(), "UTF-8" ) + String value = URLEncoder.encode( beanName.toString(), StandardCharsets.UTF_8.name() ) .replace( "%3A", "/" ); return ValueRepresentation.string( value ); } diff --git a/community/server/src/main/java/org/neo4j/server/rest/repr/OutputFormat.java b/community/server/src/main/java/org/neo4j/server/rest/repr/OutputFormat.java index a0bdd7e642d2a..4a0b5eb02d5ff 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/repr/OutputFormat.java +++ b/community/server/src/main/java/org/neo4j/server/rest/repr/OutputFormat.java @@ -32,6 +32,7 @@ import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.StreamingOutput; +import org.neo4j.helpers.UTF8; import org.neo4j.server.rest.web.NodeNotFoundException; import org.neo4j.server.rest.web.RelationshipNotFoundException; import org.neo4j.server.web.HttpHeaderUtils; @@ -41,7 +42,6 @@ public class OutputFormat { - private static final String UTF8 = "UTF-8"; private final RepresentationFormat format; private final ExtensionInjector extensions; private final URI baseUri; @@ -218,20 +218,12 @@ public static void write( Representation representation, RepresentationFormat fo private byte[] toBytes( String entity, boolean mustFail ) { - byte[] entityAsBytes; - try + byte[] entityAsBytes = UTF8.encode( entity ); + if ( !mustFail ) { - entityAsBytes = entity.getBytes( UTF8 ); - if (! mustFail) representationWriteHandler.onRepresentationWritten(); - } - catch ( UnsupportedEncodingException e ) - { - throw new RuntimeException( "Could not encode string as UTF-8", e ); - } - finally - { - representationWriteHandler.onRepresentationFinal(); + representationWriteHandler.onRepresentationWritten(); } + representationWriteHandler.onRepresentationFinal(); return entityAsBytes; } diff --git a/community/server/src/main/java/org/neo4j/server/rest/repr/formats/UrlFormFormat.java b/community/server/src/main/java/org/neo4j/server/rest/repr/formats/UrlFormFormat.java index 10c395592e911..8dcce055bc27f 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/repr/formats/UrlFormFormat.java +++ b/community/server/src/main/java/org/neo4j/server/rest/repr/formats/UrlFormFormat.java @@ -22,6 +22,7 @@ import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -95,8 +96,9 @@ public Map readMap( final String input, String... requiredKeys ) try { - key = ensureThatKeyDoesNotHavePhPStyleParenthesesAtTheEnd( URLDecoder.decode( fields[0], "UTF-8" ) ); - value = URLDecoder.decode( fields[1], "UTF-8" ); + String charset = StandardCharsets.UTF_8.name(); + key = ensureThatKeyDoesNotHavePhPStyleParenthesesAtTheEnd( URLDecoder.decode( fields[0], charset ) ); + value = URLDecoder.decode( fields[1], charset ); } catch ( UnsupportedEncodingException e ) { diff --git a/community/server/src/main/java/org/neo4j/server/rest/transactional/error/ErrorDocumentationGenerator.java b/community/server/src/main/java/org/neo4j/server/rest/transactional/error/ErrorDocumentationGenerator.java index 1a80d9011af06..0f54686c5cdd2 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/transactional/error/ErrorDocumentationGenerator.java +++ b/community/server/src/main/java/org/neo4j/server/rest/transactional/error/ErrorDocumentationGenerator.java @@ -21,6 +21,7 @@ import java.io.File; import java.io.PrintStream; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.TreeMap; @@ -86,7 +87,7 @@ private static void generateDocumentation( Table table, File file, String descri { System.out.printf( "Saving %s docs in '%s'.%n", description, file.getAbsolutePath() ); file.getParentFile().mkdirs(); - try ( PrintStream out = new PrintStream( file, "UTF-8" ) ) + try ( PrintStream out = new PrintStream( file, StandardCharsets.UTF_8.name() ) ) { table.print( out ); } diff --git a/community/server/src/main/java/org/neo4j/server/rest/web/InternalJettyServletRequest.java b/community/server/src/main/java/org/neo4j/server/rest/web/InternalJettyServletRequest.java index ec21064eeeeaa..631bc2f420a8b 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/web/InternalJettyServletRequest.java +++ b/community/server/src/main/java/org/neo4j/server/rest/web/InternalJettyServletRequest.java @@ -29,6 +29,7 @@ import java.io.IOException; import java.io.StringReader; import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.Collections; import java.util.Enumeration; @@ -42,6 +43,8 @@ import javax.servlet.http.HttpServletResponse; import javax.ws.rs.core.MediaType; +import org.neo4j.helpers.UTF8; + public class InternalJettyServletRequest extends Request { private class Input extends ServletInputStream @@ -53,14 +56,7 @@ private class Input extends ServletInputStream public Input( String data ) { - try - { - bytes = data.getBytes("UTF-8"); - } - catch ( UnsupportedEncodingException e ) - { - throw new RuntimeException( e ); - } + bytes = UTF8.encode( data ); } public int read() throws IOException @@ -141,12 +137,12 @@ public boolean isAsync() public InternalJettyServletRequest( String method, String uri, String body, InternalJettyServletResponse res ) throws UnsupportedEncodingException { - this( method, new HttpURI( uri ), body, new Cookie[] {}, MediaType.APPLICATION_JSON, "UTF-8", res ); + this( method, new HttpURI( uri ), body, new Cookie[] {}, MediaType.APPLICATION_JSON, StandardCharsets.UTF_8.name(), res ); } public InternalJettyServletRequest( String method, String uri, String body, InternalJettyServletResponse res, HttpServletRequest outerReq ) throws UnsupportedEncodingException { - this( method, new HttpURI( uri ), body, new Cookie[] {}, MediaType.APPLICATION_JSON, "UTF-8", res); + this( method, new HttpURI( uri ), body, new Cookie[] {}, MediaType.APPLICATION_JSON, StandardCharsets.UTF_8.name(), res); this.outerRequest = outerReq; } diff --git a/community/server/src/main/java/org/neo4j/server/rest/web/InternalJettyServletResponse.java b/community/server/src/main/java/org/neo4j/server/rest/web/InternalJettyServletResponse.java index 131db920cae89..0366e0ff938fb 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/web/InternalJettyServletResponse.java +++ b/community/server/src/main/java/org/neo4j/server/rest/web/InternalJettyServletResponse.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; +import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -55,7 +56,7 @@ public String toString() try { baos.flush(); - return baos.toString("UTF-8"); + return baos.toString( StandardCharsets.UTF_8.name() ); } catch ( Exception e ) { @@ -258,7 +259,7 @@ public boolean isWriting() @Override public PrintWriter getWriter() throws IOException { - return new PrintWriter( new OutputStreamWriter( output, "UTF-8") ); + return new PrintWriter( new OutputStreamWriter( output, StandardCharsets.UTF_8 ) ); } @Override diff --git a/community/server/src/main/java/org/neo4j/server/rest/web/ResourcesService.java b/community/server/src/main/java/org/neo4j/server/rest/web/ResourcesService.java index 4625689fdb2c2..934d52d7c9c55 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/web/ResourcesService.java +++ b/community/server/src/main/java/org/neo4j/server/rest/web/ResourcesService.java @@ -24,6 +24,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; +import java.nio.charset.StandardCharsets; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -85,7 +86,7 @@ private static String readAsString( InputStream input ) Reader reader = null; try { - reader = new InputStreamReader( input, "UTF-8" ); + reader = new InputStreamReader( input, StandardCharsets.UTF_8 ); int read; do { diff --git a/community/server/src/main/java/org/neo4j/server/rest/web/StreamingBatchOperations.java b/community/server/src/main/java/org/neo4j/server/rest/web/StreamingBatchOperations.java index c4dcdfc336670..601c07a84fdc0 100644 --- a/community/server/src/main/java/org/neo4j/server/rest/web/StreamingBatchOperations.java +++ b/community/server/src/main/java/org/neo4j/server/rest/web/StreamingBatchOperations.java @@ -24,6 +24,7 @@ import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.URI; +import java.nio.charset.StandardCharsets; import java.util.Map; import javax.servlet.ServletException; @@ -109,7 +110,7 @@ public ServletOutputStream getOutputStream() throws IOException { @Override public PrintWriter getWriter() throws IOException { - return new PrintWriter( new OutputStreamWriter( output, "UTF-8") ); + return new PrintWriter( new OutputStreamWriter( output, StandardCharsets.UTF_8 ) ); } } } diff --git a/community/server/src/main/java/org/neo4j/server/security/auth/Credential.java b/community/server/src/main/java/org/neo4j/server/security/auth/Credential.java index 92a42a9ed38f6..a86d8294b4d30 100644 --- a/community/server/src/main/java/org/neo4j/server/security/auth/Credential.java +++ b/community/server/src/main/java/org/neo4j/server/security/auth/Credential.java @@ -19,14 +19,14 @@ */ package org.neo4j.server.security.auth; -import org.neo4j.kernel.impl.util.Charsets; -import org.neo4j.kernel.impl.util.Codecs; - import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.concurrent.ThreadLocalRandom; +import org.neo4j.helpers.UTF8; +import org.neo4j.kernel.impl.util.Codecs; + public class Credential { public static final String DIGEST_ALGO = "SHA-256"; @@ -99,7 +99,7 @@ private static byte[] hash( byte[] salt, String password ) { try { - byte[] passwordBytes = password.getBytes( Charsets.UTF_8 ); + byte[] passwordBytes = UTF8.encode( password ); MessageDigest m = MessageDigest.getInstance( DIGEST_ALGO ); m.update( salt, 0, salt.length ); m.update( passwordBytes, 0, passwordBytes.length ); diff --git a/community/server/src/main/java/org/neo4j/server/security/auth/UserSerialization.java b/community/server/src/main/java/org/neo4j/server/security/auth/UserSerialization.java index b0204c399ebcf..41e59a8ef9e8e 100644 --- a/community/server/src/main/java/org/neo4j/server/security/auth/UserSerialization.java +++ b/community/server/src/main/java/org/neo4j/server/security/auth/UserSerialization.java @@ -23,7 +23,7 @@ import java.util.Collection; import java.util.List; -import org.neo4j.kernel.impl.util.Charsets; +import org.neo4j.helpers.UTF8; import org.neo4j.kernel.impl.util.Codecs; import static java.lang.String.format; @@ -51,14 +51,14 @@ public byte[] serialize(Collection users) { sb.append( serialize(user) ).append( "\n" ); } - return sb.toString().getBytes( Charsets.UTF_8 ); + return UTF8.encode( sb.toString() ); } public List deserializeUsers( byte[] bytes ) throws FormatException { List out = new ArrayList<>(); int lineNumber = 1; - for ( String line : new String( bytes, Charsets.UTF_8 ).split( "\n" ) ) + for ( String line : UTF8.decode( bytes ).split( "\n" ) ) { if (line.trim().length() > 0) { diff --git a/community/server/src/main/java/org/neo4j/server/web/HttpHeaderUtils.java b/community/server/src/main/java/org/neo4j/server/web/HttpHeaderUtils.java index bdfe7d252e5de..995328bc89a0e 100644 --- a/community/server/src/main/java/org/neo4j/server/web/HttpHeaderUtils.java +++ b/community/server/src/main/java/org/neo4j/server/web/HttpHeaderUtils.java @@ -20,13 +20,14 @@ package org.neo4j.server.web; import javax.ws.rs.core.MediaType; +import java.nio.charset.StandardCharsets; import java.util.Collections; import java.util.HashMap; import java.util.Map; public class HttpHeaderUtils { - private static final String UTF8 = "UTF-8"; - public static final Map CHARSET = Collections.singletonMap("charset", UTF8); + + public static final Map CHARSET = Collections.singletonMap("charset", StandardCharsets.UTF_8.name()); public static MediaType mediaTypeWithCharsetUtf8(String mediaType) { diff --git a/community/server/src/test/java/org/neo4j/server/rest/AbstractRestFunctionalTestBase.java b/community/server/src/test/java/org/neo4j/server/rest/AbstractRestFunctionalTestBase.java index 0dddeb8b784b2..6f4dadd842328 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/AbstractRestFunctionalTestBase.java +++ b/community/server/src/test/java/org/neo4j/server/rest/AbstractRestFunctionalTestBase.java @@ -23,6 +23,7 @@ import org.junit.Rule; import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; import java.util.Map; @@ -264,7 +265,8 @@ public String getNodesWithLabelUri( String label ) public String getNodesWithLabelAndPropertyUri( String label, String property, Object value ) throws UnsupportedEncodingException { - return format( "%slabel/%s/nodes?%s=%s", getDataUri(), label, property, encode( createJsonFrom( value ), "UTF-8" ) ); + return format( "%slabel/%s/nodes?%s=%s", getDataUri(), label, property, + encode( createJsonFrom( value ), StandardCharsets.UTF_8.name() ) ); } public String getSchemaIndexUri() diff --git a/community/server/src/test/java/org/neo4j/server/rest/RestRequest.java b/community/server/src/test/java/org/neo4j/server/rest/RestRequest.java index cdd193b19a429..e18ff95876ed5 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/RestRequest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/RestRequest.java @@ -23,6 +23,7 @@ import java.net.URI; import java.net.URISyntaxException; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; import javax.ws.rs.core.MediaType; @@ -81,7 +82,7 @@ private URI uriWithoutSlash( URI uri ) { public static String encode( Object value ) { if ( value == null ) return ""; try { - return URLEncoder.encode( value.toString(), "utf-8" ).replaceAll( "\\+", "%20" ); + return URLEncoder.encode( value.toString(), StandardCharsets.UTF_8.name() ).replaceAll( "\\+", "%20" ); } catch ( UnsupportedEncodingException e ) { throw new RuntimeException( e ); } diff --git a/community/server/src/test/java/org/neo4j/server/rest/RetrieveNodeDocIT.java b/community/server/src/test/java/org/neo4j/server/rest/RetrieveNodeDocIT.java index 77551e54eb1a9..babb6d9109c4e 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/RetrieveNodeDocIT.java +++ b/community/server/src/test/java/org/neo4j/server/rest/RetrieveNodeDocIT.java @@ -26,6 +26,7 @@ import java.io.IOException; import java.net.URI; +import java.nio.charset.StandardCharsets; import java.util.Map; import javax.ws.rs.core.MediaType; @@ -78,7 +79,7 @@ public void shouldParameteriseUrisInNodeRepresentationWithHostHeaderValue() thro HttpResponse response = httpclient.execute( httpget ); HttpEntity entity = response.getEntity(); - String entityBody = IOUtils.toString( entity.getContent(), "UTF-8" ); + String entityBody = IOUtils.toString( entity.getContent(), StandardCharsets.UTF_8 ); assertThat( entityBody, containsString( "http://dummy.neo4j.org/db/data/node/" ) ); @@ -100,7 +101,7 @@ public void shouldParameteriseUrisInNodeRepresentationWithoutHostHeaderUsingRequ HttpResponse response = httpclient.execute( httpget ); HttpEntity entity = response.getEntity(); - String entityBody = IOUtils.toString( entity.getContent(), "UTF-8" ); + String entityBody = IOUtils.toString( entity.getContent(), StandardCharsets.UTF_8 ); assertThat( entityBody, containsString( nodeUri.toString() ) ); } finally diff --git a/community/server/src/test/java/org/neo4j/server/rest/RetrieveRelationshipsFromNodeDocIT.java b/community/server/src/test/java/org/neo4j/server/rest/RetrieveRelationshipsFromNodeDocIT.java index 31c5c77ed9583..b18716bc445bf 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/RetrieveRelationshipsFromNodeDocIT.java +++ b/community/server/src/test/java/org/neo4j/server/rest/RetrieveRelationshipsFromNodeDocIT.java @@ -26,6 +26,7 @@ import static org.junit.Assert.assertThat; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Map; @@ -104,7 +105,7 @@ public void shouldParameteriseUrisInRelationshipRepresentationWithHostHeaderValu HttpResponse response = httpclient.execute( httpget ); HttpEntity entity = response.getEntity(); - String entityBody = IOUtils.toString( entity.getContent(), "UTF-8" ); + String entityBody = IOUtils.toString( entity.getContent(), StandardCharsets.UTF_8 ); System.out.println( entityBody ); @@ -129,7 +130,7 @@ public void shouldParameteriseUrisInRelationshipRepresentationWithoutHostHeaderU HttpResponse response = httpclient.execute( httpget ); HttpEntity entity = response.getEntity(); - String entityBody = IOUtils.toString( entity.getContent(), "UTF-8" ); + String entityBody = IOUtils.toString( entity.getContent(), StandardCharsets.UTF_8 ); assertThat( entityBody, containsString( "http://localhost:7474/db/data/relationship/" + likes ) ); } diff --git a/community/server/src/test/java/org/neo4j/server/rest/dbms/AuthorizationFilterTest.java b/community/server/src/test/java/org/neo4j/server/rest/dbms/AuthorizationFilterTest.java index b4494f42ea9d1..0af22308ac37b 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/dbms/AuthorizationFilterTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/dbms/AuthorizationFilterTest.java @@ -23,7 +23,6 @@ import org.junit.Before; import org.junit.Test; import org.neo4j.logging.AssertableLogProvider; -import org.neo4j.kernel.impl.util.Charsets; import org.neo4j.server.security.auth.AuthManager; import org.neo4j.server.security.auth.AuthenticationResult; @@ -36,6 +35,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.regex.Pattern; import static javax.servlet.http.HttpServletRequest.BASIC_AUTH; @@ -132,8 +132,8 @@ public void shouldRequireAuthorizationForNonWhitelistedUris() throws Exception verify( servletResponse ).setStatus( 401 ); verify( servletResponse ).addHeader( HttpHeaders.WWW_AUTHENTICATE, "None" ); verify( servletResponse ).addHeader( HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8" ); - assertThat( outputStream.toString( Charsets.UTF_8.name() ), containsString( "\"code\" : \"Neo.ClientError.Security.AuthorizationFailed\"" ) ); - assertThat( outputStream.toString( Charsets.UTF_8.name() ), containsString( "\"message\" : \"No authorization header supplied.\"" ) ); + assertThat( outputStream.toString( StandardCharsets.UTF_8.name() ), containsString( "\"code\" : \"Neo.ClientError" +".Security.AuthorizationFailed\"" ) ); + assertThat( outputStream.toString( StandardCharsets.UTF_8.name() ), containsString( "\"message\" : \"No authorization header supplied.\"" ) ); } @Test @@ -152,8 +152,8 @@ public void shouldRequireValidAuthorizationHeader() throws Exception verifyNoMoreInteractions( filterChain ); verify( servletResponse ).setStatus( 400 ); verify( servletResponse ).addHeader( HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8" ); - assertThat( outputStream.toString( Charsets.UTF_8.name() ), containsString( "\"code\" : \"Neo.ClientError.Request.InvalidFormat\"" ) ); - assertThat( outputStream.toString( Charsets.UTF_8.name() ), containsString( "\"message\" : \"Invalid Authorization header.\"" ) ); + assertThat( outputStream.toString( StandardCharsets.UTF_8.name() ), containsString( "\"code\" : \"Neo.ClientError.Request.InvalidFormat\"" ) ); + assertThat( outputStream.toString( StandardCharsets.UTF_8.name() ), containsString( "\"message\" : \"Invalid Authorization header.\"" ) ); } @Test @@ -161,7 +161,7 @@ public void shouldNotAuthorizeInvalidCredentials() throws Exception { // Given final AuthorizationFilter filter = new AuthorizationFilter( authManager, logProvider ); - String credentials = Base64.encodeBase64String( "foo:bar".getBytes( Charsets.UTF_8 ) ); + String credentials = Base64.encodeBase64String( "foo:bar".getBytes( StandardCharsets.UTF_8 ) ); when( servletRequest.getMethod() ).thenReturn( "GET" ); when( servletRequest.getContextPath() ).thenReturn( "/db/data" ); when( servletRequest.getHeader( HttpHeaders.AUTHORIZATION ) ).thenReturn( "BASIC " + credentials ); @@ -178,8 +178,8 @@ public void shouldNotAuthorizeInvalidCredentials() throws Exception ); verify( servletResponse ).setStatus( 401 ); verify( servletResponse ).addHeader( HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8" ); - assertThat( outputStream.toString( Charsets.UTF_8.name() ), containsString( "\"code\" : \"Neo.ClientError.Security.AuthorizationFailed\"" ) ); - assertThat( outputStream.toString( Charsets.UTF_8.name() ), containsString( "\"message\" : \"Invalid username or password.\"" ) ); + assertThat( outputStream.toString( StandardCharsets.UTF_8.name() ), containsString( "\"code\" : \"Neo.ClientError.Security.AuthorizationFailed\"" ) ); + assertThat( outputStream.toString( StandardCharsets.UTF_8.name() ), containsString( "\"message\" : \"Invalid username or password.\"" ) ); } @Test @@ -187,7 +187,7 @@ public void shouldAuthorizeWhenPasswordChangeRequiredForWhitelistedPath() throws { // Given final AuthorizationFilter filter = new AuthorizationFilter( authManager, logProvider ); - String credentials = Base64.encodeBase64String( "foo:bar".getBytes( Charsets.UTF_8 ) ); + String credentials = Base64.encodeBase64String( "foo:bar".getBytes( StandardCharsets.UTF_8 ) ); when( servletRequest.getMethod() ).thenReturn( "GET" ); when( servletRequest.getContextPath() ).thenReturn( "/user/foo" ); when( servletRequest.getHeader( HttpHeaders.AUTHORIZATION ) ).thenReturn( "BASIC " + credentials ); @@ -205,7 +205,7 @@ public void shouldNotAuthorizeWhenPasswordChangeRequired() throws Exception { // Given final AuthorizationFilter filter = new AuthorizationFilter( authManager, logProvider ); - String credentials = Base64.encodeBase64String( "foo:bar".getBytes( Charsets.UTF_8 ) ); + String credentials = Base64.encodeBase64String( "foo:bar".getBytes( StandardCharsets.UTF_8 ) ); when( servletRequest.getMethod() ).thenReturn( "GET" ); when( servletRequest.getContextPath() ).thenReturn( "/db/data" ); when( servletRequest.getRequestURL() ).thenReturn( new StringBuffer( "http://bar.baz:7474/db/data/" ) ); @@ -220,9 +220,9 @@ public void shouldNotAuthorizeWhenPasswordChangeRequired() throws Exception verifyNoMoreInteractions( filterChain ); verify( servletResponse ).setStatus( 403 ); verify( servletResponse ).addHeader( HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8" ); - assertThat( outputStream.toString( Charsets.UTF_8.name() ), containsString( "\"password_change\" : \"http://bar.baz:7474/user/foo/password\"" ) ); - assertThat( outputStream.toString( Charsets.UTF_8.name() ), containsString( "\"code\" : \"Neo.ClientError.Security.AuthorizationFailed\"" ) ); - assertThat( outputStream.toString( Charsets.UTF_8.name() ), containsString( "\"message\" : \"User is required to change their password.\"" ) ); + assertThat( outputStream.toString( StandardCharsets.UTF_8.name() ), containsString( "\"password_change\" : \"http://bar.baz:7474/user/foo/password\"" ) ); + assertThat( outputStream.toString( StandardCharsets.UTF_8.name() ), containsString( "\"code\" : \"Neo.ClientError.Security.AuthorizationFailed\"" ) ); + assertThat( outputStream.toString( StandardCharsets.UTF_8.name() ), containsString( "\"message\" : \"User is required to change their password.\"" ) ); } @Test @@ -230,7 +230,7 @@ public void shouldNotAuthorizeWhenTooManyAttemptsMade() throws Exception { // Given final AuthorizationFilter filter = new AuthorizationFilter( authManager, logProvider ); - String credentials = Base64.encodeBase64String( "foo:bar".getBytes( Charsets.UTF_8 ) ); + String credentials = Base64.encodeBase64String( "foo:bar".getBytes( StandardCharsets.UTF_8 ) ); when( servletRequest.getMethod() ).thenReturn( "GET" ); when( servletRequest.getContextPath() ).thenReturn( "/db/data" ); when( servletRequest.getHeader( HttpHeaders.AUTHORIZATION ) ).thenReturn( "BASIC " + credentials ); @@ -243,8 +243,8 @@ public void shouldNotAuthorizeWhenTooManyAttemptsMade() throws Exception verifyNoMoreInteractions( filterChain ); verify( servletResponse ).setStatus( 429 ); verify( servletResponse ).addHeader( HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8" ); - assertThat( outputStream.toString( Charsets.UTF_8.name() ), containsString( "\"code\" : \"Neo.ClientError.Security.AuthenticationRateLimit\"" ) ); - assertThat( outputStream.toString( Charsets.UTF_8.name() ), containsString( "\"message\" : \"Too many failed authentication requests. Please wait 5 seconds and try again.\"" ) ); + assertThat( outputStream.toString( StandardCharsets.UTF_8.name() ), containsString( "\"code\" : \"Neo.ClientError.Security.AuthenticationRateLimit\"" ) ); + assertThat( outputStream.toString( StandardCharsets.UTF_8.name() ), containsString( "\"message\" : \"Too many failed authentication requests. Please wait 5 seconds and try again.\"" ) ); } @Test @@ -252,7 +252,7 @@ public void shouldAuthorizeWhenValidCredentialsSupplied() throws Exception { // Given final AuthorizationFilter filter = new AuthorizationFilter( authManager, logProvider ); - String credentials = Base64.encodeBase64String( "foo:bar".getBytes( Charsets.UTF_8 ) ); + String credentials = Base64.encodeBase64String( "foo:bar".getBytes( StandardCharsets.UTF_8 ) ); when( servletRequest.getMethod() ).thenReturn( "GET" ); when( servletRequest.getContextPath() ).thenReturn( "/db/data" ); when( servletRequest.getHeader( HttpHeaders.AUTHORIZATION ) ).thenReturn( "BASIC " + credentials ); diff --git a/community/server/src/test/java/org/neo4j/server/rest/dbms/AuthorizationHeadersTest.java b/community/server/src/test/java/org/neo4j/server/rest/dbms/AuthorizationHeadersTest.java index d18688a0feb1e..0d03d7f6f89f0 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/dbms/AuthorizationHeadersTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/dbms/AuthorizationHeadersTest.java @@ -19,12 +19,13 @@ */ package org.neo4j.server.rest.dbms; -import java.nio.charset.Charset; - import com.sun.jersey.core.util.Base64; import org.junit.Test; -import static org.junit.Assert.*; +import org.neo4j.helpers.UTF8; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.neo4j.server.rest.dbms.AuthorizationHeaders.decode; public class AuthorizationHeadersTest @@ -57,7 +58,6 @@ public void shouldHandleSadPaths() throws Exception private String base64( String value ) { - return new String( Base64.encode( value ), Charset - .forName( "UTF-8" ) ); + return UTF8.decode( Base64.encode( value ) ); } } diff --git a/community/server/src/test/java/org/neo4j/server/rest/security/AuthenticationDocIT.java b/community/server/src/test/java/org/neo4j/server/rest/security/AuthenticationDocIT.java index 2539c58ee42a2..d22e3c3993900 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/security/AuthenticationDocIT.java +++ b/community/server/src/test/java/org/neo4j/server/rest/security/AuthenticationDocIT.java @@ -28,9 +28,9 @@ import java.io.File; import java.io.IOException; -import java.nio.charset.Charset; import javax.ws.rs.core.HttpHeaders; +import org.neo4j.helpers.UTF8; import org.neo4j.kernel.impl.annotations.Documented; import org.neo4j.server.CommunityNeoServer; import org.neo4j.server.configuration.ServerSettings; @@ -343,7 +343,6 @@ private String passwordURL( String username ) private String base64(String value) { - return new String( Base64.encode( value ), Charset - .forName( "UTF-8" )); + return UTF8.decode( Base64.encode( value ) ); } } diff --git a/community/server/src/test/java/org/neo4j/server/rest/security/UsersDocIT.java b/community/server/src/test/java/org/neo4j/server/rest/security/UsersDocIT.java index 94ff0bfb72fb7..bb1d78da786f3 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/security/UsersDocIT.java +++ b/community/server/src/test/java/org/neo4j/server/rest/security/UsersDocIT.java @@ -31,6 +31,7 @@ import org.junit.Rule; import org.junit.Test; +import org.neo4j.helpers.UTF8; import org.neo4j.kernel.impl.annotations.Documented; import org.neo4j.server.CommunityNeoServer; import org.neo4j.server.configuration.ServerSettings; @@ -200,8 +201,7 @@ private String passwordURL( String username ) private String base64(String value) { - return new String( Base64.encode( value ), Charset - .forName( "UTF-8" )); + return UTF8.decode( Base64.encode( value ) ); } private String quotedJson( String singleQuoted ) diff --git a/community/server/src/test/java/org/neo4j/server/rest/transactional/ExecutionResultSerializerTest.java b/community/server/src/test/java/org/neo4j/server/rest/transactional/ExecutionResultSerializerTest.java index 736793cae1538..3e944fa76b9fb 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/transactional/ExecutionResultSerializerTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/transactional/ExecutionResultSerializerTest.java @@ -19,6 +19,12 @@ */ package org.neo4j.server.rest.transactional; +import org.codehaus.jackson.JsonNode; +import org.junit.Test; +import org.mockito.internal.stubbing.answers.ThrowsException; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -36,12 +42,6 @@ import java.util.TreeMap; import java.util.TreeSet; -import org.codehaus.jackson.JsonNode; -import org.junit.Test; -import org.mockito.internal.stubbing.answers.ThrowsException; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - import org.neo4j.graphdb.ExecutionPlanDescription; import org.neo4j.graphdb.InputPosition; import org.neo4j.graphdb.Node; @@ -60,8 +60,8 @@ import org.neo4j.test.mocking.GraphMock; import org.neo4j.test.mocking.Link; +import static java.nio.charset.StandardCharsets.UTF_8; import static java.util.Arrays.asList; - import static org.hamcrest.Matchers.sameInstance; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertEquals; @@ -71,7 +71,6 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; - import static org.neo4j.helpers.collection.IteratorUtil.asSet; import static org.neo4j.helpers.collection.MapUtil.map; import static org.neo4j.server.rest.domain.JsonHelper.jsonNode; @@ -97,7 +96,7 @@ public void shouldSerializeResponseWithCommitUriOnly() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"commit\":\"commit/uri/1\",\"results\":[],\"errors\":[]}", result ); } @@ -118,7 +117,7 @@ public void shouldSerializeResponseWithCommitUriAndResults() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"commit\":\"commit/uri/1\",\"results\":[{\"columns\":[\"column1\",\"column2\"]," + "\"data\":[{\"row\":[\"value1\",\"value2\"]}]}],\"errors\":[]}", result ); } @@ -139,7 +138,7 @@ public void shouldSerializeResponseWithResultsOnly() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"results\":[{\"columns\":[\"column1\",\"column2\"]," + "\"data\":[{\"row\":[\"value1\",\"value2\"]}]}],\"errors\":[]}", result ); } @@ -162,7 +161,7 @@ public void shouldSerializeResponseWithCommitUriAndResultsAndErrors() throws Exc serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"commit\":\"commit/uri/1\",\"results\":[{\"columns\":[\"column1\",\"column2\"]," + "\"data\":[{\"row\":[\"value1\",\"value2\"]}]}]," + "\"errors\":[{\"code\":\"Neo.ClientError.Request.InvalidFormat\",\"message\":\"cause1\"}]}", @@ -186,7 +185,7 @@ public void shouldSerializeResponseWithResultsAndErrors() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"results\":[{\"columns\":[\"column1\",\"column2\"]," + "\"data\":[{\"row\":[\"value1\",\"value2\"]}]}]," + "\"errors\":[{\"code\":\"Neo.ClientError.Request.InvalidFormat\",\"message\":\"cause1\"}]}", @@ -206,7 +205,7 @@ public void shouldSerializeResponseWithCommitUriAndErrors() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"commit\":\"commit/uri/1\",\"results\":[],\"errors\":[{\"code\":\"Neo.ClientError.Request.InvalidFormat\"," + "\"message\":\"cause1\"}]}", result ); } @@ -223,7 +222,7 @@ public void shouldSerializeResponseWithErrorsOnly() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"results\":[],\"errors\":[{\"code\":\"Neo.ClientError.Request.InvalidFormat\",\"message\":\"cause1\"}]}", result ); @@ -240,7 +239,7 @@ public void shouldSerializeResponseWithNoCommitUriResultsOrErrors() throws Excep serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"results\":[],\"errors\":[]}", result ); } @@ -262,7 +261,7 @@ public void shouldSerializeResponseWithMultipleResultRows() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"results\":[{\"columns\":[\"column1\",\"column2\"]," + "\"data\":[{\"row\":[\"value1\",\"value2\"]},{\"row\":[\"value3\",\"value4\"]}]}]," + "\"errors\":[]}", result ); @@ -288,7 +287,7 @@ public void shouldSerializeResponseWithMultipleResults() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"results\":[" + "{\"columns\":[\"column1\",\"column2\"],\"data\":[{\"row\":[\"value1\",\"value2\"]}]}," + "{\"columns\":[\"column3\",\"column4\"],\"data\":[{\"row\":[\"value3\",\"value4\"]}]}]," + @@ -315,7 +314,7 @@ public void shouldSerializeNodeAsMapOfProperties() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"results\":[{\"columns\":[\"node\"]," + "\"data\":[{\"row\":[{\"a\":12,\"b\":true,\"c\":[1,0,1,2],\"d\":[1,0,1,2],\"e\":[\"a\",\"b\",\"รครครถ\"]}]}]}]," + "\"errors\":[]}", result ); @@ -343,7 +342,7 @@ public void shouldSerializeNestedEntities() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"results\":[{\"columns\":[\"nested\"]," + "\"data\":[{\"row\":[{\"edge\":{\"baz\":\"quux\"},\"node\":{\"foo\":12},\"path\":[{\"foo\":12},{\"baz\":\"quux\"},{\"bar\":false}]}]}]}]," + "\"errors\":[]}", result ); @@ -364,7 +363,7 @@ public void shouldSerializePathAsListOfMapsOfProperties() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"results\":[{\"columns\":[\"path\"]," + "\"data\":[{\"row\":[[{\"key1\":\"value1\"},{\"key2\":\"value2\"},{\"key3\":\"value3\"}]]}]}]," + "\"errors\":[]}", result ); @@ -399,7 +398,7 @@ public void shouldProduceWellFormedJsonEvenIfResultIteratorThrowsExceptionOnNext serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"results\":[{\"columns\":[\"column1\",\"column2\"],\"data\":[{\"row\":[\"value1\",\"value2\"]}]}]," + "\"errors\":[{\"code\":\"Neo.DatabaseError.Statement.ExecutionFailure\",\"message\":\"Stuff went wrong!\",\"stackTrace\":***}]}", @@ -436,7 +435,7 @@ public void shouldProduceWellFormedJsonEvenIfResultIteratorThrowsExceptionOnHasN serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"results\":[{\"columns\":[\"column1\",\"column2\"],\"data\":[{\"row\":[\"value1\",\"value2\"]}]}]," + "\"errors\":[{\"code\":\"Neo.DatabaseError.Statement.ExecutionFailure\",\"message\":\"Stuff went wrong!\"," + @@ -467,7 +466,7 @@ public void shouldProduceResultStreamWithGraphEntries() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); // Nodes and relationships form sets, so we cannot test for a fixed string, since we don't know the order. String node0 = "{\"id\":\"0\",\"labels\":[\"Node\"],\"properties\":{\"name\":\"node0\"}}"; @@ -520,7 +519,7 @@ public void shouldProduceResultStreamWithLegacyRestFormat() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); JsonNode json = jsonNode( result ); Map columns = new HashMap<>(); int col = 0; @@ -559,7 +558,7 @@ public void shouldProduceResultStreamWithLegacyRestFormatAndNestedMaps() throws serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); JsonNode json = jsonNode(result); Map columns = new HashMap<>(); int col = 0; @@ -598,7 +597,7 @@ public void shouldSerializePlanWithoutChildButAllKindsOfSupportedArguments() thr ExecutionPlanDescription planDescription = mockedPlanDescription( operatorType, NO_IDS, args, NO_PLANS ); serializer.statementResult( mockExecutionResult( planDescription ), false, ResultDataContent.rest ); serializer.finish(); - String resultString = output.toString( "UTF-8" ); + String resultString = output.toString( UTF_8.name() ); // then assertIsPlanRoot( resultString ); @@ -636,7 +635,7 @@ public void shouldSerializePlanWithoutChildButWithIdentifiers() throws Exception mockedPlanDescription( operatorType, asSet( id1, id2, id3 ), NO_ARGS, NO_PLANS ); serializer.statementResult( mockExecutionResult( planDescription ), false, ResultDataContent.rest ); serializer.finish(); - String resultString = output.toString( "UTF-8" ); + String resultString = output.toString( UTF_8.name() ); // then assertIsPlanRoot( resultString ); @@ -670,7 +669,7 @@ public void shouldSerializePlanWithChildren() throws Exception serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); JsonNode root = assertIsPlanRoot( result ); assertEquals( "parent", root.get( "operatorType" ).getTextValue() ); @@ -795,7 +794,7 @@ public void shouldReturnNotifications() throws IOException serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"commit\":\"commit/uri/1\",\"results\":[{\"columns\":[\"column1\",\"column2\"]," + @@ -829,7 +828,7 @@ public void shouldNotReturnNotificationsWhenEmptyNotifications() throws IOExcept serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"commit\":\"commit/uri/1\",\"results\":[{\"columns\":[\"column1\",\"column2\"]," + @@ -857,7 +856,7 @@ public void shouldNotReturnPositionWhenEmptyPosition() throws IOException serializer.finish(); // then - String result = output.toString( "UTF-8" ); + String result = output.toString( UTF_8.name() ); assertEquals( "{\"commit\":\"commit/uri/1\",\"results\":[{\"columns\":[\"column1\",\"column2\"]," + diff --git a/community/server/src/test/java/org/neo4j/server/rest/transactional/GraphExtractionWriterTest.java b/community/server/src/test/java/org/neo4j/server/rest/transactional/GraphExtractionWriterTest.java index 08bfc9d897e5a..2170f686225bb 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/transactional/GraphExtractionWriterTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/transactional/GraphExtractionWriterTest.java @@ -38,6 +38,7 @@ import org.neo4j.server.rest.domain.JsonParseException; import org.neo4j.test.Property; +import static java.nio.charset.StandardCharsets.UTF_8; import static java.util.Arrays.asList; import static org.junit.Assert.assertEquals; @@ -200,7 +201,7 @@ private JsonNode write( Map row ) throws IOException, JsonParseE json.writeEndObject(); json.flush(); } - return JsonHelper.jsonNode( out.toString( "UTF-8" ) ); + return JsonHelper.jsonNode( out.toString( UTF_8.name() ) ); } // The expected format of the result diff --git a/community/server/src/test/java/org/neo4j/server/rest/transactional/StatementDeserializerTest.java b/community/server/src/test/java/org/neo4j/server/rest/transactional/StatementDeserializerTest.java index a9d2cab0e764c..a360f70b6059c 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/transactional/StatementDeserializerTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/transactional/StatementDeserializerTest.java @@ -19,18 +19,21 @@ */ package org.neo4j.server.rest.transactional; +import org.junit.Test; + import java.io.ByteArrayInputStream; import java.io.UnsupportedEncodingException; import java.util.Iterator; -import org.junit.Test; +import org.neo4j.helpers.UTF8; import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.server.rest.transactional.error.Neo4jError; import static java.util.Arrays.asList; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; -import static org.junit.Assert.*; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import static org.neo4j.helpers.collection.MapUtil.map; import static org.neo4j.server.rest.domain.JsonHelper.createJsonFrom; @@ -44,7 +47,7 @@ public void shouldDeserializeSingleStatement() throws Exception String json = createJsonFrom( map( "statements", asList( map( "statement", "Blah blah", "parameters", map( "one", 12 ) ) ) ) ); // When - StatementDeserializer de = new StatementDeserializer( new ByteArrayInputStream( json.getBytes( "UTF-8" ) ) ); + StatementDeserializer de = new StatementDeserializer( new ByteArrayInputStream( UTF8.encode( json ) ) ); // Then assertThat( de.hasNext(), equalTo( true ) ); @@ -80,7 +83,7 @@ public void shouldTotallyIgnoreInvalidJsonAfterStatementArrayHasFinished() throw "totally invalid json is totally ignored"; // When - StatementDeserializer de = new StatementDeserializer( new ByteArrayInputStream( json.getBytes( "UTF-8" ) ) ); + StatementDeserializer de = new StatementDeserializer( new ByteArrayInputStream( UTF8.encode( json ) ) ); // Then assertThat( de.hasNext(), equalTo( true ) ); @@ -98,7 +101,7 @@ public void shouldIgnoreUnknownFields() throws Exception String json = "{ \"statements\" : [ { \"a\" : \"\", \"b\" : { \"k\":1 }, \"statement\" : \"blah\" } ] }"; // When - StatementDeserializer de = new StatementDeserializer( new ByteArrayInputStream( json.getBytes( "UTF-8" ) ) ); + StatementDeserializer de = new StatementDeserializer( new ByteArrayInputStream( UTF8.encode( json ) ) ); // Then assertThat( de.hasNext(), equalTo( true ) ); @@ -114,7 +117,7 @@ public void shouldTakeParametersBeforeStatement() throws Exception String json = "{ \"statements\" : [ { \"a\" : \"\", \"parameters\" : { \"k\":1 }, \"statement\" : \"blah\"}]}"; // When - StatementDeserializer de = new StatementDeserializer( new ByteArrayInputStream( json.getBytes( "UTF-8" ) ) ); + StatementDeserializer de = new StatementDeserializer( new ByteArrayInputStream( UTF8.encode( json ) ) ); // Then assertThat( de.hasNext(), equalTo( true ) ); @@ -151,7 +154,7 @@ public void shouldDeserializeMultipleStatements() throws Exception map( "statement", "Blah bluh", "parameters", map( "asd", asList( "one, two" ) ) ) ) ) ); // When - StatementDeserializer de = new StatementDeserializer( new ByteArrayInputStream( json.getBytes( "UTF-8" ) ) ); + StatementDeserializer de = new StatementDeserializer( new ByteArrayInputStream( UTF8.encode( json ) ) ); // Then assertThat( de.hasNext(), equalTo( true ) ); @@ -212,7 +215,7 @@ public void shouldNotThrowButReportErrorOnInvalidInput() throws Exception private void assertYieldsErrors( String json, Neo4jError... expectedErrors ) throws UnsupportedEncodingException { - StatementDeserializer de = new StatementDeserializer( new ByteArrayInputStream( json.getBytes( "UTF-8" ) ) + StatementDeserializer de = new StatementDeserializer( new ByteArrayInputStream( UTF8.encode( json ) ) { @Override public String toString() diff --git a/community/server/src/test/java/org/neo4j/server/rest/transactional/error/ErrorDocumentationGeneratorTest.java b/community/server/src/test/java/org/neo4j/server/rest/transactional/error/ErrorDocumentationGeneratorTest.java index 3d3adb258e569..6c0d01d6b9e9b 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/transactional/error/ErrorDocumentationGeneratorTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/transactional/error/ErrorDocumentationGeneratorTest.java @@ -21,6 +21,7 @@ import java.io.ByteArrayOutputStream; import java.io.PrintStream; +import java.nio.charset.StandardCharsets; import org.junit.Test; @@ -45,12 +46,12 @@ public void tablesShouldFormatAsAsciiDoc() throws Exception // When ByteArrayOutputStream buf = new ByteArrayOutputStream(); - PrintStream out = new PrintStream( buf, false, "UTF-8" ); + PrintStream out = new PrintStream( buf, false, StandardCharsets.UTF_8.name() ); table.print( out ); out.flush(); // Then - String result = buf.toString( "UTF-8" ); + String result = buf.toString( StandardCharsets.UTF_8.name() ); String n = System.lineSeparator(); String expected = "[options=\"header\", cols=\"COLS\"]" + n + @@ -74,8 +75,8 @@ public void shouldGenerateTableOfClassifications() throws Exception // Then ByteArrayOutputStream buf = new ByteArrayOutputStream(); - table.print( new PrintStream( buf, true, "UTF-8" ) ); - String actual = buf.toString( "UTF-8" ); + table.print( new PrintStream( buf, true, StandardCharsets.UTF_8.name() ) ); + String actual = buf.toString( StandardCharsets.UTF_8.name() ); // More or less randomly chosen bits of text that should be in the output: assertThat( actual, stringContainsInOrder( asList( "DatabaseError", "Rollback" ) ) ); @@ -92,8 +93,8 @@ public void shouldGenerateTableOfStatusCodes() throws Exception // Then ByteArrayOutputStream buf = new ByteArrayOutputStream(); - table.print( new PrintStream( buf, true, "UTF-8" ) ); - String actual = buf.toString( "UTF-8" ); + table.print( new PrintStream( buf, true, StandardCharsets.UTF_8.name() ) ); + String actual = buf.toString( StandardCharsets.UTF_8.name() ); // More or less randomly chosen bits of text that should be in the output: assertThat( actual, stringContainsInOrder( asList( "UnknownFailure", "An unknown failure occurred" ) ) ); diff --git a/community/server/src/test/java/org/neo4j/server/rest/web/RestfulGraphDatabaseTest.java b/community/server/src/test/java/org/neo4j/server/rest/web/RestfulGraphDatabaseTest.java index c8aabd2e0aa7f..0b97b0fff991a 100644 --- a/community/server/src/test/java/org/neo4j/server/rest/web/RestfulGraphDatabaseTest.java +++ b/community/server/src/test/java/org/neo4j/server/rest/web/RestfulGraphDatabaseTest.java @@ -44,6 +44,7 @@ import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.graphdb.index.IndexHits; import org.neo4j.helpers.FakeClock; +import org.neo4j.helpers.UTF8; import org.neo4j.helpers.collection.MapUtil; import org.neo4j.kernel.GraphDatabaseAPI; import org.neo4j.kernel.configuration.Config; @@ -164,14 +165,7 @@ public static void shutdownDatabase() throws Throwable private static String entityAsString( Response response ) { byte[] bytes = (byte[]) response.getEntity(); - try - { - return new String( bytes, "UTF-8" ); - } - catch ( UnsupportedEncodingException e ) - { - throw new RuntimeException( "Could not decode UTF-8", e ); - } + return UTF8.decode( bytes ); } @SuppressWarnings("unchecked") diff --git a/community/server/src/test/java/org/neo4j/server/security/auth/FileUserRepositoryTest.java b/community/server/src/test/java/org/neo4j/server/security/auth/FileUserRepositoryTest.java index ad67387e43067..c92d1f78448ea 100644 --- a/community/server/src/test/java/org/neo4j/server/security/auth/FileUserRepositoryTest.java +++ b/community/server/src/test/java/org/neo4j/server/security/auth/FileUserRepositoryTest.java @@ -22,6 +22,9 @@ import com.google.common.jimfs.Configuration; import com.google.common.jimfs.Jimfs; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; import java.io.IOException; import java.nio.file.CopyOption; @@ -32,13 +35,10 @@ import java.util.Arrays; import java.util.Collection; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; +import org.neo4j.helpers.UTF8; import org.neo4j.io.fs.DelegatingFileSystem; import org.neo4j.io.fs.DelegatingFileSystemProvider; import org.neo4j.logging.AssertableLogProvider; -import org.neo4j.kernel.impl.util.Charsets; import org.neo4j.logging.NullLogProvider; import org.neo4j.server.security.auth.exception.ConcurrentModificationException; @@ -233,8 +233,8 @@ public void shouldIgnoreInvalidEntries() throws Throwable // Given AssertableLogProvider logProvider = new AssertableLogProvider(); Files.createDirectories( authFile.getParent() ); - Files.write( authFile, - "neo4j:fc4c600b43ffe4d5857b4439c35df88f:SHA-256,A42E541F276CF17036DB7818F8B09B1C229AAD52A17F69F4029617F3A554640F,FB7E8AE08A6A7C741F678AD22217808F:\n".getBytes( Charsets.UTF_8 ) ); + Files.write( authFile, UTF8.encode( + "neo4j:fc4c600b43ffe4d5857b4439c35df88f:SHA-256,A42E541F276CF17036DB7818F8B09B1C229AAD52A17F69F4029617F3A554640F,FB7E8AE08A6A7C741F678AD22217808F:\n" ) ); // When FileUserRepository users = new FileUserRepository( authFile, logProvider ); diff --git a/community/server/src/test/java/org/neo4j/server/security/auth/UserSerializationTest.java b/community/server/src/test/java/org/neo4j/server/security/auth/UserSerializationTest.java index 9df7c1c0e4b4e..04fdd2e02d237 100644 --- a/community/server/src/test/java/org/neo4j/server/security/auth/UserSerializationTest.java +++ b/community/server/src/test/java/org/neo4j/server/security/auth/UserSerializationTest.java @@ -23,13 +23,12 @@ import java.util.List; -import org.neo4j.kernel.impl.util.Charsets; +import org.neo4j.helpers.UTF8; +import static java.util.Arrays.asList; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; -import static java.util.Arrays.asList; - public class UserSerializationTest { @Test @@ -64,9 +63,9 @@ public void shouldReadV1SerializationFormat() throws Exception byte[] hash2 = new byte[] { (byte) 0x0e, (byte) 0x1f, (byte) 0xff, (byte) 0xc2, (byte) 0x3e }; // When - List deserialized = serialization.deserializeUsers( + List deserialized = serialization.deserializeUsers( UTF8.encode( ("Steve:SHA-256,FE0056C37E,A543:\n" + - "Bob:SHA-256,0E1FFFC23E,34A4:password_change_required\n") .getBytes( Charsets.UTF_8 ) ); + "Bob:SHA-256,0E1FFFC23E,34A4:password_change_required\n") ) ); // Then assertThat( deserialized, equalTo( asList( diff --git a/community/server/src/test/java/org/neo4j/server/web/logging/HTTPLoggingDocIT.java b/community/server/src/test/java/org/neo4j/server/web/logging/HTTPLoggingDocIT.java index af43ea0c1057a..9b1c78fdd4dcc 100644 --- a/community/server/src/test/java/org/neo4j/server/web/logging/HTTPLoggingDocIT.java +++ b/community/server/src/test/java/org/neo4j/server/web/logging/HTTPLoggingDocIT.java @@ -27,6 +27,7 @@ import java.io.File; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.UUID; import java.util.concurrent.TimeUnit; @@ -34,7 +35,6 @@ import org.neo4j.graphdb.config.InvalidSettingException; import org.neo4j.helpers.collection.MapUtil; import org.neo4j.kernel.configuration.Config; -import org.neo4j.kernel.impl.util.Charsets; import org.neo4j.server.NeoServer; import org.neo4j.server.configuration.Configurator; import org.neo4j.server.helpers.CommunityServerBuilder; @@ -218,12 +218,12 @@ public void givenConfigurationWithUnwritableLogDirectoryShouldFailToStartServer( private ThrowingSupplier fileContentSupplier( final File file ) { - return new ThrowingSupplier() + return new ThrowingSupplier() { @Override public String get() throws IOException { - return readTextFile( file, Charsets.UTF_8 ); + return readTextFile( file, StandardCharsets.UTF_8 ); } }; } diff --git a/community/server/src/test/java/org/neo4j/server/webadmin/rest/ConsoleServiceDocTest.java b/community/server/src/test/java/org/neo4j/server/webadmin/rest/ConsoleServiceDocTest.java index 4cb7439665e4b..b22137e3450f8 100644 --- a/community/server/src/test/java/org/neo4j/server/webadmin/rest/ConsoleServiceDocTest.java +++ b/community/server/src/test/java/org/neo4j/server/webadmin/rest/ConsoleServiceDocTest.java @@ -19,22 +19,22 @@ */ package org.neo4j.server.webadmin.rest; -import java.io.UnsupportedEncodingException; +import org.junit.Test; + import java.net.URI; import java.net.URISyntaxException; -import java.util.ArrayList; +import java.util.Collections; import javax.ws.rs.core.Response; -import org.junit.Test; - +import org.neo4j.helpers.UTF8; import org.neo4j.logging.LogProvider; import org.neo4j.logging.NullLogProvider; import org.neo4j.server.database.Database; +import org.neo4j.server.rest.management.console.ConsoleService; import org.neo4j.server.rest.repr.OutputFormat; import org.neo4j.server.rest.repr.formats.JsonFormat; import org.neo4j.server.webadmin.console.ConsoleSessionFactory; import org.neo4j.server.webadmin.console.ScriptSession; -import org.neo4j.server.rest.management.console.ConsoleService; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; @@ -46,7 +46,7 @@ public class ConsoleServiceDocTest private final URI uri = URI.create( "http://peteriscool.com:6666/" ); @Test - public void correctRepresentation() throws URISyntaxException, UnsupportedEncodingException + public void correctRepresentation() throws URISyntaxException { ConsoleService consoleService = new ConsoleService( new ShellOnlyConsoleSessionFactory(), mock( Database.class ), NullLogProvider.getInstance(), new OutputFormat( new JsonFormat(), uri, null ) ); @@ -60,7 +60,7 @@ public void correctRepresentation() throws URISyntaxException, UnsupportedEncodi } @Test - public void advertisesAvailableConsoleEngines() throws URISyntaxException, UnsupportedEncodingException + public void advertisesAvailableConsoleEngines() throws URISyntaxException { ConsoleService consoleServiceWithJustShellEngine = new ConsoleService( new ShellOnlyConsoleSessionFactory(), mock( Database.class ), NullLogProvider.getInstance(), new OutputFormat( new JsonFormat(), uri, null ) ); @@ -71,9 +71,9 @@ public void advertisesAvailableConsoleEngines() throws URISyntaxException, Unsup } - private String decode( final Response response ) throws UnsupportedEncodingException + private String decode( final Response response ) { - return new String( (byte[]) response.getEntity(), "UTF-8" ); + return UTF8.decode( (byte[]) response.getEntity() ); } private static class ShellOnlyConsoleSessionFactory implements ConsoleSessionFactory @@ -87,9 +87,7 @@ public ScriptSession createSession( String engineName, Database database, LogPro @Override public Iterable supportedEngines() { - return new ArrayList(){{ - add("shell"); - }}; + return Collections.singletonList( "shell" ); } } } diff --git a/community/server/src/test/java/org/neo4j/server/webadmin/rest/JmxServiceDocTest.java b/community/server/src/test/java/org/neo4j/server/webadmin/rest/JmxServiceDocTest.java index 511dbf72a5ef9..dffa86d150437 100644 --- a/community/server/src/test/java/org/neo4j/server/webadmin/rest/JmxServiceDocTest.java +++ b/community/server/src/test/java/org/neo4j/server/webadmin/rest/JmxServiceDocTest.java @@ -19,35 +19,35 @@ */ package org.neo4j.server.webadmin.rest; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsString; -import static org.junit.Assert.assertEquals; +import org.junit.Before; +import org.junit.Test; -import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URISyntaxException; - import javax.ws.rs.core.Response; -import org.junit.Before; -import org.junit.Test; +import org.neo4j.helpers.UTF8; import org.neo4j.server.rest.management.JmxService; import org.neo4j.server.rest.repr.OutputFormat; import org.neo4j.server.rest.repr.formats.JsonFormat; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; +import static org.junit.Assert.assertEquals; + public class JmxServiceDocTest { public JmxService jmxService; private final URI uri = URI.create( "http://peteriscool.com:6666/" ); @Test - public void correctRepresentation() throws URISyntaxException, UnsupportedEncodingException + public void correctRepresentation() throws URISyntaxException { Response resp = jmxService.getServiceDefinition(); assertEquals( 200, resp.getStatus() ); - String json = new String( (byte[]) resp.getEntity(), "UTF-8" ); + String json = UTF8.decode( (byte[]) resp.getEntity() ); assertThat( json, containsString( "resources" ) ); assertThat( json, containsString( uri.toString() ) ); assertThat( json, containsString( "jmx/domain/{domain}/{objectName}" ) ); diff --git a/community/server/src/test/java/org/neo4j/server/webadmin/rest/Neo4jShellConsoleSessionDocTest.java b/community/server/src/test/java/org/neo4j/server/webadmin/rest/Neo4jShellConsoleSessionDocTest.java index 56eb58602b602..9a2c3e05f29ee 100644 --- a/community/server/src/test/java/org/neo4j/server/webadmin/rest/Neo4jShellConsoleSessionDocTest.java +++ b/community/server/src/test/java/org/neo4j/server/webadmin/rest/Neo4jShellConsoleSessionDocTest.java @@ -19,17 +19,17 @@ */ package org.neo4j.server.webadmin.rest; -import java.io.UnsupportedEncodingException; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + import java.net.URI; import java.util.ArrayList; import java.util.List; import javax.ws.rs.core.Response; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - import org.neo4j.helpers.Settings; +import org.neo4j.helpers.UTF8; import org.neo4j.kernel.GraphDatabaseAPI; import org.neo4j.logging.LogProvider; import org.neo4j.logging.NullLogProvider; @@ -103,9 +103,9 @@ public void doesntMangleNewlines() throws Exception assertThat( result, containsString( expected ) ); } - private List decode( final Response response ) throws UnsupportedEncodingException, JsonParseException + private List decode( final Response response ) throws JsonParseException { - return (List) JsonHelper.readJson( new String( (byte[]) response.getEntity(), "UTF-8" ) ); + return (List) JsonHelper.readJson( UTF8.decode( (byte[]) response.getEntity() ) ); } @Override diff --git a/community/shell/src/main/java/org/neo4j/shell/StartClient.java b/community/shell/src/main/java/org/neo4j/shell/StartClient.java index 67e203bbaf0c4..0a79de932c238 100644 --- a/community/shell/src/main/java/org/neo4j/shell/StartClient.java +++ b/community/shell/src/main/java/org/neo4j/shell/StartClient.java @@ -27,6 +27,7 @@ import java.io.PrintStream; import java.io.Serializable; import java.lang.reflect.Method; +import java.nio.charset.StandardCharsets; import java.rmi.ConnectException; import java.rmi.RemoteException; import java.util.HashMap; @@ -42,7 +43,6 @@ import org.neo4j.shell.kernel.GraphDatabaseShellServer; import static org.neo4j.io.fs.FileUtils.newBufferedFileReader; -import static org.neo4j.kernel.impl.util.Charsets.UTF_8; /** * Can start clients, either remotely to another JVM running a server @@ -358,7 +358,7 @@ private void grabPromptOrJustExecuteCommand( ShellClient client, Args args ) thr { if ( fileName.equals( ARG_FILE_STDIN ) ) { - reader = new BufferedReader( new InputStreamReader( System.in, UTF_8 ) ); + reader = new BufferedReader( new InputStreamReader( System.in, StandardCharsets.UTF_8 ) ); } else { @@ -367,7 +367,7 @@ private void grabPromptOrJustExecuteCommand( ShellClient client, Args args ) thr { throw new ShellException( "File to execute " + "does not exist: " + fileName ); } - reader = newBufferedFileReader( file, UTF_8 ); + reader = newBufferedFileReader( file, StandardCharsets.UTF_8 ); } executeCommandStream( client, reader ); } diff --git a/community/shell/src/main/java/org/neo4j/shell/impl/StandardConsole.java b/community/shell/src/main/java/org/neo4j/shell/impl/StandardConsole.java index c3dd0be613e13..6f00318fcb0e1 100644 --- a/community/shell/src/main/java/org/neo4j/shell/impl/StandardConsole.java +++ b/community/shell/src/main/java/org/neo4j/shell/impl/StandardConsole.java @@ -22,6 +22,7 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import org.neo4j.shell.Console; @@ -52,9 +53,8 @@ public String readLine( String prompt ) format( prompt ); if ( consoleReader == null ) { - consoleReader = new BufferedReader( new InputStreamReader( - System.in, "UTF-8" ) ); - } + consoleReader = new BufferedReader( new InputStreamReader( System.in, StandardCharsets.UTF_8 ) ); + } return consoleReader.readLine(); } catch ( IOException e ) diff --git a/community/shell/src/main/java/org/neo4j/shell/impl/SystemOutput.java b/community/shell/src/main/java/org/neo4j/shell/impl/SystemOutput.java index 6e407ea28ccbc..1fc14d90263a4 100644 --- a/community/shell/src/main/java/org/neo4j/shell/impl/SystemOutput.java +++ b/community/shell/src/main/java/org/neo4j/shell/impl/SystemOutput.java @@ -22,8 +22,7 @@ import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Serializable; -import java.io.UnsupportedEncodingException; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import org.neo4j.shell.Output; @@ -36,13 +35,8 @@ public class SystemOutput implements Output private PrintWriter out; public SystemOutput() { - try { - out = new PrintWriter(new OutputStreamWriter(System.out,"UTF-8")); - } catch (UnsupportedEncodingException e) { - System.err.println("Unsupported encoding UTF-8, using "+Charset.defaultCharset()+", error: "+e.getMessage()); - out = new PrintWriter(new OutputStreamWriter(System.out, Charset.defaultCharset())); - } - } + out = new PrintWriter( new OutputStreamWriter( System.out, StandardCharsets.UTF_8 ) ); + } public void print( Serializable object ) { diff --git a/community/udc/src/main/java/org/neo4j/ext/udc/impl/Pinger.java b/community/udc/src/main/java/org/neo4j/ext/udc/impl/Pinger.java index 9d5dd70bb1aa3..b91f69217d8c6 100644 --- a/community/udc/src/main/java/org/neo4j/ext/udc/impl/Pinger.java +++ b/community/udc/src/main/java/org/neo4j/ext/udc/impl/Pinger.java @@ -23,6 +23,7 @@ import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.Map; import org.neo4j.helpers.HostnamePort; @@ -58,7 +59,7 @@ public void ping() throws IOException { uri.append( key ); uri.append( "=" ); - uri.append( URLEncoder.encode( usageDataMap.get( key ), "UTF-8") ); + uri.append( URLEncoder.encode( usageDataMap.get( key ), StandardCharsets.UTF_8.name() ) ); uri.append( "+" ); } diff --git a/community/udc/src/test/java/org/neo4j/ext/udc/impl/PingerHandler.java b/community/udc/src/test/java/org/neo4j/ext/udc/impl/PingerHandler.java index c42cf71edd705..983f503645709 100644 --- a/community/udc/src/test/java/org/neo4j/ext/udc/impl/PingerHandler.java +++ b/community/udc/src/test/java/org/neo4j/ext/udc/impl/PingerHandler.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; @@ -49,8 +50,8 @@ public void handle( HttpRequest httpRequest, HttpResponse httpResponse, HttpCont for ( String param : params ) { String[] pair = param.split( "=" ); - String key = URLDecoder.decode( pair[0], "UTF-8" ); - String value = URLDecoder.decode( pair[1], "UTF-8" ); + String key = URLDecoder.decode( pair[0], StandardCharsets.UTF_8.name() ); + String value = URLDecoder.decode( pair[1], StandardCharsets.UTF_8.name() ); queryMap.put( key, value ); } } diff --git a/enterprise/enterprise-performance-tests/src/main/java/org/neo4j/perftest/enterprise/ccheck/JsonReportWriter.java b/enterprise/enterprise-performance-tests/src/main/java/org/neo4j/perftest/enterprise/ccheck/JsonReportWriter.java index 144e594e7e323..5af83e17813e4 100644 --- a/enterprise/enterprise-performance-tests/src/main/java/org/neo4j/perftest/enterprise/ccheck/JsonReportWriter.java +++ b/enterprise/enterprise-performance-tests/src/main/java/org/neo4j/perftest/enterprise/ccheck/JsonReportWriter.java @@ -19,22 +19,22 @@ */ package org.neo4j.perftest.enterprise.ccheck; +import org.codehaus.jackson.JsonFactory; +import org.codehaus.jackson.JsonGenerator; +import org.codehaus.jackson.util.DefaultPrettyPrinter; + import java.io.File; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.TreeMap; -import org.codehaus.jackson.JsonFactory; -import org.codehaus.jackson.JsonGenerator; -import org.codehaus.jackson.util.DefaultPrettyPrinter; - import org.neo4j.kernel.configuration.Config; import org.neo4j.perftest.enterprise.generator.DataGenerator; import org.neo4j.perftest.enterprise.util.Configuration; import org.neo4j.perftest.enterprise.util.Setting; import static org.neo4j.io.fs.FileUtils.newFilePrintWriter; -import static org.neo4j.kernel.impl.util.Charsets.UTF_8; import static org.neo4j.perftest.enterprise.util.Configuration.settingsOf; class JsonReportWriter implements TimingProgress.Visitor @@ -57,7 +57,7 @@ public void beginTimingProgress( long totalElementCount, long totalTimeNanos ) t { ensureOpen( false ); json = new JsonFactory().configure( JsonGenerator.Feature.AUTO_CLOSE_TARGET, true ) - .createJsonGenerator( newFilePrintWriter( target, UTF_8 ) ); + .createJsonGenerator( newFilePrintWriter( target, StandardCharsets.UTF_8 ) ); json.setPrettyPrinter( new DefaultPrettyPrinter() ); json.writeStartObject(); { diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/HaLoggingIT.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/HaLoggingIT.java index 5253b05e245f3..fc09138a14205 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/HaLoggingIT.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/HaLoggingIT.java @@ -25,6 +25,7 @@ import org.junit.Test; import java.io.File; +import java.nio.charset.StandardCharsets; import org.neo4j.kernel.impl.ha.ClusterManager; import org.neo4j.kernel.impl.logging.LogService; @@ -32,7 +33,6 @@ import org.neo4j.test.ha.ClusterRule; import static java.util.Arrays.asList; - import static org.neo4j.helpers.collection.IteratorUtil.asIterable; import static org.neo4j.kernel.impl.ha.ClusterManager.allSeesAllAsJoined; import static org.neo4j.kernel.impl.ha.ClusterManager.clusterWithAdditionalClients; @@ -82,9 +82,14 @@ public void logging_continues_after_role_switch() throws Exception private int findLoggingLines( HighlyAvailableGraphDatabase db, String toLookFor ) { int count = 0; - for ( String line : asIterable( new File( cluster.getStoreDir( db ), StoreLogService.INTERNAL_LOG_NAME ), "UTF-8" ) ) + for ( String line : asIterable( new File( cluster.getStoreDir( db ), StoreLogService.INTERNAL_LOG_NAME ), + StandardCharsets.UTF_8 ) ) + { if ( line.endsWith( toLookFor ) ) + { count++; + } + } return count; } } diff --git a/enterprise/query-logging/src/test/java/org/neo4j/kernel/impl/query/QueryLoggerIT.java b/enterprise/query-logging/src/test/java/org/neo4j/kernel/impl/query/QueryLoggerIT.java index fa5d971f3a455..1f1ea108047ce 100644 --- a/enterprise/query-logging/src/test/java/org/neo4j/kernel/impl/query/QueryLoggerIT.java +++ b/enterprise/query-logging/src/test/java/org/neo4j/kernel/impl/query/QueryLoggerIT.java @@ -27,6 +27,7 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @@ -142,7 +143,8 @@ private void executeQueryAndShutdown( GraphDatabaseService database ) private List readAllLines( File logFilename ) throws IOException { List logLines = new ArrayList<>(); - try ( BufferedReader reader = new BufferedReader( fileSystem.get().openAsReader( logFilename, "UTF-8" ) ) ) + try ( BufferedReader reader = new BufferedReader( + fileSystem.get().openAsReader( logFilename, StandardCharsets.UTF_8 ) ) ) { for ( String line; (line = reader.readLine()) != null; ) { diff --git a/manual/cypher/cypher-docs/src/test/scala/org/neo4j/cypher/docgen/CsvFile.scala b/manual/cypher/cypher-docs/src/test/scala/org/neo4j/cypher/docgen/CsvFile.scala index aac5cbb45a2a1..8996ce0b51815 100644 --- a/manual/cypher/cypher-docs/src/test/scala/org/neo4j/cypher/docgen/CsvFile.scala +++ b/manual/cypher/cypher-docs/src/test/scala/org/neo4j/cypher/docgen/CsvFile.scala @@ -20,6 +20,7 @@ package org.neo4j.cypher.docgen import java.io.{PrintWriter, File} +import java.nio.charset.StandardCharsets object CsvFile { def urify(file: File): String = @@ -37,7 +38,7 @@ class CsvFile(fileName: String, delimiter: Char = ',')(implicit csvFilesDir: Fil def withContentsF(lines: Seq[String]*): File = { val csvFile = new File(csvFilesDir, fileName) - val writer = new PrintWriter(csvFile, "UTF-8") + val writer = new PrintWriter(csvFile, StandardCharsets.UTF_8.name()) lines.foreach(line => { writer.println(line.map(s => '"' + s + '"').mkString(delimiter.toString)) }) diff --git a/manual/cypher/cypher-docs/src/test/scala/org/neo4j/cypher/docgen/DocumentingTestBase.scala b/manual/cypher/cypher-docs/src/test/scala/org/neo4j/cypher/docgen/DocumentingTestBase.scala index d9657c872df0d..392ab8d525aa1 100644 --- a/manual/cypher/cypher-docs/src/test/scala/org/neo4j/cypher/docgen/DocumentingTestBase.scala +++ b/manual/cypher/cypher-docs/src/test/scala/org/neo4j/cypher/docgen/DocumentingTestBase.scala @@ -20,6 +20,7 @@ package org.neo4j.cypher.docgen import java.io.{ByteArrayOutputStream, File, PrintWriter, StringWriter} +import java.nio.charset.StandardCharsets import java.util.concurrent.TimeUnit import org.junit.{After, Before} @@ -72,7 +73,7 @@ trait DocumentationHelper extends GraphIcing { } def createWriter(title: String, dir: File): PrintWriter = { - new PrintWriter(new File(dir, niceify(title) + ".asciidoc"), "UTF-8") + new PrintWriter(new File(dir, niceify(title) + ".asciidoc"), StandardCharsets.UTF_8.name()) } def createCypherSnippet(query: String) = { diff --git a/manual/cypher/graphgist/src/main/java/org/neo4j/doc/cypherdoc/BlockType.java b/manual/cypher/graphgist/src/main/java/org/neo4j/doc/cypherdoc/BlockType.java index 5e8da96c6edbf..40b36991577c5 100644 --- a/manual/cypher/graphgist/src/main/java/org/neo4j/doc/cypherdoc/BlockType.java +++ b/manual/cypher/graphgist/src/main/java/org/neo4j/doc/cypherdoc/BlockType.java @@ -23,6 +23,7 @@ import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; @@ -467,7 +468,7 @@ else if ( id.startsWith( "_result" ) ) StringBuilder output = new StringBuilder( 512 ); try { - String dot = out.toString( "UTF-8" ); + String dot = out.toString( StandardCharsets.UTF_8.name() ); output.append( "[\"dot\", \"cypherdoc-" ) .append( id ) .append( '-' ) diff --git a/manual/cypher/refcard-tests/src/test/scala/org/neo4j/cypher/docgen/RefcardTest.scala b/manual/cypher/refcard-tests/src/test/scala/org/neo4j/cypher/docgen/RefcardTest.scala index a3af7afd30066..95e8bab7f7ae4 100644 --- a/manual/cypher/refcard-tests/src/test/scala/org/neo4j/cypher/docgen/RefcardTest.scala +++ b/manual/cypher/refcard-tests/src/test/scala/org/neo4j/cypher/docgen/RefcardTest.scala @@ -19,6 +19,8 @@ */ package org.neo4j.cypher.docgen +import java.nio.charset.StandardCharsets + import org.neo4j.cypher.internal.RewindableExecutionResult import org.neo4j.cypher.internal.compiler.v3_0.executionplan.InternalExecutionResult import org.neo4j.cypher.internal.compiler.v3_0.prettifier.Prettifier @@ -219,7 +221,8 @@ abstract class RefcardTest extends Assertions with DocumentationHelper with Grap @Before def init() { dir = createDir(section) - allQueriesWriter = new OutputStreamWriter(new FileOutputStream(new File("target/all-queries.asciidoc"), true), "UTF-8") + allQueriesWriter = new OutputStreamWriter(new FileOutputStream(new File("target/all-queries.asciidoc"), true), + StandardCharsets.UTF_8) db = newTestGraphDatabaseFactory().newImpermanentDatabaseBuilder().newGraphDatabase().asInstanceOf[GraphDatabaseAPI] GraphDatabaseServiceCleaner.cleanDatabaseContent(db) diff --git a/packaging/neo4j-desktop/src/main/java/org/neo4j/desktop/config/portable/Template.java b/packaging/neo4j-desktop/src/main/java/org/neo4j/desktop/config/portable/Template.java index 2dc0e7e24c39a..91d32997c5ffa 100644 --- a/packaging/neo4j-desktop/src/main/java/org/neo4j/desktop/config/portable/Template.java +++ b/packaging/neo4j-desktop/src/main/java/org/neo4j/desktop/config/portable/Template.java @@ -24,6 +24,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; +import java.nio.charset.StandardCharsets; import org.neo4j.helpers.Function; @@ -50,7 +51,7 @@ public String apply( String name ) public void write( File file ) throws Exception { - try ( BufferedReader reader = new BufferedReader( new InputStreamReader( templateFile, "UTF-8" ) ); + try ( BufferedReader reader = new BufferedReader( new InputStreamReader( templateFile, StandardCharsets.UTF_8 ) ); PrintWriter writer = new PrintWriter( file )) { String input = reader.readLine();