#existing API

# dirRoot_old is missing because refJars are being supplied
name_old gwt26userApi
#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 com/google/gwt/benchmarks/BenchmarkReport.java\
:com/google/gwt/benchmarks/BenchmarkShell.java\
:com/google/gwt/benchmarks/client/Benchmark.java\
:com/google/gwt/typedarrays/super/com/google/gwt/typedarrays/shared/TypedArraysFactory.java\
:**/linker/**\
:**/rebind/**\
:**/server/**\
:**/tools/**\
:**/vm/**\
:com/google/gwt/regexp/shared/**\
:com/google/web/bindery/autobean/shared/ValueCodexHelper.java\
:com/google/web/bindery/autobean/**/impl/**\
:com/google/gwt/core/client/impl/WeakMapping.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/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/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/resources/css/**\
:com/google/gwt/resources/ext/**\
:com/google/gwt/resources/rg/**\
:com/google/gwt/rpc/client/impl/ClientWriterFactory.java\
:com/google/gwt/rpc/client/impl/EscapeUtil.java\
:com/google/gwt/rpc/client/impl/RpcCallbackAdapter.java\
:com/google/gwt/rpc/client/impl/RpcServiceProxy.java\
: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/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/requestfactory/apt/**\
: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 gwt27userApi
#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 user/src/com/google/gwt/benchmarks/BenchmarkReport.java\
:user/src/com/google/gwt/benchmarks/BenchmarkShell.java\
:user/src/com/google/gwt/benchmarks/client/Benchmark.java\
:user/super/com/google/gwt/typedarrays/super/com/google/gwt/typedarrays/shared/TypedArraysFactory.java\
:**/linker/**\
:**/rebind/**\
:**/server/**\
:**/tools/**\
:**/vm/**\
:user/src/com/google/gwt/regexp/shared/**\
:user/src/com/google/web/bindery/autobean/shared/ValueCodexHelper.java\
:user/src/com/google/web/bindery/autobean/**/impl/**\
: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/StringCase.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/junit/remote/**\
: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/requestfactory/apt/**\
: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/**\

##############################################
#excluded packages colon separated list
excludedPackages com.google.gwt.core.client.impl\
:com.google.gwt.core.shared.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 deprecated DefaultHandlerRegistration
com.google.gwt.event.shared.DefaultHandlerRegistration MISSING

# Removed deprecated AsyncProxy
com.google.gwt.user.client.AsyncProxy MISSING
com.google.gwt.user.client.AsyncProxy.AllowNonVoid MISSING
com.google.gwt.user.client.AsyncProxy.ConcreteType MISSING
com.google.gwt.user.client.AsyncProxy.DefaultValue MISSING
com.google.gwt.user.client.AsyncProxy.ProxyCallback MISSING

# StringBuilder and StringBuffer was incorrectly not marked with final
java.lang.StringBuffer FINAL_ADDED
java.lang.StringBuilder FINAL_ADDED
# Not sure why following showed up - looks like a bug in apichecker
java.lang.StringBuffer::finalize() MISSING
java.lang.StringBuilder::finalize() MISSING

# Removed some JRE incompatible Map APIs
java.util.HashMap::equals(Ljava/lang/Object;Ljava/lang/Object;) MISSING
java.util.HashMap::getHashCode(Ljava/lang/Object;) MISSING
java.util.IdentityHashMap::equals(Ljava/lang/Object;Ljava/lang/Object;) MISSING
java.util.IdentityHashMap::getHashCode(Ljava/lang/Object;) MISSING

# Removed deprecated c.g.gwt.widgets
com.google.gwt.widget.client MISSING

# Removed deprecated deRPC
# TODO(rluble) remove all references to deRPC and com.google.gwt.rpc from next gwtXX_XXuserApi.conf
# on next version switch..
com.google.gwt.rpc.client MISSING
com.google.gwt.rpc.client.ast MISSING

# Removed unused NullLoggingPopup and the deprecated FirebugLogHandler
com.google.gwt.logging.client.FirebugLogHandler MISSING
com.google.gwt.logging.client.NullLoggingPopup MISSING

 # Removed JRE incompatible Enum API
java.lang.Enum::obfuscatedName() MISSING

# Changed the return type of a non-public Number API
java.lang.Number::__decodeAndValidateInt(Ljava/lang/String;II) RETURN_TYPE_ERROR  from long to int

# Removed some JRE incompatible AbstractList APIs
java.util.AbstractList::checkIndex(II) MISSING
java.util.AbstractList::indexOutOfBounds(II) MISSING

# Removed experimental unload module support
com.google.gwt.core.client.GWT::exportUnloadModule() MISSING

# Removed legacy browsers implementation of typed arrays.
com.google.gwt.typedarrays.client.NativeImplEmulDataView MISSING

# Renaming IE6-specific impl classes
com.google.gwt.user.client.ui.TreeItem.TreeItemImplIE6 MISSING

# Removed JDK incompatible APIs from TreeMap
java.util.TreeMap::getNodeAtOrAfter(Ljava/lang/Object;) MISSING
java.util.TreeMap::getNodeBefore(Ljava/lang/Object;) MISSING
