package com.siyeh.igtest.internationalization.implicit_default_charset_usage;

import java.io.*;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;
import java.util.ArrayList;
import java.util.Formatter;
import java.util.Locale;
import java.util.Scanner;

class ImplicitDefaultCharsetUsage {

  void f() throws IOException {
    final byte[] bytes = "asdf".<warning descr="Call to 'getBytes()' uses the platform's default charset">getBytes</warning>();
    "asdf".getBytes("");
    new String();
    new String("asdfas");
    new String(new byte[10], "asdf");
    new <warning descr="'new String()' call uses the platform's default charset">String</warning>(new byte[10]);
    new <warning descr="'new String()' call uses the platform's default charset">String</warning>(new byte[10], 1, 9);
    new <warning descr="'new InputStreamReader()' call uses the platform's default charset">InputStreamReader</warning>(null);
    new InputStreamReader(null, "utf-8");
    new <warning descr="'new OutputStreamWriter()' call uses the platform's default charset">OutputStreamWriter</warning>(null);
    new OutputStreamWriter(null, "utf-8");
    new <warning descr="'new FileReader()' call uses the platform's default charset">FileReader</warning>("asdf");
    new <warning descr="'new FileWriter()' call uses the platform's default charset">FileWriter</warning>((String)null);
    new <warning descr="'new PrintStream()' call uses the platform's default charset">PrintStream</warning>((OutputStream)null);
    new PrintStream("filename", "utf-8");
    new PrintStream("filename");
    new PrintWriter((Writer)null);
    new PrintWriter(System.out);
    new PrintWriter("filename", "utf-8");
    new <warning descr="'new PrintWriter()' call uses the platform's default charset">PrintWriter</warning>("filename");
    new <warning descr="'new Formatter()' call uses the platform's default charset">Formatter</warning>(new FileOutputStream("null"));
    new Formatter(new FileOutputStream("null"), "utf-8");
    new Formatter(new FileOutputStream("null"), "utf-8", Locale.getDefault());
    new Formatter(System.out);
    new <warning descr="'new Scanner()' call uses the platform's default charset">Scanner</warning>(new FileInputStream("null"));
    new Scanner(new FileInputStream("null"), "utf-8");
    new Scanner("string input");
    new ArrayList(10);
  }

  void charsetEnAndDecoders(InputStream inputStream, OutputStream outputStream) throws IOException {
    final Charset cs = Charset.forName("UTF-8");
    CharsetDecoder cd = cs.newDecoder();
    InputStreamReader is = new InputStreamReader(inputStream, cd);
    CharsetEncoder ce = cs.newEncoder();
    final OutputStreamWriter ow = new OutputStreamWriter(outputStream, ce);
    new <warning descr="'new FileReader()' call uses the platform's default charset">FileReader</warning>("/etc/passwd");
    new FileReader("/etc/passwd", cs);
    new <warning descr="'new FileWriter()' call uses the platform's default charset">FileWriter</warning>("/etc/passwd", true);
    new FileWriter("/etc/passwd", cs, true);
  }
}