/** * @return true if this component instance can host the given component * (i.e., if it provides a relevant execution platform), false otherwise * @param componentType the component type that need an host */ public boolean canHost(InternalComponent componentType) { return getProvidedExecutionPlatforms().firstMatchFor(componentType) != null; }
/** * @return true if this component instance can host other instance, (i.e., * if it provide at least one execution platform), false otherwise. */ public boolean canHost() { return !getProvidedExecutionPlatforms().isEmpty(); }
private void initProvidedExecutionPlatformInstances(ComponentInstance ci, net.cloudml.core.ComponentInstance kci) { List<ProvidedExecutionPlatformInstance> providedExecutionPlatforms = ci.getProvidedExecutionPlatforms().toList(); if (providedExecutionPlatforms != null) { List<net.cloudml.core.ProvidedExecutionPlatformInstance> temp = new ArrayList<net.cloudml.core.ProvidedExecutionPlatformInstance>(); for (ProvidedExecutionPlatformInstance pepi: providedExecutionPlatforms) { if (pepi != null) { temp.add(initProvidedExecutionPlatformInstance(pepi, kci)); } } kci.setProvidedExecutionPlatformInstances(temp); } }
public void deploy(InternalComponentInstance component, ComponentInstance<? extends Component> host) { final ProvidedExecutionPlatformInstance platform = host.getProvidedExecutionPlatforms().firstMatchFor(component); if (platform == null) { final String error = String.format( "Unable to deploy! '%s' does not provide any execution platform that suits '%s' (candidates are: %s)", host.getQualifiedName(), component.getRequiredExecutionPlatform().getQualifiedName(), host.getProvidedExecutionPlatforms().onlyNames().toString()); throw new IllegalArgumentException(error); } final ExecuteInstance execute = new ExecuteInstance(ModelUtils.generateUniqueName("runOn"),component, platform); executeInstances.add(execute); }
@Override public void dispatchTo(Visitor visitor, ComponentInstance<? extends Component> instance) { for (ProvidedPortInstance port : instance.getProvidedPorts()) { visitor.visitProvidedPortInstance(port); } for (ProvidedExecutionPlatformInstance platform : instance.getProvidedExecutionPlatforms()) { visitor.visitProvidedExecutionPlatformInstance(platform); } }
private void addExecutes(){ addedExecutes = new ArrayList<ExecuteInstance>(targetDM.getExecuteInstances()); addedExecutes.removeAll(matchingExecutes.values()); for (ExecuteInstance ei : addedExecutes) { int i = currentDM.getComponentInstances().toList().indexOf(ei.getRequiredEnd().getOwner().get()); if (i >= 0) { ComponentInstance a = currentDM.getComponentInstances().toList().get(i); ei.setRequiredEnd(((InternalComponentInstance) a).getRequiredExecutionPlatform()); } i = currentDM.getComponentInstances().toList().indexOf(ei.getProvidedEnd().getOwner().get()); if (i >= 0) { ComponentInstance a = currentDM.getComponentInstances().toList().get(i); int j = a.getProvidedExecutionPlatforms().toList().indexOf(ei.getProvidedEnd()); List<ProvidedExecutionPlatformInstance> l = a.getProvidedExecutionPlatforms().toList(); ei.setProvidedEnd(l.get(j)); } } }