/** * Publish a GraphQL schema for querying. * <p> * On success a {@link SchemaRegistration} is returned. It contains the message consumer of the * {@link Queryable} service proxy that supplies the published {@link SchemaDefinition}, the published service * discovery record, and the {@link ServiceDiscovery} it was published to. * <p> * Note that unless invoked from a {@link SchemaPublisher} a * client needs to keep hold of the returned {@link Record} as long as it is published. * * @param vertx the vert.x instance * @param discovery the service discovery instance * @param schema the graphql schema * @param options the schema discovery options * @param metadata the metadata to pass to the service * @param resultHandler the result handler that returns the registration */ static void publish(Vertx vertx, ServiceDiscovery discovery, GraphQLSchema schema, ServiceDiscoveryOptions options, SchemaMetadata metadata, Handler<AsyncResult<SchemaRegistration>> resultHandler) { Objects.requireNonNull(schema, "GraphQL schema cannot be null"); SchemaDefinition definition = SchemaDefinition.createInstance(schema, metadata); publish(vertx, discovery, definition, resultHandler); }
Objects.requireNonNull(resultHandler, "Publication result handler cannot be null"); SchemaDefinition definition = SchemaDefinition.createInstance(schema, metadata); if (schemaRegistrar().findRegistration(options.getName(), definition.schemaName()).isPresent()) { resultHandler.handle(Future.failedFuture("Schema '" +
@Before public void setUp() { vertx = Vertx.vertx(); options = new ServiceDiscoveryOptions().setName("theDiscovery") .setAnnounceAddress("theAnnounceAddress").setUsageAddress("theUsageAddress"); discovery = ServiceDiscovery.create(vertx, options); record = new Record() .setName("theRecord") .setType(Queryable.SERVICE_TYPE) .setMetadata(new JsonObject().put("publisherId", "thePublisherId")) .setLocation(new JsonObject().put(Record.ENDPOINT, Queryable.ADDRESS_PREFIX + ".DroidQueries")) .setStatus(Status.UP); definition = SchemaDefinition.createInstance(droidsSchema, SchemaMetadata.create(new JsonObject().put("publisherId", "thePublisherId"))); consumer = ProxyHelper.registerService(Queryable.class, vertx, definition, Queryable.ADDRESS_PREFIX + ".DroidQueries"); }
@Test public void should_Manage_Service_Consumers() { SchemaDefinition definition = SchemaDefinition .createInstance(droidsSchema, SchemaMetadata.create()); messageConsumers.registerServiceConsumer("DroidQueries", definition); assertEquals(1, messageConsumers.getConsumers().size()); assertTrue(messageConsumers.getConsumers().get("DroidQueries").isRegistered()); messageConsumers.registerServiceConsumer("DroidQueries", definition); assertEquals(1, messageConsumers.getConsumers().size()); messageConsumers.unregisterConsumer("DroidQueries"); assertEquals(1, messageConsumers.getConsumers().size()); messageConsumers.registerConsumer("announce", (SchemaAnnounceHandler) rh -> {}); assertEquals(2, messageConsumers.getConsumers().size()); messageConsumers.unregisterConsumer("DroidQueries"); assertEquals(1, messageConsumers.getConsumers().size()); messageConsumers.close(); assertEquals(0, messageConsumers.getConsumers().size()); }
@Test public void should_Implement_Proper_Reference_Equality() { SchemaRegistration registration1 = SchemaRegistration.create(discovery, options, record, definition, null); assertEquals(registration1, registration1); assertNotEquals(registration1, "test"); SchemaRegistration registration2 = SchemaRegistration.create(discovery, new ServiceDiscoveryOptions(options).setName("theOtherDiscovery"), record, definition, null); assertNotEquals(registration1, registration2); SchemaRegistration registration3 = SchemaRegistration.create(discovery, new ServiceDiscoveryOptions(options).setName("theOtherDiscovery"), record, definition, consumer); assertNotEquals(registration2, registration3); SchemaDefinition starwarsSchema = SchemaDefinition .createInstance(starWarsSchema, SchemaMetadata.create()); SchemaRegistration registration4 = SchemaRegistration.create(discovery, options, record, starwarsSchema, null); assertNotEquals(registration1, registration4); SchemaRegistration registration5 = SchemaRegistration. create(discovery, options, new Record(record).setName("theOtherRecord"), starwarsSchema, null); assertNotEquals(registration4, registration5); SchemaRegistration registration6 = SchemaRegistration. create(discovery, options, new Record(record).setStatus(Status.DOWN), starwarsSchema, null); assertEquals(registration4, registration6); }