move to Reader API to help with annoying /r/n issues is source mapping

This commit is contained in:
Julian Dolby 2014-04-29 11:21:01 -04:00
parent 6bb598e6dc
commit 92bec0cc0b
26 changed files with 81 additions and 75 deletions

View File

@ -14,7 +14,8 @@
package com.ibm.wala.cast.java.translator.polyglot;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
@ -2515,8 +2516,8 @@ public class PolyglotJava2CAstTranslator {
}
@Override
public InputStream getInputStream() throws IOException {
return getURL().openConnection().getInputStream();
public Reader getReader() throws IOException {
return new InputStreamReader(getURL().openConnection().getInputStream());
}
}

View File

@ -13,6 +13,7 @@ package com.ibm.wala.cast.js.html.nu_validator;
import java.io.IOException;
import java.io.InputStream;
import java.io.LineNumberReader;
import java.io.Reader;
import java.io.StringReader;
import java.net.MalformedURLException;
import java.net.URL;
@ -41,7 +42,7 @@ import com.ibm.wala.util.collections.Pair;
public class NuValidatorHtmlParser implements IHtmlParser {
@Override
public void parse(final URL url, final InputStream reader, final IHtmlCallback handler, final String fileName) {
public void parse(final URL url, final Reader reader, final IHtmlCallback handler, final String fileName) {
URL xx = null;
try {
xx = new URL("file://" + fileName);

View File

@ -14,8 +14,9 @@ import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collections;
@ -232,9 +233,9 @@ public class DomLessSourceExtractor extends JSSourceExtractor {
return;
}
InputStream scriptInputStream;
Reader scriptInputStream;
try {
scriptInputStream = scriptSrc.openConnection().getInputStream();
scriptInputStream = new InputStreamReader(scriptSrc.openConnection().getInputStream());
} catch (Exception e) {
//it looks like this happens when we can't resolve the url?
if (DEBUG) {
@ -248,7 +249,7 @@ public class DomLessSourceExtractor extends JSSourceExtractor {
BufferedReader scriptReader = null;
try {
String line;
scriptReader = new BufferedReader(new UnicodeReader(scriptInputStream, "UTF8"));
scriptReader = new BufferedReader(scriptInputStream);
StringBuffer x = new StringBuffer();
while ((line = scriptReader.readLine()) != null) {
x.append(line).append("\n");
@ -299,7 +300,7 @@ public class DomLessSourceExtractor extends JSSourceExtractor {
public Set<MappedSourceModule> extractSources(URL entrypointUrl, IHtmlParser htmlParser, IUrlResolver urlResolver)
throws IOException, Error {
InputStream inputStreamReader = WebUtil.getStream(entrypointUrl);
Reader inputStreamReader = WebUtil.getStream(entrypointUrl);
IGeneratorCallback htmlCallback = createHtmlCallback(entrypointUrl, urlResolver);
htmlParser.parse(entrypointUrl, inputStreamReader, htmlCallback, entrypointUrl.getFile());

View File

@ -10,7 +10,7 @@
*****************************************************************************/
package com.ibm.wala.cast.js.html;
import java.io.InputStream;
import java.io.Reader;
import java.net.URL;
import com.ibm.wala.cast.ir.translator.TranslatorToCAst.Error;
@ -29,6 +29,6 @@ public interface IHtmlParser {
* @param fileName
* @throws Error
*/
public void parse(URL url, InputStream reader, IHtmlCallback callback, String fileName) throws Error;
public void parse(URL url, Reader reader, IHtmlCallback callback, String fileName) throws Error;
}

View File

@ -11,7 +11,7 @@
package com.ibm.wala.cast.js.html;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.net.URL;
import com.ibm.wala.cast.js.html.RangeFileMapping.Range;
@ -69,8 +69,8 @@ public class NestedRangeMapping implements FileMapping {
}
@Override
public InputStream getInputStream() throws IOException {
return pos.getInputStream();
public Reader getReader() throws IOException {
return pos.getReader();
}
});
} else {

View File

@ -11,10 +11,9 @@
package com.ibm.wala.cast.js.html;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.net.URLConnection;
import com.ibm.wala.cast.tree.CAstSourcePositionMap.Position;
import com.ibm.wala.cast.tree.impl.AbstractSourcePosition;
@ -115,7 +114,7 @@ public class RangeFileMapping implements FileMapping {
return includedURL;
}
@Override
public InputStream getInputStream() throws IOException {
public Reader getReader() throws IOException {
return RangeFileMapping.this.getInputStream();
}
@Override
@ -134,18 +133,8 @@ public class RangeFileMapping implements FileMapping {
}
}
private URLConnection includedURLConnection = null;
public InputStream getInputStream() throws IOException {
if (includedURLConnection == null) {
includedURLConnection = includedURL.openConnection();
if (includedURLConnection instanceof HttpURLConnection) {
includedURLConnection.setConnectTimeout(10);
includedURLConnection.setReadTimeout(25);
}
}
return includedURLConnection.getInputStream();
public Reader getInputStream() throws IOException {
return new InputStreamReader(includedURL.openStream());
}
}

View File

@ -11,9 +11,9 @@
package com.ibm.wala.cast.js.html;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringBufferInputStream;
import java.io.Reader;
import java.io.StringReader;
import java.net.URL;
import com.ibm.wala.cast.tree.CAstSourcePositionMap.Position;
@ -38,7 +38,7 @@ public class SourceRegion {
public void print(final String text, Position originalPos, URL url, boolean bogusURL){
int startOffset = source.length();
source.append(text);
source.append(text);
int endOffset = source.length();
int numberOfLineDrops = getNumberOfLineDrops(text);
@ -48,8 +48,8 @@ public class SourceRegion {
if (bogusURL) {
map = new RangeFileMapping(startOffset, endOffset, currentLine, currentLine+numberOfLineDrops, originalPos, url) {
@Override
public InputStream getInputStream() throws IOException {
return new StringBufferInputStream(text);
public Reader getInputStream() throws IOException {
return new StringReader(text);
}
};
} else {

View File

@ -12,7 +12,8 @@ package com.ibm.wala.cast.js.html;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
@ -59,12 +60,12 @@ public class WebUtil {
System.err.println(extractScriptFromHTML(new URL(args[0]), Boolean.parseBoolean(args[1])));
}
public static InputStream getStream(URL url) throws IOException {
public static Reader getStream(URL url) throws IOException {
URLConnection conn = url.openConnection();
conn.setDefaultUseCaches(false);
conn.setUseCaches(false);
return conn.getInputStream();
return new InputStreamReader(conn.getInputStream());
}
}

View File

@ -11,7 +11,7 @@
package com.ibm.wala.cast.js.html.jericho;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.net.URL;
import java.util.Iterator;
import java.util.List;
@ -102,7 +102,7 @@ public class JerichoHtmlParser implements IHtmlParser{
}
@Override
public void parse(URL url, InputStream reader, IHtmlCallback callback, String fileName) throws TranslatorToCAst.Error {
public void parse(URL url, Reader reader, IHtmlCallback callback, String fileName) throws TranslatorToCAst.Error {
warnings.clear();
Parser parser = new Parser(callback, fileName);
Source src;

View File

@ -11,7 +11,8 @@
package com.ibm.wala.cast.js.translator;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import com.ibm.wala.cast.tree.CAstSourcePositionMap.Position;
@ -78,7 +79,7 @@ public class RangePosition extends AbstractSourcePosition implements Position {
}
@Override
public InputStream getInputStream() throws IOException {
return url.openStream();
public Reader getReader() throws IOException {
return new InputStreamReader(url.openStream());
}
}

View File

@ -11,6 +11,7 @@
package com.ibm.wala.cast.loader;
import java.io.InputStream;
import java.io.Reader;
import java.net.URL;
import java.util.Collection;
import java.util.Iterator;
@ -105,7 +106,7 @@ abstract public class AstClass implements IClass, ClassConstants {
}
@Override
public InputStream getSource() {
public Reader getSource() {
return null;
}

View File

@ -11,6 +11,7 @@
package com.ibm.wala.cast.loader;
import java.io.InputStream;
import java.io.Reader;
import java.net.URL;
import java.util.Collection;
import java.util.Collections;
@ -154,7 +155,7 @@ abstract public class AstFunctionClass implements IClass, ClassConstants {
}
@Override
public InputStream getSource() {
public Reader getSource() {
return null;
}

View File

@ -11,7 +11,7 @@
package com.ibm.wala.cast.loader;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@ -175,18 +175,18 @@ public abstract class CAstAbstractLoader implements IClassLoader {
}
@Override
public InputStream getSource(IClass klass) {
public Reader getSource(IClass klass) {
try {
return ((AstClass)klass).getSourcePosition().getInputStream();
return ((AstClass)klass).getSourcePosition().getReader();
} catch (IOException e) {
return null;
}
}
@Override
public InputStream getSource(IMethod method, int bcOffset) {
public Reader getSource(IMethod method, int bcOffset) {
try {
return ((AstMethod)method).getSourcePosition(bcOffset).getInputStream();
return ((AstMethod)method).getSourcePosition(bcOffset).getReader();
} catch (IOException e) {
return null;
}

View File

@ -11,7 +11,7 @@
package com.ibm.wala.cast.tree;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.net.URL;
import java.util.Iterator;
@ -43,7 +43,7 @@ public interface CAstSourcePositionMap {
int getFirstOffset();
int getLastOffset();
URL getURL();
InputStream getInputStream() throws IOException;
Reader getReader() throws IOException;
}
/**

View File

@ -11,7 +11,8 @@
package com.ibm.wala.cast.tree.impl;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
@ -76,8 +77,8 @@ public class CAstSourcePositionRecorder implements CAstSourcePositionMap {
@Override
public URL getURL() { return url; }
@Override
public InputStream getInputStream() throws IOException {
return file.openConnection().getInputStream();
public Reader getReader() throws IOException {
return new InputStreamReader(file.openConnection().getInputStream());
}
@Override
public String toString() {

View File

@ -11,7 +11,8 @@
package com.ibm.wala.cast.tree.impl;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
public class LineNumberPosition extends AbstractSourcePosition {
@ -47,8 +48,8 @@ public class LineNumberPosition extends AbstractSourcePosition {
public URL getURL() { return url; }
@Override
public InputStream getInputStream() throws IOException {
return localFile.openConnection().getInputStream();
public Reader getReader() throws IOException {
return new InputStreamReader(localFile.openConnection().getInputStream());
}
@Override

View File

@ -15,6 +15,7 @@ import static com.ibm.wala.types.TypeName.ElementBits;
import static com.ibm.wala.types.TypeName.PrimitiveMask;
import java.io.InputStream;
import java.io.Reader;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
@ -365,7 +366,7 @@ public class ArrayClass implements IClass, Constants {
}
@Override
public InputStream getSource() {
public Reader getSource() {
return null;
}

View File

@ -10,7 +10,7 @@
*******************************************************************************/
package com.ibm.wala.classLoader;
import java.io.InputStream;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@ -164,7 +164,7 @@ public abstract class BytecodeClass<T extends IClassLoader> implements IClass {
}
@Override
public InputStream getSource() {
public Reader getSource() {
return loader.getSource(this);
}

View File

@ -17,6 +17,8 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
@ -676,7 +678,7 @@ public class ClassLoaderImpl implements IClassLoader {
}
@Override
public InputStream getSource(IMethod method, int offset) {
public Reader getSource(IMethod method, int offset) {
return getSource(method.getDeclaringClass());
}
@ -686,12 +688,12 @@ public class ClassLoaderImpl implements IClassLoader {
}
@Override
public InputStream getSource(IClass klass) {
public Reader getSource(IClass klass) {
if (klass == null) {
throw new IllegalArgumentException("klass is null");
}
ModuleEntry e = sourceMap.get(klass.getName());
return e == null ? null : e.getInputStream();
return e == null ? null : new InputStreamReader(e.getInputStream());
}
/*

View File

@ -12,6 +12,7 @@
package com.ibm.wala.classLoader;
import java.io.InputStream;
import java.io.Reader;
import java.util.Collection;
import java.util.NoSuchElementException;
@ -120,7 +121,7 @@ public interface IClass extends IClassHierarchyDweller {
* specific, and will change in the future. In place of this API, use the APIs in IClassLoader.
* SJF .. we should think about this deprecation. postponing deprecation for now.
*/
InputStream getSource() throws NoSuchElementException;
Reader getSource() throws NoSuchElementException;
/**
* @return the method that is this class's initializer, or null if none

View File

@ -13,6 +13,7 @@ package com.ibm.wala.classLoader;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
@ -81,7 +82,7 @@ public interface IClassLoader {
* @return input stream representing the source file for a given bytecode index of a given method,
* or null if not available
*/
public abstract InputStream getSource(IMethod method, int offset);
public abstract Reader getSource(IMethod method, int offset);
/**
* @param klass the class for which information is desired.
@ -104,7 +105,7 @@ public interface IClassLoader {
* will be recorded.
* SJF .. we should think about this deprecation. postponing deprecation for now.
*/
public abstract InputStream getSource(IClass klass) throws NoSuchElementException;
public abstract Reader getSource(IClass klass) throws NoSuchElementException;
/**
* @return the parent IClassLoader, if any, or null

View File

@ -12,6 +12,7 @@
package com.ibm.wala.classLoader;
import java.io.InputStream;
import java.io.Reader;
import java.util.Collection;
import java.util.Collections;
@ -113,7 +114,7 @@ public abstract class SyntheticClass implements IClass {
}
@Override
public InputStream getSource() {
public Reader getSource() {
return null;
}

View File

@ -11,6 +11,7 @@
package com.ibm.wala.ipa.callgraph.impl;
import java.io.InputStream;
import java.io.Reader;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
@ -276,7 +277,7 @@ public class FakeRootClass extends SyntheticClass {
}
@Override
public InputStream getSource() {
public Reader getSource() {
return null;
}
}

View File

@ -10,7 +10,7 @@
*******************************************************************************/
package com.ibm.wala.ipa.summaries;
import java.io.InputStream;
import java.io.Reader;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
@ -259,7 +259,7 @@ public class BypassSyntheticClass extends SyntheticClass {
}
@Override
public InputStream getSource() {
public Reader getSource() {
return null;
}

View File

@ -12,6 +12,7 @@ package com.ibm.wala.ipa.summaries;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
@ -195,7 +196,7 @@ public class BypassSyntheticClassLoader implements IClassLoader {
}
@Override
public InputStream getSource(IClass klass) {
public Reader getSource(IClass klass) {
return null;
}
@ -205,7 +206,7 @@ public class BypassSyntheticClassLoader implements IClassLoader {
}
@Override
public InputStream getSource(IMethod method, int offset) {
public Reader getSource(IMethod method, int offset) {
return null;
}

View File

@ -11,7 +11,7 @@
package com.ibm.wala.ide.util;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URL;
@ -51,7 +51,7 @@ public final class JdtPosition implements Position {
}
@Override
public InputStream getInputStream() throws IOException {
public Reader getReader() throws IOException {
return null;
}