From 3119bb5fab5dc964c92d6619942625d5f6a46284 Mon Sep 17 00:00:00 2001 From: jan Date: Mon, 21 Mar 2022 01:27:06 +0100 Subject: [PATCH] Fix generic structs with non-generic interface as type parameter. --- compiler/src/main/cpp/capnpc-java.c++ | 8 ++++++-- runtime/src/main/java/org/capnproto/Capability.java | 3 +-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/compiler/src/main/cpp/capnpc-java.c++ b/compiler/src/main/cpp/capnpc-java.c++ index c8e6bdd..4aba126 100644 --- a/compiler/src/main/cpp/capnpc-java.c++ +++ b/compiler/src/main/cpp/capnpc-java.c++ @@ -338,18 +338,22 @@ private: if (liteMode) { return kj::strTree("org.capnproto.Capability.", suffix); } + auto interfaceSuffix = kj::str(suffix); + if(suffix == kj::str("Builder") || suffix == kj::str("Reader")) { + interfaceSuffix = kj::str("Client"); + } auto interfaceSchema = type.asInterface(); if (interfaceSchema.getProto().getIsGeneric()) { auto typeArgs = getTypeArguments(interfaceSchema, interfaceSchema, kj::str(suffix)); return kj::strTree( - javaFullName(interfaceSchema), ".", suffix, "<", + javaFullName(interfaceSchema), ".", interfaceSuffix, "<", kj::StringTree(KJ_MAP(arg, typeArgs){ return kj::strTree(arg); }, ", "), ">" ); } else { - return kj::strTree(javaFullName(type.asInterface()), ".", suffix); + return kj::strTree(javaFullName(type.asInterface()), ".", interfaceSuffix); } } case schema::Type::LIST: diff --git a/runtime/src/main/java/org/capnproto/Capability.java b/runtime/src/main/java/org/capnproto/Capability.java index 4521c54..30eb6cf 100644 --- a/runtime/src/main/java/org/capnproto/Capability.java +++ b/runtime/src/main/java/org/capnproto/Capability.java @@ -11,8 +11,7 @@ import static org.capnproto.ClientHook.NULL_CAPABILITY_BRAND; public final class Capability { public static abstract class Factory - implements FromPointerReader, - FromPointerBuilder, + implements PointerFactory, SetPointerBuilder { public abstract T newClient(ClientHook hook);