Caver-java 1.5 code-gen의 결과 wrapper가 여전히 이전 api 사용

안녕하세요,
caver-java 1.5.0을 이용해서 개발하려고 하는 중,
smartcontract의 java wrapper를 생성하기 위해서 caver-java의 codegen 기능을 이용하려고 했더니…

  1. homebrew를 통해 설치한 caver-java (버전 확인해보니 아직 1.3.1)을 이용해서 생성했더니
    아직 1.5.0의 api가 반영되지 않아서,

  2. 직접 caver-java 레포지토리에서 체크아웃한 master 브랜치를 빌드해서
    ($ ./gradlew :console:shadowDistZip) 생성한 caver-java 실행파일을 이용해도
    여전히 1.5.0의 api가 아닌 1.4.x의 api를 사용하는 wrapper 가 생성되고 있는데요…

언제쯤 caver-java 1.5.0 api에 맞춰진 wrapper를 생성해주는 codegen이 지원될까요?

음… 아직 1.5.x를 사용하면 안되는걸까요?

wrapper 생성 말고도,
가이드에 쓰여 있는대로 Klaytn노드 연결을 위한 Caver 생성을 아래와 같이 하면
Caver caver = new Caver(Caver.BAOBAB_URL);
해당 caver로 생성한 TransactionManager를 통해서 TransactionManager.executeTransaction(TransactionTransformer transactionTransformer)
와 같은 트랜잭션 수행을 위한 메소드 수행 시,
1.5.x에서는 deprecated 된 caver.klay() 등을 통해서 JSON-RPC API 호출이 일어나는데
위의 new를 통한 Caver 생성을 하게 되면 klay가 null이기 때문에 NullPointerException이 발생하게되버리네요;

안녕하세요. 먼저 클레이튼 포럼에 질문을 남겨주셔서 감사드립니다. :slight_smile:

1.5.x의 api를 지원하는 codegen 업데이트 일정
아직은 1.5.x api를 지원하는 codegen 업데이트의 일정이 잡힌 것이 없습니다.
하지만, 1.5.x버전으로 업데이트 되면서 Contract를 배포 / 실행하는 방법이 기존의 codegen을 통해 contract wrapper class를 생성하는 방법만큼 편하게 인터페이스가 바뀌었습니다.

1.5.x에서 Contract를 실행 / 배포하는 방법이 궁금하시다면 1.5.x에서 사용되는 Getting started의 문서를 참고 부탁드립니다.

Caver instance의 NullPointer Exception 발생관련
caver-java는 1.5.x로 버전이 업데이트되면서 KIP 34: Klaytn SDK Common Architecture가 적용되었고 이전버전(1.4버전)과 비교해봤을 때 사용성 및 인터페이스가 달라졌습니다.

위와 같은 이유로 발생한 인터페이스의 변경으로 인해 1.5.x대 버전으로 업데이트를 해도, 기존에 하위 버전을 사용하던 사용자분들을 위해 코드를 그대로 남겨두긴 했습니다만, 1.5.x에서 지원하는 클래스 및 method를 1.5버전 이하에서 사용되던 method와 혼용해서 사용하면 안됩니다.

1.5버전 이하에서는 Caver 클래스의 instance를 만들때 아래와 같이 만듭니다.
Caver caver = Caver.build(Caver.BAOBAB_URL);

1.5버전 이하에서의 사용법이 알고싶으시면 caver-java의 Getting started 1.4 문서를 참고해주시면 감사하겠습니다.

추가 질문이 있으시면 다시 질문 부탁드리겠습니다. :slight_smile:

2개의 좋아요