Interesting.  What are the allocation stack traces of the instances?

On 11/13/14, 1:49 PM, "mark goldin" <markzolo...@gmail.com> wrote:

>Just tried Profiler and it does show multiple Instances of ModelLocator
>that are increasing every time I run the screen.
>
>On Thu, Nov 13, 2014 at 3:43 PM, mark goldin <markzolo...@gmail.com>
>wrote:
>
>> 1. singleton:
>> package
>> {
>> import com.adobe.cairngorm.model.IModelLocator;
>> import com.instepsoftware.prism.vo.AutoGenerated.ReportResult;
>>  import flash.events.EventDispatcher;
>>
>> [Bindable]
>> public class ModelLocator extends EventDispatcher implements
>>IModelLocator
>> {
>> private static var _instance:ModelLocator = new ModelLocator();
>> public var healthReport:ReportResult;
>>
>> public function ModelLocator()
>> {
>> }
>>  public static function getInstance():ModelLocator
>> {
>> return _instance;
>> }
>> }
>> }
>> 2. ReportResult:
>> package
>> {
>>
>> [Bindable]
>> [RemoteClass(alias=".............ReportResult")]
>> public class ReportResult
>> {
>> public var ReportXMLDoc:String = null;
>> }
>> }
>> Command to handle EventWhichWillPopulateData event:
>> private var _Model:ModelLocator = ModelLocator.getInstance();
>> public function result(data:Object):void
>> {
>> var re:ResultEvent = data as ResultEvent;
>> _Model.healthReport = re.result as ReportResult;
>> // data is here every time I run it
>> }
>> 3. Implementation:
>> mxml file:
>> creationComplete="creationCompleteHandler(event)"
>> ......
>> [Bindable]
>> private var _ModelLocator = ModelLocator.getInstance();
>> ....
>> protected function creationCompleteHandler(event:FlexEvent):void
>> {
>> dispatchEvent(new EventWhichWillPopulateData());
>> }
>>
>> <anothercomponenttoshowdata>
>>     dataProvider="{_ModelLocator.healthReport}"
>> </anothercomponenttoshowdata>
>> end of mxml file
>>
>>
>> 4. anothercomponenttoshowdata:
>> public function set dataProvider(value:ReportResult):void
>> {
>> if (value)
>> {
>> .......
>> }
>> }
>>
>> That is close to real code.
>> I know for sure that _ModelLocator.healthReport gets data in the result
>> function. The whole thing works for the one time only.
>> Any consecutive run will have _ModelLocator.healthReport = null in set
>> dataProvider.
>>
>> That's how the whole chain of questions was triggered because I started
>> looking for workarounds.
>>
>> Sorry if that is still not clear.
>>
>>
>> On Thu, Nov 13, 2014 at 3:19 PM, mark goldin <markzolo...@gmail.com>
>> wrote:
>>
>>> I will try again. But this is a commercial application we are talking
>>> about and it takes some effort to prepare simplified code. Otherwise I
>>> would just dumb the whole damn thing.
>>>
>>> On Thu, Nov 13, 2014 at 3:17 PM, mark goldin <markzolo...@gmail.com>
>>> wrote:
>>>
>>>> Agree about details. But do not with overlapping.
>>>> Your label does not show its text. Can you imagine how many problems
>>>> that can be caused by? But here we are talking about singletons and
>>>> binding, a bit more complicated, at least for me.
>>>>
>>>> On Thu, Nov 13, 2014 at 3:12 PM, OmPrakash Muppirala <
>>>> bigosma...@gmail.com> wrote:
>>>>
>>>>> On Thu, Nov 13, 2014 at 1:09 PM, mark goldin <markzolo...@gmail.com>
>>>>> wrote:
>>>>>
>>>>> > I am very sorry for the confusion. I do have it in exactly same
>>>>>way.
>>>>> I was
>>>>> > trying not to provide too much details. What can I say ...
>>>>> >
>>>>> >
>>>>> You should always try to provide as much detail as possible when
>>>>>asking
>>>>> a
>>>>> question.  Also, please try not to create multiple threads at the
>>>>>same
>>>>> time
>>>>> talking about overlapping issues.
>>>>>
>>>>> Thanks,
>>>>> Om
>>>>>
>>>>>
>>>>> > On Thu, Nov 13, 2014 at 3:04 PM, Alex Harui <aha...@adobe.com>
>>>>>wrote:
>>>>> >
>>>>> > > In this example, the ‘data’ property is an Object.  Properties
>>>>> assigned
>>>>> > to
>>>>> > > Objects are not bindable.  There should have been warnings in the
>>>>> compile
>>>>> > > output or in the console at runtime.
>>>>> > >
>>>>> > > If you know the set of properties on the data object, you should
>>>>> define a
>>>>> > > class for that.
>>>>> > >
>>>>> > > [Bindable]
>>>>> > > public class MyModelDataSubObject
>>>>> > > {
>>>>> > >    public var propOnData:String;
>>>>> > > }
>>>>> > >
>>>>> > > And:
>>>>> > >
>>>>> > > [Bindable]
>>>>> > > public class ModelLocator extends EventDispatcher implements
>>>>> > IModelLocator
>>>>> > > {
>>>>> > > private static var _instance:ModelLocator;
>>>>> > > public var data:MyModelDataSubObject;
>>>>> > > public function ModelLocator(enforcer:SingletonEnforcer)
>>>>> > > ..
>>>>> > >
>>>>> > >
>>>>> > > -Alex
>>>>> > >
>>>>> > > On 11/13/14, 12:49 PM, "mark goldin" <markzolo...@gmail.com>
>>>>>wrote:
>>>>> > >
>>>>> > > >Something like this. A bit simplified:
>>>>> > > >package
>>>>> > > >{
>>>>> > > >
>>>>> > > >[Bindable]
>>>>> > > >public class ModelLocator extends EventDispatcher implements
>>>>> > IModelLocator
>>>>> > > >{
>>>>> > > >private static var _instance:ModelLocator;
>>>>> > > >public var data:Object;
>>>>> > > > public function ModelLocator(enforcer:SingletonEnforcer)
>>>>> > > >{
>>>>> > > >if (enforcer == null){
>>>>> > > >throw new Error("You can have only one ModelLocator");
>>>>> > > >}
>>>>> > > >}
>>>>> > > > public static function getInstance():ModelLocator{
>>>>> > > > if (_instance == null){
>>>>> > > >_instance = new ModelLocator(new SingletonEnforcer());
>>>>> > > > }
>>>>> > > > return _instance;
>>>>> > > > }
>>>>> > > >}
>>>>> > > >}
>>>>> > > >class SingletonEnforcer{}
>>>>> > > >
>>>>> > > >
>>>>> > > >On Thu, Nov 13, 2014 at 2:44 PM, Alex Harui <aha...@adobe.com>
>>>>> wrote:
>>>>> > > >
>>>>> > > >> Declaring a class [Bindable] does not make its sub-objects
>>>>> bindable.
>>>>> > > >>Show
>>>>> > > >> us the code for the model’s data property.
>>>>> > > >>
>>>>> > > >> -Alex
>>>>> > > >>
>>>>> > > >> On 11/13/14, 12:31 PM, "mark goldin" <markzolo...@gmail.com>
>>>>> wrote:
>>>>> > > >>
>>>>> > > >> >It's an object. The whole model class is Bindable.
>>>>> > > >> >
>>>>> > > >> >On Thu, Nov 13, 2014 at 2:11 PM, Alex Harui
>>>>><aha...@adobe.com>
>>>>> > wrote:
>>>>> > > >> >
>>>>> > > >> >> It appears you are binding to sub-objects in the model, and
>>>>> they
>>>>> > may
>>>>> > > >>not
>>>>> > > >> >> be bindable.  What is _model.data?
>>>>> > > >> >>
>>>>> > > >> >> -Alex
>>>>> > > >> >>
>>>>> > > >> >> On 11/13/14, 10:49 AM, "mark goldin"
>>>>><markzolo...@gmail.com>
>>>>> > wrote:
>>>>> > > >> >>
>>>>> > > >> >> >No, they are not static. I even replaces public var ...
>>>>>with
>>>>> > setter
>>>>> > > >>and
>>>>> > > >> >> >getter. Still the same.
>>>>> > > >> >> >Here more code for singleton:
>>>>> > > >> >> >public var data:Object;
>>>>> > > >> >> >public function ModelLocator(enforcer:SingletonEnforcer)
>>>>> > > >> >> >{
>>>>> > > >> >> >if (enforcer == null){
>>>>> > > >> >> >throw new Error("You can have only one ModelLocator");
>>>>> > > >> >> >}
>>>>> > > >> >> >}
>>>>> > > >> >> > public static function getInstance():ModelLocator{
>>>>> > > >> >> > if (_instance == null){
>>>>> > > >> >> >_instance = new ModelLocator(new SingletonEnforcer());
>>>>> > > >> >> > }
>>>>> > > >> >> > return _instance;
>>>>> > > >> >> > }
>>>>> > > >> >> >class SingletonEnforcer{}
>>>>> > > >> >> >
>>>>> > > >> >> >
>>>>> > > >> >> >In another class I am getting an instance of singleton:
>>>>> > > >> >> >private var _model:ModelLocator =
>>>>>ModelLocator.getInstance();
>>>>> > > >> >> >
>>>>> > > >> >> >BindingUtils.bindSetter(onDataLoaded, _Model.data,
>>>>> "propOnData");
>>>>> > > >> >> >new GetDataEvent().dispatch();
>>>>> > > >> >> >
>>>>> > > >> >> >public function onDataLoaded(value:String):void
>>>>> > > >> >> >{
>>>>> > > >> >> >trace(2);
>>>>> > > >> >> >if (value)
>>>>> > > >> >> >{
>>>>> > > >> >> >......
>>>>> > > >> >> >}
>>>>> > > >> >> >}
>>>>> > > >> >> >
>>>>> > > >> >> >this is a command that set to get data when GetDataEvent
>>>>> event is
>>>>> > > >> >> >triggered:
>>>>> > > >> >> >
>>>>> > > >> >> >public function result(data:Object):void
>>>>> > > >> >> >{
>>>>> > > >> >> >var re:ResultEvent = data as ResultEvent;
>>>>> > > >> >> >_assetHealthModel.data = re.result as Object;
>>>>> > > >> >> >trace(1);
>>>>> > > >> >> >}
>>>>> > > >> >> >
>>>>> > > >> >> >In Console I see
>>>>> > > >> >> >2
>>>>> > > >> >> >1
>>>>> > > >> >> >
>>>>> > > >> >> >but never 2 again.
>>>>> > > >> >> >
>>>>> > > >> >> >Hope, it's clear.
>>>>> > > >> >> >
>>>>> > > >> >> >Thanks
>>>>> > > >> >> >
>>>>> > > >> >> >
>>>>> > > >> >> >On Thu, Nov 13, 2014 at 12:37 PM, Alex Harui <
>>>>> aha...@adobe.com>
>>>>> > > >>wrote:
>>>>> > > >> >> >
>>>>> > > >> >> >>
>>>>> > > >> >> >>
>>>>> > > >> >> >> On 11/13/14, 10:04 AM, "mark goldin" <
>>>>> markzolo...@gmail.com>
>>>>> > > >>wrote:
>>>>> > > >> >> >>
>>>>> > > >> >> >> >Here is singleton definition:
>>>>> > > >> >> >> >[Bindable]
>>>>> > > >> >> >> >public class ModelLocator extends EventDispatcher
>>>>> implements
>>>>> > > >> >> >>IModelLocator
>>>>> > > >> >> >> >
>>>>> > > >> >> >> >All properties on that class are public vars.
>>>>> > > >> >> >>
>>>>> > > >> >> >> I’ll assume you are trying to tell me that they are not
>>>>> public
>>>>> > > >>static
>>>>> > > >> >> >>vars?
>>>>> > > >> >> >>
>>>>> > > >> >> >> When we’ll need to know more about how the instance is
>>>>> shared,
>>>>> > > >> >>whether
>>>>> > > >> >> >>you
>>>>> > > >> >> >> are getting warnings and compile time or runtime, and
>>>>> probably
>>>>> > > >>more
>>>>> > > >> >> >> details about what the symptoms are.
>>>>> > > >> >> >>
>>>>> > > >> >> >> -Alex
>>>>> > > >> >> >>
>>>>> > > >> >> >>
>>>>> > > >> >>
>>>>> > > >> >>
>>>>> > > >>
>>>>> > > >>
>>>>> > >
>>>>> > >
>>>>> >
>>>>>
>>>>
>>>>
>>>
>>

Reply via email to