@Override public void apply(final JvmOperation it) { it.setVisibility(JvmVisibility.PROTECTED); EmfParsleyDslJvmModelInferrer.this._jvmTypesBuilder.setBody(it, spec.getExpression()); } };
@Override public void apply(final JvmOperation it) { it.setVisibility(JvmVisibility.PUBLIC); EList<JvmTypeReference> _exceptions = it.getExceptions(); PatternGroupClassInferrer.this._eMFJvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, incQueryException); StringConcatenationClient _client = new StringConcatenationClient() { @Override protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { _builder.append("return "); _builder.append(classRef, ""); _builder.append(".instance();"); } }; PatternGroupClassInferrer.this._eMFJvmTypesBuilder.setBody(it, _client); } };
@Override public void apply(final JvmOperation it) { it.setVisibility(JvmVisibility.PUBLIC); EList<JvmAnnotationReference> _annotations = it.getAnnotations(); JvmAnnotationReference _annotationRef = PatternQuerySpecificationClassInferrer.this.annBuilder.annotationRef(Override.class); PatternQuerySpecificationClassInferrer.this._eMFJvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef); StringConcatenationClient _client = new StringConcatenationClient() { @Override protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { _builder.append("return \""); String _fullyQualifiedName = CorePatternLanguageHelper.getFullyQualifiedName(pattern); _builder.append(_fullyQualifiedName, ""); _builder.append("\";"); _builder.newLineIfNotEmpty(); } }; PatternQuerySpecificationClassInferrer.this._eMFJvmTypesBuilder.setBody(it, _client); } };
@Override protected JvmOperation deriveGenericDispatchOperationSignature( Iterable<JvmOperation> localOperations, JvmGenericType target) { final JvmOperation dispatcher = super.deriveGenericDispatchOperationSignature(localOperations, target); // // Fixing the behavior for determining the visibility of the dispatcher since // it does not fit the SARL requirements. // JvmVisibility higherVisibility = JvmVisibility.PRIVATE; for (final JvmOperation jvmOperation : localOperations) { final Iterable<XtendFunction> xtendFunctions = Iterables.filter( this.sarlAssociations.getSourceElements(jvmOperation), XtendFunction.class); for (final XtendFunction func : xtendFunctions) { JvmVisibility visibility = func.getVisibility(); if (visibility == null) { visibility = this.defaultVisibilityProvider.getDefaultJvmVisibility(func); } if (this.visibilityComparator.compare(visibility, higherVisibility) > 0) { higherVisibility = visibility; } } } dispatcher.setVisibility(higherVisibility); return dispatcher; }
@Override public MutableAnnotationTypeElementDeclaration addAnnotationTypeElement(final String name, final Procedure1<MutableAnnotationTypeElementDeclaration> initializer) { this.checkMutable(); ConditionUtils.checkJavaIdentifier(name, "name"); Preconditions.checkArgument((initializer != null), "initializer cannot be null"); final JvmOperation newAnnotationElement = TypesFactory.eINSTANCE.createJvmOperation(); newAnnotationElement.setSimpleName(name); newAnnotationElement.setVisibility(JvmVisibility.PUBLIC); this.getDelegate().getMembers().add(newAnnotationElement); MemberDeclaration _memberDeclaration = this.getCompilationUnit().toMemberDeclaration(newAnnotationElement); final MutableAnnotationTypeElementDeclaration mutableAnnotationTypeElementDeclaration = ((MutableAnnotationTypeElementDeclaration) _memberDeclaration); initializer.apply(mutableAnnotationTypeElementDeclaration); return mutableAnnotationTypeElementDeclaration; }
@Override public void apply(final JvmOperation it) { it.setVisibility(JvmVisibility.PROTECTED); EList<JvmFormalParameter> _parameters = it.getParameters(); JvmFormalParameter _parameter = EmfParsleyDslJvmModelInferrer.this._jvmTypesBuilder.toParameter(spec, "it", EmfParsleyDslJvmModelInferrer.this._typeReferenceBuilder.typeRef(Control.class)); EmfParsleyDslJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); EmfParsleyDslJvmModelInferrer.this._jvmTypesBuilder.setBody(it, spec.getTarget()); } };
@Override public void apply(final JvmOperation it) { it.setVisibility(JvmVisibility.PUBLIC); EList<JvmAnnotationReference> _annotations = it.getAnnotations(); JvmAnnotationReference _annotationRef = PatternQuerySpecificationClassInferrer.this.annBuilder.annotationRef(Override.class);
@Override public void apply(final JvmOperation it) { it.setVisibility(JvmVisibility.PUBLIC); EList<JvmAnnotationReference> _annotations = it.getAnnotations(); JvmAnnotationReference _annotationRef = PatternQuerySpecificationClassInferrer.this.annBuilder.annotationRef(Override.class);
public JvmOperation inferInstanceMethod(final PatternModel model, final JvmType groupClass) { final Procedure1<JvmOperation> _function = (JvmOperation it) -> { this._eMFJvmTypesBuilder.setDocumentation(it, this._javadocInferrer.javadocGroupClassInstanceMethod(model).toString()); it.setVisibility(JvmVisibility.PUBLIC); it.setStatic(true); StringConcatenationClient _client = new StringConcatenationClient() { @Override protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { _builder.append("if (INSTANCE == null) {"); _builder.newLine(); _builder.append(" "); _builder.append("INSTANCE = new "); _builder.append(groupClass, " "); _builder.append("();"); _builder.newLineIfNotEmpty(); _builder.append("}"); _builder.newLine(); _builder.append("return INSTANCE;"); _builder.newLine(); } }; this._eMFJvmTypesBuilder.setBody(it, _client); }; return this._eMFJvmTypesBuilder.toMethod(model, "instance", this.builder.typeRef(groupClass), _function); }
@Override public void apply(final JvmOperation it) { CharSequence _javadocGroupClassInstanceMethod = PatternGroupClassInferrer.this._javadocInferrer.javadocGroupClassInstanceMethod(model); String _string = _javadocGroupClassInstanceMethod.toString(); PatternGroupClassInferrer.this._eMFJvmTypesBuilder.setDocumentation(it, _string); it.setVisibility(JvmVisibility.PUBLIC); it.setStatic(true); EList<JvmTypeReference> _exceptions = it.getExceptions(); PatternGroupClassInferrer.this._eMFJvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, incQueryException); StringConcatenationClient _client = new StringConcatenationClient() { @Override protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { _builder.append("if (INSTANCE == null) {"); _builder.newLine(); _builder.append("\t"); _builder.append("INSTANCE = new "); _builder.append(groupClass, "\t"); _builder.append("();"); _builder.newLineIfNotEmpty(); _builder.append("}"); _builder.newLine(); _builder.append("return INSTANCE;"); _builder.newLine(); } }; PatternGroupClassInferrer.this._eMFJvmTypesBuilder.setBody(it, _client); } };
@Override public void apply(final JvmOperation it) { EList<JvmAnnotationReference> _annotations = it.getAnnotations(); JvmAnnotationReference _annotationRef = PatternMatcherClassInferrer.this.annBuilder.annotationRef(Override.class); PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef); it.setVisibility(JvmVisibility.PROTECTED); EList<JvmFormalParameter> _parameters = it.getParameters(); JvmTypeReference _typeRef = PatternMatcherClassInferrer.this.builder.typeRef(Tuple.class); JvmFormalParameter _parameter = PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.toParameter(pattern, "t", _typeRef); PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); } };
@Override public void apply(final JvmOperation it) { it.setVisibility(JvmVisibility.PUBLIC); it.setStatic(true); CharSequence _javadocQuerySpecificationMethod = PatternMatcherClassInferrer.this._javadocInferrer.javadocQuerySpecificationMethod(pattern); String _string = _javadocQuerySpecificationMethod.toString(); PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.setDocumentation(it, _string); EList<JvmTypeReference> _exceptions = it.getExceptions(); JvmTypeReference _typeRef = PatternMatcherClassInferrer.this.builder.typeRef(IncQueryException.class); PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef); StringConcatenationClient _client = new StringConcatenationClient() { @Override protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { _builder.append("return "); JvmTypeReference _typeRef = PatternMatcherClassInferrer.this.builder.typeRef(specificationClass); _builder.append(_typeRef, ""); _builder.append(".instance();"); _builder.newLineIfNotEmpty(); } }; PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.setBody(it, _client); } };
@Override public void apply(final JvmOperation it) { EList<JvmAnnotationReference> _annotations = it.getAnnotations(); JvmAnnotationReference _annotationRef = PatternMatcherClassInferrer.this.annBuilder.annotationRef(Override.class); PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef); it.setVisibility(JvmVisibility.PROTECTED); EList<JvmFormalParameter> _parameters = it.getParameters(); JvmTypeReference _typeRef = PatternMatcherClassInferrer.this.builder.typeRef(Object.class); JvmTypeReference _addArrayTypeDimension = PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.addArrayTypeDimension(_typeRef); JvmFormalParameter _parameter = PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.toParameter(pattern, "match", _addArrayTypeDimension); PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); } };
@Override public void apply(final JvmOperation it) { EList<JvmAnnotationReference> _annotations = it.getAnnotations(); JvmAnnotationReference _annotationRef = PatternMatcherClassInferrer.this.annBuilder.annotationRef(Override.class); PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef); it.setVisibility(JvmVisibility.PROTECTED); EList<JvmFormalParameter> _parameters = it.getParameters(); JvmTypeReference _typeRef = PatternMatcherClassInferrer.this.builder.typeRef(Object.class); JvmTypeReference _addArrayTypeDimension = PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.addArrayTypeDimension(_typeRef); JvmFormalParameter _parameter = PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.toParameter(pattern, "match", _addArrayTypeDimension); PatternMatcherClassInferrer.this._eMFJvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); } };
/** * Creates a public method with the given name and the given return type and associates it with the given * sourceElement. * * @param sourceElement * the sourceElement the method should be associated with. * @param name * the simple name of the method to be created. * @param returnType * the return type of the created method. * @param initializer * the initializer to apply on the created method. If <code>null</code>, the method won't be initialized. * * @return a result representing a Java method with the given name, <code>null</code> if sourceElement or name are <code>null</code>. */ /* @Nullable */ public JvmOperation toMethod(/* @Nullable */ EObject sourceElement, /* @Nullable */ String name, /* @Nullable */ JvmTypeReference returnType, /* @Nullable */ Procedure1<? super JvmOperation> initializer) { if(sourceElement == null || name == null) return null; JvmOperation result = typesFactory.createJvmOperation(); result.setSimpleName(name); result.setVisibility(JvmVisibility.PUBLIC); result.setReturnType(cloneWithProxies(returnType)); associate(sourceElement, result); return initializeSafely(result, initializer); }
public JvmOperation inferSpecificationGetter(final Pattern model, final JvmType groupClass, final JvmType specificationClass) { JvmOperation _xblockexpression = null; { JvmTypeReference _xifexpression = null; if ((specificationClass == null)) { _xifexpression = this.builder.typeRef(Object.class); } else { _xifexpression = this.builder.typeRef(specificationClass); } final JvmTypeReference classRef = _xifexpression; String _firstUpper = StringExtensions.toFirstUpper(model.getName()); String _plus = ("get" + _firstUpper); final Procedure1<JvmOperation> _function = (JvmOperation it) -> { it.setVisibility(JvmVisibility.PUBLIC); StringConcatenationClient _client = new StringConcatenationClient() { @Override protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { _builder.append("return "); _builder.append(classRef); _builder.append(".instance();"); } }; this._eMFJvmTypesBuilder.setBody(it, _client); }; _xblockexpression = this._eMFJvmTypesBuilder.toMethod(model, _plus, classRef, _function); } return _xblockexpression; }
@Override public void apply(final JvmOperation it) { it.setVisibility(JvmVisibility.PUBLIC); EList<JvmTypeReference> _exceptions = it.getExceptions(); PatternGroupClassInferrer.this._eMFJvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, incQueryException); EList<JvmFormalParameter> _parameters = it.getParameters(); JvmTypeReference _typeRef = PatternGroupClassInferrer.this.builder.typeRef(IncQueryEngine.class); JvmFormalParameter _parameter = PatternGroupClassInferrer.this._eMFJvmTypesBuilder.toParameter(model, "engine", _typeRef); PatternGroupClassInferrer.this._eMFJvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); StringConcatenationClient _client = new StringConcatenationClient() { @Override protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { _builder.append("return "); _builder.append(classRef, ""); _builder.append(".on(engine);"); } }; PatternGroupClassInferrer.this._eMFJvmTypesBuilder.setBody(it, _client); } };
public MutableMethodDeclaration addMethod(final String name, final Procedure1<MutableMethodDeclaration> initializer) { this.checkMutable(); ConditionUtils.checkJavaIdentifier(name, "name"); Preconditions.checkArgument((initializer != null), "initializer cannot be null"); final JvmOperation newMethod = TypesFactory.eINSTANCE.createJvmOperation(); newMethod.setVisibility(JvmVisibility.PUBLIC); newMethod.setSimpleName(name); newMethod.setReturnType(this.getCompilationUnit().toJvmTypeReference(this.getCompilationUnit().getTypeReferenceProvider().getPrimitiveVoid())); this.getDelegate().getMembers().add(newMethod); MemberDeclaration _memberDeclaration = this.getCompilationUnit().toMemberDeclaration(newMethod); final MutableMethodDeclaration mutableMethodDeclaration = ((MutableMethodDeclaration) _memberDeclaration); initializer.apply(mutableMethodDeclaration); return mutableMethodDeclaration; }
@Override public MutableMethodDeclaration addMethod(final String name, final Procedure1<MutableMethodDeclaration> initializer) { this.checkMutable(); ConditionUtils.checkJavaIdentifier(name, "name"); Preconditions.checkArgument((initializer != null), "initializer cannot be null"); final JvmOperation newMethod = TypesFactory.eINSTANCE.createJvmOperation(); newMethod.setVisibility(JvmVisibility.PUBLIC); newMethod.setSimpleName(name); newMethod.setReturnType(this.getCompilationUnit().toJvmTypeReference(this.getCompilationUnit().getTypeReferenceProvider().getPrimitiveVoid())); newMethod.setAbstract(true); this.getDelegate().getMembers().add(newMethod); MemberDeclaration _memberDeclaration = this.getCompilationUnit().toMemberDeclaration(newMethod); final MutableMethodDeclaration mutableMethodDeclaration = ((MutableMethodDeclaration) _memberDeclaration); initializer.apply(mutableMethodDeclaration); return mutableMethodDeclaration; }
public void inferExpressions(final JvmDeclaredType querySpecificationClass, final Pattern pattern) { final Function1<PatternBody, Collection<XExpression>> _function = (PatternBody it) -> { return PatternLanguageHelper.getAllTopLevelXBaseExpressions(it); }; final Consumer<XExpression> _function_1 = (XExpression ex) -> { EList<JvmMember> _members = querySpecificationClass.getMembers(); final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> { it.setVisibility(JvmVisibility.PRIVATE); it.setStatic(true); List<Variable> _variables = this.util.variables(ex); for (final Variable variable : _variables) { { final JvmFormalParameter parameter = this._eMFJvmTypesBuilder.toParameter(variable, variable.getName(), this.util.calculateType(variable)); EList<JvmFormalParameter> _parameters = it.getParameters(); this._eMFJvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, parameter); } } this._eMFJvmTypesBuilder.setBody(it, ex); }; JvmOperation _method = this._eMFJvmTypesBuilder.toMethod(ex, this.util.expressionMethodName(ex), this._eMFJvmTypesBuilder.inferredType(ex), _function_2); this._eMFJvmTypesBuilder.<JvmOperation>operator_add(_members, _method); }; Iterables.<XExpression>concat(ListExtensions.<PatternBody, Collection<XExpression>>map(pattern.getBodies(), _function)).forEach(_function_1); }