Justin, It looks like Mustella tests are broken as a result of this change. Here is the RTE. Can you please take a look at it?
This is the current state of the Mustella run[1] Note that Mustella is stuck on this test. Thanks, Om [1] http://flex-mustella.cloudapp.net/job/flex-sdk_mustella/640/console TypeError: Error #1009: Cannot access a property or method of a null object reference. at mx.resources:: ResourceManagerImpl/findResourceBundleWithResource()[C:\jenkins_slave\workspace\flex-sdk_mustella\frameworks\projects\framework\src\mx\resources\ResourceManagerImpl.as:882] at mx.resources::ResourceManagerImpl/findBundle()[C:\jenkins_slave\workspace\flex-sdk_mustella\frameworks\projects\framework\src\mx\resources\ResourceManagerImpl.as:1094] at mx.resources::ResourceManagerImpl/getStringArray()[C:\jenkins_slave\workspace\flex-sdk_mustella\frameworks\projects\framework\src\mx\resources\ResourceManagerImpl.as:952] at mx.controls::DateField/set dayNames() at mx.controls::DateField/resourcesChanged() at mx.core::UIComponent()[C:\jenkins_slave\workspace\flex-sdk_mustella\frameworks\projects\framework\src\mx\core\UIComponent.as:1722] at mx.controls::ComboBase() at mx.controls::DateField() at mx.core::Container/createComponentFromDescriptor() at mx.core::Container/createComponentsFromDescriptors() On Sat, Dec 28, 2013 at 10:38 PM, <jmcl...@apache.org> wrote: > Updated Branches: > refs/heads/develop b0e208c92 -> edd6e20f5 > > > FLEX-33836 lazy loading of resource files give performance improvement > (esp mobile) > > > Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo > Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/edd6e20f > Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/edd6e20f > Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/edd6e20f > > Branch: refs/heads/develop > Commit: edd6e20f5b04e41c054877f5798141119c02afc1 > Parents: b0e208c > Author: Justin Mclean <jmcl...@apache.org> > Authored: Sun Dec 29 17:38:04 2013 +1100 > Committer: Justin Mclean <jmcl...@apache.org> > Committed: Sun Dec 29 17:38:04 2013 +1100 > > ---------------------------------------------------------------------- > .../src/mx/resources/ResourceManagerImpl.as | 74 ++++++++++++++++++-- > 1 file changed, 70 insertions(+), 4 deletions(-) > ---------------------------------------------------------------------- > > > > http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/edd6e20f/frameworks/projects/framework/src/mx/resources/ResourceManagerImpl.as > ---------------------------------------------------------------------- > diff --git > a/frameworks/projects/framework/src/mx/resources/ResourceManagerImpl.as > b/frameworks/projects/framework/src/mx/resources/ResourceManagerImpl.as > index 9c21ca8..07c6d95 100644 > --- a/frameworks/projects/framework/src/mx/resources/ResourceManagerImpl.as > +++ b/frameworks/projects/framework/src/mx/resources/ResourceManagerImpl.as > @@ -414,16 +414,20 @@ public class ResourceManagerImpl extends > EventDispatcher implements IResourceMan > "' for locale '" + locale + "'."); > } > > - // Create an instance of the bundle class. > - resourceBundle = ResourceBundle(new bundleClass()); > + // Create a proxy > + var proxy:ResourceBundleProxy = new ResourceBundleProxy(); > + > + proxy.bundleClass = bundleClass; > + proxy.useWeakReference = useWeakReference; > > // In case we just created a ResourceBundle from a Flex 2 SWC, > // set its locale and bundleName, because the old constructor > // didn't used to do this. > - ResourceBundle(resourceBundle)._locale = locale; > - ResourceBundle(resourceBundle)._bundleName = bundleName; > + proxy.locale = locale; > + proxy.bundleName = bundleName; > > // Add that resource bundle instance to the ResourceManager. > + resourceBundle = proxy; > addResourceBundle(resourceBundle, useWeakReference); > > return resourceBundle; > @@ -707,6 +711,10 @@ public class ResourceManagerImpl extends > EventDispatcher implements IResourceMan > } > } > } > + else if (bundleObject is ResourceBundleProxy) > + { > + bundle = > loadResourceBundleProxy(ResourceBundleProxy(bundleObject)); > + } > else > { > bundle = bundleObject as IResourceBundle; > @@ -715,6 +723,17 @@ public class ResourceManagerImpl extends > EventDispatcher implements IResourceMan > return bundle; > } > > + private function > loadResourceBundleProxy(proxy:ResourceBundleProxy):ResourceBundle { > + var proxyClass:Class = proxy.bundleClass; > + var resourceBundle:ResourceBundle = ResourceBundle(new > proxyClass()); > + resourceBundle._locale = proxy.locale; > + resourceBundle._bundleName = proxy.bundleName; > + > + addResourceBundle(resourceBundle, proxy.useWeakReference); > + > + return resourceBundle; > + } > + > /** > * @copy mx.resources.IResourceManager#removeResourceBundle() > * > @@ -851,6 +870,10 @@ public class ResourceManagerImpl extends > EventDispatcher implements IResourceMan > } > } > } > + else if (bundleObject is ResourceBundleProxy) > + { > + bundle = > loadResourceBundleProxy(ResourceBundleProxy(bundleObject)); > + } > else > { > bundle = bundleObject as IResourceBundle; > @@ -1161,6 +1184,7 @@ import flash.events.EventDispatcher; > import mx.events.ModuleEvent; > import mx.events.ResourceEvent; > import mx.modules.IModuleInfo; > +import mx.resources.IResourceBundle; > import mx.resources.IResourceModule; > > > > //////////////////////////////////////////////////////////////////////////////// > @@ -1322,3 +1346,45 @@ class ResourceEventDispatcher extends > EventDispatcher > dispatchEvent(resourceEvent); > } > } > + > > +//////////////////////////////////////////////////////////////////////////////// > +// > +// Helper class: ResourceBundleProxy > +// > > +//////////////////////////////////////////////////////////////////////////////// > + > +/** > + * @private > + */ > +class ResourceBundleProxy implements IResourceBundle > +{ > + public var bundleClass:Class; > + public var useWeakReference:Boolean; > + > + private var _bundleName:String; > + private var _locale:String; > + > + public function ResourceBundleProxy() > + { > + } > + > + public function get bundleName():String { > + return _bundleName; > + } > + > + public function set bundleName(value:String):void { > + _bundleName = value; > + } > + > + public function get content():Object { > + return null; > + } > + > + public function get locale():String { > + return _locale; > + } > + > + public function set locale(value:String):void { > + _locale = value; > + } > +} > >