Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
jayasuriya-bm-14519 opened this issue Jun 4, 2025 · 0 comments

Comments

@jayasuriya-bm-14519
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant