class TestAPIGraphAccessor(TestCase):
    graphClient = None

    def setUp(self):
        self.graphClient = APIGraphAccessor(GraphClient())

    def test_get_parent_api_node_for_api_node(self):
        node = self.graphClient.get_parent_api_node_for_api_node(93013)
        self.assertEqual(type(node), Node)
        self.assertEqual(self.graphClient.get_id_for_node(node), 92919)
    def build_aliases_for_api(self):
        # fuller = APIAliasesTableFuller()
        # fuller.start_add_all_api_aliases()
        useless_alias_type_list = [
            APIAlias.ALIAS_TYPE_QUALIFIER_NAME,
            APIAlias.ALIAS_TYPE_SIMPLE_NAME_WITH_TYPE,
            APIAlias.ALIAS_TYPE_SIMPLE_CLASS_NAME_METHOD_WITH_QUALIFIER_PARAMETER_TYPE,
            APIAlias.ALIAS_TYPE_SIMPLE_NAME_METHOD_WITH_SIMPLE_PARAMETER_TYPE,
            APIAlias.ALIAS_TYPE_SIMPLE_METHOD_WITH_QUALIFIER_PARAMETER_TYPE,
            APIAlias.ALIAS_TYPE_SIMPLE_CLASS_NAME_METHOD_WITH_SIMPLE_PARAMETER_TYPE
        ]

        EntityForQA.delete_names_by_source(session=self.session, source="api")
        accessor = APIGraphAccessor(GraphClient(server_number=4))
        pair_list = accessor.get_all_api_id_and_kg_id_pair()
        for pair in pair_list:
            name_set = set([])
            api_entity = APIEntity.find_by_id(session=self.session, api_entity_id=pair["api_id"])
            all_aliases = api_entity.all_aliases
            for alias_entity in all_aliases:
                if alias_entity.type in useless_alias_type_list:
                    continue
                if api_entity.api_type == APIEntity.API_TYPE_METHOD or api_entity.api_type == APIEntity.API_TYPE_CONSTRUCTOR:
                    if alias_entity.type == APIAlias.ALIAS_TYPE_QUALIFIER_NAME:
                        method_alias_need_to_add = alias_entity.alias.split("(")[0]
                        package_split_list = method_alias_need_to_add.split(".")
                        if len(package_split_list)>=2:
                            alias = package_split_list[-2] + "." + package_split_list[-1]
                            print("add method name=", alias)
                            name_set.add(alias)
                            name_set.add(package_split_list[-1])
                        else:
                            name_set.add(package_split_list[-1])
                        continue
                if api_entity.api_type == APIEntity.API_TYPE_PARAMETER or api_entity.api_type == APIEntity.API_TYPE_RETURN_VALUE:
                    continue
                name_set.add(alias_entity.alias)
            for name in name_set:
                entity = EntityForQA(kg_id=pair["kg_id"], entity_id=pair["api_id"], source="api",
                                     attr='api_id', attr_value=name)
                self.session.add(entity)
        self.session.commit()
Example #3
0
from neo4j_importer.import_api_relation import APIRelationImporter
from skgraph.graph.accessor.graph_accessor import GraphClient
from skgraph.graph.accessor.graph_client_for_api import APIGraphAccessor

if __name__ == "__main__":
    # import relationships automatically
    api_relation_importer = APIRelationImporter()
    graphClient = APIGraphAccessor(GraphClient(server_number=4))
    api_relation_importer.start_import(graphClient)
 def setUp(self):
     self.graphClient = APIGraphAccessor(GraphClient())
from script.api_linking.api_linker_operation import APILinkerOperation
from db.api_linker import APILinker
from shared.logger_util import Logger
from skgraph.graph.accessor.graph_accessor import GraphClient
from skgraph.graph.accessor.graph_client_for_api import APIGraphAccessor
from skgraph.graph.graph_operator import GraphOperator

client = GraphClient(server_number=1)
graphOperator = GraphOperator(client)
api_linker = APILinker()
logger = Logger("API_Name_Linking").get_log()
accessor = APIGraphAccessor(GraphClient())
operation = APILinkerOperation(logger, accessor, api_linker)
graphOperator.operate_on_all_nodes(500, ['api'], operation)
Example #6
0
sys.setdefaultencoding("utf-8")

app = Flask(__name__)
CORS(app)
db_handler = SQLAlchemyHandler()
db_handler.setLevel(logging.WARN)  # Only serious messages
app.logger.addHandler(db_handler)

logger = Logger("neo4jServer").get_log()
logger.info("create logger")

client = GraphClient(server_number=4)
graphClient = DefaultGraphAccessor(client)
logger.info("create graphClient")

apiGraphClient = APIGraphAccessor(client)
semanticSearchAccessor = SemanticSearchAccessor(client)

# api_entity_linker = APIEntityLinking()
# logger.info("create api_entity_linker object")

questionAnswerSystem = QuestionAnswerSystem()
logger.info("create questionAnswerSystem")

dbSOPostSearcher = SOPostSearcher(EngineFactory.create_so_session(),
                                  logger=app.logger)
logger.info("create SO POST Searcher")

api_entity_session = EngineFactory.create_session(autocommit=True)
apiSearcher = APISearcher(session=api_entity_session, logger=app.logger)
logger.info("create API Searcher")