Skip to content

[AIT-1037] Refactored object package name to liveobjects - #1220

Merged
sacOO7 merged 2 commits into
feature/path-based-liveobjects-implementationfrom
chore/refactor-object-package-name-to-liveobjects
Jun 24, 2026
Merged

[AIT-1037] Refactored object package name to liveobjects#1220
sacOO7 merged 2 commits into
feature/path-based-liveobjects-implementationfrom
chore/refactor-object-package-name-to-liveobjects

Conversation

@sacOO7

@sacOO7sacOO7 commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Recommended Naming: liveobjects 🥇
Example: io.ably.liveobjects (or com.ably.liveobjects)
Why: It removes all ambiguity, exactly matches the Ably product name you are fetching from the docs, and completely avoids the java.lang.Object naming collision.

Summary by CodeRabbit

  • Refactor
    • LiveObjects APIs and related Kotlin/Java code were reorganized under a consistent liveobjects namespace.
    • Public types, serializers, and path/instance/value helpers now use the updated package structure.
  • Tests
    • Test packages and fixtures were aligned with the new namespace.
    • CI task names and matching test filters were updated so unit and integration checks run correctly.
  • Documentation
    • Package-level documentation was refreshed to reflect the updated LiveObjects organization.

@coderabbitai

coderabbitaiBot commented Jun 24, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

All LiveObjects public Java interfaces, Kotlin implementations, serialization helpers, test files, Gradle task registrations, and CI workflow commands are renamed from io.ably.lib.object.* to io.ably.lib.liveobjects.*. Reflective IMPLEMENTATION_CLASS constants in LiveObjectsPlugin, ObjectSerializer, LiveCounter, and LiveMap are updated to the new package paths. One behavioral change is included: ChannelBase now assigns this.object = liveObjectsPlugin.getInstance(name) instead of discarding the return value.

Changes

LiveObjects Package Rename and ChannelBase Wiring Fix

Layer / File(s)Summary
Gradle task renames and CI workflow updates
liveobjects/build.gradle.kts, .github/workflows/check.yml, .github/workflows/integration-test.yml
Test task names pluralized from runLiveObject* to runLiveObjects*; includeTestsMatching/excludeTestsMatching patterns updated to io.ably.lib.liveobjects.*; CI workflow steps updated to invoke renamed tasks.
Core Java public API types renamed
lib/src/main/java/io/ably/lib/liveobjects/LiveObjectsPlugin.java, RealtimeObject.java, Subscription.java, ValueType.java, adapter/..., state/..., package-info.java
Package declarations changed to io.ably.lib.liveobjects.*; LiveObjectsPlugin.Factory.IMPLEMENTATION_CLASS updated to load io.ably.lib.liveobjects.DefaultLiveObjectsPlugin; new top-level package-info.java added; old io.ably.lib.object.package-info.java emptied.
Message type interfaces renamed
lib/src/main/java/io/ably/lib/liveobjects/message/...
All 13 message interfaces/enums and package-info.java moved from io.ably.lib.object.message to io.ably.lib.liveobjects.message; Javadoc @link targets updated.
Serialization layer renamed
lib/src/main/java/io/ably/lib/liveobjects/serialization/..., liveobjects/src/main/kotlin/io/ably/lib/liveobjects/serialization/...
ObjectSerializer and ObjectJsonSerializer moved to io.ably.lib.liveobjects.serialization; Holder.IMPLEMENTATION_CLASS updated to DefaultObjectsSerializer new FQN; Kotlin DefaultSerialization, JsonSerialization, MsgpackSerialization packages and wire-type imports updated.
Path, Instance, and Value Java API types renamed
lib/src/main/java/io/ably/lib/liveobjects/path/..., instance/..., value/...
All path, instance, and value Java interfaces and package-info files moved to io.ably.lib.liveobjects.*; LiveCounter.IMPLEMENTATION_CLASS and LiveMap.IMPLEMENTATION_CLASS updated to the new liveobjects.value.* class names; new package-info.java files added for instance and path.
Realtime class wiring updated + ChannelBase behavioral fix
lib/src/main/java/io/ably/lib/realtime/AblyRealtime.java, Channel.java, ChannelBase.java, Connection.java, lib/src/main/java/io/ably/lib/transport/ConnectionManager.java, lib/src/main/java/io/ably/lib/types/ProtocolMessage.java
LiveObjectsPlugin import updated to io.ably.lib.liveobjects across all realtime entry points; ChannelBase now assigns this.object = liveObjectsPlugin.getInstance(name) (previously discarded); ProtocolMessage imports serializers from new namespace.
Kotlin implementation classes renamed
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/Default*.kt, Errors.kt, Helpers.kt, Utils.kt, message/..., path/..., value/...
All Kotlin Default* implementation files have package declarations and imports rewritten from backtick-quoted io.ably.lib.\object`.toio.ably.lib.liveobjects.`.
Test files namespace updated
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/...
All unit and integration test files, fixtures, and helpers migrated to io.ably.lib.liveobjects.*; TestHelpers.mockkStatic target updated to io.ably.lib.liveobjects.HelpersKt.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

