Java Caching System [JCS] неожиданное поведение
Доброе утро,
Я использую JCS 2.2, и у меня неожиданное поведение. Возможно, это что-то концептуальное, но лучше спросить у экспертов.
я делаю
int id = 1;
int pid = 2;
// here I have an unconfigured instance,
// but the issue will be there also with a configured lru in memory cache
CompositeCacheManager ccm = CompositeCacheManager.getUnconfiguredInstance();
CompositeCache<Integer, Room> c = ccm.getCache("test");
// I create a new instance of a "Room"
Room r = new Room(id);
// I create a cache element filled with "Room"
ICacheElement<Integer, Room> ce = new CacheElement<>("test", id, r);
// I put a "Room" inside the cache [nobody sets any room's properties ]
c.update(ce);
// here I take the original object just to set a new property
r.setRoomProperty(new RoomProperty(pid));
// here I get the object previously stored into the cache
ICacheElement<Integer, Room> ce2 = c.get(id);
// here assertions fail
assert ce2.getVal().getProperty() == null
assert ce2.getVal().getProperty() != r.getProperty()
assert !ce2.getVal().equals(r);
для меня это неожиданно. Объект внутри кэша должен быть исходным, а не измененным экземпляром. Я ожидаю, что метод обновления хранит "снимок" объекта внутри кэша, а не только ссылку.
По вашему мнению... это недоразумение [мной], неправильная конфигурация или неожиданное поведение?
[PS. Внедрение Apache Ignite в JCache работает, как я и ожидал]
есть идеи?
Спасибо всем