/** * Copyright (c) 2012 BMW Car IT and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.jnario.spec.tests.unit.naming; import com.google.common.collect.Iterables; import com.google.inject.Inject; import java.util.Map; import org.eclipse.emf.common.util.EList; import org.eclipse.xtext.common.types.JvmGenericType; import org.eclipse.xtext.common.types.JvmMember; import org.eclipse.xtext.common.types.JvmOperation; import org.eclipse.xtext.common.types.JvmType; import org.eclipse.xtext.common.types.access.ClasspathTypeProviderFactory; import org.eclipse.xtext.common.types.access.impl.ClasspathTypeProvider; import org.eclipse.xtext.naming.QualifiedName; import org.eclipse.xtext.xbase.lib.Extension; import org.eclipse.xtext.xbase.lib.Functions.Function1; import org.eclipse.xtext.xbase.lib.IterableExtensions; import org.jnario.jnario.test.util.ModelStore; import org.jnario.jnario.test.util.SpecTestCreator; import org.jnario.runner.Contains; import org.jnario.runner.CreateWith; import org.jnario.runner.ExampleGroupRunner; import org.jnario.runner.Named; import org.jnario.spec.naming.OperationNameProvider; import org.jnario.spec.tests.unit.naming.OperationNameProviderShouldNameMethodsSimilarToJavaDocLinksSpec; import org.jnario.spec.tests.unit.naming.OperationNamesExample; import org.junit.Before; import org.junit.runner.RunWith; @Contains(OperationNameProviderShouldNameMethodsSimilarToJavaDocLinksSpec.class) @CreateWith(SpecTestCreator.class) @Named("OperationNameProvider") @RunWith(ExampleGroupRunner.class) @SuppressWarnings("all") public class OperationNameProviderSpec { @Inject OperationNameProvider subject; @Inject ClasspathTypeProviderFactory typeProviderFactory = new ClasspathTypeProviderFactory(this.getClass().getClassLoader()); Map<String, JvmOperation> operations; @Inject @Extension @org.jnario.runner.Extension public ModelStore _modelStore; @Before public void setup() { final ClasspathTypeProvider typeProvider = this.typeProviderFactory.createTypeProvider(); String _name = OperationNamesExample.class.getName(); JvmType _findTypeByName = typeProvider.findTypeByName(_name); final JvmGenericType type = ((JvmGenericType) _findTypeByName); EList<JvmMember> _members = type.getMembers(); final Iterable<JvmOperation> jvmOperations = Iterables.<JvmOperation>filter(_members, JvmOperation.class); final Function1<JvmOperation, String> _function = new Function1<JvmOperation, String>() { public String apply(final JvmOperation it) { return it.getSimpleName(); } }; Map<String, JvmOperation> _map = IterableExtensions.<String, JvmOperation>toMap(jvmOperations, _function); this.operations = _map; } public String nameOf(final String operationName) { String _xblockexpression = null; { final JvmOperation op = this.operations.get(operationName); QualifiedName _apply = this.subject.apply(op); _xblockexpression = _apply.toString(); } return _xblockexpression; } }