rsocket / rsocket-rpc-java

Standard RSocket RPC Java Implementation
http://rsocket.io/
Apache License 2.0
172 stars 41 forks source link

RPC generated code not compatible with RSocket 1.0.0 #65

Closed d-wojciechowski closed 3 years ago

d-wojciechowski commented 4 years ago

Brief introduction

Hello, I tried to upgrade dependency from 1.0.0-RC7 to 1.0.0 but when coupled with 0.2.18 version of RSocket (i cannot use 0.2.18 because of a related issue: Issue link ) it throws an error about not existing class.

Project config

group = "pl.dwojciechowski"
version = "0.7.1"
val protobufVersion = "3.12.1"
val rsocketRpcVersion = "0.2.18"
val rsocketVersion = "1.0.0"
val coroutinesVersion = "1.3.7"
val fuelVersion = "2.2.2"
val rxJavaVersion = "3.0.4"

plugins {
    id("com.github.ben-manes.versions") version "0.28.0"
    id("org.jetbrains.intellij") version "0.4.21"
    id("com.google.protobuf") version "0.8.12"
    kotlin("jvm") version "1.3.72"
    java
    idea
}

apply(plugin = "org.jetbrains.intellij")

repositories {
    mavenCentral()
    jcenter()
    maven("https://dl.bintray.com/kittinunf/maven")
}

dependencies {
    implementation(kotlin("stdlib-jdk8"))

    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion")
    implementation("com.github.kittinunf.fuel", "fuel", fuelVersion)
    implementation("io.reactivex.rxjava3:rxjava:$rxJavaVersion")

    implementation("io.rsocket:rsocket-core:$rsocketVersion")
    implementation("io.rsocket:rsocket-transport-local:$rsocketVersion")
    implementation("io.rsocket:rsocket-transport-netty:$rsocketVersion")
    implementation("io.rsocket.rpc:rsocket-rpc-core:$rsocketRpcVersion")
    //Do not use implementation here, compile is needed :
    // https://github.com/JetBrains/gradle-intellij-plugin/issues/239
    // https://github.com/JetBrains/gradle-intellij-plugin/issues/456
    compile("com.google.protobuf:protobuf-java:$protobufVersion")
}

Gradle error message

C:\Users\allst\IdeaProjects\wncplugin\src\generated\main\rsocketRpc\pl\dwojciechowski\proto\files\BlockingFileServiceServer.java:92: error: cannot find symbol
    return new io.rsocket.internal.SwitchTransformFlux<io.rsocket.Payload, io.rsocket.Payload>(payloads, new java.util.function.BiFunction<io.rsocket.Payload, reactor.core.publisher.Flux<io.rsocket.Payload>, org.reactivestreams.Publisher<? extends io.rsocket.Payload>>() {
                                  ^
  symbol:   class SwitchTransformFlux
  location: package io.rsocket.internal

Generated code

  @java.lang.Override
  public reactor.core.publisher.Flux<io.rsocket.Payload> requestChannel(org.reactivestreams.Publisher<io.rsocket.Payload> payloads) {
    return new io.rsocket.internal.SwitchTransformFlux<io.rsocket.Payload, io.rsocket.Payload>(payloads, new java.util.function.BiFunction<io.rsocket.Payload, reactor.core.publisher.Flux<io.rsocket.Payload>, org.reactivestreams.Publisher<? extends io.rsocket.Payload>>() {
      @java.lang.Override
      public org.reactivestreams.Publisher<io.rsocket.Payload> apply(io.rsocket.Payload payload, reactor.core.publisher.Flux<io.rsocket.Payload> publisher) {
        return requestChannel(payload, publisher);
      }
    });
  }