Search in sources :

Example 6 with FeaturePrototypeActual

use of org.osate.aadl2.FeaturePrototypeActual in project osate2 by osate.

the class FeaturePrototypeBindingImpl method createActual.

/**
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
public FeaturePrototypeActual createActual(EClass eClass) {
    FeaturePrototypeActual newActual = (FeaturePrototypeActual) create(eClass);
    setActual(newActual);
    return newActual;
}
Also used : FeaturePrototypeActual(org.osate.aadl2.FeaturePrototypeActual)

Example 7 with FeaturePrototypeActual

use of org.osate.aadl2.FeaturePrototypeActual in project osate2 by osate.

the class InstanceUtil method resolveFeaturePrototype.

/**
 * Find the binding for a given feature prototype.
 *
 * @param proto the prototype to resolve
 * @param context the context in which the prototype is used, e.g., a
 *            subcomponent instance
 * @param classifierCache an optional cache of known instantiated
 *            classifiers, may be null
 * @return The actual feature this prototype resolves to.
 */
public static FeaturePrototypeActual resolveFeaturePrototype(Prototype proto, InstanceObject context, HashMap<InstanceObject, InstantiatedClassifier> classifierCache) {
    FeaturePrototypeActual result = null;
    FeaturePrototypeBinding fpb = (FeaturePrototypeBinding) resolvePrototype(proto, context, classifierCache);
    if (fpb == null) {
        return null;
    }
    result = fpb.getActual();
    if (result instanceof FeaturePrototypeReference) {
        // resolve recursively
        result = resolveFeaturePrototype(((FeaturePrototypeReference) fpb.getActual()).getPrototype(), context.getContainingComponentInstance(), classifierCache);
    }
    return result;
}
Also used : FeaturePrototypeActual(org.osate.aadl2.FeaturePrototypeActual) FeaturePrototypeReference(org.osate.aadl2.FeaturePrototypeReference) FeaturePrototypeBinding(org.osate.aadl2.FeaturePrototypeBinding)

Example 8 with FeaturePrototypeActual

use of org.osate.aadl2.FeaturePrototypeActual in project osate2 by osate.

the class SubcomponentPrototypeBindingsModel method buildComparisonString.

/**
 * Builds a string that can be used to compare a list of prototype bindings
 * @param bindings for which to build a comparison string
 * @return is the comparison string that was built.
 */