The change is high-volume but almost entirely homogeneous package-declaration and import-path substitutions. The only non-mechanical change requiring careful inspection is the ChannelBase assignment fix at line 1690 and the updated IMPLEMENTATION_CLASS string literals in LiveObjectsPlugin, ObjectSerializer, LiveCounter, and LiveMap.

Possibly related PRs

  • ably/ably-java#1213: Introduces the LiveObjects public API types (Subscription, ValueType, path.*, instance.*) that this PR renames from io.ably.lib.object.* to io.ably.lib.liveobjects.*.
  • ably/ably-java#1216: Adds RealtimeObject, ObjectStateChange, ObjectStateEvent, and ChannelBase.object wiring that this PR migrates to the new io.ably.lib.liveobjects namespace and fixes the assignment.
  • ably/ably-java#1218: Introduces the ObjectSerializer/ObjectJsonSerializer serialization plumbing whose reflective IMPLEMENTATION_CLASS constants this PR updates to io.ably.lib.liveobjects.serialization.*.

Suggested reviewers

  • lawrence-forooghian

Poem

🐇 Hopping through the package tree,
From object to liveobjects — finally free!
Each import swept with a tidy paw,
IMPLEMENTATION_CLASS fixed without a flaw.
And ChannelBase now stores what it found —
The LiveObjects world is all re-bound! 🎉

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly summarizes the main change: renaming the object package to liveobjects.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/refactor-object-package-name-to-liveobjects

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions
github-actionsBottemporarily deployed to staging/pull/1220/features June 24, 2026 12:14 Inactive
@github-actions
github-actionsBottemporarily deployed to staging/pull/1220/javadoc June 24, 2026 12:15 Inactive
@sacOO7
sacOO7 marked this pull request as ready for review June 24, 2026 12:16

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
lib/src/main/java/io/ably/lib/liveobjects/Subscription.java (1)

1-1: 🗄️ Data Integrity & Integration | 🔵 Trivial

Call out this package move in the migration notes.

This changes the FQCN of a public interface, so downstream imports and any reflective lookups against io.ably.lib.object.* will break. Please make sure the release notes or migration guide spell out the old and new package names.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@lib/src/main/java/io/ably/lib/liveobjects/Subscription.java` at line 1, The
public interface Subscription has moved packages, changing its FQCN from
io.ably.lib.object.* to io.ably.lib.liveobjects.*, so update the
migration/release notes to explicitly call out the old and new package names.
Make sure the notes mention that downstream imports and any reflective lookups
using the old io.ably.lib.object path will need to be updated.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@lib/src/main/java/io/ably/lib/liveobjects/Subscription.java`:
- Line 1: The public interface Subscription has moved packages, changing its
FQCN from io.ably.lib.object.* to io.ably.lib.liveobjects.*, so update the
migration/release notes to explicitly call out the old and new package names.
Make sure the notes mention that downstream imports and any reflective lookups
using the old io.ably.lib.object path will need to be updated.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 71cef35f-339b-44e7-a166-3df32caa7086

📥 Commits

Reviewing files that changed from the base of the PR and between 0f52cca and 23efe82.

