private void bootstrap(ContainerRoot model, UpdateCallback callback)
        {
            var emptyModel = initialModel();

            Core.getFactory().root(emptyModel);
            var compare = Core.getFactory().createModelCompare();

            compare.merge(emptyModel, model).applyOn(emptyModel);
            Core.update(new ContainerRootMarshalled(emptyModel), callback, "/");
        }
        private ContainerRoot initialModel()
        {
            //var emptyModel = Core.getFactory().createContainerRoot();
            //var nodeType = Core.getFactory().createTypeDefinition();

            var           loader  = Core.getFactory().createJSONLoader();
            ContainerRoot context = (ContainerRoot)loader.loadModelFromString("\t{\n    \"class\": \"root:org.kevoree.ContainerRoot@0\",\n    \"generated_KMF_ID\": \"0\",\n    \"nodes\": [],\n    \"repositories\": [],\n    \"hubs\": [],\n    \"mBindings\": [],\n    \"groups\": [],\n    \"packages\": [\n        {\n            \"class\": \"org.kevoree.Package@dotnet\",\n            \"name\": \"dotnet\",\n            \"packages\": [],\n            \"typeDefinitions\": [\n                {\n                    \"class\": \"org.kevoree.NodeType@name=dotnetNode,version=1\",\n                    \"abstract\": \"false\",\n                    \"name\": \"dotnetNode\",\n                    \"version\": \"1\",\n                    \"deployUnits\": [\n                        \"/packages[dotnet]/deployUnits[hashcode=be81e0d765d1e6c27207e8882cc6d7b3,name=org.kevoree.library.dotnet.dotnetNode,version=5.4.0]\"\n                    ],\n                    \"superTypes\": [],\n                    \"dictionaryType\": [\n                        {\n                            \"class\": \"[email protected]\",\n                            \"generated_KMF_ID\": \"0.0\",\n                            \"attributes\": [\n                                {\n                                    \"class\": \"org.kevoree.DictionaryAttribute@jvmArgs\",\n                                    \"fragmentDependant\": \"false\",\n                                    \"optional\": \"true\",\n                                    \"name\": \"jvmArgs\",\n                                    \"state\": \"false\",\n                                    \"datatype\": \"STRING\",\n                                    \"defaultValue\": \"\",\n                                    \"genericTypes\": []\n                                },\n                                {\n                                    \"class\": \"org.kevoree.DictionaryAttribute@log\",\n                                    \"fragmentDependant\": \"false\",\n                                    \"optional\": \"true\",\n                                    \"name\": \"log\",\n                                    \"state\": \"false\",\n                                    \"datatype\": \"STRING\",\n                                    \"defaultValue\": \"INFO\",\n                                    \"genericTypes\": []\n                                }\n                            ]\n                        }\n                    ],\n                    \"metaData\": []\n                }\n            ],\n            \"deployUnits\": [\n                {\n                    \"class\": \"org.kevoree.DeployUnit@hashcode=be81e0d765d1e6c27207e8882cc6d7b3,name=org.kevoree.library.dotnet.dotnetNode,version=5.4.0\",\n                    \"name\": \"org.kevoree.library.dotnet.dotnetNode\",\n                    \"hashcode\": \"be81e0d765d1e6c27207e8882cc6d7b3\",\n                    \"url\": \"org.kevoree.library.dotnet:org.kevoree.library.dotnet.dotnetNode:5.4.0\",\n                    \"version\": \"5.4.0\",\n                    \"requiredLibs\": [],\n                    \"filters\": [\n                        {\n                            \"class\": \"org.kevoree.Value@platform\",\n                            \"name\": \"platform\",\n                            \"value\": \"dotnet\"\n                        },\n                        {\n                            \"class\": \"org.kevoree.Value@repo_kevoree-oss\",\n                            \"name\": \"repo_kevoree-oss\",\n                            \"value\": \"https://www.nuget.org/\"\n                        }\n                    ]\n                }\n            ]\n        }\n    ]\n}").get(0);

            Console.WriteLine("" + context.getNodes().size());
            //nodeType.setName("DotnetNode");
            //nodeType.setVersion(1);

            return(context);
        }
 public async Task publishContainerRoot(ContainerRoot containerRoot)
 {
     var saver = new org.kevoree.pmodeling.api.json.JSONModelSerializer();
     string json = saver.serialize(containerRoot);
     using (var client = new HttpClient())
     {
         client.BaseAddress = new Uri(baseUrl);
         client.DefaultRequestHeaders.Accept.Clear();
         client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
         var httpcontent = new StringContent(json, Encoding.UTF8, "application/json");
         var res = await client.PostAsync("/deploy", httpcontent);
         if (!res.IsSuccessStatusCode)
         {
             var e = new HttpRequestException();
             throw e;
         }
     }
 }
        private void ApplyOnConnect(Dictionary<string, string> context, ContainerRoot modelToApply)
        {
            var onConnectKevScript = WSGroupServices.GetOnConnect();
            if (!onConnectKevScript.IsNullOrEmpty())
            {
                try
                {
                    var kevScriptEngine = WSGroupServices.GetKevScriptEngine();
                    var templateEngine = WSGroupServices.GetTemplateEngine();
                    var process = templateEngine.Process(onConnectKevScript, context);
                    kevScriptEngine.execute(process, modelToApply);
                }
                catch (Exception e)
                {
                    WSGroupServices.GetLogger()
                        .Error("["+e.Message+"] - Unable to parse onConnect KevScript. Broadcasting model without onConnect process.\n" + onConnectKevScript );
                    WSGroupServices.GetLogger().Error(e.StackTrace);
                }
                finally
                {
                    var marshalled = new ContainerRootMarshalled(modelToApply);

                    // update locally
                    WSGroupServices.GetModelService().update(marshalled, null);

                    // broadcast changes
                    BroadcastToTheGroup(new Push(marshalled.serialize()));
                }
            }
        }
 private void bootstrap(ContainerRoot model, UpdateCallback callback)
 {
     var emptyModel = initialModel();
     Core.getFactory().root(emptyModel);
     var compare = Core.getFactory().createModelCompare();
     compare.merge(emptyModel, model).applyOn(emptyModel);
     Core.update(new ContainerRootMarshalled(emptyModel), callback, "/");
 }
 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 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;
        }