func useLocalUrl(ref gojsonreference.JsonReference) gojsonreference.JsonReference { // Grab ninjablocks schemas locally local := strings.Replace(ref.GetUrl().String(), root, "file:///", 1) log.Debugf("Fetching document from %s", local) localURL, _ := gojsonreference.NewJsonReference(local) return localURL }
func (p *schemaPool) GetDocument(reference gojsonreference.JsonReference) (*schemaPoolDocument, error) { if internalLogEnabled { internalLog("Get Document ( %s )", reference.String()) } // It is not possible to load anything that is not canonical... if !reference.IsCanonical() { return nil, errors.New(formatErrorDescription( Locale.ReferenceMustBeCanonical(), ErrorDetails{"reference": reference}, )) } refToUrl := reference refToUrl.GetUrl().Fragment = "" refToUrlStr := refToUrl.String() // Try to find the requested document in the pool for k, v := range p.schemaPoolDocuments { if k == refToUrlStr { if internalLogEnabled { internalLog(" From pool") } return v, nil } } jsonReferenceLoader := p.jsonLoaderFactory.New(refToUrlStr) document, err := jsonReferenceLoader.LoadJSON() if err != nil { return nil, err } spd := &schemaPoolDocument{Document: document} // add the document to the pool for potential later use p.schemaPoolDocuments[refToUrlStr] = spd return spd, nil }
func (p *schemaPool) GetDocument(reference gojsonreference.JsonReference) (*schemaPoolDocument, error) { internalLog("Get Document ( %s )", reference.String()) var err error // It is not possible to load anything that is not canonical... if !reference.IsCanonical() { return nil, errors.New(formatErrorDescription( Locale.ReferenceMustBeCanonical(), ErrorDetails{"reference": reference}, )) } refToUrl := reference refToUrl.GetUrl().Fragment = "" var spd *schemaPoolDocument // Try to find the requested document in the pool for k := range p.schemaPoolDocuments { if k == refToUrl.String() { spd = p.schemaPoolDocuments[k] } } if spd != nil { internalLog(" From pool") return spd, nil } jsonReferenceLoader := NewReferenceLoader(reference.String()) document, err := jsonReferenceLoader.loadJSON() if err != nil { return nil, err } spd = &schemaPoolDocument{Document: document} // add the document to the pool for potential later use p.schemaPoolDocuments[refToUrl.String()] = spd return spd, nil }
func (p *schemaPool) GetDocument(reference gojsonreference.JsonReference) (*schemaPoolDocument, error) { internalLog("Get Document ( %s )", reference.String()) var err error // It is not possible to load anything that is not canonical... if !reference.IsCanonical() { return nil, errors.New(fmt.Sprintf(ERROR_MESSAGE_REFERENCE_X_MUST_BE_CANONICAL, reference)) } refToUrl := reference refToUrl.GetUrl().Fragment = "" var spd *schemaPoolDocument // Try to find the requested document in the pool for k := range p.schemaPoolDocuments { if k == refToUrl.String() { spd = p.schemaPoolDocuments[k] } } if spd != nil { internalLog(" From pool") return spd, nil } jsonReferenceLoader := NewReferenceLoader(reference.String()) document, err := jsonReferenceLoader.loadJSON() if err != nil { return nil, err } spd = &schemaPoolDocument{Document: document} // add the document to the pool for potential later use p.schemaPoolDocuments[refToUrl.String()] = spd return spd, nil }