def filter(self, filter_input): potentials = filter_input.potentials scode_reference = filter_input.scode_reference context_id = ctx.get_context_id(scode_reference, self.context_level) result = FilterResult(self, False, potentials) if context_id == -1: # This is mainly a performance optimization return result if self.returnt and not self.hierarchy: context_types = ctx.get_context_return_types(context_id, scode_reference.source, self.func, get_codebase(potentials), self.context_level) elif self.returnt and self.hierarchy: context_types = ctx.get_context_return_types_hierarchy(context_id, scode_reference.source, self.func, get_codebase(potentials), self.context_level) elif self.hierarchy: context_types = ctx.get_context_types_hierarchy(context_id, scode_reference.source, self.func, get_codebase(potentials), self.context_level) else: context_types = ctx.get_context_types(context_id, scode_reference.source, self.func, get_codebase(potentials), self.context_level) if len(context_types) > 0: new_potentials = self._get_potentials(potentials, context_types) if len(new_potentials) > 0: result = FilterResult(self, True, new_potentials) return result
def filter(self, filter_input): potentials = filter_input.potentials scode_reference = filter_input.scode_reference context_id = ctx.get_context_id(scode_reference, self.context_level) result = FilterResult(self, False, potentials) if context_id == -1: # This is mainly a performance optimization return result if self.returnt and not self.hierarchy: context_types = ctx.get_context_return_types( context_id, scode_reference.source, self.func, get_codebase(potentials), self.context_level) elif self.returnt and self.hierarchy: context_types = ctx.get_context_return_types_hierarchy( context_id, scode_reference.source, self.func, get_codebase(potentials), self.context_level) elif self.hierarchy: context_types = ctx.get_context_types_hierarchy( context_id, scode_reference.source, self.func, get_codebase(potentials), self.context_level) else: context_types = ctx.get_context_types(context_id, scode_reference.source, self.func, get_codebase(potentials), self.context_level) if len(context_types) > 0: new_potentials = self._get_potentials(potentials, context_types) if len(new_potentials) > 0: result = FilterResult(self, True, new_potentials) return result
def test_context(self): self.create_codebase() self.create_filters() self.create_documentation() self.create_channel() self.create_documentation2() self.parse_snippets() link_code(self.pname, 'core', self.release, 'javaclass', 'd', self.release) link_code(self.pname, 'core', self.release, 'javaclass', 's', None) link_code(self.pname, 'core', self.release, 'javapostclass', '', None) code_ref20 = self.code_refs[19] code_ref20 = SingleCodeReference.objects.get(pk=code_ref20.pk) print('DEBUG CONTEXT') print(code_ref20.content) # Local Context context_types = ctx.get_context_types( code_ref20.local_object_id, code_ref20.source, ctx.local_filter, self.codebase, ctx.LOCAL) fqn = [context_type.fqn for context_type in context_types] print(fqn) self.assertTrue('p1.ChildClazz' in fqn) self.assertEqual(1, len(fqn)) context_types = ctx.get_context_types_hierarchy( code_ref20.local_object_id, code_ref20.source, ctx.local_filter, self.codebase, ctx.LOCAL) fqn = [context_type.fqn for context_type in context_types] print(fqn) self.assertTrue('p1.InterfaceClazz' in fqn) self.assertEqual(3, len(fqn)) # Mid Context context_types = ctx.get_context_types( code_ref20.mid_object_id, code_ref20.source, ctx.mid_filter, self.codebase, ctx.MIDDLE) fqn = [context_type.fqn for context_type in context_types] print(fqn) self.assertEqual(3, len(fqn)) self.assertTrue('p1.ChildClazz' in fqn) self.assertTrue('p1.Annotation1' in fqn) self.assertTrue('p1.Annotation2' in fqn) context_types = ctx.get_context_types_hierarchy( code_ref20.mid_object_id, code_ref20.source, ctx.mid_filter, self.codebase, ctx.MIDDLE) fqn = [context_type.fqn for context_type in context_types] print(fqn) self.assertEqual(5, len(fqn)) self.assertTrue('p1.InterfaceClazz' in fqn) # Global Context context_types = ctx.get_context_types( code_ref20.global_object_id, code_ref20.source, ctx.global_filter, self.codebase, ctx.GLOBAL) fqn = [context_type.fqn for context_type in context_types] print(fqn) self.assertEqual(3, len(fqn)) self.assertTrue('p1.Annotation2' in fqn) context_types = ctx.get_context_types_hierarchy( code_ref20.global_object_id, code_ref20.source, ctx.global_filter, self.codebase, ctx.GLOBAL) fqn = [context_type.fqn for context_type in context_types] print(fqn) self.assertEqual(5, len(fqn)) self.assertTrue('p1.InterfaceClazz' in fqn) # Snippet snippet1 = self.code_snippets[0] context_types = ctx.get_context_types( snippet1.pk, snippet1.source, ctx.snippet_filter, self.codebase, ctx.SNIPPET) fqn = [context_type.fqn for context_type in context_types] print(fqn) self.assertEqual(2, len(fqn)) self.assertTrue('p3.RecodocClient' in fqn) context_types = ctx.get_context_types_hierarchy( snippet1.pk, snippet1.source, ctx.snippet_filter, self.codebase, ctx.SNIPPET) fqn = [context_type.fqn for context_type in context_types] print(fqn) self.assertEqual(5, len(fqn)) self.assertTrue('p3.IGeneralClient' in fqn) # Return Type link_code(self.pname, 'core', self.release, 'javamethod', 'd', self.release) link_code(self.pname, 'core', self.release, 'javamethod', 's', None) code_ref14 = self.code_refs[13] code_ref14 = SingleCodeReference.objects.get(pk=code_ref14.pk) context_types = ctx.get_context_return_types( code_ref14.local_object_id, code_ref14.source, ctx.local_filter, self.codebase, ctx.LOCAL) fqn = [context_type.fqn for context_type in context_types] print(fqn) self.assertEqual(1, len(fqn)) self.assertTrue('p3.RecodocClient2' in fqn) context_types = ctx.get_context_return_types_hierarchy( code_ref14.local_object_id, code_ref14.source, ctx.local_filter, self.codebase, ctx.LOCAL) fqn = [context_type.fqn for context_type in context_types] print(fqn) self.assertEqual(2, len(fqn)) self.assertTrue('p3.RecodocClient2Parent' in fqn)