#existing API

# dirRoot_old is missing because refJars are being supplied
name_old gwt21userApi
#sourceFiles is specified as colon-separated list of files
sourceFiles_old com/google/gwt

#excludedFiles is specified as colon-separated ant patterns
excludedFiles_old com/google/gwt/benchmarks/BenchmarkReport.java\
:com/google/gwt/benchmarks/BenchmarkShell.java\
:com/google/gwt/benchmarks/client/Benchmark.java\
:**/linker/**\
:**/rebind/**\
:**/server/**\
:**/tools/**\
:com/google/gwt/regexp/shared/**\
:com/google/gwt/autobean/shared/impl/StringQuoter.java\
:com/google/gwt/core/client/impl/WeakMapping.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/junit/*.java\
:com/google/gwt/junit/client/GWTTestCase.java\
:com/google/gwt/junit/client/impl/GWTRunner.java\
:com/google/gwt/junit/remote/**\
:com/google/gwt/resources/css/**\
:com/google/gwt/resources/ext/**\
:com/google/gwt/resources/rg/**\
:com/google/gwt/requestfactory/client/impl/FindRequest.java\
:com/google/gwt/requestfactory/shared/impl/MessageFactoryHolder.java\
:com/google/gwt/rpc/client/impl/ClientWriterFactory.java\
:com/google/gwt/rpc/client/impl/EscapeUtil.java\
:com/google/gwt/soyc/**\
:com/google/gwt/safehtml/shared/SafeHtmlHostedModeUtils.java\
:com/google/gwt/user/client/rpc/core/java/util/LinkedHashMap_CustomFieldSerializer.java\
:com/google/gwt/uibinder/attributeparsers/**\
:com/google/gwt/uibinder/elementparsers/**\
:com/google/gwt/uibinder/testing/**\
:com/google/gwt/util/**\
:com/google/gwt/validation/**\

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

dirRoot_new ./
name_new gwt22userApi
#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 last 3 entries 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\
:**/linker/**\
:**/rebind/**\
:**/server/**\
:**/tools/**\
:user/src/com/google/gwt/regexp/shared/**\
:user/src/com/google/gwt/autobean/shared/impl/StringQuoter.java\
:user/src/com/google/gwt/core/client/impl/WeakMapping.java\
: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/remote/**\
:user/src/com/google/gwt/resources/css/**\
:user/src/com/google/gwt/resources/ext/**\
:user/src/com/google/gwt/resources/rg/**\
:user/src/com/google/gwt/requestfactory/shared/impl/MessageFactoryHolder.java\
:user/src/com/google/gwt/rpc/client/impl/ClientWriterFactory.java\
:user/src/com/google/gwt/rpc/client/impl/EscapeUtil.java\
:user/src/com/google/gwt/safehtml/shared/SafeHtmlHostedModeUtils.java\
:user/src/com/google/gwt/user/client/rpc/core/java/util/LinkedHashMap_CustomFieldSerializer.java\
:user/src/com/google/gwt/uibinder/attributeparsers/**\
:user/src/com/google/gwt/uibinder/elementparsers/**\
:user/src/com/google/gwt/uibinder/testing/**\
:user/src/com/google/gwt/util/**\
:user/src/javax/**\
:user/src/org/**\
:user/src/com/google/gwt/validation/**\

##############################################
#excluded packages colon separated list
excludedPackages com.google.gwt.editor.client.impl\
:com.google.gwt.requestfactory.client.impl.messages\
:com.google.gwt.requestfactory.client.impl\
:com.google.gwt.requestfactory.shared.impl\

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

# AutoBean packages have been moved since 2.1
com.google.gwt.editor.client.AutoBean MISSING
com.google.gwt.editor.client.AutoBeanFactory MISSING
com.google.gwt.editor.client.AutoBeanFactory.Category MISSING
com.google.gwt.editor.client.AutoBeanFactory.NoWrap MISSING
com.google.gwt.editor.client.AutoBeanUtils MISSING
com.google.gwt.editor.client.AutoBeanVisitor MISSING
com.google.gwt.editor.client.AutoBeanVisitor.Context MISSING
com.google.gwt.editor.client.AutoBeanVisitor.PropertyContext MISSING

# Id, Version have been removed because they were not being used.
com.google.gwt.requestfactory.shared.Id MISSING
com.google.gwt.requestfactory.shared.Version MISSING

# ValueCodex has moved to autobean.shared
com.google.gwt.requestfactory.shared.ValueCodex MISSING

# The constructor InlineLabel (String, DirectionEstimator) was added.
com.google.gwt.user.client.ui.InlineLabel::InlineLabel(Ljava/lang/String;Lcom/google/gwt/i18n/client/HasDirection$Direction;) OVERLOADED_METHOD_CALL 

# Label's public api has been cleaned since 2.1, for 2.1.1
com.google.gwt.user.client.ui.Label::getTextOrHtml(Z) MISSING
com.google.gwt.user.client.ui.Label::setHTML(Lcom/google/gwt/safehtml/shared/SafeHtml;) MISSING
com.google.gwt.user.client.ui.Label::setHTML(Lcom/google/gwt/safehtml/shared/SafeHtml;Lcom/google/gwt/i18n/client/HasDirection$Direction;) MISSING
com.google.gwt.user.client.ui.Label::setTextOrHtml(Ljava/lang/String;Lcom/google/gwt/i18n/client/HasDirection$Direction;Z) MISSING
com.google.gwt.user.client.ui.Label::setTextOrHtml(Ljava/lang/String;Z) MISSING

# Removing the gecko user agent and associated deferred bindings for 2.1.1.
com.google.gwt.user.client.impl.DOMImplMozillaOld MISSING
com.google.gwt.user.client.ui.impl.RichTextAreaImplOldMozilla MISSING
com.google.gwt.xml.client.impl.XMLParserImplMozillaOld MISSING

# Two fields in Column were exposed as protected but should be private.
com.google.gwt.user.cellview.client.Column::cell MISSING
com.google.gwt.user.cellview.client.Column::fieldUpdater MISSING

