Package graphql.parser
Class SafeTokenReader
- java.lang.Object
-
- java.io.Reader
-
- graphql.parser.SafeTokenReader
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,java.lang.Readable
public class SafeTokenReader extends java.io.Reader
This reader will only emit a maximum number of characters from it. This is used to protect us from evil input.If a graphql system does not have some max HTTP input limit, then this will help protect the system. This is a limit of last resort. Ideally the http input should be limited, but if its not, we have this.
-
-
Constructor Summary
Constructors Constructor Description SafeTokenReader(java.io.Reader delegate, int maxCharacters, java.util.function.Consumer<java.lang.Integer> whenMaxCharactersExceeded)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
void
mark(int readAheadLimit)
boolean
markSupported()
int
read()
int
read(char @NonNull [] buff)
int
read(char @NonNull [] buff, int off, int len)
int
read(@NonNull java.nio.CharBuffer target)
boolean
ready()
void
reset()
long
skip(long n)
-
-
-
Method Detail
-
read
public int read(char @NonNull [] buff, int off, int len) throws java.io.IOException
- Specified by:
read
in classjava.io.Reader
- Throws:
java.io.IOException
-
read
public int read() throws java.io.IOException
- Overrides:
read
in classjava.io.Reader
- Throws:
java.io.IOException
-
read
public int read(@NonNull java.nio.CharBuffer target) throws java.io.IOException
- Specified by:
read
in interfacejava.lang.Readable
- Overrides:
read
in classjava.io.Reader
- Throws:
java.io.IOException
-
read
public int read(char @NonNull [] buff) throws java.io.IOException
- Overrides:
read
in classjava.io.Reader
- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Specified by:
close
in classjava.io.Reader
- Throws:
java.io.IOException
-
skip
public long skip(long n) throws java.io.IOException
- Overrides:
skip
in classjava.io.Reader
- Throws:
java.io.IOException
-
ready
public boolean ready() throws java.io.IOException
- Overrides:
ready
in classjava.io.Reader
- Throws:
java.io.IOException
-
markSupported
public boolean markSupported()
- Overrides:
markSupported
in classjava.io.Reader
-
mark
public void mark(int readAheadLimit) throws java.io.IOException
- Overrides:
mark
in classjava.io.Reader
- Throws:
java.io.IOException
-
reset
public void reset() throws java.io.IOException
- Overrides:
reset
in classjava.io.Reader
- Throws:
java.io.IOException
-
-