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; } }
private DataMap buildDataMap(ParentSchemas parentSchemas, String pegasusDataSchemaName, DataGenerationOptions spec) { final DataSchema schema = _schemaParser.lookupName(pegasusDataSchemaName); spec = preventRecursionIntoAlreadyTraversedSchemas(parentSchemas, spec, schema); parentSchemas.incrementReferences(schema); if (schema == null) { throw new IllegalArgumentException(String.format("Could not find pegasus data schema '%s'", pegasusDataSchemaName)); } assert(schema instanceof RecordDataSchema); final DataMap data = buildRecordData(parentSchemas, (RecordDataSchema) schema, spec); parentSchemas.decrementReferences(schema); return data; }