oracle / oracle/oci-java-sdk

Issue in OCI Java SDK Deserialization of LifecycleState Enum during ListVcns Call

Open
#693 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
243
Forks
171
Avg merge
30m
Merged PRs (30d)
4

Description

Dear Oracle Support Team,

We are encountering a critical issue while using the OCI Java SDK (version oci-java-sdk-shaded-full-3.66.0) when calling the ListVcns API.

🔍 Issue Summary
The API returns lifecycleState = "AVAILABLE" (all uppercase), but the SDK expects the enum value as Available (PascalCase). This mismatch causes a com.fasterxml.jackson.databind.exc.InvalidFormatException during deserialization of the response into the SDK model class com.oracle.bmc.core.model.Vcn.

❗ Error Stack Trace (Excerpt)
vbnet
Copy
Edit
Caused by: shaded.com.oracle.oci.javasdk.com.fasterxml.jackson.databind.exc.InvalidFormatException:
Cannot deserialize value of type com.oracle.bmc.core.model.Vcn$LifecycleState from String "AVAILABLE":
not one of the values accepted for Enum class: [Terminated, UnknownEnumValue, Available, Provisioning, Terminating, Updating]
at [Source: (InputStream); line: 1, column: 875]
(through reference chain: java.util.ArrayList[0]->com.oracle.bmc.core.model.Vcn["lifecycleState"])
🧪 Reproduction Code
java
Copy
Edit
ListVcnsRequest request = ListVcnsRequest.builder()
.compartmentId("")
.lifecycleState(Vcn.LifecycleState.Available)
.build();

ListVcnsResponse response = virtualNetworkClient.listVcns(request);
📌 Observations
The Jackson deserializer used is from the shaded OCI SDK itself:
shaded.com.oracle.oci.javasdk.com.fasterxml.jackson.databind

The API response contains "AVAILABLE" (uppercase), but the SDK expects "Available", hence deserialization fails.

Although the enum includes UnknownEnumValue, it is not triggered because Jackson fails before enum fallback logic is invoked.

This causes a client-side error with HTTP code -1 and message: "Unknown error".

✅ Expected Behavior
The SDK should either:

Allow case-insensitive enum deserialization (e.g., AVAILABLE → Available), or

Fall back to UnknownEnumValue instead of throwing an exception.

🌐 Region & Endpoint
Region: ap-hyderabad-1

Endpoint: https://iaas.ap-hyderabad-1.oraclecloud.com/20160918/vcns

📦 SDK Version
OCI Java SDK: oci-java-sdk-shaded-full-3.66.0

Kindly advise if this is a known issue or if a fix/workaround is available. If needed, we can provide the full JSON response and debug logs.

Thanks & Regards,
suriya B

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with com.oracle.bmc.core.model.Vcn.LifecycleState and the deserialization path used by the shaded OCI Java SDK, then reproduce the ListVcns call from the issue. Done means a response containing lifecycleState="AVAILABLE" no longer raises InvalidFormatException and follows the selected fallback behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
api
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.