From f67474150de32d92c216dea59bd35245ddc3cdb8 Mon Sep 17 00:00:00 2001 From: kuviman Date: Wed, 28 May 2025 01:09:50 +0400 Subject: [PATCH 1/3] Ignore indexed properties of bean --- .../com/codeforces/inmemo/ReflectionUtil.java | 11 +++++++---- .../java/com/codeforces/inmemo/InmemoTest.java | 18 ++++++++++-------- .../java/com/codeforces/inmemo/model/User.java | 4 ++++ 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/codeforces/inmemo/ReflectionUtil.java b/src/main/java/com/codeforces/inmemo/ReflectionUtil.java index bd6afe3..463ff2f 100644 --- a/src/main/java/com/codeforces/inmemo/ReflectionUtil.java +++ b/src/main/java/com/codeforces/inmemo/ReflectionUtil.java @@ -48,10 +48,13 @@ public static String getTableClassSpec(Class clazz) { StringBuilder result = new StringBuilder(); for (PropertyDescriptor propertyDescriptor : beanInfo.getPropertyDescriptors()) { - result.append(propertyDescriptor.getName()) - .append(':') - .append(propertyDescriptor.getPropertyType().getName()) - .append(','); + Class propertyType = propertyDescriptor.getPropertyType(); + if (propertyType != null) { + result.append(propertyDescriptor.getName()) + .append(':') + .append(propertyType.getName()) + .append(','); + } } return result.toString(); diff --git a/src/test/java/com/codeforces/inmemo/InmemoTest.java b/src/test/java/com/codeforces/inmemo/InmemoTest.java index 20df0d4..a8ca2db 100644 --- a/src/test/java/com/codeforces/inmemo/InmemoTest.java +++ b/src/test/java/com/codeforces/inmemo/InmemoTest.java @@ -114,15 +114,15 @@ public boolean testItem(User user) { } }; Inmemo.createTable(User.class, "ID", null, new Indices.Builder() {{ - add(Index.create("ID", Long.class, User::getId)); - }}.build(), adminFilter, true); + add(Index.create("ID", Long.class, User::getId)); + }}.build(), adminFilter, true); int size = Inmemo.size(User.class); org.junit.Assert.assertTrue(size >= USER_COUNT * 0.45 && size <= USER_COUNT * 0.55); for (User user : userDao.findAll()) { Inmemo.insertOrUpdate(user); } - org.junit.Assert.assertEquals(size, Inmemo.size(User.class)); + org.junit.Assert.assertEquals(size, Inmemo.size(User.class)); List admins = new ArrayList<>(); List nonAdmins = new ArrayList<>(); @@ -485,9 +485,9 @@ public void testEmergency() throws InterruptedException { )); add(Index.createUnique("handle", String.class, User::getHandle)); add(Index.createUnique("idAndHandle", String.class, user -> user.getId() + "," + user.getHandle(), indexValue -> { - String[] tokens = indexValue.split(","); - return new Object[]{"ID", Long.valueOf(tokens[0]), "HANDLE", tokens[1]}; - } + String[] tokens = indexValue.split(","); + return new Object[]{"ID", Long.valueOf(tokens[0]), "HANDLE", tokens[1]}; + } )); add(Index.create("FIRST_HANDLE_LETTER", String.class, tableItem -> tableItem.getHandle().substring(0, 1))); }}.build(), true); @@ -690,7 +690,7 @@ public void testJournal() throws IOException { } Map users = new HashMap<>(); - for (long id = 1; id <= USER_COUNT ; id++) { + for (long id = 1; id <= USER_COUNT; id++) { User inmemoUser = Inmemo.findOnly(true, User.class, new IndexConstraint<>("ID", id)); User dbUser = userDao.find(id); Assert.assertEquals(dbUser, inmemoUser); @@ -705,12 +705,14 @@ public void testJournal() throws IOException { }}.build(), true); } - for (long id = 1; id <= USER_COUNT ; id++) { + for (long id = 1; id <= USER_COUNT; id++) { User inmemoUser = Inmemo.findOnly(true, User.class, new IndexConstraint<>("ID", id)); User dbUser = userDao.find(id); Assert.assertEquals(dbUser, inmemoUser); Assert.assertEquals(users.get(id), inmemoUser); } + } catch (Exception e) { + System.err.println("Exception: " + e.getMessage()); } finally { Assert.assertTrue(journalFile.isFile()); Inmemo.deleteJournal(User.class); diff --git a/src/test/java/com/codeforces/inmemo/model/User.java b/src/test/java/com/codeforces/inmemo/model/User.java index 84ba4ee..252d4cc 100644 --- a/src/test/java/com/codeforces/inmemo/model/User.java +++ b/src/test/java/com/codeforces/inmemo/model/User.java @@ -99,6 +99,10 @@ public void setTShirtSize(TShirtSize tShirtSize) { this.tShirtSize = tShirtSize; } + public int getSomething(int arg) { + return arg + 2; + } + @Override public boolean equals(Object o) { if (this == o) return true; From 7dfdd269cf78a562b5fd66433b99807db80b2ec6 Mon Sep 17 00:00:00 2001 From: kuviman Date: Wed, 28 May 2025 01:29:13 +0400 Subject: [PATCH 2/3] bump version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ce0ba51..f8ce3b8 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.codeforces.inmemo inmemo - 2.0-SNAPSHOT + 2.0.1-SNAPSHOT jar inmemo From 5a3d78954ae869820d8548bc8967a46421701289 Mon Sep 17 00:00:00 2001 From: kuviman Date: Wed, 28 May 2025 13:32:36 +0400 Subject: [PATCH 3/3] Test getter with 2 args, setter with 0 args --- src/test/java/com/codeforces/inmemo/model/User.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/test/java/com/codeforces/inmemo/model/User.java b/src/test/java/com/codeforces/inmemo/model/User.java index 252d4cc..3f2d97c 100644 --- a/src/test/java/com/codeforces/inmemo/model/User.java +++ b/src/test/java/com/codeforces/inmemo/model/User.java @@ -103,6 +103,12 @@ public int getSomething(int arg) { return arg + 2; } + public int getSomethingWithTwoArgs(int arg1, int arg2) { + return arg1 + arg2; + } + + public void setSomething() {} + @Override public boolean equals(Object o) { if (this == o) return true;