use of org.eclipse.winery.model.tosca.TDeploymentArtifacts in project winery by eclipse.
the class IGenericRepository method getReferencedDefinitionsChildIds.
default Collection<DefinitionsChildId> getReferencedDefinitionsChildIds(ComplianceRuleId id) {
// We have to use a HashSet to ensure that no duplicate ids are added
// E.g., there may be multiple relationship templates having the same type
Collection<DefinitionsChildId> ids = new HashSet<>();
TComplianceRule complianceRule = this.getElement(id);
// TODO extend to required Structure
if (complianceRule.getIdentifier() != null) {
for (TEntityTemplate entityTemplate : complianceRule.getIdentifier().getNodeTemplateOrRelationshipTemplate()) {
QName qname = entityTemplate.getType();
if (entityTemplate instanceof TNodeTemplate) {
ids.add(new NodeTypeId(qname));
TNodeTemplate n = (TNodeTemplate) entityTemplate;
// crawl through deployment artifacts
TDeploymentArtifacts deploymentArtifacts = n.getDeploymentArtifacts();
if (deploymentArtifacts != null) {
List<TDeploymentArtifact> das = deploymentArtifacts.getDeploymentArtifact();
for (TDeploymentArtifact da : das) {
ids.add(new ArtifactTypeId(da.getArtifactType()));
if ((qname = da.getArtifactRef()) != null) {
ids.add(new ArtifactTemplateId(qname));
}
}
}
// crawl through reqs/caps
TNodeTemplate.Requirements requirements = n.getRequirements();
if (requirements != null) {
for (TRequirement req : requirements.getRequirement()) {
QName type = req.getType();
RequirementTypeId rtId = new RequirementTypeId(type);
ids.add(rtId);
}
}
TNodeTemplate.Capabilities capabilities = n.getCapabilities();
if (capabilities != null) {
for (TCapability cap : capabilities.getCapability()) {
QName type = cap.getType();
CapabilityTypeId ctId = new CapabilityTypeId(type);
ids.add(ctId);
}
}
// crawl through policies
org.eclipse.winery.model.tosca.TNodeTemplate.Policies policies = n.getPolicies();
if (policies != null) {
for (TPolicy pol : policies.getPolicy()) {
QName type = pol.getPolicyType();
PolicyTypeId ctId = new PolicyTypeId(type);
ids.add(ctId);
}
}
} else {
assert (entityTemplate instanceof TRelationshipTemplate);
ids.add(new RelationshipTypeId(qname));
}
}
}
return ids;
}
use of org.eclipse.winery.model.tosca.TDeploymentArtifacts in project winery by eclipse.
the class IGenericRepository method getReferencedDefinitionsChildIds.
default Collection<DefinitionsChildId> getReferencedDefinitionsChildIds(NodeTypeImplementationId id) {
// We have to use a HashSet to ensure that no duplicate ids are added
// There may be multiple DAs/IAs referencing the same type
Collection<DefinitionsChildId> ids = new HashSet<>();
final TNodeTypeImplementation element = this.getElement(id);
// DAs
TDeploymentArtifacts deploymentArtifacts = element.getDeploymentArtifacts();
if (deploymentArtifacts != null) {
for (TDeploymentArtifact da : deploymentArtifacts.getDeploymentArtifact()) {
QName qname;
if ((qname = da.getArtifactRef()) != null) {
ids.add(new ArtifactTemplateId(qname));
}
ids.add(new ArtifactTypeId(da.getArtifactType()));
}
}
// IAs
return this.getReferencedTOSCAComponentImplementationArtifactIds(ids, element.getImplementationArtifacts(), id);
}
use of org.eclipse.winery.model.tosca.TDeploymentArtifacts in project winery by eclipse.
the class DeploymentArtifactsResource method getDeploymentArtifacts.
/**
* Determines the list of DAs belonging to the given node template.
* <p>
* If no DAs are existing, an empty list is created in the model for the
* node template
*/
private static List<TDeploymentArtifact> getDeploymentArtifacts(TNodeTemplate nodeTemplate) {
TDeploymentArtifacts deploymentArtifacts = nodeTemplate.getDeploymentArtifacts();
final List<TDeploymentArtifact> res;
if (deploymentArtifacts == null) {
deploymentArtifacts = new TDeploymentArtifacts();
nodeTemplate.setDeploymentArtifacts(deploymentArtifacts);
}
res = deploymentArtifacts.getDeploymentArtifact();
return res;
}
use of org.eclipse.winery.model.tosca.TDeploymentArtifacts in project winery by eclipse.
the class NodeTypeImplementationResource method getDeploymentArtifacts.
/**
* Only NodeTypes have deployment artifacts, not RelationshipType. Therefore, this method is declared in {@link
* NodeTypeImplementationResource} and not in {@link EntityTypeImplementationResource}
*/
@Path("deploymentartifacts/")
public DeploymentArtifactsResource getDeploymentArtifacts() {
TDeploymentArtifacts deploymentArtifacts;
deploymentArtifacts = this.getNTI().getDeploymentArtifacts();
if (deploymentArtifacts == null) {
deploymentArtifacts = new TDeploymentArtifacts();
this.getNTI().setDeploymentArtifacts(deploymentArtifacts);
}
return new DeploymentArtifactsResource(deploymentArtifacts.getDeploymentArtifact(), this);
}
use of org.eclipse.winery.model.tosca.TDeploymentArtifacts in project winery by eclipse.
the class BackendUtils method getArtifactTemplatesOfReferencedDeploymentArtifacts.
public static Collection<QName> getArtifactTemplatesOfReferencedDeploymentArtifacts(TNodeTemplate nodeTemplate) {
List<QName> l = new ArrayList<>();
// DAs may be assigned directly to a node template
Collection<QName> allReferencedArtifactTemplates = BackendUtils.getAllReferencedArtifactTemplates(nodeTemplate.getDeploymentArtifacts());
l.addAll(allReferencedArtifactTemplates);
// DAs may be assigned via node type implementations
QName nodeTypeQName = nodeTemplate.getType();
Collection<NodeTypeImplementationId> allNodeTypeImplementations = RepositoryFactory.getRepository().getAllElementsReferencingGivenType(NodeTypeImplementationId.class, nodeTypeQName);
for (NodeTypeImplementationId nodeTypeImplementationId : allNodeTypeImplementations) {
TDeploymentArtifacts deploymentArtifacts = RepositoryFactory.getRepository().getElement(nodeTypeImplementationId).getDeploymentArtifacts();
allReferencedArtifactTemplates = BackendUtils.getAllReferencedArtifactTemplates(deploymentArtifacts);
l.addAll(allReferencedArtifactTemplates);
}
return l;
}
Aggregations