📒 Files selected for processing (116)
  • .github/workflows/check.yml
  • .github/workflows/integration-test.yml
  • java/src/main/java/io/ably/lib/realtime/Channel.java
  • lib/src/main/java/io/ably/lib/liveobjects/LiveObjectsPlugin.java
  • lib/src/main/java/io/ably/lib/liveobjects/RealtimeObject.java
  • lib/src/main/java/io/ably/lib/liveobjects/Subscription.java
  • lib/src/main/java/io/ably/lib/liveobjects/ValueType.java
  • lib/src/main/java/io/ably/lib/liveobjects/adapter/AblyClientAdapter.java
  • lib/src/main/java/io/ably/lib/liveobjects/adapter/Adapter.java
  • lib/src/main/java/io/ably/lib/liveobjects/adapter/package-info.java
  • lib/src/main/java/io/ably/lib/liveobjects/instance/Instance.java
  • lib/src/main/java/io/ably/lib/liveobjects/instance/InstanceListener.java
  • lib/src/main/java/io/ably/lib/liveobjects/instance/InstanceSubscriptionEvent.java
  • lib/src/main/java/io/ably/lib/liveobjects/instance/package-info.java
  • lib/src/main/java/io/ably/lib/liveobjects/instance/types/BinaryInstance.java
  • lib/src/main/java/io/ably/lib/liveobjects/instance/types/BooleanInstance.java
  • lib/src/main/java/io/ably/lib/liveobjects/instance/types/JsonArrayInstance.java
  • lib/src/main/java/io/ably/lib/liveobjects/instance/types/JsonObjectInstance.java
  • lib/src/main/java/io/ably/lib/liveobjects/instance/types/LiveCounterInstance.java
  • lib/src/main/java/io/ably/lib/liveobjects/instance/types/LiveMapInstance.java
  • lib/src/main/java/io/ably/lib/liveobjects/instance/types/NumberInstance.java
  • lib/src/main/java/io/ably/lib/liveobjects/instance/types/StringInstance.java
  • lib/src/main/java/io/ably/lib/liveobjects/instance/types/package-info.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/CounterCreate.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/CounterInc.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/MapClear.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/MapCreate.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/MapRemove.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/MapSet.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/ObjectData.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/ObjectDelete.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/ObjectMessage.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/ObjectOperation.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/ObjectOperationAction.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/ObjectsMapEntry.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/ObjectsMapSemantics.java
  • lib/src/main/java/io/ably/lib/liveobjects/message/package-info.java
  • lib/src/main/java/io/ably/lib/liveobjects/package-info.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/PathObject.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/PathObjectListener.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/PathObjectSubscriptionEvent.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/PathObjectSubscriptionOptions.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/package-info.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/types/BinaryPathObject.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/types/BooleanPathObject.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/types/JsonArrayPathObject.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/types/JsonObjectPathObject.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/types/LiveCounterPathObject.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/types/LiveMapPathObject.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/types/NumberPathObject.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/types/StringPathObject.java
  • lib/src/main/java/io/ably/lib/liveobjects/path/types/package-info.java
  • lib/src/main/java/io/ably/lib/liveobjects/serialization/ObjectJsonSerializer.java
  • lib/src/main/java/io/ably/lib/liveobjects/serialization/ObjectSerializer.java
  • lib/src/main/java/io/ably/lib/liveobjects/state/ObjectStateChange.java
  • lib/src/main/java/io/ably/lib/liveobjects/state/ObjectStateEvent.java
  • lib/src/main/java/io/ably/lib/liveobjects/value/LiveCounter.java
  • lib/src/main/java/io/ably/lib/liveobjects/value/LiveMap.java
  • lib/src/main/java/io/ably/lib/liveobjects/value/LiveMapValue.java
  • lib/src/main/java/io/ably/lib/liveobjects/value/package-info.java
  • lib/src/main/java/io/ably/lib/object/instance/package-info.java
  • lib/src/main/java/io/ably/lib/object/package-info.java
  • lib/src/main/java/io/ably/lib/object/path/package-info.java
  • lib/src/main/java/io/ably/lib/realtime/AblyRealtime.java
  • lib/src/main/java/io/ably/lib/realtime/ChannelBase.java
  • lib/src/main/java/io/ably/lib/realtime/Connection.java
  • lib/src/main/java/io/ably/lib/transport/ConnectionManager.java
  • lib/src/main/java/io/ably/lib/types/ProtocolMessage.java
  • liveobjects/build.gradle.kts
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/DefaultRealtimeObject.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/Errors.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/Helpers.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/Utils.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/DefaultInstance.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/DefaultInstanceSubscriptionEvent.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultBinaryInstance.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultBooleanInstance.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultJsonArrayInstance.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultJsonObjectInstance.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultLiveCounterInstance.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultLiveMapInstance.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultNumberInstance.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultStringInstance.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/message/DefaultObjectMessage.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/message/WireObjectMessage.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/DefaultPathObject.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/DefaultPathObjectSubscriptionEvent.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultBinaryPathObject.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultBooleanPathObject.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultJsonArrayPathObject.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultJsonObjectPathObject.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultLiveCounterPathObject.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultLiveMapPathObject.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultNumberPathObject.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultStringPathObject.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/serialization/DefaultSerialization.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/serialization/JsonSerialization.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/serialization/MsgpackSerialization.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/value/DefaultLiveCounter.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/value/DefaultLiveMap.kt
  • liveobjects/src/main/kotlin/io/ably/lib/liveobjects/value/ResolvedValue.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/TestUtils.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/DefaultRealtimeObjectTest.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/helpers/PayloadBuilder.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/helpers/RestObjects.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/helpers/fixtures/CounterFixtures.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/helpers/fixtures/DataFixtures.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/helpers/fixtures/MapFixtures.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/setup/IntegrationTest.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/setup/Sandbox.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/unit/HelpersTest.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/unit/ObjectMessageSerializationTest.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/unit/ObjectMessageSizeTest.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/unit/TestHelpers.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/unit/UtilsTest.kt
  • liveobjects/src/test/kotlin/io/ably/lib/liveobjects/unit/fixtures/ObjectMessageFixtures.kt
