#existing API

# dirRoot_old is missing because refJars are being supplied
name_old gwt27userApi
#sourceFiles is specified as colon-separated list of files
sourceFiles_old com/google/gwt\
:com/google/web\
:javax/validation\

#excludedFiles is specified as colon-separated ant patterns
# The entries for javax and org exclude the validation stuff.
# Bug: http://code.google.com/p/google-web-toolkit/issues/detail?id=5566
excludedFiles_old **/linker/**\
:**/rebind/**\
:**/server/**\
:**/tools/**\
:**/vm/**\
:com/google/gwt/core/client/impl/JavaScriptExceptionBase.java\
:com/google/gwt/core/client/impl/WeakMapping.java\
:com/google/gwt/core/shared/impl/StringCase.java\
:com/google/gwt/core/shared/impl/ThrowableTypeResolver.java\
:com/google/gwt/core/ext/**\
:com/google/gwt/dev/*.java\
:com/google/gwt/dev/asm/**\
:com/google/gwt/dev/cfg/**\
:com/google/gwt/dev/codeserver/**\
:com/google/gwt/dev/generator/**\
:com/google/gwt/dev/javac/**\
:com/google/gwt/dev/jdt/**\
:com/google/gwt/dev/jjs/*.java\
:com/google/gwt/dev/jjs/ast/**\
:com/google/gwt/dev/jjs/impl/**\
:com/google/gwt/dev/js/**\
:com/google/gwt/dev/json/**\
:com/google/gwt/dev/resource/**\
:com/google/gwt/dev/shell/**\
:com/google/gwt/dev/ui/**\
:com/google/gwt/dev/url/**\
:com/google/gwt/dev/util/**\
:com/google/gwt/i18n/**/impl/cldr/**\
:com/google/gwt/junit/*.java\
:com/google/gwt/junit/client/GWTTestCase.java\
:com/google/gwt/junit/client/impl/GWTRunner.java\
:com/google/gwt/junit/client/impl/GWTTestAccessor.java\
:com/google/gwt/junit/remote/**\
:com/google/gwt/regexp/shared/**\
:com/google/gwt/resources/css/**\
:com/google/gwt/resources/gss/**\
:com/google/gwt/resources/converter/**\
:com/google/gwt/resources/ext/**\
:com/google/gwt/resources/rg/**\
:com/google/gwt/safecss/shared/SafeStylesHostedModeUtils.java\
:com/google/gwt/safehtml/shared/SafeHtmlHostedModeUtils.java\
:com/google/gwt/safehtml/shared/SafeUriHostedModeUtils.java\
:com/google/gwt/soyc/**\
:com/google/gwt/typedarrays/super/com/google/gwt/typedarrays/shared/TypedArraysFactory.java\
:com/google/gwt/user/client/rpc/core/**\
:com/google/gwt/user/client/rpc/impl/**\
:com/google/gwt/uibinder/attributeparsers/**\
:com/google/gwt/uibinder/client/impl/**\
:com/google/gwt/uibinder/elementparsers/**\
:com/google/gwt/uibinder/testing/**\
:com/google/gwt/util/**\
:com/google/gwt/validation/**\
:com/google/web/bindery/autobean/shared/ValueCodexHelper.java\
:com/google/web/bindery/autobean/**/impl/**\
:com/google/web/bindery/requestfactory/apt/**\
:com/google/web/bindery/requestfactory/gwt/client/RequestBatcher.java\
:com/google/web/bindery/requestfactory/gwt/client/impl/**\
:com/google/web/bindery/requestfactory/server/impl/**\
:com/google/web/bindery/requestfactory/shared/impl/**\
:com/google/web/bindery/requestfactory/vm/**\
:javax/**\
:org/**\

##############################################
#new Api

dirRoot_new ./
name_new gwt28userApi
#sourceFiles is specified as colon-separated list of files
sourceFiles_new dev/core/super\
:user/src\
:user/super\

#excludedFiles is specified as colon-separated ant patterns
# The entries for javax and org exclude the validation stuff.
# Bug: http://code.google.com/p/google-web-toolkit/issues/detail?id=5566
excludedFiles_new **/linker/**\
:**/rebind/**\
:**/server/**\
:**/tools/**\
:**/vm/**\
:user/src/com/google/gwt/core/client/impl/JavaScriptExceptionBase.java\
:user/src/com/google/gwt/core/client/impl/WeakMapping.java\
:user/src/com/google/gwt/core/shared/impl/ThrowableTypeResolver.java\
:user/src/com/google/gwt/i18n/**/impl/cldr/**\
:user/src/com/google/gwt/junit/*.java\
:user/src/com/google/gwt/junit/client/GWTTestCase.java\
:user/src/com/google/gwt/junit/client/impl/GWTRunner.java\
:user/src/com/google/gwt/junit/client/impl/GWTTestAccessor.java\
:user/src/com/google/gwt/regexp/shared/**\
:user/src/com/google/gwt/resources/css/**\
:user/src/com/google/gwt/resources/gss/**\
:user/src/com/google/gwt/resources/converter/**\
:user/src/com/google/gwt/resources/ext/**\
:user/src/com/google/gwt/resources/rg/**\
:user/src/com/google/gwt/safecss/shared/SafeStylesHostedModeUtils.java\
:user/src/com/google/gwt/safehtml/shared/SafeHtmlHostedModeUtils.java\
:user/src/com/google/gwt/safehtml/shared/SafeUriHostedModeUtils.java\
:user/src/com/google/gwt/user/client/rpc/core/**\
:user/src/com/google/gwt/user/client/rpc/impl/**\
:user/src/com/google/gwt/uibinder/attributeparsers/**\
:user/src/com/google/gwt/uibinder/client/impl/**\
:user/src/com/google/gwt/uibinder/elementparsers/**\
:user/src/com/google/gwt/uibinder/testing/**\
:user/src/com/google/gwt/util/**\
:user/src/com/google/gwt/validation/**\
:user/src/com/google/web/bindery/autobean/shared/ValueCodexHelper.java\
:user/src/com/google/web/bindery/autobean/**/impl/**\
:user/src/com/google/web/bindery/requestfactory/apt/**\
:user/src/com/google/web/bindery/requestfactory/gwt/client/RequestBatcher.java\
:user/src/com/google/web/bindery/requestfactory/gwt/client/impl/**\
:user/src/com/google/web/bindery/requestfactory/server/impl/**\
:user/src/com/google/web/bindery/requestfactory/shared/impl/**\
:user/src/com/google/web/bindery/requestfactory/vm/**\
:user/src/javax/**\
:user/src/org/**\
:user/super/com/google/gwt/typedarrays/super/com/google/gwt/typedarrays/shared/TypedArraysFactory.java\

##############################################
#excluded packages colon separated list
excludedPackages com.google.gwt.core.client.impl\
:com.google.gwt.core.shared.impl\
:com.google.gwt.core.client.js.impl\
:com.google.gwt.editor.client.impl\
:com.google.gwt.i18n.client.impl\
:com.google.gwt.junit.client.impl\
:com.google.gwt.lang\
:com.google.gwt.logging.impl\
:com.google.gwt.resources.client.impl\
:com.google.gwt.rpc.client.impl\
:com.google.gwt.user.client.impl\
:com.google.gwt.user.client.ui.impl\
:com.google.gwt.xml.client.impl\

##############################################
#Api  whitelist
# when adding to the white-list, include comments as to why the addition is
# being made.

# Removed some JRE incompatible Map APIs
java.util.HashMap::getStringValue(Ljava/lang/String;) MISSING
java.util.HashMap::hasStringValue(Ljava/lang/String;) MISSING
java.util.HashMap::putStringValue(Ljava/lang/String;Ljava/lang/Object;) MISSING
java.util.HashMap::removeStringValue(Ljava/lang/String;) MISSING
java.util.IdentityHashMap::getStringValue(Ljava/lang/String;) MISSING
java.util.IdentityHashMap::hasStringValue(Ljava/lang/String;) MISSING
java.util.IdentityHashMap::putStringValue(Ljava/lang/String;Ljava/lang/Object;) MISSING
java.util.IdentityHashMap::removeStringValue(Ljava/lang/String;) MISSING

# Removed deprecated HttpThrowableReporter
com.google.gwt.core.client.HttpThrowableReporter MISSING

# Removed deprecated TextResourceCallback
com.google.gwt.resources.client.TextResourceCallback MISSING

# Implementation details made private
java.lang.Number::floatRegex MISSING
java.math.BigDecimal::unscaledRegex MISSING

# Add java.nio.charset.Charset and java.nio.charset.StandardCharsets
java.lang.String::String([BIILjava/lang/String;) OVERLOADED_METHOD_CALL
java.lang.String::String([BLjava/lang/String;) OVERLOADED_METHOD_CALL
java.lang.String::getBytes(Ljava/lang/String;) OVERLOADED_METHOD_CALL

# Legacy interop removed.
com.google.gwt.core.client.js MISSING

# Added Objects.requireNonNull(Object, Supplier)
java.util.Objects::requireNonNull(Ljava/lang/Object;Ljava/lang/String;) OVERLOADED_METHOD_CALL

# Added new Logger lazy logging methods
java.util.logging.Logger::config(Ljava/lang/String;) OVERLOADED_METHOD_CALL
java.util.logging.Logger::fine(Ljava/lang/String;) OVERLOADED_METHOD_CALL
java.util.logging.Logger::finer(Ljava/lang/String;) OVERLOADED_METHOD_CALL
java.util.logging.Logger::finest(Ljava/lang/String;) OVERLOADED_METHOD_CALL
java.util.logging.Logger::info(Ljava/lang/String;) OVERLOADED_METHOD_CALL
java.util.logging.Logger::log(Ljava/util/logging/Level;Ljava/lang/String;) OVERLOADED_METHOD_CALL
java.util.logging.Logger::log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;) OVERLOADED_METHOD_CALL
java.util.logging.Logger::severe(Ljava/lang/String;) OVERLOADED_METHOD_CALL
java.util.logging.Logger::warning(Ljava/lang/String;) OVERLOADED_METHOD_CALL

# Added constructors to ConcurrentModificationException
java.util.ConcurrentModificationException::ConcurrentModificationException(Ljava/lang/String;) OVERLOADED_METHOD_CALL

# Made java.util.Arrays non-instantiable
java.util.Arrays::Arrays() MISSING
java.util.Arrays::equals(Ljava/lang/Object;) MISSING
java.util.Arrays::finalize() MISSING
java.util.Arrays::getClass() MISSING
java.util.Arrays::hashCode() MISSING
java.util.Arrays::toString() MISSING

# Made java.util.Collections non-instantiable
java.util.Collections::Collections() MISSING
java.util.Collections::equals(Ljava/lang/Object;) MISSING
java.util.Collections::finalize() MISSING
java.util.Collections::getClass() MISSING
java.util.Collections::hashCode() MISSING
java.util.Collections::toString() MISSING

# Remove unnecessary abstract overrides in Collections
java.util.AbstractCollection::iterator() MISSING
java.util.AbstractCollection::size() MISSING
java.util.AbstractList::get(I) MISSING
java.util.AbstractMap::entrySet() MISSING
java.util.AbstractQueue::offer(Ljava/lang/Object;) MISSING
java.util.AbstractQueue::peek() MISSING
java.util.AbstractQueue::poll() MISSING
java.util.AbstractSequentialList::size() MISSING

# Removed some JRE incompatible PriorityQueue APIs
java.util.PriorityQueue::makeHeap(I) MISSING
java.util.PriorityQueue::mergeHeaps(I) MISSING

# Remove reflection related API
java.lang.NoSuchMethodException MISSING
