#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/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
