All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jnario.feature.jvmmodel.StepContextProvider Maven / Gradle / Ivy

The newest version!
package org.jnario.feature.jvmmodel;

import com.google.common.collect.Iterables;
import com.google.inject.Inject;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.xtend.core.xtend.XtendField;
import org.eclipse.xtend.core.xtend.XtendMember;
import org.eclipse.xtext.common.types.JvmField;
import org.eclipse.xtext.xbase.XExpression;
import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociations;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.eclipse.xtext.xbase.util.XbaseUsageCrossReferencer;
import org.jnario.feature.feature.Step;
import org.jnario.feature.jvmmodel.StepExpressionProvider;
import org.jnario.feature.jvmmodel.VisibleMembersCalculator;

@SuppressWarnings("all")
public class StepContextProvider {
  @Inject
  @Extension
  private StepExpressionProvider _stepExpressionProvider;
  
  @Inject
  @Extension
  private IJvmModelAssociations _iJvmModelAssociations;
  
  @Inject
  @Extension
  private VisibleMembersCalculator _visibleMembersCalculator;
  
  public Set usedFields(final Step step) {
    Set _xblockexpression = null;
    {
      final XExpression expr = this._stepExpressionProvider.expressionOf(step);
      Iterable _allVisibleMembers = this._visibleMembersCalculator.allVisibleMembers(step);
      Iterable _filter = Iterables.filter(_allVisibleMembers, XtendField.class);
      final Function1 _function = new Function1() {
        public Boolean apply(final XtendField it) {
          boolean _xblockexpression = false;
          {
            Set _jvmElements = StepContextProvider.this._iJvmModelAssociations.getJvmElements(it);
            Iterable _filter = Iterables.filter(_jvmElements, JvmField.class);
            Iterator _iterator = _filter.iterator();
            final JvmField field = _iterator.next();
            ArrayList _newArrayList = CollectionLiterals.newArrayList(expr);
            final Collection usages = XbaseUsageCrossReferencer.find(field, _newArrayList);
            boolean _isEmpty = usages.isEmpty();
            _xblockexpression = (!_isEmpty);
          }
          return Boolean.valueOf(_xblockexpression);
        }
      };
      Iterable _filter_1 = IterableExtensions.filter(_filter, _function);
      _xblockexpression = IterableExtensions.toSet(_filter_1);
    }
    return _xblockexpression;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy