private void setReference( DelayedReference reference, Object singleForeachResult, IModelAdapter modelAdapter, ModelElementProxy foreachTargetElement, IModelInjector injector, int position) throws ModelElementCreationException, ModelAdapterException { // add the parsed part to the object first try to resolve if there is a model element that // already // exists and can be reused reference.setRealValue(injector.createOrResolve(foreachTargetElement, null, null)); // by default use partition of reference.getModelElement if (reference.getModelElement() instanceof EObject && reference.getRealValue() instanceof EObject) { ((EObject) reference.getModelElement()) .eResource() .getContents() .add((EObject) reference.getRealValue()); } modelAdapter.set( reference.getModelElement(), reference.getPropertyName(), reference.getRealValue(), position); }
private ForEachExecution produceNewForEachContext( DelayedReference reference, ForeachProductionResult producedResult) { ForEachExecution newContext = TextblocksFactory.eINSTANCE.createForEachExecution(); newContext.setForeachPedicatePropertyInit( (ForeachPredicatePropertyInit) reference.getQueryElement()); newContext.setSourceModelElement((EObject) reference.getModelElement()); newContext.setContextElement( (EObject) producedResult.getForeachExpressionResultForWhichProduced()); newContext.setTemplateUsedForProduction(producedResult.getTemplateUsedForProduction()); newContext.setResultModelElement((EObject) reference.getRealValue()); return newContext; }