private TypeDefinition InitTypeDefAndPackage(string typeDefName, string typeDefVersion, string typeDefPackage, org.kevoree.DeployUnit du, ContainerRoot root, KevoreeFactory factory, DeployUnit typedefinedObject)
 {
     var packages = Regex.Split(typeDefPackage, "\\.");
     Package pack = null;
     foreach (string t in packages)
     {
         if (pack == null)
         {
             pack = root.findPackagesByID(t);
             if (pack == null)
             {
                 pack = (Package)factory.createPackage().withName(t.ToLower());
                 root.addPackages(pack);
             }
         }
         else
         {
             var packNew = pack.findPackagesByID(t);
             if (packNew == null)
             {
                 packNew = (Package)factory.createPackage().withName(t.ToLower());
                 pack.addPackages(packNew);
             }
             pack = packNew;
         }
     }
     var foundTD = pack.findTypeDefinitionsByNameVersion(typeDefName, typeDefVersion);
     if (foundTD != null)
     {
         return foundTD;
     }
     var typeDefinitionType = _annotationHelper.GetTypeDefinition(typedefinedObject.GetType(), EXPECTED_TYPES);
     var td = (TypeDefinition)factory.create(getModelTypeName(typeDefinitionType));
     td.setVersion(typeDefVersion);
     td.setName(typeDefName);
     td.addDeployUnits(du);
     pack.addTypeDefinitions(td);
     pack.addDeployUnits(du);
     return td;
 }
 private void CompleteNodeTypeDefinition(DeployUnit component, NodeTypeImpl type, KevoreeFactory factory)
 {
     CompleteComponentTypeDefinitionParams(component, type, factory);
 }
        private TypeDefinition GenericComponentDefinition(string typeDefName, string typeDefVersion, string typeDefPackage, string packageName, string packageVersion, KevoreeFactory kevoreeFactory, ContainerRoot containerRoot, DeployUnit typedefinedObject)
        {
            /* création de la deployUnit */

            org.kevoree.DeployUnit du = DeployUnitInit(packageName, packageVersion, kevoreeFactory);

            /* chargement des informations génériques à toutes les type defition */
            var typeDef = InitTypeDefAndPackage(typeDefName, typeDefVersion, typeDefPackage, du, containerRoot, kevoreeFactory, typedefinedObject);
            typeDef.setAbstract(Boolean.FALSE);
            typeDef.addDeployUnits(du);
            return typeDef;
        }
 private void CompleteComponentTypeDefinitionParams(DeployUnit component, TypeDefinition type, KevoreeFactory factory)
 {
     var lstOutputFields = _annotationHelper.filterFieldsByAttribute(component.GetType(), typeof(Param));
     foreach (FieldInfo fieldInfo in lstOutputFields)
     {
         DictionaryAttribute dicAtt = CompleteComponentTypeDefinitionParamField(type, factory, fieldInfo);
         type.getDictionaryType().addAttributes(dicAtt);
     }
 }
 private void CompleteComponentTypeDefinitionOutputs(DeployUnit component, ComponentTypeImpl type, KevoreeFactory factory)
 {
     var lstOutputFields = _annotationHelper.filterFieldsByAttribute(component.GetType(), typeof(Output));
     foreach (FieldInfo fieldInfo in lstOutputFields)
     {
         PortTypeRef requiredPortRef = CompleteComponentTypeDefinitionOutput(component, factory, fieldInfo);
         type.addRequired(requiredPortRef);
     }
 }
        private void CompleteComponentTypeDefinitionInput(DeployUnit component, ComponentTypeImpl type, KevoreeFactory factory)
        {
            var lstMethodsInfos = _annotationHelper.filterMethodsByAttribute(component.GetType(), typeof(Input));
            foreach (MethodInfo methodInfo in lstMethodsInfos)
            {
                PortTypeRef providedPortRef = factory.createPortTypeRef();
                providedPortRef.setName(methodInfo.Name);

                var optional = ((Input)methodInfo.GetCustomAttribute(typeof(Input))).Optional ? Boolean.TRUE : Boolean.FALSE;
                providedPortRef.setOptional(optional);

                type.addProvided(providedPortRef);
            }
        }
 private void CompleteComponentTypeDefinition(DeployUnit component, ComponentTypeImpl type, KevoreeFactory factory)
 {
     CompleteComponentTypeDefinitionOutputs(component, type, factory);
     CompleteComponentTypeDefinitionParams(component, type, factory);
     CompleteComponentTypeDefinitionInput(component, type, factory);
 }
 private static PortTypeRef CompleteComponentTypeDefinitionOutput(DeployUnit component, KevoreeFactory factory, FieldInfo fieldInfo)
 {
     if (fieldInfo.FieldType != typeof(Port))
     {
         throw new TypeDefinitionException("Class=" + component + ", Field=" + fieldInfo + ", annotated with Outbut but type is not Port");
     }
     PortTypeRef requiredPortRef = factory.createPortTypeRef();
     requiredPortRef.setName(fieldInfo.Name);
     System.Boolean opt = ((Output)fieldInfo.GetCustomAttribute(typeof(Output))).Optional;
     requiredPortRef.setOptional(opt ? Boolean.TRUE : Boolean.FALSE);
     return requiredPortRef;
 }