💤 Files with no reviewable changes (3)
  • lib/src/main/java/io/ably/lib/object/instance/package-info.java
  • lib/src/main/java/io/ably/lib/object/path/package-info.java
  • lib/src/main/java/io/ably/lib/object/package-info.java

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refactors the LiveObjects (typed Objects) API namespace across the codebase from io.ably.lib.object / Kotlin-escaped ``io.ably.lib.object``` to the domain-specific io.ably.lib.liveobjects`, updating production code, tests, Gradle test tasks, and CI workflows to match the new package structure and avoid `java.lang.Object` naming collisions.

Changes:

  • Renamed LiveObjects public API packages (path/instance/value/message/serialization/state) to io.ably.lib.liveobjects across Java and Kotlin sources.
  • Updated LiveObjects unit/integration test packages and Gradle test filters, and renamed Gradle tasks + CI workflow invocations accordingly.
  • Wired ChannelBase.object to the LiveObjects plugin instance when available (removing the prior TODO-style placeholder behavior).

Reviewed changes

Copilot reviewed 117 out of 117 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/unit/UtilsTest.ktUpdate test package/imports to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/unit/TestHelpers.ktUpdate test helpers imports + mockkStatic target to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/unit/ObjectMessageSizeTest.ktUpdate message-size test imports to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/unit/ObjectMessageSerializationTest.ktUpdate serialization test imports/fixtures to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/unit/HelpersTest.ktUpdate helper test imports to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/unit/fixtures/ObjectMessageFixtures.ktUpdate fixture package/imports to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/TestUtils.ktUpdate test utils package to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/setup/Sandbox.ktUpdate integration setup package/imports to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/setup/IntegrationTest.ktUpdate integration base test package/imports to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/helpers/RestObjects.ktUpdate integration helper package/imports to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/helpers/PayloadBuilder.ktUpdate payload builder imports to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/helpers/fixtures/MapFixtures.ktUpdate fixture package/imports to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/helpers/fixtures/DataFixtures.ktUpdate fixture package/imports to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/helpers/fixtures/CounterFixtures.ktUpdate fixture package/imports to liveobjects.
liveobjects/src/test/kotlin/io/ably/lib/liveobjects/integration/DefaultRealtimeObjectTest.ktUpdate integration test package/imports to liveobjects.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/value/ResolvedValue.ktMove value-resolution model under liveobjects.value.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/value/DefaultLiveMap.ktMove DefaultLiveMap implementation package to liveobjects.value.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/value/DefaultLiveCounter.ktMove DefaultLiveCounter implementation package to liveobjects.value.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/Utils.ktMove utilities to io.ably.lib.liveobjects.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/serialization/MsgpackSerialization.ktMove msgpack serializers to liveobjects.serialization.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/serialization/JsonSerialization.ktMove JSON serializers to liveobjects.serialization.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/serialization/DefaultSerialization.ktMove default serializer implementation to liveobjects.serialization.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultStringPathObject.ktMove string path object implementation to liveobjects.path.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultNumberPathObject.ktMove number path object implementation to liveobjects.path.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultLiveMapPathObject.ktMove map path object implementation to liveobjects.path.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultLiveCounterPathObject.ktMove counter path object implementation to liveobjects.path.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultJsonObjectPathObject.ktMove JSON object path object implementation to liveobjects.path.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultJsonArrayPathObject.ktMove JSON array path object implementation to liveobjects.path.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultBooleanPathObject.ktMove boolean path object implementation to liveobjects.path.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/types/DefaultBinaryPathObject.ktMove binary path object implementation to liveobjects.path.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/DefaultPathObjectSubscriptionEvent.ktMove subscription event impl to liveobjects.path.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/path/DefaultPathObject.ktMove path object implementation + imports to liveobjects.path.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/message/WireObjectMessage.ktMove wire message model to liveobjects.message.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/message/DefaultObjectMessage.ktMove default object message implementation to liveobjects.message.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultStringInstance.ktMove instance implementations to liveobjects.instance.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultNumberInstance.ktMove instance implementations to liveobjects.instance.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultLiveMapInstance.ktMove instance implementations to liveobjects.instance.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultLiveCounterInstance.ktMove instance implementations to liveobjects.instance.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultJsonObjectInstance.ktMove instance implementations to liveobjects.instance.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultJsonArrayInstance.ktMove instance implementations to liveobjects.instance.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultBooleanInstance.ktMove instance implementations to liveobjects.instance.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/types/DefaultBinaryInstance.ktMove instance implementations to liveobjects.instance.types.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/DefaultInstanceSubscriptionEvent.ktMove instance subscription event impl to liveobjects.instance.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/instance/DefaultInstance.ktMove instance core implementation to liveobjects.instance.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/Helpers.ktMove helper utilities to io.ably.lib.liveobjects.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/Errors.ktMove error types/helpers to io.ably.lib.liveobjects.
liveobjects/src/main/kotlin/io/ably/lib/liveobjects/DefaultRealtimeObject.ktMove DefaultRealtimeObject implementation to io.ably.lib.liveobjects.
liveobjects/build.gradle.ktsRename test tasks and update test filters to io.ably.lib.liveobjects.*.
lib/src/main/java/io/ably/lib/types/ProtocolMessage.javaUpdate serializer imports to io.ably.lib.liveobjects.serialization.
lib/src/main/java/io/ably/lib/transport/ConnectionManager.javaUpdate LiveObjectsPlugin import to io.ably.lib.liveobjects.
lib/src/main/java/io/ably/lib/realtime/Connection.javaUpdate LiveObjectsPlugin import to io.ably.lib.liveobjects.
lib/src/main/java/io/ably/lib/realtime/ChannelBase.javaUpdate imports and set this.object from LiveObjectsPlugin instance when present.
lib/src/main/java/io/ably/lib/realtime/AblyRealtime.javaUpdate LiveObjectsPlugin import to io.ably.lib.liveobjects.
lib/src/main/java/io/ably/lib/object/path/package-info.javaRemove old package-info (moved under io.ably.lib.liveobjects.path).
lib/src/main/java/io/ably/lib/object/package-info.javaRemove old root package-info (moved under io.ably.lib.liveobjects).
lib/src/main/java/io/ably/lib/object/instance/package-info.javaRemove old instance package-info (moved under io.ably.lib.liveobjects.instance).
lib/src/main/java/io/ably/lib/liveobjects/ValueType.javaMove ValueType to io.ably.lib.liveobjects.
lib/src/main/java/io/ably/lib/liveobjects/value/package-info.javaUpdate value package-info to io.ably.lib.liveobjects.value.
lib/src/main/java/io/ably/lib/liveobjects/value/LiveMapValue.javaMove LiveMapValue to io.ably.lib.liveobjects.value.
lib/src/main/java/io/ably/lib/liveobjects/value/LiveMap.javaUpdate reflection implementation class name to io.ably.lib.liveobjects.value.DefaultLiveMap.
lib/src/main/java/io/ably/lib/liveobjects/value/LiveCounter.javaUpdate reflection implementation class name to io.ably.lib.liveobjects.value.DefaultLiveCounter.
lib/src/main/java/io/ably/lib/liveobjects/Subscription.javaMove Subscription to io.ably.lib.liveobjects.
lib/src/main/java/io/ably/lib/liveobjects/state/ObjectStateEvent.javaMove state event types to io.ably.lib.liveobjects.state.
lib/src/main/java/io/ably/lib/liveobjects/state/ObjectStateChange.javaMove state change types to io.ably.lib.liveobjects.state.
lib/src/main/java/io/ably/lib/liveobjects/serialization/ObjectSerializer.javaMove serializer interface + reflection target FQCN to io.ably.lib.liveobjects.serialization.
lib/src/main/java/io/ably/lib/liveobjects/serialization/ObjectJsonSerializer.javaMove JSON adapter to io.ably.lib.liveobjects.serialization.
lib/src/main/java/io/ably/lib/liveobjects/RealtimeObject.javaMove RealtimeObject to io.ably.lib.liveobjects.
lib/src/main/java/io/ably/lib/liveobjects/path/types/StringPathObject.javaMove typed path API to io.ably.lib.liveobjects.path.types.
lib/src/main/java/io/ably/lib/liveobjects/path/types/package-info.javaUpdate typed path package-info to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/path/types/NumberPathObject.javaMove typed path API to io.ably.lib.liveobjects.path.types.
lib/src/main/java/io/ably/lib/liveobjects/path/types/LiveMapPathObject.javaMove typed path API + value imports to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/path/types/LiveCounterPathObject.javaMove typed path API to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/path/types/JsonObjectPathObject.javaMove typed path API to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/path/types/JsonArrayPathObject.javaMove typed path API to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/path/types/BooleanPathObject.javaMove typed path API to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/path/types/BinaryPathObject.javaMove typed path API to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/path/PathObjectSubscriptionOptions.javaMove path subscription options to io.ably.lib.liveobjects.path.
lib/src/main/java/io/ably/lib/liveobjects/path/PathObjectSubscriptionEvent.javaMove path subscription event to io.ably.lib.liveobjects.path.
lib/src/main/java/io/ably/lib/liveobjects/path/PathObjectListener.javaMove path listener to io.ably.lib.liveobjects.path.
lib/src/main/java/io/ably/lib/liveobjects/path/PathObject.javaMove path root interface to io.ably.lib.liveobjects.path.
lib/src/main/java/io/ably/lib/liveobjects/path/package-info.javaAdd new path package-info under io.ably.lib.liveobjects.path.
lib/src/main/java/io/ably/lib/liveobjects/package-info.javaAdd new root package-info under io.ably.lib.liveobjects.
lib/src/main/java/io/ably/lib/liveobjects/message/package-info.javaUpdate message package-info to io.ably.lib.liveobjects.message.
lib/src/main/java/io/ably/lib/liveobjects/message/ObjectsMapSemantics.javaMove message model to io.ably.lib.liveobjects.message.
lib/src/main/java/io/ably/lib/liveobjects/message/ObjectsMapEntry.javaMove message model to io.ably.lib.liveobjects.message.
lib/src/main/java/io/ably/lib/liveobjects/message/ObjectOperationAction.javaMove message model to io.ably.lib.liveobjects.message.
lib/src/main/java/io/ably/lib/liveobjects/message/ObjectOperation.javaMove message model to io.ably.lib.liveobjects.message.
lib/src/main/java/io/ably/lib/liveobjects/message/ObjectMessage.javaMove message model and update subscription-event links.
lib/src/main/java/io/ably/lib/liveobjects/message/ObjectDelete.javaMove message model to io.ably.lib.liveobjects.message.
lib/src/main/java/io/ably/lib/liveobjects/message/ObjectData.javaMove message model to io.ably.lib.liveobjects.message.
lib/src/main/java/io/ably/lib/liveobjects/message/MapSet.javaMove message model to io.ably.lib.liveobjects.message.
lib/src/main/java/io/ably/lib/liveobjects/message/MapRemove.javaMove message model to io.ably.lib.liveobjects.message.
lib/src/main/java/io/ably/lib/liveobjects/message/MapCreate.javaMove message model to io.ably.lib.liveobjects.message.
lib/src/main/java/io/ably/lib/liveobjects/message/MapClear.javaMove message model to io.ably.lib.liveobjects.message.
lib/src/main/java/io/ably/lib/liveobjects/message/CounterInc.javaMove message model to io.ably.lib.liveobjects.message.
lib/src/main/java/io/ably/lib/liveobjects/message/CounterCreate.javaMove message model to io.ably.lib.liveobjects.message.
lib/src/main/java/io/ably/lib/liveobjects/LiveObjectsPlugin.javaMove plugin interface to io.ably.lib.liveobjects and update reflection FQCN.
lib/src/main/java/io/ably/lib/liveobjects/instance/types/StringInstance.javaMove typed instance API to io.ably.lib.liveobjects.instance.types.
lib/src/main/java/io/ably/lib/liveobjects/instance/types/package-info.javaUpdate typed instance package-info to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/instance/types/NumberInstance.javaMove typed instance API to io.ably.lib.liveobjects.instance.types.
lib/src/main/java/io/ably/lib/liveobjects/instance/types/LiveMapInstance.javaMove typed instance API + value imports to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/instance/types/LiveCounterInstance.javaMove typed instance API to io.ably.lib.liveobjects.instance.types.
lib/src/main/java/io/ably/lib/liveobjects/instance/types/JsonObjectInstance.javaMove typed instance API to io.ably.lib.liveobjects.instance.types.
lib/src/main/java/io/ably/lib/liveobjects/instance/types/JsonArrayInstance.javaMove typed instance API to io.ably.lib.liveobjects.instance.types.
lib/src/main/java/io/ably/lib/liveobjects/instance/types/BooleanInstance.javaMove typed instance API to io.ably.lib.liveobjects.instance.types.
lib/src/main/java/io/ably/lib/liveobjects/instance/types/BinaryInstance.javaMove typed instance API to io.ably.lib.liveobjects.instance.types.
lib/src/main/java/io/ably/lib/liveobjects/instance/package-info.javaAdd new instance package-info under io.ably.lib.liveobjects.instance.
lib/src/main/java/io/ably/lib/liveobjects/instance/InstanceSubscriptionEvent.javaMove instance subscription event to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/instance/InstanceListener.javaMove instance listener to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/instance/Instance.javaMove instance root interface to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/adapter/package-info.javaUpdate adapter package-info to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/adapter/Adapter.javaMove adapter implementation to new namespace.
lib/src/main/java/io/ably/lib/liveobjects/adapter/AblyClientAdapter.javaMove adapter interface to new namespace.
java/src/main/java/io/ably/lib/realtime/Channel.javaUpdate LiveObjectsPlugin import for Java artifact.
android/src/main/java/io/ably/lib/realtime/Channel.javaUpdate LiveObjectsPlugin import for Android artifact.
.github/workflows/integration-test.ymlUpdate CI to call renamed Gradle integration test task.
.github/workflows/check.ymlUpdate CI to call renamed Gradle unit test task.
Comments suppressed due to low confidence (4)

