Hi Roland,
You are very close to completely solve the issue. Great!
But... The only problem i have is if i use [Autowired] (or byType)
In that case it doesn't work.
Still a minor (i hope) issue with reflection.
Code:
Sat Oct 31 01:58:24 GMT+0100 2009 WARN - org.as3commons.reflect.Type - The class with the name 'classes::ModuleClass' could not be found in the application domain '[object ApplicationDomain]'
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at org.springextensions.actionscript.ioc.autowire::DefaultAutowireProcessor/autoWireFieldByType()[/Users/arnoudbos/Desktop/development/flex frameworks svn/spring-actionscript/trunk/spring-actionscript-core/src/main/actionscript/org/springextensions/actionscript/ioc/autowire/DefaultAutowireProcessor.as:276]
at org.springextensions.actionscript.ioc.autowire::DefaultFlexAutowireProcessor/autoWireField()[/Users/arnoudbos/Desktop/development/flex frameworks svn/spring-actionscript/trunk/spring-actionscript-core/src/main/actionscript/org/springextensions/actionscript/ioc/autowire/DefaultFlexAutowireProcessor.as:74]
at org.springextensions.actionscript.ioc.autowire::DefaultAutowireProcessor/autoWire()[/Users/arnoudbos/Desktop/development/flex frameworks svn/spring-actionscript/trunk/spring-actionscript-core/src/main/actionscript/org/springextensions/actionscript/ioc/autowire/DefaultAutowireProcessor.as:163]
at org.springextensions.actionscript.ioc.factory.support::AbstractObjectFactory/wire()[/Users/arnoudbos/Desktop/development/flex frameworks svn/spring-actionscript/trunk/spring-actionscript-core/src/main/actionscript/org/springextensions/actionscript/ioc/factory/support/AbstractObjectFactory.as:401]
at org.springextensions.actionscript.stage::DefaultAutowiringStageProcessor/process()[/Users/arnoudbos/Desktop/development/flex frameworks svn/spring-actionscript/trunk/spring-actionscript-core/src/main/actionscript/org/springextensions/actionscript/stage/DefaultAutowiringStageProcessor.as:151]
at org.springextensions.actionscript.stage::FlexStageProcessorRegistry/processStageComponentWithRelevantProcessors()[/Users/arnoudbos/Desktop/development/flex frameworks svn/spring-actionscript/trunk/spring-actionscript-core/src/main/actionscript/org/springextensions/actionscript/stage/FlexStageProcessorRegistry.as:294]
at org.springextensions.actionscript.stage::FlexStageProcessorRegistry/processUIComponent()[/Users/arnoudbos/Desktop/development/flex frameworks svn/spring-actionscript/trunk/spring-actionscript-core/src/main/actionscript/org/springextensions/actionscript/stage/FlexStageProcessorRegistry.as:261]
at org.springextensions.actionscript.stage::FlexStageProcessorRegistry/processStage()[/Users/arnoudbos/Desktop/development/flex frameworks svn/spring-actionscript/trunk/spring-actionscript-core/src/main/actionscript/org/springextensions/actionscript/stage/FlexStageProcessorRegistry.as:447]
at org.springextensions.actionscript.context.support::FlexXMLApplicationContext/completeHandler()[/Users/arnoudbos/Desktop/development/flex frameworks svn/spring-actionscript/trunk/spring-actionscript-core/src/main/actionscript/org/springextensions/actionscript/context/support/FlexXMLApplicationContext.as:278]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
Code:
/**
* Tries to retrieve an autowire candidate based on the type of the specified field, and when found
* injects the candidate into the specified field.
* @param object The object being autowired
* @param field The field that will be injected.
* @param metadata The autowiring metadata
* @param objectName The name of the object in the objectFactory
*/
protected function autoWireFieldByType(object:Object, field:Field, metadata:MetaData, objectName:String):void {
var candidateName:String = findAutowireCandidateName(field.type.clazz);
field.type = null in which case field.type.clazz gives a null pointer.
Hope i'm not driving you mad...
cheers,
Arnoud