package org.eclipse.recommenders.examples.calls; import static org.eclipse.recommenders.utils.Recommendations.*; import java.util.List; import org.eclipse.recommenders.calls.ICallModel; import org.eclipse.recommenders.calls.ICallModel.DefinitionKind; import org.eclipse.recommenders.utils.Recommendation; import org.eclipse.recommenders.utils.names.IMethodName; import com.google.common.collect.Lists; public class ExampleApiUsages { List<Recommendation<IMethodName>> recommendCalls(ICallModel m, IMethodName overridesContext, DefinitionKind def, IMethodName definedBy) { m.setObservedDefinitionKind(def); m.setObservedDefiningMethod(definedBy); m.setObservedOverrideContext(overridesContext); List<Recommendation<IMethodName>> recs = m.recommendCalls(); // top 5 elements with min probablity of 0.1d: List<Recommendation<IMethodName>> top5 = top(filterRelevance(recs, 0.1d), 5); return top5; } List<Recommendation<IMethodName>> recommendDefs(ICallModel m, IMethodName overridesContext) { m.setObservedOverrideContext(overridesContext); List<Recommendation<IMethodName>> recs = m.recommendDefinitions(); // top 5 elements with min probablity of 0.1d: List<Recommendation<IMethodName>> top5 = top(filterRelevance(recs, 0.1d), 5); return top5; } // Given the type of a variable and how it was defined, tell me which "sets of methods" I'm likely to invoke on this // object now: List<List<Recommendation<IMethodName>>> recommendPatterns(ICallModel m, IMethodName overridesContext, DefinitionKind def, IMethodName definedBy) { m.setObservedOverrideContext(overridesContext); m.setObservedDefiningMethod(definedBy); m.setObservedDefinitionKind(def); // get the top 5 most likely call patterns List<Recommendation<String>> patterns = top(m.recommendPatterns(), 5); List<List<Recommendation<IMethodName>>> res = Lists.newLinkedList(); // for each pattern, collect which methods it would recommend and insert it into the result set: for (Recommendation<String> pattern : patterns) { m.setObservedPattern(pattern.getProposal()); List<Recommendation<IMethodName>> callgroup = top(m.recommendCalls(), 10); res.add(callgroup); } return res; } void javacGenericsCheck(ICallModel m) { top(filterRelevance(m.recommendCalls(), 0.1d), 5); // OR shorthand version: top(m.recommendCalls(), 5, 0.1d); // filter top 5 methods with >=0.1 relevance and NOT being void: top(filterVoid(m.recommendCalls()), 5, 0.1d); // check for compiler warnings: top(filterRelevance(m.recommendPatterns(), 0.2d), 5); top(m.recommendPatterns(), 5, 0.2d); top(filterRelevance(m.recommendDefinitions(), 0.3d), 5); top(m.recommendDefinitions(), 5, 0.2d); } }