private Map<String, String> getDUVersions(List<DeployUnit> dus) { Map<String, String> versions = new HashMap<>(); dus.forEach(du -> { String platform = du.findFiltersByID("platform").getValue(); versions.put(platform, du.getVersion()); }); return versions; } }
private boolean checkDUS(TypeDefinition tdef, Map<String, Object> duVersions) { boolean satisfied = true; for (Map.Entry<String, Object> entry : duVersions.entrySet()) { boolean found = false; for (int i=0; i < tdef.getDeployUnits().size(); i++) { DeployUnit du = tdef.getDeployUnits().get(i); String p = du.findFiltersByID("platform").getValue(); if (p.equals(entry.getKey()) && du.getVersion().equals(entry.getValue().toString())) { found = true; break; } } if (!found) { satisfied = false; break; } } return satisfied; } }
public String toString() { return "RemoveDeployUnit " + KModelHelper.fqnGroup(du) + "/" + du.getName() + "/" + du.getVersion() + "/" + du.getHashcode(); } }
public String toString() { return "AddDeployUnit " + KModelHelper.fqnGroup(du) + "/" + du.getName() + "/" + du.getVersion() + "/" + du.getHashcode(); }
private void saveDeployUnit(TypeFQN fqn, DeployUnit du) { Path path = getDUPath(fqn, du.findFiltersByID("platform").getValue(), du.getVersion()); String modelStr = serializer.serialize(du); writeFile(path.toFile(), modelStr); }
!tdef.select("deployUnits[hashcode="+du.getHashcode()+",name="+du.getName()+",version="+du.getVersion()+"]").isEmpty()).collect(Collectors.toList()); processDeployUnit(cloner.clone(model), tdefs, du); } else {
private String searchMainClassName(final Instance instance) { TypeDefinition td = instance.getTypeDefinition(); List<KMFContainer> filters = td.select("deployUnits[]/filters[name=platform,value=java]"); if (filters.size() > 1) { String filtersStr = ""; for (int i=0; i < filters.size(); i++) { filtersStr += filters.get(i).eContainer().path(); if (i < filters.size() - 1) { filtersStr += ", "; } } throw new RuntimeException("Instance " + instance.path() + " has " + filters.size() + " deployUnits ("+filtersStr+") that matches platform \"java\" (must only be one)"); } DeployUnit du = (DeployUnit) filters.get(0).eContainer(); String tag = "class:" + td.getName() + ":" + td.getVersion(); Value tdefClassName = du.findFiltersByID(tag); if (tdefClassName != null) { return tdefClassName.getValue(); } else { throw new RuntimeException("Cannot find meta-data \"" + tag + "\" in DeployUnit " + du.getHashcode() + "/" + du.getName() + "/" + du.getVersion()); } }
Value kevVersion = du.findFiltersByID("kevoree_version"); if (kevVersion == null || kevVersion.getValue() == null) { throw new KevoreeCoreException("DeployUnit " + du.getName() + ":" + du.getVersion() + " is incompatible with current runtime v" + core.getFactory().getVersion()); } else if (!kevVersion.getValue().equals(core.getFactory().getVersion())) { throw new KevoreeCoreException("DeployUnit " + du.getName() + ":" + du.getVersion() + " targets v" + kevVersion.getValue() + " which is incompatible with current runtime v" + core.getFactory().getVersion()); .collect(Collectors.toList()).toArray(URL_ARRAY); Log.trace("ClassLoader content for {}:{}:", du.getName(), du.getVersion()); for (URL url : jars) { Log.trace(" - {}", url.toString()); return classLoader; } catch (MavenResolverException e) { throw new KevoreeCoreException("Unable to resolve DeployUnit " + du.getName() + ":" + du.getVersion(), e);
private String searchMainClassName(final Instance instance) throws KevoreeCoreException { TypeDefinition td = instance.getTypeDefinition(); DeployUnit du = validateFilters(instance, td.select("deployUnits[]/filters[name=platform,value=java]")); String tag = "class:" + td.getName() + ":" + td.getVersion(); Value tdefClassName = du.findFiltersByID(tag); if (tdefClassName != null) { return tdefClassName.getValue(); } else { throw new RuntimeException("Cannot find meta-data \"" + tag + "\" in DeployUnit " + du.getHashcode() + "/" + du.getName() + "/" + du.getVersion()); } }
private DeployUnit createDeployUnit() { DeployUnit du = factory.createDeployUnit(); du.setName(project.getArtifact().getArtifactId()); String hashcode = ModelBuilderHelper.createKey(namespace, project.getArtifactId(), project.getVersion(), null); du.setHashcode(hashcode); du.setVersion(project.getArtifact().getBaseVersion()); Value platform = factory.createValue(); platform.setName("platform"); platform.setValue("java"); du.addFilters(platform); Value kevoreeVersion = factory.createValue(); kevoreeVersion.setName("kevoree_version"); kevoreeVersion.setValue(factory.getVersion()); du.addFilters(kevoreeVersion); Value timestamp = factory.createValue(); timestamp.setName("timestamp"); timestamp.setValue(String.valueOf(System.currentTimeMillis())); du.addFilters(timestamp); // add repositories for (Repository repo : project.getRepositories()) { Value repoVal = factory.createValue(); repoVal.setName("repo_" + repo.getId()); repoVal.setValue(repo.getUrl()); du.addFilters(repoVal); } // set Maven groupId:artifactId:version du.setUrl(project.getArtifact().getGroupId() + ":" + du.getName() + ":" + du.getVersion()); return du; }
TypeDefinition tdef = (TypeDefinition) elem; getLog().info("Looking for DeployUnit " + du.getName() + "/" + du.getVersion() + "/" + platform + " in the registry..."); HttpResponse<RDeployUnit> duRes = client.getDu(namespace, tdef.getName(), Long.valueOf(tdef.getVersion()), du.getName(), du.getVersion(), platform); if (duRes.getStatus() == 200) { RDeployUnit regDu = duRes.getBody(); newDu.setVersion(du.getVersion()); newDu.setPlatform("java"); newDu.setModel(duStr);
@Override public synchronized Object createInstance(final Instance instance, final ClassLoader classLoader) throws KevoreeCoreException { final DeployUnit du = getJavaDeployUnit(instance); try { final String mainClassName = searchMainClassName(instance); final Class clazz = classLoader.loadClass(mainClassName); final Object newInstance = clazz.newInstance(); final InstanceContext instanceContext = new InstanceContext(instance.path(), core.getNodeName(), instance.getName()); injector.register(Context.class, instanceContext); injector.register(ModelService.class, new ContextAwareModelServiceAdapter(core, instance.path())); // TODO there should be a GroupContext also that gives attached nodes etc.. injector.register(ChannelContext.class, new ChannelContextImpl(instanceContext)); injector.inject(newInstance); return newInstance; } catch (NoClassDefFoundError e) { throw new KevoreeCoreException("@KevoreeInject failed (is " + du.getName() + ":" + du.getVersion() + ":"+du.getHashcode().substring(0, 6)+" up-to-date?)", e); } catch (Throwable e) { throw new KevoreeCoreException("Unable to create instance " + instance.getName(), e); } }
getLog().info("DeployUnit: " + du.getName() + ":" + du.getVersion()); getLog().info("");
throw new KevoreeDeployException("You are trying to start a NodeType that does not target this runtime version", e); } catch (KevoreeCoreException e) { throw new KevoreeDeployException("Unable to create instance " + node.getName() + ": " + node.getTypeDefinition().getName() + "/" + node.getTypeDefinition().getVersion() + "/" + node.getTypeDefinition().getDeployUnits().get(0).getVersion(), e);