private void resolveReferences(CDXEdmProvider edm) throws URISyntaxException, ODataException { ODataClient client = ODataClientFactory.getClient(); for(EdmxReference edmxRef : edm.getAllEDMXReference()){ String vocabUrl = edmxRef.getUri().toString(); if(!vocabUrl.contains("../") && !vocabs.contains(edmxRef.getIncludes().get(0).getNamespace()) && vocabUrl.contains("http")){ vocabs.add(edmxRef.getIncludes().get(0).getNamespace()); logger.debug("Loading URL:" + vocabs); URI uri = new URI(vocabUrl); ODataRawRequest request = client.getRetrieveRequestFactory().getRawRequest(uri); ODataRawResponse response = request.execute(); CDXEdmProvider refEdm = new CDXEdmProvider(response.getRawResponse()); String serviceName = refEdm.getSchemas().get(0).getNamespace(); providers.put(serviceName, new DefaultRuntimeProvider(refEdm, DPC, connectionProvider, createExtensionRegistry(refEdm.getSchemas().get(0).getNamespace()) )); ServiceRepository.getInstance().registerMetadataInfo(serviceName,new MetadataInfo(serviceName, vocabUrl, refEdm)); resolveReferences(refEdm); for(EdmxReferenceInclude include : edmxRef.getIncludes()){ ServiceRepository.getInstance().registerSchemaAlias(include.getAlias(), include.getNamespace()); } } } }