private String buildComparisonString(final List<PrototypeBinding> bindings) {
    final StringBuilder sb = new StringBuilder();
    bindings.stream().sorted((b1, b2) -> getPrototypeName(b1).compareToIgnoreCase(getPrototypeName(b2))).forEachOrdered(b -> {
        sb.append(getPrototypeName(b));
        sb.append(':');
        if (b instanceof ComponentPrototypeBinding) {
            final ComponentPrototypeBinding cpb = (ComponentPrototypeBinding) b;
            cpb.getActuals().stream().forEachOrdered(a -> {
                sb.append(a.getCategory());
                sb.append(',');
                addQualfiedNameIfNamedElement(sb, a.getSubcomponentType());
                sb.append('(');
                sb.append(buildComparisonString(a.getBindings()));
                sb.append(')');
            });
        } else if (b instanceof FeatureGroupPrototypeBinding) {
            final FeatureGroupPrototypeBinding fgpb = (FeatureGroupPrototypeBinding) b;
            final FeatureGroupPrototypeActual a = fgpb.getActual();
            if (a != null) {
                addQualfiedNameIfNamedElement(sb, a.getFeatureType());
                sb.append('(');
                sb.append(buildComparisonString(a.getBindings()));
                sb.append(')');
            }
        } else if (b instanceof FeaturePrototypeBinding) {
            FeaturePrototypeBinding fpb = (FeaturePrototypeBinding) b;
            final FeaturePrototypeActual a = fpb.getActual();
            if (a instanceof AccessSpecification) {
                final AccessSpecification as = (AccessSpecification) a;
                sb.append(as.getCategory());
                sb.append(',');
                sb.append(as.getKind());
                sb.append(',');
                addQualfiedNameIfNamedElement(sb, as.getClassifier());
            } else if (a instanceof PortSpecification) {
                final PortSpecification ps = (PortSpecification) a;
                sb.append(ps.getCategory());
                sb.append(',');
                sb.append(ps.getDirection());
                sb.append(',');
                addQualfiedNameIfNamedElement(sb, ps.getClassifier());
            } else if (a instanceof FeaturePrototypeReference) {
                final FeaturePrototypeReference r = (FeaturePrototypeReference) a;
                sb.append(r.getDirection());
                sb.append(',');
                addQualfiedNameIfNamedElement(sb, r.getPrototype());
            }
        }
        sb.append(';');
    });
    return sb.toString();
}
Also used : SubcomponentType(org.osate.aadl2.SubcomponentType) ComponentPrototypeBinding(org.osate.aadl2.ComponentPrototypeBinding) FeaturePrototypeBinding(org.osate.aadl2.FeaturePrototypeBinding) AadlSubcomponentUtil(org.osate.ge.aadl2.internal.util.AadlSubcomponentUtil) ArrayList(java.util.ArrayList) BusinessObjectSelection(org.osate.ge.BusinessObjectSelection) Strings(com.google.common.base.Strings) EClass(org.eclipse.emf.ecore.EClass) AccessSpecification(org.osate.aadl2.AccessSpecification) FeaturePrototypeReference(org.osate.aadl2.FeaturePrototypeReference) FeatureGroupPrototypeActual(org.osate.aadl2.FeatureGroupPrototypeActual) Aadl2Package(org.osate.aadl2.Aadl2Package) Subcomponent(org.osate.aadl2.Subcomponent) Prototype(org.osate.aadl2.Prototype) PortSpecification(org.osate.aadl2.PortSpecification) Iterator(java.util.Iterator) FeatureGroupPrototypeBinding(org.osate.aadl2.FeatureGroupPrototypeBinding) FeaturePrototypeActual(org.osate.aadl2.FeaturePrototypeActual) PrototypeBinding(org.osate.aadl2.PrototypeBinding) EObject(org.eclipse.emf.ecore.EObject) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) List(java.util.List) Stream(java.util.stream.Stream) ComponentCategory(org.osate.aadl2.ComponentCategory) PrototypeBindingsModel(org.osate.ge.swt.classifiers.PrototypeBindingsModel) AadlModelAccessUtil(org.osate.ge.aadl2.ui.AadlModelAccessUtil) NamedElement(org.osate.aadl2.NamedElement) IEObjectDescription(org.eclipse.xtext.resource.IEObjectDescription) PortSpecification(org.osate.aadl2.PortSpecification) FeaturePrototypeActual(org.osate.aadl2.FeaturePrototypeActual) FeatureGroupPrototypeBinding(org.osate.aadl2.FeatureGroupPrototypeBinding) AccessSpecification(org.osate.aadl2.AccessSpecification) FeatureGroupPrototypeActual(org.osate.aadl2.FeatureGroupPrototypeActual) FeaturePrototypeReference(org.osate.aadl2.FeaturePrototypeReference) ComponentPrototypeBinding(org.osate.aadl2.ComponentPrototypeBinding) FeaturePrototypeBinding(org.osate.aadl2.FeaturePrototypeBinding)

Example 9 with FeaturePrototypeActual

use of org.osate.aadl2.FeaturePrototypeActual in project osate2 by osate.

the class FeatureReferenceBindingType method loadBindingData.

