kintone Java Clientでフォーム設定を取得する際にエラーとなることがある

SDKフォーラムの対象とは異なるかもしれないが、kintone Java Clientに関するフォーラムがなかったのでこちらに投稿させて頂きます。

実現したいこと

kintone Java Clientで、初期値が設定されたユーザー選択フィールドや組織選択フィールドが存在するアプリでもフォーム設定を取得できるようにする

 

エラー情報

初期値に"ログインユーザー"が設定されたユーザー選択フィールドや、初期値に"優先する組織"が設定された組織選択フィールドが存在するアプリに対してkintone Java ClientのAppClientクラスのgetFormFields(appId)メソッドを実行すると下記エラーが発生する。

Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type com.kintone.client.model.EntityType from String “FUNCTION”: not one of the values accepted for Enum class: [ORGANIZATION, FIELD_ENTITY, USER, CREATOR, GROUP, CUSTOM_FIELD]
at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: com.kintone.client.api.app.GetFormFieldsResponseBody[“properties”]->java.util.LinkedHashMap[“owner_org”]->com.kintone.client.model.app.field.OrganizationSelectFieldProperty[“defaultValue”]->java.util.ArrayList[0]->com.kintone.client.model.Entity[“type”])
at com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67)
at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1679)
at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:935)
at com.fasterxml.jackson.databind.deser.std.EnumDeserializer._deserializeAltString(EnumDeserializer.java:255)
at com.fasterxml.jackson.databind.deser.std.EnumDeserializer.deserialize(EnumDeserializer.java:179)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:530)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:528)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:417)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1287)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:326)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:4189)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2476)
at com.fasterxml.jackson.databind.ObjectMapper.treeToValue(ObjectMapper.java:2929)
at com.kintone.client.FieldPropertyDeserializer.deserialize(FieldPropertyDeserializer.java:45)
at com.kintone.client.FieldPropertyDeserializer.deserialize(FieldPropertyDeserializer.java:1)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:527)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:364)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:29)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:530)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:528)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:417)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1287)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:326)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4218)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3251)
at com.kintone.client.JsonMapper.parse(JsonMapper.java:50)
… 11 common frames omitted

 

利用したソースコード

try (KintoneClient client = KintoneClientBuilder
.create(config.getUrl())
.authByApiToken(config.getApiToken())
.build()) {
AppClient appClient = client.app();
Map<String, FieldProperty> formFields = appClient.getFormFields(config.getAppId());
}

試したこと

ユーザー選択フィールドや組織選択フィールドの初期値設定を削除して実行すると正常に取得できたが、初期値設定は開発仕様上必要となるため、是非とも対応してほしい。

 

再現条件

  • 上記の通り

 

大久保浩人 様

お世話になっております。
cybozu developer network 運営局です。

記載していただいた現象について、本ツールを開発を担当している部署に共有させていただきました。

現状、本現象の回避策はございません。申し訳ありません。

時期については未定ですが、
「ユーザー選択」や「組織選択」フィールドの初期値に「ログインユーザー」や「優先する組織」を設定して、AppClient#getFormFields()を実行できるよう、
kintone Java Client を改修する予定です。

 

今後とも、よろしくお願いいたします。

大久保浩人 様

お世話になっております。
cybozu developer network 運営局です。

「ユーザー選択」や「組織選択」フィールドの初期値に「ログインユーザー」や「優先する組織」を設定して、AppClient#getFormFields()を実行できるよう、
kintone Java Client を改修したので、ご連絡いたします。

改修版をご利用される際は、お手数おかけいたしますが、本ライブラリのバージョンを v1.0.1 にご修正ください。
https://mvnrepository.com/artifact/com.kintone/kintone-java-client/1.0.1

よろしくお願いいたします。

cybozu developer network 運営局様

ご連絡およびご対応ありがとうございました。

大変助かります。

早速v1.0.1を利用させて頂きます。