@Override public SchemaIdVersion handleSchemaVersionDeserialization(InputStream inputStream) throws SerDesException { ByteBuffer byteBuffer = ByteBuffer.allocate(8); try { inputStream.read(byteBuffer.array()); } catch (IOException e) { throw new AvroRetryableException(e); } return new SchemaIdVersion(byteBuffer.getLong()); }
private SchemaVersionInfo retrieveSchemaVersionInfo(SchemaIdVersion key) throws SchemaNotFoundException { SchemaVersionInfo schemaVersionInfo = null; if (key.getSchemaVersionId() != null) { schemaVersionInfo = fetchSchemaVersionInfo(key.getSchemaVersionId()); } else if (key.getSchemaMetadataId() != null) { SchemaMetadataInfo schemaMetadataInfo = schemaMetadataFetcher.getSchemaMetadataInfo(key.getSchemaMetadataId()); Integer version = key.getVersion(); schemaVersionInfo = fetchSchemaVersionInfo(schemaMetadataInfo.getSchemaMetadata().getName(), version); } else { throw new IllegalArgumentException("Invalid SchemaIdVersion: " + key); } return schemaVersionInfo; }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Key key = (Key) o; if (schemaVersionKey != null ? !schemaVersionKey.equals(key.schemaVersionKey) : key.schemaVersionKey != null) return false; return schemaIdVersion != null ? schemaIdVersion.equals(key.schemaIdVersion) : key.schemaIdVersion == null; }
@Override protected void doHandleSchemaVersionSerialization(OutputStream outputStream, SchemaIdVersion schemaIdVersion) throws SerDesException { // 8 bytes : schema metadata Id // 4 bytes : schema version try { outputStream.write(ByteBuffer.allocate(12) .putLong(schemaIdVersion.getSchemaMetadataId()) .putInt(schemaIdVersion.getVersion()).array()); } catch (IOException e) { throw new AvroRetryableException(e); } }
@Override public void doHandleSchemaVersionSerialization(OutputStream outputStream, SchemaIdVersion schemaIdVersion) throws SerDesException { try { Long versionId = schemaIdVersion.getSchemaVersionId(); outputStream.write(ByteBuffer.allocate(8) .putLong(versionId).array()); } catch (IOException e) { throw new AvroRetryableException(e); } }
LOG.info("adding schema version for name [{}] with [{}]", schemaName, schemaVersion); SchemaIdVersion version = schemaRegistry.addSchemaVersion(schemaBranchName, schemaName, schemaVersion); response = WSUtils.respondEntity(version.getVersion(), Response.Status.CREATED); } catch (InvalidSchemaException ex) { LOG.error("Invalid schema error encountered while adding schema [{}] with key [{}]", schemaVersion, schemaName, ex);
.build(); SchemaIdVersion schemaIdVersion = new SchemaIdVersion(1L, 1, id); SchemaVersionInfo schemaVersionInfo = new SchemaVersionInfo(id, input.getName().toString(), schemaIdVersion.getVersion(), input.getSchema().toString(), System.currentTimeMillis(),
@Override protected void doHandleSchemaVersionSerialization(OutputStream outputStream, SchemaIdVersion schemaIdVersion) { Long versionId = schemaIdVersion.getSchemaVersionId(); if (versionId > Integer.MAX_VALUE) { throw new AvroException("Unsupported versionId, max id=" + Integer.MAX_VALUE + " , but was id=" + versionId); } else { // 4 bytes try { outputStream.write(ByteBuffer.allocate(4) .putInt(versionId.intValue()).array()); } catch (IOException e) { throw new AvroRetryableException(e); } } }
LOG.info("adding schema version for name [{}] with [{}]", schemaName, schemaVersion); SchemaIdVersion version = schemaRegistry.addSchemaVersion(schemaBranchName, schemaName, schemaVersion); response = WSUtils.respondEntity(version.getVersion(), Response.Status.CREATED); } catch (InvalidSchemaException ex) { LOG.error("Invalid schema error encountered while adding schema [{}] with key [{}]", schemaVersion, schemaName, ex);
@Override protected MessageContext doSerialize(Object input, SchemaIdVersion schemaIdVersion) throws SerDesException { Map<String, Object> headers = new HashMap<>(); headers.put("protocol.id", getProtocolId()); headers.put("schema.metadata.id", schemaIdVersion.getSchemaMetadataId()); headers.put("schema.version", schemaIdVersion.getVersion()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); try (BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(baos)) { serializePayload(bufferedOutputStream, input); } catch (IOException e) { throw new SerDesException(e); } ByteArrayInputStream payload = new ByteArrayInputStream(baos.toByteArray()); return new MessageContext(headers, payload); } }
.compatibility(SchemaCompatibility.BACKWARD) .build(); SchemaIdVersion schemaIdVersion = new SchemaIdVersion(1L, 1, 1L); Device input = new Device(1L, "device", 1, System.currentTimeMillis()); SchemaVersionInfo schemaVersionInfo = new SchemaVersionInfo(1l, input.getName().toString(), schemaIdVersion.getVersion(), input.getSchema().toString(), System.currentTimeMillis(),
@Override public SchemaIdVersion handleSchemaVersionDeserialization(InputStream inputStream) { ByteBuffer byteBuffer = ByteBuffer.allocate(4); try { inputStream.read(byteBuffer.array()); } catch (IOException e) { throw new AvroRetryableException(e); } int schemaVersionId = byteBuffer.getInt(); return new SchemaIdVersion((long) schemaVersionId); }
private SchemaVersionInfo doGetSchemaVersionInfo(SchemaIdVersion schemaIdVersion) throws SchemaNotFoundException { if (schemaIdVersion.getSchemaVersionId() != null) { LOG.info("Getting schema version from target registry for [{}]", schemaIdVersion.getSchemaVersionId()); return getEntity(currentSchemaRegistryTargets() .schemaVersionsByIdTarget .path(schemaIdVersion.getSchemaVersionId().toString()), SchemaVersionInfo.class); } else if (schemaIdVersion.getSchemaMetadataId() != null) { SchemaMetadataInfo schemaMetadataInfo = getSchemaMetadataInfo(schemaIdVersion.getSchemaMetadataId()); SchemaVersionKey schemaVersionKey = new SchemaVersionKey(schemaMetadataInfo.getSchemaMetadata() .getName(), schemaIdVersion.getVersion()); LOG.info("Getting schema version from target registry for key [{}]", schemaVersionKey); return doGetSchemaVersionInfo(schemaVersionKey); } throw new IllegalArgumentException("Given argument not valid: " + schemaIdVersion); }
@Override public void handleSchemaVersionSerialization(OutputStream outputStream, SchemaIdVersion schemaIdVersion) { Long versionId = schemaIdVersion.getSchemaVersionId(); if (versionId > Integer.MAX_VALUE) { // if it is more than int max, fallback to SchemaVersionIdAsLongProtocolHandler LOG.debug("Upgraded to " + delegate + " as versionId is more than max integer"); delegate.handleSchemaVersionSerialization(outputStream, schemaIdVersion); } else { // 4 bytes try { outputStream.write(new byte[]{protocolId}); outputStream.write(ByteBuffer.allocate(4) .putInt(versionId.intValue()).array()); } catch (IOException e) { throw new AvroException(e); } } }
SchemaVersionInfo schemaVersionInfo = schemaRegistryClient.getSchemaVersionInfo(new SchemaVersionKey(schemaName, v2.getVersion())); LOG.info("Received schema version info [{}] for schema metadata [{}]", schemaVersionInfo, schemaMetadata);
String schema1 = AvroSchemaRegistryClientUtil.getSchema("/schema-1.avsc"); SchemaIdVersion v1 = schemaRegistryClient.addSchemaVersion(schemaName, new SchemaVersion(schema1, "Initial version of the schema")); Assert.assertNotNull(v1.getSchemaMetadataId()); Assert.assertEquals(1, v1.getVersion().intValue()); SchemaMetadataInfo schemaMetadataInfoForId = schemaRegistryClient.getSchemaMetadataInfo(v1.getSchemaMetadataId()); SchemaMetadataInfo schemaMetadataInfoForName = schemaRegistryClient.getSchemaMetadataInfo(schemaName); Assert.assertEquals(schemaMetadataInfoForId, schemaMetadataInfoForName); "second version", AvroSchemaRegistryClientTest.class.getResourceAsStream("/schema-2.avsc")); Assert.assertEquals(v1.getVersion() + 1, v2.getVersion().intValue()); .getVersion())); SchemaVersionInfo latest = schemaRegistryClient.getLatestSchemaVersionInfo(schemaName); Assert.assertEquals(latest, schemaVersionInfo);
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Key key = (Key) o; if (schemaVersionKey != null ? !schemaVersionKey.equals(key.schemaVersionKey) : key.schemaVersionKey != null) return false; return schemaIdVersion != null ? schemaIdVersion.equals(key.schemaIdVersion) : key.schemaIdVersion == null; }
@Override public SchemaVersionInfo getSchemaVersionInfo(long schemaVersionId) throws SchemaNotFoundException { return SchemaVersionLifecycleManager.this.getSchemaVersionInfo(new SchemaIdVersion(schemaVersionId)); }
@Test (expected = SchemaLifecycleException.class) public void deleteRootSchemaOfBranch() throws InvalidSchemaException, SchemaNotFoundException, IncompatibleSchemaException, IOException, SchemaBranchAlreadyExistsException, SchemaLifecycleException { SchemaMetadata schemaMetadata = addSchemaMetadata(testNameRule.getMethodName(), SchemaCompatibility.NONE); SchemaIdVersion masterSchemaIdVersion1 = addSchemaVersion(SchemaBranch.MASTER_BRANCH, schemaMetadata, "/device.avsc"); addSchemaBranch("BRANCH1", schemaMetadata, masterSchemaIdVersion1.getSchemaVersionId()); schemaRegistryClient.archiveSchemaVersion(masterSchemaIdVersion1.getSchemaVersionId()); schemaRegistryClient.deleteSchemaVersion(masterSchemaIdVersion1.getSchemaVersionId()); }
@Test(expected = InvalidSchemaException.class) public void testInvalidSchema() throws Exception { String schema = "--- random invalid schema ---" + new Date(); SchemaMetadata schemaMetadataInfo = createSchemaInfo(TEST_NAME_RULE.getMethodName(), SchemaCompatibility.BACKWARD); // registering a new schema Integer v1 = schemaRegistry.addSchemaVersion(schemaMetadataInfo, new SchemaVersion(schema, "Initial version of the schema")) .getVersion(); }