// Populate the model's data structure based on the specified bindings
protected void loadBindingData(final PrototypeBindingsModelNode parent, final Collection<PrototypeBinding> bindings) {
    for (final PrototypeBinding b : bindings) {
        // Create a new node for the binding
        PrototypeBindingsModelNode newChild = new PrototypeBindingsModelNode(parent, b);
        // Ignore null bindings
        if (b == null) {
        } else if (b instanceof ComponentPrototypeBinding) {
            final List<ComponentPrototypeActual> actuals = ((ComponentPrototypeBinding) b).getActuals();
            // If the actual specified multiple values, flag the model as having an unsupported value
            if (actuals.size() == 1) {
                final ComponentPrototypeActual actual = actuals.get(0);
                if (actual != null) {
                    setNodeDataClassifier(newChild, actual.getSubcomponentType());
                    loadBindingData(newChild, actual.getBindings());
                }
            } else {
                unsupportedValue = true;
                return;
            }
        } else if (b instanceof FeatureGroupPrototypeBinding) {
            final FeatureGroupPrototypeActual actual = ((FeatureGroupPrototypeBinding) b).getActual();
            if (actual != null) {
                setNodeDataClassifier(newChild, actual.getFeatureType());
                loadBindingData(newChild, actual.getBindings());
            }
        } else if (b instanceof FeaturePrototypeBinding) {
            final FeaturePrototypeActual actual = ((FeaturePrototypeBinding) b).getActual();
            // Populate data based on the type of actual
            if (actual == null) {
            } else if (actual instanceof AccessSpecification) {
                final AccessSpecification as = (AccessSpecification) actual;
                data(newChild).direction = as.getKind();
                data(newChild).type = new AccessSpecificationBindingType(as.getCategory());
                setNodeDataClassifier(newChild, as.getClassifier());
            } else if (actual instanceof FeaturePrototypeReference) {
                final FeaturePrototypeReference fpr = (FeaturePrototypeReference) actual;
                data(newChild).direction = fpr.getDirection();
                data(newChild).type = new FeatureReferenceBindingType();
                setNodeDataClassifier(newChild, fpr.getPrototype());
            } else if (actual instanceof PortSpecification) {
                final PortSpecification ps = (PortSpecification) actual;
                data(newChild).direction = ps.getDirection();
                data(newChild).type = new PortSpecificationBindingType(ps.getCategory());
                setNodeDataClassifier(newChild, ps.getClassifier());
            } else {
                throw new RuntimeException("Unhandled feature prototype actual type: " + actual);
            }
        } else {
            throw new RuntimeException("Unhandled prototype binding type: " + b);
        }
    }
}
Also used : FeatureGroupPrototypeBinding(org.osate.aadl2.FeatureGroupPrototypeBinding) FeatureGroupPrototypeActual(org.osate.aadl2.FeatureGroupPrototypeActual) ComponentPrototypeBinding(org.osate.aadl2.ComponentPrototypeBinding) FeaturePrototypeBinding(org.osate.aadl2.FeaturePrototypeBinding) PortSpecification(org.osate.aadl2.PortSpecification) FeaturePrototypeActual(org.osate.aadl2.FeaturePrototypeActual) ComponentPrototypeActual(org.osate.aadl2.ComponentPrototypeActual) AccessSpecification(org.osate.aadl2.AccessSpecification) List(java.util.List) ArrayList(java.util.ArrayList) FeaturePrototypeReference(org.osate.aadl2.FeaturePrototypeReference) ComponentPrototypeBinding(org.osate.aadl2.ComponentPrototypeBinding) PrototypeBinding(org.osate.aadl2.PrototypeBinding) FeaturePrototypeBinding(org.osate.aadl2.FeaturePrototypeBinding) FeatureGroupPrototypeBinding(org.osate.aadl2.FeatureGroupPrototypeBinding)

Aggregations

FeaturePrototypeActual (org.osate.aadl2.FeaturePrototypeActual)8 FeaturePrototypeBinding (org.osate.aadl2.FeaturePrototypeBinding)5 AccessSpecification (org.osate.aadl2.AccessSpecification)4 FeatureGroupPrototypeActual (org.osate.aadl2.FeatureGroupPrototypeActual)4 FeaturePrototypeReference (org.osate.aadl2.FeaturePrototypeReference)4 PortSpecification (org.osate.aadl2.PortSpecification)4 ComponentPrototypeBinding (org.osate.aadl2.ComponentPrototypeBinding)3 FeatureGroupPrototypeBinding (org.osate.aadl2.FeatureGroupPrototypeBinding)3 ArrayList (java.util.ArrayList)2 List (java.util.List)2 AadlString (org.osate.aadl2.AadlString)2 ComponentPrototypeActual (org.osate.aadl2.ComponentPrototypeActual)2 PrototypeBinding (org.osate.aadl2.PrototypeBinding)2 Strings (com.google.common.base.Strings)1 Iterator (java.util.Iterator)1 Objects (java.util.Objects)1 Collectors (java.util.stream.Collectors)1 Stream (java.util.stream.Stream)1 EClass (org.eclipse.emf.ecore.EClass)1 EObject (org.eclipse.emf.ecore.EObject)1