@Override public OverrideSchema createOverrideSchema(String schema) { return new OverrideSchema(schema); }
@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."); } }
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."); } }
Schema.Parser overrideSchemaParser = new Schema.Parser(); Schema overrideAvroSchema = overrideSchemaParser.parse( overrideConfigurations.get(0).getSchema().getRawSchema());
LOG.debug("Create default UUID validator with override schema: {}", configurationSchema.getOverrideSchema()); OverrideSchema overrideSchema = new OverrideSchema( configurationSchema.getOverrideSchema()); uuidValidator = new DefaultUuidValidator(overrideSchema, new OverrideDataFactory()); avroConverter = new GenericAvroConverter<GenericRecord>(overrideSchema.getRawSchema()); avroSchema = new Schema.Parser().parse(overrideSchema.getRawSchema());
private Pair<BaseData, RawData> mergeConfiguration(String endpointId, String config, ConfigurationSchemaDto configSchema, Pair<BaseData, RawData> mergedConfiguration) throws GetDeltaException { OverrideAlgorithm configurationMerger = configurationOverrideFactory.createConfigurationOverrideAlgorithm(); OverrideSchema overrideSchema = new OverrideSchema(configSchema.getOverrideSchema()); try { LOG.trace("Merging group configuration with configuration: {}", config); BaseData baseData = configurationMerger.override(mergedConfiguration.getV1(), Collections.singletonList(new OverrideData(overrideSchema, config))); JsonNode json = new ObjectMapper().readTree(baseData.getRawData()); AvroUtils.removeUuids(json); RawData rawData = new RawData(new RawSchema(mergedConfiguration.getV2().getSchema().getRawSchema()), json.toString()); return new Pair<>(baseData, rawData); } catch (OverrideException | IOException oe) { LOG.error("[{}] Unexpected exception occurred while merging configuration: ", endpointId, oe); throw new GetDeltaException(oe); } finally { LOG.trace("[{}] getMergedConfiguration.compute end", endpointId); } }
List<OverrideData> overrideConfigs = new LinkedList<>(); BaseData baseConfig = null; OverrideSchema overrideSchema = new OverrideSchema(configurationSchema.getOverrideSchema()); BaseSchema baseSchema = new BaseSchema(configurationSchema.getBaseSchema());
KaaSchema kaaSchema = useBaseSchema ? new BaseSchema(schemaDto.getBaseSchema()) : new OverrideSchema( schemaDto.getOverrideSchema()); DefaultRecordGenerationAlgorithmImpl configurationProcessor = new DefaultRecordGenerationAlgorithmImpl(kaaSchema,