News
					
					
  
    
				
				
			IDependencyOwner, check dependency injection at compiletime
Let’s highlight one new feature arrived with hexMachina 0.22.0.
hex.di.mapping.IDependencyOwner
With this new feature is possible to check injector dependencies at compiletime. 
With @Dependency metadata is possible to declare mapping dependencies on classes that implements hex.di.mapping.IDependencyOwner,
@Dependency( var _:String )
@Dependency( var name:InterfaceWithGeneric<String> )
@Dependency( var _:Void->Void, hex.di.mock.MockConstants.NAME_ONE )
class DependencyOwner implements hex.di.mapping.IDependencyOwner
{
	var _injector = new Injector();
	
	public function new() {}
	
	public function getInjector() : IDependencyInjector return this._injector;
}
In this example, DependencyOwner request mapping of :
fromType | 
      withName | 
    
|---|---|
String | 
      no name | 
InterfaceWithGeneric<String> | 
      “name” | 
Void->Void | 
      the value of hex.di.mock.MockConstants.NAME_ONE | 
    
Mapping Could be provided by code with static Extension hex.di.util.MappingDefinitionUtil.addDefinition:
var f2 = function() {};
var mapping : MappingDefinition = { fromType: "String", toValue: "test" };
var mappings : Array<MappingDefinition> = [
	{ fromType: "hex.di.mock.types.InterfaceWithGeneric<String>", toClass: ClazzWithGeneric, withName: "name" },
	{ fromType: "Void->Void", toValue: f2, withName:hex.di.mock.MockConstants.NAME_ONE }
];
var dependencyOwner = new DependencyOwner();
dependencyOwner.addDefinition( [mapping].concat( mappings ) );
var injector = dependencyOwner.getInjector();
Or in DSL through the constructor like :
@Dependency( var _			:String )
@Dependency( var id			:Interface )
@Dependency( var anotherID	:Interface )
class AnotherDependenciesOwner implements IDependencyOwner
{
	var _injector = new Injector();
	
	public function new( mapping : MappingDefinition, mappings : Array<MappingDefinition> ) {}
	
	public function getInjector() : IDependencyInjector return this._injector;
}
@context( name = 'applicationContext' )
{
	s = "test";
	mapping1 = mapping({fromType: "String", toValue: s});
	mapping2 = mapping( {fromType: "hex.mock.Interface", toValue: new hex.mock.Clazz(), withName: "anotherID"} );
	
	mappings = new Array<hex.di.mapping.MappingDefinition>
	(
		mapping2,
		mapping( {fromType: "hex.mock.Interface", toClass: hex.mock.Clazz, withName: "id", asSingleton:true} )
	);
	owner = new AnotherDependenciesOwner( mapping1, mappings );
}