@Override public String normalizeAccordingToOverrideConfigurationSchema(String appId, int schemaVersion, String configurationBody) { ConfigurationSchemaDto schemaDto = this.findConfSchemaByAppIdAndVersion(appId, schemaVersion); if (schemaDto != null) { OverrideSchema overrideSchema = new OverrideSchema(schemaDto.getOverrideSchema()); LOG.debug("Create default UUID validator with override schema: {}", overrideSchema.getRawSchema()); UuidValidator<OverrideData> uuidValidator = new DefaultUuidValidator<>(overrideSchema, new OverrideDataFactory()); GenericAvroConverter<GenericRecord> avroConverter = new GenericAvroConverter<>(overrideSchema.getRawSchema()); try { GenericRecord configRecord = avroConverter.decodeJson(configurationBody); // TODO: Need to use last active configuration instead of null. Will be changed after supporting delta configuration KaaData<OverrideSchema> body = uuidValidator.validateUuidFields(configRecord, null); if (body != null) { return body.getRawData(); } else { LOG.warn("Validated configuration body is empty"); throw new IncorrectParameterException("Validated configuration body is empty"); } } catch (IOException ex) { LOG.error("Invalid configuration for override schema.", ex); throw new IncorrectParameterException("Invalid configuration for override schema."); } } else { LOG.warn("Can't find configuration schema with version {}.", schemaVersion); throw new IncorrectParameterException("Can't find configuration schema for specified version."); } }
Schema.Parser overrideSchemaParser = new Schema.Parser(); Schema overrideAvroSchema = overrideSchemaParser.parse( overrideConfigurations.get(0).getSchema().getRawSchema());
configurationSchema.getOverrideSchema()); uuidValidator = new DefaultUuidValidator(overrideSchema, new OverrideDataFactory()); avroConverter = new GenericAvroConverter<GenericRecord>(overrideSchema.getRawSchema()); avroSchema = new Schema.Parser().parse(overrideSchema.getRawSchema());
private void generateSchemas(ConfigurationSchemaDto schema) throws SchemaCreationException { CTLSchemaDto ctlSchema = ctlService.findCtlSchemaById(schema.getCtlSchemaId()); String sch = ctlService.flatExportAsString(ctlSchema); DataSchema dataSchema = new DataSchema(sch); if (!dataSchema.isEmpty()) { SchemaGenerationAlgorithm schemaGenerator = schemaGeneratorFactory.createSchemaGenerator(dataSchema); ProtocolSchema protocol = schemaGenerator.getProtocolSchema(); BaseSchema base = schemaGenerator.getBaseSchema(); OverrideSchema override = schemaGenerator.getOverrideSchema(); if (!protocol.isEmpty() && !base.isEmpty() && !override.isEmpty()) { schema.setBaseSchema(base.getRawSchema()); schema.setProtocolSchema(protocol.getRawSchema()); schema.setOverrideSchema(override.getRawSchema()); } else { LOG.trace("One or more generated schemas are empty. base: {} protocol {} override {}", base, protocol, override); throw new IncorrectParameterException("Can't generate schemas. Check your data schema"); } } else { LOG.warn("Can't generate schemas because data schema is empty."); } }