| /* |
| * Copyright 2008 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.gwt.dev.javac.testing.impl; |
| |
| /** |
| * Contains standard Java source files for testing. |
| */ |
| public class JavaResourceBase { |
| public static final MockJavaResource AUTOCLOSEABLE = |
| createMockJavaResource("java.lang.AutoCloseable", |
| "package java.lang;", |
| "import java.lang.Exception;", |
| "public interface AutoCloseable {", |
| " void close() throws Exception; ", |
| "}"); |
| |
| public static final MockJavaResource ANNOTATION = |
| createMockJavaResource("java.lang.annotation.Annotation", |
| "package java.lang.annotation;", |
| "public interface Annotation {", |
| "}"); |
| |
| public static final MockJavaResource BAR = |
| createMockJavaResource("test.Bar", |
| "package test;", |
| "public class Bar extends Foo {", |
| " public String value() { return \"Bar\"; }", |
| "}"); |
| |
| public static final MockJavaResource BOOLEAN = |
| createMockJavaResource("java.lang.Boolean", |
| "package java.lang;", |
| "public class Boolean {", |
| " private boolean value;", |
| " public Boolean(boolean value) {", |
| " this.value = value;", |
| " }", |
| " public static Boolean valueOf(boolean b) { return new Boolean(b); }", |
| " public boolean booleanValue() { return value; }", |
| "}"); |
| |
| public static final MockJavaResource BYTE = |
| createMockJavaResource("java.lang.Byte", |
| "package java.lang;", |
| "public class Byte extends Number {", |
| " private byte value;", |
| " public Byte(byte value) {", |
| " this.value = value;", |
| " }", |
| " public static Byte valueOf(byte b) { return new Byte(b); }", |
| " public byte byteValue() { return value; }", |
| "}\n"); |
| |
| public static final MockJavaResource CHARACTER = |
| createMockJavaResource("java.lang.Character", |
| "package java.lang;", |
| "public class Character {", |
| " private char value;", |
| " public Character(char value) {", |
| " this.value = value;", |
| " }", |
| " public static Character valueOf(char c) { return new Character(c); }", |
| " public char charValue() { return value; }", |
| "}"); |
| |
| public static final MockJavaResource CHAR_SEQUENCE = |
| createMockJavaResource("java.lang.CharSequence", |
| "package java.lang;", |
| "public interface CharSequence {", |
| " char charAt(int index);", |
| " int length();", |
| " String toString();", |
| "}"); |
| |
| public static final MockJavaResource CLASS = |
| createMockJavaResource("java.lang.Class", |
| "package java.lang;", |
| "public class Class<T> {", |
| " public String getName() { return null; }", |
| " public String getSimpleName() { return null; }", |
| "}"); |
| |
| public static final MockJavaResource CLASS_NOT_FOUND_EXCEPTION = |
| createMockJavaResource("java.lang.ClassNotFoundException", |
| "package java.lang;", |
| "public class ClassNotFoundException extends Exception {", |
| " public ClassNotFoundException() {}", |
| " public ClassNotFoundException(String msg) {}", |
| " public ClassNotFoundException(String msg, Throwable t) {}", |
| " public Throwable getCause() { return null; }", |
| " public Throwable getException() { return null; }", |
| "}"); |
| |
| public static final MockJavaResource CLONEABLE = |
| createMockJavaResource("java.lang.Cloneable", |
| "package java.lang;", |
| "public interface Cloneable {}"); |
| |
| public static final MockJavaResource COLLECTION = |
| createMockJavaResource("java.util.Collection", |
| "package java.util;", |
| "public interface Collection<E> {", |
| "}"); |
| |
| public static final MockJavaResource COMPARABLE = |
| createMockJavaResource("java.lang.Comparable", |
| "package java.lang;", |
| "public interface Comparable<T> {", |
| " public int compareTo(T other);", |
| "}"); |
| |
| public static final MockJavaResource DOUBLE = |
| createMockJavaResource("java.lang.Double", |
| "package java.lang;", |
| "public class Double extends Number {", |
| " private double value;", |
| " public Double(double value) {", |
| " this.value = value;", |
| " }", |
| " public static boolean isNaN(double d) { return false; }", |
| " public static Double valueOf(double d) { return new Double(d); }", |
| " public double doubleValue() { return value; }", |
| "}"); |
| |
| public static final MockJavaResource ENUM = |
| createMockJavaResource("java.lang.Enum", |
| "package java.lang;", |
| "import java.io.Serializable;", |
| "public abstract class Enum<E extends Enum<E>> implements Serializable {", |
| " protected Enum(String name, int ordinal) {}", |
| " protected static Object createValueOfMap(Enum[] constants) { return null; }", |
| " protected static Enum valueOf(Object map, String name) { return null; }", |
| "}"); |
| |
| public static final MockJavaResource ERROR = |
| createMockJavaResource("java.lang.Error", |
| "package java.lang;", |
| "public class Error extends Throwable {", |
| "}"); |
| |
| public static final MockJavaResource EXCEPTION = |
| createMockJavaResource("java.lang.Exception", |
| "package java.lang;", |
| "public class Exception extends Throwable {", |
| "}"); |
| |
| public static final MockJavaResource FLOAT = |
| createMockJavaResource("java.lang.Float", |
| "package java.lang;", |
| "public class Float extends Number {", |
| " private float value;", |
| " public Float(float value) {", |
| " this.value = value;", |
| " }", |
| " public static Float valueOf(float f) { return new Float(f); }", |
| " public float floatValue() { return value; }", |
| "}"); |
| |
| public static final MockJavaResource FOO = |
| createMockJavaResource("test.Foo", |
| "package test;", |
| "public class Foo {", |
| " public String value() { return \"Foo\"; }", |
| "}"); |
| |
| public static final MockJavaResource FUNCTIONALINTERFACE = |
| createMockJavaResource("java.lang.FunctionalInterface", |
| "package java.lang;", |
| "public @interface FunctionalInterface {", |
| "}"); |
| |
| public static final MockJavaResource INTEGER = |
| createMockJavaResource("java.lang.Integer", |
| "package java.lang;", |
| "public class Integer extends Number {", |
| " private int value;", |
| " public Integer(int value) {", |
| " this.value = value;", |
| " }", |
| " public static Integer valueOf(int i) { return new Integer(i); }", |
| " public int intValue() { return value; }", |
| "}"); |
| |
| public static final MockJavaResource IS_SERIALIZABLE = |
| createMockJavaResource("com.google.gwt.user.client.rpc.IsSerializable", |
| "package com.google.gwt.user.client.rpc;", |
| "public interface IsSerializable {", |
| "}"); |
| |
| public static final MockJavaResource JAVASCRIPTEXCEPTION = |
| createMockJavaResource("com.google.gwt.core.client.JavaScriptException", |
| "package com.google.gwt.core.client;", |
| "public class JavaScriptException extends RuntimeException {", |
| "}"); |
| |
| public static final MockJavaResource JAVASCRIPTOBJECT = |
| createMockJavaResource("com.google.gwt.core.client.JavaScriptObject", |
| "package com.google.gwt.core.client;", |
| "public class JavaScriptObject {", |
| " public static Object createArray() {return null;}", |
| " public static native JavaScriptObject createObject() /*-{ return {}; }-*/;", |
| " protected JavaScriptObject() { }", |
| " public final String toString() { return \"JavaScriptObject\"; }", |
| "}"); |
| |
| public static final MockJavaResource LIST = |
| createMockJavaResource("java.util.List", |
| "package java.util;", |
| "public interface List<T> extends Collection<T> {", |
| " public T get(int i);", |
| "}"); |
| |
| public static final MockJavaResource ARRAY_LIST = |
| createMockJavaResource("java.util.ArrayList", |
| "package java.util;", |
| "public class ArrayList<T> implements List<T> {", |
| " public T get(int i) { return null; }", |
| "}"); |
| |
| public static final MockJavaResource LONG = |
| createMockJavaResource("java.lang.Long", |
| "package java.lang;", |
| "public class Long extends Number {", |
| " private long value;", |
| " public Long(long value) {", |
| " this.value = value;", |
| " }", |
| " public static Long valueOf(long l) { return new Long(l); }", |
| " public long longValue() { return value; }", |
| "}"); |
| |
| public static final MockJavaResource MAP = |
| createMockJavaResource("java.util.Map", |
| "package java.util;", |
| "public interface Map<K,V> { }"); |
| |
| public static final MockJavaResource NO_CLASS_DEF_FOUND_ERROR = |
| createMockJavaResource("java.lang.NoClassDefFoundError", |
| "package java.lang;", |
| "public class NoClassDefFoundError extends Error {", |
| " public NoClassDefFoundError() {}", |
| " public NoClassDefFoundError(String msg) {}", |
| "}"); |
| |
| public static final MockJavaResource NUMBER = |
| createMockJavaResource("java.lang.Number", |
| "package java.lang;", |
| "public class Number implements java.io.Serializable {", |
| " public double doubleValue() { return 0; }", |
| "}"); |
| |
| public static final MockJavaResource OBJECT = |
| createMockJavaResource("java.lang.Object", |
| "package java.lang;", |
| "public class Object {", |
| " private Class<?> ___clazz;", |
| " public Object castableTypeMap = null;", |
| " public Object typeMarker = null;", |
| " public boolean equals(Object that){return this == that;}", |
| " public int hashCode() { return 0; }", |
| " public String toString() { return \"Object\"; }", |
| " public Class<?> getClass() { return ___clazz; }", |
| "}"); |
| |
| public static final MockJavaResource RUNTIME_EXCEPTION = |
| createMockJavaResource("java.lang.RuntimeException", |
| "package java.lang;", |
| "public class RuntimeException extends Exception {", |
| " public RuntimeException() {}", |
| " public RuntimeException(String message) {}", |
| "}"); |
| |
| public static final MockJavaResource SERIALIZABLE = |
| createMockJavaResource("java.io.Serializable", |
| "package java.io;", |
| "public interface Serializable { }"); |
| |
| public static final MockJavaResource SHORT = |
| createMockJavaResource("java.lang.Short", |
| "package java.lang;", |
| "public class Short extends Number {", |
| " private short value;", |
| " public Short(short value) {", |
| " this.value = value;", |
| " }", |
| " public static Short valueOf(short s) { return new Short(s); }", |
| " public short shortValue() { return value; }", |
| "}"); |
| |
| public static final MockJavaResource STRING = |
| createMockJavaResource("java.lang.String", |
| "package java.lang;", |
| "import java.io.Serializable;", |
| "import javaemul.internal.annotations.SpecializeMethod;", |
| "public final class String implements Comparable<String>, CharSequence, Serializable {", |
| " public String() { }", |
| " public String(char c) { }", |
| " public String(String s) { }", |
| " public static String _String() { return \"\"; }", |
| " public static String _String(char c) { return \"\" + c; }", |
| " public static String _String(String s) { return s; }", |
| " public char charAt(int index) { return 'a'; }", |
| " public int compareTo(String other) { return -1; }", |
| " @SpecializeMethod(params = String.class, target = \"equals\")", |
| " public boolean equals(Object other) {", |
| " return (other instanceof String) && equals((String) other);", |
| " }", |
| " private native boolean equals(String obj) /*-{ return false; }-*/;", |
| " public boolean equalsIgnoreCase(String str) { return false; }", |
| " public native boolean isEmpty() /*-{ return true; }-*/;", |
| " public int length() { return 0; }", |
| " public static String valueOf(int i) { return \"\" + i; }", |
| " public static String valueOf(char c) { return \"\" + c; }", |
| " public int hashCode() { return 0; }", |
| " public String replace(char c1, char c2) { return null; }", |
| " public boolean startsWith(String str) { return false; }", |
| " public native String substring(int start, int len) /*-{ return \"\"; }-*/;", |
| " public String toLowerCase() { return null; }", |
| " public String toString() { return this; }", |
| " public static String valueOf(boolean b) { return null; }", |
| "}"); |
| |
| public static final MockJavaResource STRING_BUILDER = |
| createMockJavaResource("java.lang.StringBuilder", |
| "package java.lang;", |
| "public final class StringBuilder {", |
| "}"); |
| |
| public static final MockJavaResource SUPPRESS_WARNINGS = |
| createMockJavaResource("java.lang.SuppressWarnings", |
| "package java.lang;", |
| "public @interface SuppressWarnings {", |
| " String[] value();", |
| "}"); |
| |
| public static final MockJavaResource SYSTEM = |
| createMockJavaResource("java.lang.System", |
| "package java.lang;", |
| "public class System {", |
| " public static String getProperty(String propertyName) { return null; }", |
| " public static String getProperty(String propertyName, String defaultValue) {", |
| " return defaultValue;", |
| " }", |
| "}"); |
| |
| public static final MockJavaResource THROWABLE = |
| createMockJavaResource("java.lang.Throwable", |
| "package java.lang;", |
| "public class Throwable {", |
| " public String getMessage() { return \"\"; }", |
| " public Throwable getCause() { return null; }", |
| " public void addSuppressed(Throwable ex) { }", |
| "}"); |
| |
| public static final MockJavaResource SPECIALIZE_METHOD = |
| createMockJavaResource("javaemul.internal.annotations.SpecializeMethod", |
| "package javaemul.internal.annotations;", |
| "public @interface SpecializeMethod {", |
| " Class<?>[] params();", |
| " String target();", |
| "}" |
| ); |
| |
| public static final MockJavaResource DO_NOT_AUTOBOX = |
| createMockJavaResource("javaemul.internal.annotations.DoNotAutobox", |
| "package javaemul.internal.annotations;", |
| "public @interface DoNotAutobox {\n", |
| "}" |
| ); |
| // TODO: move JS* annotations to intrinsic mock resource base |
| public static final MockJavaResource JSTYPE = |
| createMockJavaResource("jsinterop.annotations.JsType", |
| "package jsinterop.annotations;", |
| "public @interface JsType {", |
| " String namespace() default \"\";", |
| " String name() default \"\";", |
| " boolean isNative() default false;", |
| "}" |
| ); |
| public static final MockJavaResource JSCONSTRUCTOR = |
| createMockJavaResource("jsinterop.annotations.JsConstructor", |
| "package jsinterop.annotations;", |
| "public @interface JsConstructor {", |
| "}"); |
| public static final MockJavaResource JSPACKAGE = |
| createMockJavaResource("jsinterop.annotations.JsPackage", |
| "package jsinterop.annotations;", |
| "public @interface JsPackage {", |
| " String GLOBAL = \"<global>\";", |
| " String namespace();", |
| "}"); |
| public static final MockJavaResource JSPROPERTY = |
| createMockJavaResource("jsinterop.annotations.JsProperty", |
| "package jsinterop.annotations;", |
| "public @interface JsProperty {", |
| " String namespace() default \"\";", |
| " String name() default \"\";", |
| "}"); |
| public static final MockJavaResource JSMETHOD = |
| createMockJavaResource("jsinterop.annotations.JsMethod", |
| "package jsinterop.annotations;", |
| "public @interface JsMethod {\n", |
| " String namespace() default \"\";", |
| " String name() default \"\";", |
| "}"); |
| public static final MockJavaResource JSIGNORE = |
| createMockJavaResource("jsinterop.annotations.JsIgnore", |
| "package jsinterop.annotations;", |
| "public @interface JsIgnore {", |
| "}"); |
| public static final MockJavaResource JSFUNCTION = |
| createMockJavaResource("jsinterop.annotations.JsFunction", |
| "package jsinterop.annotations;", |
| "public @interface JsFunction {", |
| "}"); |
| public static final MockJavaResource JSOPTIONAL = |
| createMockJavaResource("jsinterop.annotations.JsOptional", |
| "package jsinterop.annotations;", |
| "public @interface JsOptional {", |
| "}"); |
| public static final MockJavaResource JSOVERLAY = |
| createMockJavaResource("jsinterop.annotations.JsOverlay", |
| "package jsinterop.annotations;", |
| "public @interface JsOverlay {", |
| "}"); |
| |
| public static MockJavaResource[] getStandardResources() { |
| return new MockJavaResource[] { |
| AUTOCLOSEABLE, ANNOTATION, ARRAY_LIST, BYTE, BOOLEAN, CHARACTER, CHAR_SEQUENCE, CLASS, |
| CLASS_NOT_FOUND_EXCEPTION, CLONEABLE, COLLECTION, COMPARABLE, DOUBLE, ENUM, EXCEPTION, |
| ERROR, FUNCTIONALINTERFACE, FLOAT, INTEGER, IS_SERIALIZABLE, JAVASCRIPTEXCEPTION, |
| JAVASCRIPTOBJECT, LIST, LONG, MAP, NO_CLASS_DEF_FOUND_ERROR, NUMBER, OBJECT, |
| RUNTIME_EXCEPTION, SERIALIZABLE, SHORT, STRING, STRING_BUILDER, SUPPRESS_WARNINGS, SYSTEM, |
| THROWABLE, SPECIALIZE_METHOD, DO_NOT_AUTOBOX, JSTYPE, JSCONSTRUCTOR, JSPACKAGE, JSPROPERTY, |
| JSMETHOD, JSIGNORE, JSFUNCTION, JSOVERLAY, JSOPTIONAL}; |
| } |
| |
| /** |
| * Creates a new MockJavaResource. |
| */ |
| public static MockJavaResource createMockJavaResource(String resourceName, |
| final String... lines) { |
| return new MockJavaResource(resourceName) { |
| @Override |
| public CharSequence getContent() { |
| StringBuilder code = new StringBuilder(); |
| for (String line : lines) { |
| code.append(line + "\n"); |
| } |
| return code; |
| } |
| }; |
| } |
| |
| /** |
| * Creates a new MockResource. |
| */ |
| public static MockResource createMockResource(String resourceName, |
| final String... lines) { |
| return new MockResource(resourceName) { |
| @Override |
| public CharSequence getContent() { |
| StringBuilder code = new StringBuilder(); |
| for (String line : lines) { |
| code.append(line + "\n"); |
| } |
| return code; |
| } |
| }; |
| } |
| } |