Update client bundle result caching to track absent resources
Review at http://gwt-code-reviews.appspot.com/1466804
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10382 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java b/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java
index b66fe59..3d3442a 100644
--- a/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java
+++ b/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java
@@ -517,7 +517,7 @@
/**
* Get default list of resource Locators, in the default order.
*
- * @param context
+ * @param genContext
* @return an ordered array of Locator[]
*/
private static Locator[] getDefaultLocators(GeneratorContext genContext) {
@@ -533,7 +533,7 @@
* Get the current locale string.
*
* @param logger
- * @param context
+ * @param genContext
* @return the current locale
*/
private static String getLocale(TreeLogger logger, GeneratorContext genContext) {
@@ -614,7 +614,7 @@
String resourceName, String locale) {
URL toReturn = tryFindResource(locator, resourceName, locale);
- if (toReturn != null && context != null) {
+ if (context != null) {
ClientBundleRequirements reqs = context.getRequirements();
if (reqs != null) {
reqs.addResolvedResource(resourceName, toReturn);
diff --git a/user/src/com/google/gwt/resources/rebind/context/AbstractClientBundleGenerator.java b/user/src/com/google/gwt/resources/rebind/context/AbstractClientBundleGenerator.java
index c12ac45..489c3c5 100644
--- a/user/src/com/google/gwt/resources/rebind/context/AbstractClientBundleGenerator.java
+++ b/user/src/com/google/gwt/resources/rebind/context/AbstractClientBundleGenerator.java
@@ -335,7 +335,7 @@
boolean useCache = false;
if (checkPropertyCacheability(logger, generatorContext)
&& checkSourceTypeCacheability(logger, generatorContext)
- && checkDependentResourceCacheability(logger, generatorContext, null)) {
+ && checkDependentResourceCacheability(logger, generatorContext)) {
useCache = true;
}
@@ -586,7 +586,7 @@
* Check dependent resources for cacheability.
*/
private boolean checkDependentResourceCacheability(TreeLogger logger,
- GeneratorContextExt genContext, ResourceContext resourceContext) {
+ GeneratorContextExt genContext) {
CachedRebindResult lastRebindResult = genContext.getCachedGeneratorResult();
@@ -608,9 +608,17 @@
for (Entry<String, URL> entry : cachedResolvedResources.entrySet()) {
String resourceName = entry.getKey();
URL resolvedUrl = entry.getValue();
- URL currentUrl = ResourceGeneratorUtil.tryFindResource(logger, genContext,
- resourceContext, resourceName);
- if (currentUrl == null || resolvedUrl == null
+ URL currentUrl =
+ ResourceGeneratorUtil.tryFindResource(logger, genContext, null, resourceName);
+
+ if (resolvedUrl == null) {
+ if (currentUrl == null) {
+ continue;
+ } else {
+ logger.log(TreeLogger.TRACE, "Found newly available dependent resource: " + resourceName);
+ return false;
+ }
+ } else if (currentUrl == null
|| !resolvedUrl.toExternalForm().equals(currentUrl.toExternalForm())) {
logger.log(TreeLogger.TRACE,
"Found dependent resource that has moved or no longer exists: " + resourceName);