@Override public Map<String, NamedDataSchema> bindings() { Map<String, NamedDataSchema> results = new HashMap<String, NamedDataSchema>(); for (DataSchemaResolver resolver: resolvers) { results.putAll(resolver.bindings()); } return results; }
@Override public void bindNameToSchema(Name name, NamedDataSchema schema, DataSchemaLocation location) { for (DataSchemaResolver resolver: resolvers) { resolver.bindNameToSchema(name, schema, location); } }
@Override public NamedDataSchema findDataSchema(String name, StringBuilder errorMessageBuilder) { for (DataSchemaResolver resolver: resolvers) { NamedDataSchema result = resolver.findDataSchema(name, errorMessageBuilder); if (result != null) { return result; } } return null; }
final DataSchema schema = _schemaResolver.findDataSchema(source, errorMessage); if (schema == null) for (Map.Entry<String, DataSchemaLocation> entry : _schemaResolver.nameToDataSchemaLocations().entrySet()) { final DataSchema schema = _schemaResolver.bindings().get(entry.getKey()); result.getSchemaAndLocations().put(schema, entry.getValue());
protected List<File> targetFiles(File targetDirectory) { ArrayList<File> generatedFiles = new ArrayList<File>(); DataSchemaResolver resolver = getSchemaResolver(); Map<String, DataSchemaLocation> nameToLocations = resolver.nameToDataSchemaLocations(); Map<String, NamedDataSchema> nameToSchema = resolver.bindings(); for (Map.Entry<String, DataSchemaLocation> entry : nameToLocations.entrySet()) { String fullName = entry.getKey(); DataSchemaLocation location = entry.getValue(); if (_sourceLocations.contains(location) || _sources.contains(fullName)) { NamedDataSchema schema = nameToSchema.get(fullName); if (schema instanceof RecordDataSchema) { RecordDataSchema recordDataSchema = (RecordDataSchema) schema; File generatedFile = fileForAvroSchema(fullName, targetDirectory); generatedFiles.add(generatedFile); String preTranslateSchemaText = recordDataSchema.toString(); String avroSchemaText = SchemaTranslator.dataToAvroSchemaJson(recordDataSchema, _options); _fileToAvroSchemaMap.put(generatedFile, avroSchemaText); String postTranslateSchemaText = recordDataSchema.toString(); assert(preTranslateSchemaText.equals(postTranslateSchemaText)); } } } return generatedFiles; }
@Override public Map<String, DataSchemaLocation> nameToDataSchemaLocations() { Map<String, DataSchemaLocation> results = new HashMap<String, DataSchemaLocation>(); for (DataSchemaResolver resolver: resolvers) { results.putAll(resolver.nameToDataSchemaLocations()); } return results; }
DataSchema found = getResolver().existingDataSchema(name.getFullName()); if (found != null) getResolver().bindNameToSchema(name, schema, getLocation());
@Override public boolean locationResolved(DataSchemaLocation location) { for (DataSchemaResolver resolver: resolvers) { if (resolver.locationResolved(location)) { return true; } } return false; } }
@Override public NamedDataSchema existingDataSchema(String name) { for (DataSchemaResolver resolver: resolvers) { NamedDataSchema result = resolver.existingDataSchema(name); if (result != null) { return result; } } return null; }
@Override public Map<String, DataSchemaLocation> nameToDataSchemaLocations() { Map<String, DataSchemaLocation> results = new HashMap<>(); for (DataSchemaResolver resolver: resolvers) { results.putAll(resolver.nameToDataSchemaLocations()); } return results; }
@Override public boolean locationResolved(DataSchemaLocation location) { for (DataSchemaResolver resolver: resolvers) { if (resolver.locationResolved(location)) { return true; } } return false; } }
@Override public NamedDataSchema existingDataSchema(String name) { for (DataSchemaResolver resolver: resolvers) { NamedDataSchema result = resolver.existingDataSchema(name); if (result != null) { return result; } } return null; }
@Override public NamedDataSchema findDataSchema(String name, StringBuilder errorMessageBuilder) { for (DataSchemaResolver resolver: resolvers) { NamedDataSchema result = resolver.findDataSchema(name, errorMessageBuilder); if (result != null) { return result; } } return null; }
/** * Append source files that were resolved through {@link DataSchemaResolver} to the provided list. * * @param result to append the files that were resolved through {@link DataSchemaResolver}. */ private void appendSourceFilesFromSchemaResolver(ParseResult result) { for (Map.Entry<String, DataSchemaLocation> entry : _schemaResolver.nameToDataSchemaLocations().entrySet()) { final File sourceFile = entry.getValue().getSourceFile(); if (sourceFile != null) { result.getSourceFiles().add(sourceFile); } } }
@Override public Map<String, NamedDataSchema> bindings() { Map<String, NamedDataSchema> results = new HashMap<>(); for (DataSchemaResolver resolver: resolvers) { results.putAll(resolver.bindings()); } return results; }
@Override public void bindNameToSchema(Name name, NamedDataSchema schema, DataSchemaLocation location) { for (DataSchemaResolver resolver: resolvers) { resolver.bindNameToSchema(name, schema, location); } }
/** * Whether a source file has already been resolved to data schemas. * * @param schemaSourceFile provides the source file. * * @return true if this source file has already been resolved to data schemas. */ private boolean wasResolved(File schemaSourceFile) { final FileDataSchemaLocation schemaLocation = new FileDataSchemaLocation(schemaSourceFile); return _schemaResolver.locationResolved(schemaLocation); }
private NamedDataSchema extractSchema(String className) { if (_schemaParser == null) { // 'online mode': resolve data schema from RecordTemplate Class SCHEMA field final StringBuilder errorMessage = new StringBuilder(); final NamedDataSchema schema = _schemaResolver.findDataSchema(className, errorMessage); if (errorMessage.length() > 0) { return null; } return schema; } else { // 'offline mode': resolve data schema from input final DataSchema schema = _schemaParser.lookupName(className); // we're currently only interested in records return schema instanceof RecordDataSchema ? (RecordDataSchema)schema : null; } }
/** * Append source files that were resolved through {@link DataSchemaResolver} to the provided list. * * @param sourceFiles to append the files that were resolved through {@link DataSchemaResolver}. */ protected void appendSourceFilesFromSchemaResolver(List<File> sourceFiles) { for (Map.Entry<String, DataSchemaLocation> entry : getSchemaResolver().nameToDataSchemaLocations().entrySet()) { DataSchemaLocation location = entry.getValue(); File sourceFile = location.getSourceFile(); if (sourceFile != null) { sourceFiles.add(sourceFile); } } } }
/** * @return all parsed schema names */ public Set<String> getSchemaNames() { return Collections.unmodifiableSet(_schemaParser.getResolver().bindings().keySet()); }