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 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 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 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);
            }
        }