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