-
- // FIXME: This should be probably part of Binding Runtime context
- ImmutableBiMap<Method, RpcDefinition> getRpcMethodToSchema(final Class<? extends RpcService> key) {
- final Module module = getModule(key);
- final ImmutableBiMap.Builder<Method, RpcDefinition> ret = ImmutableBiMap.builder();
- try {
- for (final RpcDefinition rpcDef : module.getRpcs()) {
- final Method method = findRpcMethod(key, rpcDef);
- ret.put(method, rpcDef);
- }
- } catch (final NoSuchMethodException e) {
- throw new IllegalStateException("Rpc defined in model does not have representation in generated class.", e);
- }
- return ret.build();
- }
-
- // FIXME: This should be probably part of Binding Runtime context
- ImmutableBiMap<Method, QName> getRpcMethodToQName(final Class<? extends RpcService> key) {
- final Module module = getModule(key);
- final ImmutableBiMap.Builder<Method, QName> ret = ImmutableBiMap.builder();
- try {
- for (final RpcDefinition rpcDef : module.getRpcs()) {
- final Method method = findRpcMethod(key, rpcDef);
- ret.put(method,rpcDef.getQName());
- }
- } catch (final NoSuchMethodException e) {
- throw new IllegalStateException("Rpc defined in model does not have representation in generated class.", e);
- }
- return ret.build();
- }
-
- private Module getModule(final Class<?> modeledClass) {
- final QNameModule moduleName = BindingReflections.getQNameModule(modeledClass);
- final BindingRuntimeContext localRuntimeContext = getRuntimeContext();
- final Module module = localRuntimeContext.getEffectiveModelContext().findModule(moduleName).orElse(null);
- if (module != null) {
- return module;
- }
-
- LOG.trace("Schema for {} is not available; expected module name: {}; BindingRuntimeContext: {}",
- modeledClass, moduleName, localRuntimeContext);
- throw new IllegalStateException(String.format("Schema for %s is not available; expected module name: %s; "
- + "full BindingRuntimeContext available in trace log", modeledClass, moduleName));
- }
-
- private Method findRpcMethod(final Class<? extends RpcService> key, final RpcDefinition rpcDef)
- throws NoSuchMethodException {
- final var rpcName = rpcDef.getQName();
- final var inputClz = getRuntimeContext().getRpcInput(rpcName);
- return key.getMethod(BindingMapping.getRpcMethodName(rpcName), inputClz);
- }