}
public static Resource getComponentType(ReadGraph graph, Variable configuration, Resource component) throws DatabaseException {
-
Variable componentVariable = configuration.browse(graph, component);
return componentVariable.getType(graph);
-
}
+ public static Resource getPossibleComponentType(ReadGraph graph, Variable configuration, Resource component) throws DatabaseException {
+ Variable componentVariable = configuration.browsePossible(graph, component);
+ if(componentVariable == null) return null;
+ StructuralResource2 STR = StructuralResource2.getInstance(graph);
+ return componentVariable.getPossibleType(graph, STR.Component);
+ }
}
Resource relation = graph.getInverse(stat.getPredicate());
//System.out.println(NameUtils.getSafeName(graph, component) + "." + NameUtils.getSafeName(graph, relation));
Resource boundConnection = graph.getPossibleObject(relation, STR.IsBoundBy);
- Resource type = StructuralUtils.getComponentType(graph, configuration, component);
+ Resource type = StructuralUtils.getPossibleComponentType(graph, configuration, component);
Resource def = type != null ? graph.getPossibleObject(type, STR.IsDefinedBy) : null;
if(boundConnection != null && def != null) {
// The connection point is bound in component type
String componentName = graph.getRelatedValue(component, L0.HasName, Bindings.STRING);
Variable possibleChild = parameter.getPossibleChild(graph, componentName);
if(possibleChild != null) {
- result.add(new ActualConnectionDescriptor(parameter, component, possibleChild.getType(graph), connectionPoint));
+ Resource type = possibleChild.getPossibleType(graph, STR.Component);
+ if(type != null) {
+ result.add(new ActualConnectionDescriptor(parameter, component, possibleChild.getType(graph), connectionPoint));
+ } else {
+ throw new DatabaseException("Child does not have a structural type: " + possibleChild.getURI(graph));
+ }
} else {
- throw new DatabaseException("No child with name " + componentName + " could be resolved for variable " + parameter.getURI(graph));
+ Resource type = graph.getPossibleType(component, STR.Component);
+ if(type != null) {
+ result.add(new ActualConnectionDescriptor(parameter, component, type, connectionPoint));
+ } else {
+ throw new DatabaseException("Child with name " + componentName + " does not have a structural type: " + parameter.getURI(graph));
+ }
}
}
}