Save loaded contexts in internal cache
This commit is contained in:
		
							parent
							
								
									cb60fd11ed
								
							
						
					
					
						commit
						3b335867fe
					
				@ -5,7 +5,10 @@ import java.net.URI;
 | 
			
		||||
import java.net.URISyntaxException;
 | 
			
		||||
import java.net.URL;
 | 
			
		||||
import java.time.Duration;
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
import org.apache.logging.log4j.LogManager;
 | 
			
		||||
import org.apache.logging.log4j.Logger;
 | 
			
		||||
@ -24,6 +27,7 @@ import com.google.common.collect.ImmutableMap;
 | 
			
		||||
import com.google.common.io.Resources;
 | 
			
		||||
 | 
			
		||||
import foundation.identity.jsonld.ConfigurableDocumentLoader;
 | 
			
		||||
import jakarta.json.JsonStructure;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * A com.apicatalog DocumentLoader with a threadsafe static cache.
 | 
			
		||||
@ -31,7 +35,7 @@ import foundation.identity.jsonld.ConfigurableDocumentLoader;
 | 
			
		||||
 * @author mgylling
 | 
			
		||||
 */
 | 
			
		||||
public class CachingDocumentLoader extends ConfigurableDocumentLoader {
 | 
			
		||||
 | 
			
		||||
	private Set<URI> contexts;
 | 
			
		||||
 | 
			
		||||
	public CachingDocumentLoader() {
 | 
			
		||||
		this(null);
 | 
			
		||||
@ -42,6 +46,7 @@ public class CachingDocumentLoader extends ConfigurableDocumentLoader {
 | 
			
		||||
		setEnableHttp(true);
 | 
			
		||||
		setEnableHttps(true);
 | 
			
		||||
		setDefaultHttpLoader(new HttpLoader(localDomains));
 | 
			
		||||
		this.contexts = new HashSet<>();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
@ -51,9 +56,20 @@ public class CachingDocumentLoader extends ConfigurableDocumentLoader {
 | 
			
		||||
			logger.error("documentCache not able to load {}", url);
 | 
			
		||||
			throw new JsonLdError(JsonLdErrorCode.INVALID_REMOTE_CONTEXT);
 | 
			
		||||
		}
 | 
			
		||||
		// save context
 | 
			
		||||
		this.contexts.add(url);
 | 
			
		||||
 | 
			
		||||
		return document;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public Set<URI> getContexts() {
 | 
			
		||||
		return contexts;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void resetContexts() {
 | 
			
		||||
		this.contexts.clear();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public class HttpLoader implements DocumentLoader {
 | 
			
		||||
		final Map<URI, String> localDomains;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user