Search in sources :

Example 1 with Member

use of com.avaloq.tools.ddk.check.check.Member in project dsl-devkit by dsldevkit.

the class CheckCompiler method getMember.

/**
 * Gets the Member this feature call references, if any.
 *
 * @param element
 *          to check
 * @return The source model element (Member) for this feature call target, or null.
 */
private Member getMember(final JvmIdentifiableElement element) {
    Iterator<EObject> modelElements = associations.getSourceElements(element).iterator();
    Member member = null;
    while (member == null && modelElements.hasNext()) {
        EObject obj = modelElements.next();
        if (obj instanceof Member) {
            member = (Member) obj;
        }
    }
    return member;
}
Also used : EObject(org.eclipse.emf.ecore.EObject) Member(com.avaloq.tools.ddk.check.check.Member)

Example 2 with Member

use of com.avaloq.tools.ddk.check.check.Member in project dsl-devkit by dsldevkit.

the class CheckCompiler method _toJavaExpression.

@Override
protected // CHECKSTYLE:OFF
void _toJavaExpression(final XAbstractFeatureCall expr, final ITreeAppendable b) {
    // CHECKSTYLE:ON
    FormalParameter parameter = getFormalParameter(expr);
    if (parameter != null) {
        // No Java entities are generated for this. Replace by a call to the getter function.
        b.append(generatorNaming.catalogInstanceName(parameter)).append(".").append(generatorNaming.formalParameterGetterName(parameter));
        b.append("(").append(getContextImplicitVariableName(expr)).append(")");
    } else {
        Member member = getMember(expr);
        if (member != null) {
            // Something isn't quite right in the Jvm model yet... or in the xbase compiler. Don't know what it is, but even if in an inner
            // class, it generates "this.foo" instead of either just "foo" or "OuterClass.this.foo". Force it to produce the latter.
            CheckCatalog catalog = EcoreUtil2.getContainerOfType(member, CheckCatalog.class);
            String catalogName = generatorNaming.validatorClassName(catalog);
            b.append(catalogName + ".this.").append(member.getName());
            return;
        }
        super._toJavaExpression(expr, b);
    }
}
Also used : FormalParameter(com.avaloq.tools.ddk.check.check.FormalParameter) CheckCatalog(com.avaloq.tools.ddk.check.check.CheckCatalog) Member(com.avaloq.tools.ddk.check.check.Member)

Aggregations

Member (com.avaloq.tools.ddk.check.check.Member)2 CheckCatalog (com.avaloq.tools.ddk.check.check.CheckCatalog)1 FormalParameter (com.avaloq.tools.ddk.check.check.FormalParameter)1 EObject (org.eclipse.emf.ecore.EObject)1