lib/src/main/java/io/ably/lib/liveobjects/LiveObjectsPlugin.java:90

  • LiveObjects plugin initialization is hard-coded to reflectively load io.ably.lib.liveobjects.DefaultLiveObjectsPlugin, but there is no such implementation class in this repository (and switching the FQCN will also prevent loading older io.ably.lib.object.DefaultLiveObjectsPlugin implementations). This means LiveObjects will silently stay unavailable even when the LiveObjects implementation jar is present unless the implementation class name matches exactly; consider adding backwards-compatible fallback (and/or ensure the implementation class exists under the new package).
    lib/src/main/java/io/ably/lib/liveobjects/message/ObjectMessage.java:11
  • This Javadoc block was partially updated, but it still references the old io.ably.lib.object.message package later in the comment (now io.ably.lib.liveobjects.message).
    liveobjects/src/main/kotlin/io/ably/lib/liveobjects/message/WireObjectMessage.kt:1
  • The KDoc still references the old public API package name io.ably.lib.object.message (now io.ably.lib.liveobjects.message).
    lib/src/main/java/io/ably/lib/liveobjects/adapter/AblyClientAdapter.java:1
  • Javadoc still calls this the adapter for the io.ably.lib.object API; after the rename it should reference io.ably.lib.liveobjects.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@sacOO7
sacOO7 requested a review from ttypicJune 24, 2026 13:36
@sacOO7sacOO7 changed the title [AIT-1037] Refactored object package name to domain specific liveobjects[AIT-1037] Refactored object package name to liveobjectsJun 24, 2026
@sacOO7
sacOO7 merged commit b6793df into feature/path-based-liveobjects-implementationJun 24, 2026
18 of 20 checks passed
@sacOO7
sacOO7 deleted the chore/refactor-object-package-name-to-liveobjects branch June 24, 2026 17:18
@sacOO7sacOO7 mentioned this pull request Jul 13, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sacOO7@ttypic