@Override public <T, S> ServiceServer<T, S> newServiceServer(GraphName serviceName, String serviceType, ServiceResponseBuilder<T, S> responseBuilder) { GraphName resolvedServiceName = resolveName(serviceName); // TODO(damonkohler): It's rather non-obvious that the URI will be // created later on the fly. ServiceIdentifier identifier = new ServiceIdentifier(resolvedServiceName, null); ServiceDescription serviceDescription = nodeConfiguration.getServiceDescriptionFactory().newFromType(serviceType); ServiceDeclaration definition = new ServiceDeclaration(identifier, serviceDescription); MessageDeserializer<T> requestDeserializer = newServiceRequestDeserializer(serviceType); MessageSerializer<S> responseSerializer = newServiceResponseSerializer(serviceType); return serviceFactory.newServer(definition, responseBuilder, requestDeserializer, responseSerializer, nodeConfiguration.getServiceResponseMessageFactory()); }
@Override public <T, S> ServiceClient<T, S> newServiceClient(GraphName serviceName, String serviceType) throws ServiceNotFoundException { GraphName resolvedServiceName = resolveName(serviceName); URI uri = lookupServiceUri(resolvedServiceName); if (uri == null) { throw new ServiceNotFoundException("No such service " + resolvedServiceName + " of type " + serviceType); } ServiceDescription serviceDescription = nodeConfiguration.getServiceDescriptionFactory().newFromType(serviceType); ServiceIdentifier serviceIdentifier = new ServiceIdentifier(resolvedServiceName, uri); ServiceDeclaration definition = new ServiceDeclaration(serviceIdentifier, serviceDescription); MessageSerializer<T> requestSerializer = newServiceRequestSerializer(serviceType); MessageDeserializer<S> responseDeserializer = newServiceResponseDeserializer(serviceType); return serviceFactory.newClient(definition, requestSerializer, responseDeserializer, nodeConfiguration.getServiceRequestMessageFactory()); }