I traced through the code, com.adobe.cairngorm.business.ServiceLocator
refers to itself as "this" when looking up a service:

 

      private function getServiceForId( serviceId : String ) : Object

      {

         if ( this[ serviceId ] == null )

         {

            throw new CairngormError(

               CairngormMessageCodes.NO_SERVICE_FOUND, serviceId );

         }

         

         return this[ serviceId ];

      }

 

Except, in my case, there's no "projectService" associated with
com.adobe.cairngorm.business.ServiceLocator, I've specified it in a
Services.mxml file - How come I'm not running Services.getWebService()
instead of ServiceLocator.getWebService() ?

 

Jay Proulx

[EMAIL PROTECTED]

________________________________

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of Clint Modien
Sent: January 5, 2007 3:00 PM
To: flexcoders@yahoogroups.com
Cc: Ben Lucyk
Subject: RE: [flexcoders] Cairngorm ServiceLocator

 

The code is opensource so you can see how it works... here's the call it
makes. (This is cairngorm v2)

 

 

________________________________

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of [EMAIL PROTECTED]
Sent: Friday, January 05, 2007 10:53 AM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Cairngorm ServiceLocator

 

I'm a little confused.

 

How come I can ask com.adobe.cairngorm.business.ServiceLocator for a
service from an MXML component which is a "sub-class" of ServiceLocator?

 

i.e.:

Services.mxml:

<cairngorm:ServiceLocator ...>

            <mx:WebService name="myService" ... />

</cairngorm:ServiceLocator>

 

 

var theService =
ServiceLocator.getInstance().getWebService("myService");

 

 

How does ServiceLocator know what a "myService" is?  It's not defined in
ServiceLocator.as.

 

It works, I just don't understand why...  What is the relationship
between an MXML file and an AS class that makes this happen?

 

Jay Proulx

Application Developer

Internet Delivery Services - eVision Team

[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> 

(613) 783-6711

 

 

Reply via email to