diff --git a/src/metadata.xml b/src/metadata.xml
index 3a93ee28..26085a38 100644
--- a/src/metadata.xml
+++ b/src/metadata.xml
@@ -28,6 +28,13 @@
type="String"
required="false"
description="Id of the named bean to inject" />
+
+
-
\ No newline at end of file
+
diff --git a/src/org/swizframework/metadata/InjectMetadataTag.as b/src/org/swizframework/metadata/InjectMetadataTag.as
index abd45994..390ddbce 100644
--- a/src/org/swizframework/metadata/InjectMetadataTag.as
+++ b/src/org/swizframework/metadata/InjectMetadataTag.as
@@ -55,6 +55,11 @@ package org.swizframework.metadata
* Backing variable for read-only required property.
*/
protected var _required:Boolean = true;
+
+ /**
+ * Backing variable for read-only local property.
+ */
+ protected var _local:Boolean = false;
// ========================================
// public properties
@@ -117,6 +122,17 @@ package org.swizframework.metadata
{
return _required;
}
+
+ /**
+ * Returns local attribute of [Inject] tag as a Boolean value.
+ * If true Swiz will discovery beans only in own instance avoiding parent child structure.
+ *
+ * @default false
+ */
+ public function get local():Boolean
+ {
+ return _local;
+ }
// ========================================
// constructor
@@ -169,6 +185,9 @@ package org.swizframework.metadata
if( hasArg( "required" ) )
_required = getArg( "required" ).value == "true";
+
+ if( hasArg( "local" ) )
+ _local = getArg( "local" ).value == "true";
}
}
-}
\ No newline at end of file
+}
diff --git a/src/org/swizframework/processors/InjectProcessor.as b/src/org/swizframework/processors/InjectProcessor.as
index ebccf757..bd79c345 100644
--- a/src/org/swizframework/processors/InjectProcessor.as
+++ b/src/org/swizframework/processors/InjectProcessor.as
@@ -106,7 +106,7 @@ package org.swizframework.processors
// source attribute found - means we're injecting by name and potentially by property
// try to obtain the bean by using the first part of the source attribute
- var namedBean:Bean = getBeanByName( injectTag.source.split( "." )[ 0 ] );
+ var namedBean:Bean = getBeanByName( injectTag.source.split( "." )[ 0 ], !injectTag.local );
if( namedBean == null )
{
@@ -216,7 +216,7 @@ package org.swizframework.processors
*/
protected function removeInjectByProperty( injectTag:InjectMetadataTag, bean:Bean ):void
{
- var namedBean:Bean = getBeanByName( injectTag.source.split( "." )[ 0 ] );
+ var namedBean:Bean = getBeanByName( injectTag.source.split( "." )[ 0 ], !injectTag.local );
removePropertyBinding( bean, namedBean, injectTag );
@@ -242,7 +242,7 @@ package org.swizframework.processors
{
targetType = swiz.domain.getDefinition( injectTag.host.name ) as Class;
}
- var typedBean:Bean = getBeanByType( targetType );
+ var typedBean:Bean = getBeanByType( targetType, !injectTag.local );
if( typedBean )
{
@@ -322,17 +322,17 @@ package org.swizframework.processors
/**
* Get Bean By Name
*/
- protected function getBeanByName( name:String ):Bean
+ protected function getBeanByName( name:String, discovery:Boolean = true ):Bean
{
- return beanFactory.getBeanByName( name );
+ return beanFactory.getBeanByName( name, discovery );
}
/**
* Get Bean By Type
*/
- protected function getBeanByType( type:Class ):Bean
+ protected function getBeanByType( type:Class, discovery:Boolean = true ):Bean
{
- return beanFactory.getBeanByType( type );
+ return beanFactory.getBeanByType( type, discovery );
}
/**