From 2d505817cef677c523dc27a521a709d983cc26e5 Mon Sep 17 00:00:00 2001 From: devozerov Date: Thu, 20 Apr 2017 11:31:14 +0300 Subject: [PATCH 01/12] WIP. --- .../examples/IndexingBridgeMethodTest.java | 93 ------------------- .../IgniteExamplesJ8SelfTestSuite.java | 2 - .../apache/ignite/tests/pojos/Product.java | 10 +- .../ignite/tests/pojos/ProductOrder.java | 10 +- 4 files changed, 10 insertions(+), 105 deletions(-) delete mode 100644 examples/src/test/java8/org/apache/ignite/java8/examples/IndexingBridgeMethodTest.java diff --git a/examples/src/test/java8/org/apache/ignite/java8/examples/IndexingBridgeMethodTest.java b/examples/src/test/java8/org/apache/ignite/java8/examples/IndexingBridgeMethodTest.java deleted file mode 100644 index 2837ed683eb97..0000000000000 --- a/examples/src/test/java8/org/apache/ignite/java8/examples/IndexingBridgeMethodTest.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.java8.examples; - - -import org.apache.ignite.Ignite; -import org.apache.ignite.IgniteCache; -import org.apache.ignite.cache.query.SqlFieldsQuery; -import org.apache.ignite.cache.query.annotations.QuerySqlField; -import org.apache.ignite.configuration.CacheConfiguration; -import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; - -/** - * Test covering bridge methods changes in Java 8. - */ -public class IndexingBridgeMethodTest extends GridCommonAbstractTest { - /** - * @throws Exception If failed. - */ - public void testBridgeMethod() throws Exception { - Ignite ignite = startGrid(); - - CacheConfiguration ccfg = new CacheConfiguration<>(); - - ccfg.setName("mytype"); - ccfg.setIndexedTypes(Integer.class, MyType.class); - - IgniteCache c = ignite.getOrCreateCache(ccfg); - - for (int i = 0; i < 100; i++) - c.put(i, new MyType(i)); - - assertEquals(100L, c.query(new SqlFieldsQuery( - "select count(*) from MyType")).getAll().get(0).get(0)); - assertEquals(15, c.query(new SqlFieldsQuery( - "select id from MyType where _key = 15")).getAll().get(0).get(0)); - assertEquals(25, c.query(new SqlFieldsQuery( - "select _key from MyType where id = 25")).getAll().get(0).get(0)); - } - - /** {@inheritDoc} */ - @Override protected void afterTestsStopped() throws Exception { - stopAllGrids(); - } - - /** - * Classes implementing this method, will have bridge method. - */ - private static interface HasId { - /** - * @return ID. - */ - public T getId(); - } - - /** - * - */ - private static class MyType implements HasId { - /** */ - private int id; - - /** - * @param id Id. - */ - private MyType(int id) { - this.id = id; - } - - /** - * @return ID. - */ - @QuerySqlField(index = true) - @Override public Integer getId() { - return id; - } - } -} diff --git a/examples/src/test/java8/org/apache/ignite/java8/testsuites/IgniteExamplesJ8SelfTestSuite.java b/examples/src/test/java8/org/apache/ignite/java8/testsuites/IgniteExamplesJ8SelfTestSuite.java index 7b62ea8ffbd54..9a5f36adf8c75 100644 --- a/examples/src/test/java8/org/apache/ignite/java8/testsuites/IgniteExamplesJ8SelfTestSuite.java +++ b/examples/src/test/java8/org/apache/ignite/java8/testsuites/IgniteExamplesJ8SelfTestSuite.java @@ -24,7 +24,6 @@ import org.apache.ignite.java8.examples.CacheExamplesSelfTest; import org.apache.ignite.java8.examples.EventsExamplesMultiNodeSelfTest; import org.apache.ignite.java8.examples.EventsExamplesSelfTest; -import org.apache.ignite.java8.examples.IndexingBridgeMethodTest; import org.apache.ignite.java8.examples.MessagingExamplesSelfTest; import org.apache.ignite.testframework.GridTestUtils; @@ -46,7 +45,6 @@ public static TestSuite suite() throws Exception { TestSuite suite = new TestSuite("Ignite Examples Test Suite"); - suite.addTest(new TestSuite(IndexingBridgeMethodTest.class)); suite.addTest(new TestSuite(CacheExamplesSelfTest.class)); suite.addTest(new TestSuite(BasicExamplesSelfTest.class)); diff --git a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Product.java b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Product.java index f8eadf4291cc0..a71ba1ff384b3 100644 --- a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Product.java +++ b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Product.java @@ -24,18 +24,23 @@ */ public class Product { /** */ + @QuerySqlField(index = true) private long id; /** */ + @QuerySqlField private String type; /** */ + @QuerySqlField(index = true) private String title; /** */ + @QuerySqlField private String description; /** */ + @QuerySqlField private float price; /** */ @@ -72,7 +77,6 @@ public void setId(long id) { } /** */ - @QuerySqlField(index = true) public long getId() { return id; } @@ -83,7 +87,6 @@ public void setType(String type) { } /** */ - @QuerySqlField public String getType() { return type; } @@ -94,7 +97,6 @@ public void setTitle(String title) { } /** */ - @QuerySqlField(index = true) public String getTitle() { return title; } @@ -105,7 +107,6 @@ public void setDescription(String description) { } /** */ - @QuerySqlField public String getDescription() { return description; } @@ -116,7 +117,6 @@ public void setPrice(float price) { } /** */ - @QuerySqlField public float getPrice() { return price; } diff --git a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/ProductOrder.java b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/ProductOrder.java index bafc8f3ca9e8b..d14a0d140dde1 100644 --- a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/ProductOrder.java +++ b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/ProductOrder.java @@ -34,18 +34,23 @@ public class ProductOrder { private static final DateFormat FULL_FORMAT = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss:S"); /** */ + @QuerySqlField(index = true) private long id; /** */ + @QuerySqlField(index = true) private long productId; /** */ + @QuerySqlField private Date date; /** */ + @QuerySqlField private int amount; /** */ + @QuerySqlField private float price; /** */ @@ -91,7 +96,6 @@ public void setId(long id) { } /** */ - @QuerySqlField(index = true) public long getId() { return id; } @@ -102,7 +106,6 @@ public void setProductId(long productId) { } /** */ - @QuerySqlField(index = true) public long getProductId() { return productId; } @@ -113,7 +116,6 @@ public void setDate(Date date) { } /** */ - @QuerySqlField public Date getDate() { return date; } @@ -124,7 +126,6 @@ public void setAmount(int amount) { } /** */ - @QuerySqlField public int getAmount() { return amount; } @@ -135,7 +136,6 @@ public void setPrice(float price) { } /** */ - @QuerySqlField public float getPrice() { return price; } From 214c665beec3e50ec78ed1f6aa1f5a8a7f07bd57 Mon Sep 17 00:00:00 2001 From: tledkov-gridgain Date: Thu, 20 Apr 2017 13:32:51 +0300 Subject: [PATCH 02/12] IGNITE-5036: save the progress --- .../org/apache/ignite/tests/pojos/Person.java | 9 +++++-- .../query/annotations/QuerySqlField.java | 2 +- .../cache/GridCacheQueryTestValue.java | 2 +- ...gniteCacheAbstractFieldsQuerySelfTest.java | 27 +------------------ .../cache/IgniteCacheDistributedJoinTest.java | 6 ++--- 5 files changed, 13 insertions(+), 33 deletions(-) diff --git a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Person.java b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Person.java index 16b64bda2f768..3d43cffab6caf 100644 --- a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Person.java +++ b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Person.java @@ -39,6 +39,10 @@ public class Person implements Externalizable { /** */ private String lastName; + /** */ + @QuerySqlField + private String fullName; + /** */ private int age; @@ -178,6 +182,7 @@ public long getPersonNumber() { @SuppressWarnings("UnusedDeclaration") public void setFirstName(String name) { firstName = name; + fullName = firstName + " " + lastName; } /** */ @@ -190,6 +195,7 @@ public String getFirstName() { @SuppressWarnings("UnusedDeclaration") public void setLastName(String name) { lastName = name; + fullName = firstName + " " + lastName; } /** */ @@ -200,9 +206,8 @@ public String getLastName() { /** */ @SuppressWarnings("UnusedDeclaration") - @QuerySqlField public String getFullName() { - return firstName + " " + lastName; + return fullName; } /** */ diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QuerySqlField.java b/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QuerySqlField.java index 48402b5eddf4e..94dbea1013e5d 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QuerySqlField.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QuerySqlField.java @@ -31,7 +31,7 @@ */ @Documented @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD, ElementType.FIELD}) +@Target({ElementType.FIELD}) public @interface QuerySqlField { /** * Specifies whether cache should maintain an index for this field or not. diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheQueryTestValue.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheQueryTestValue.java index 4d19b1ac48b41..116049fa3e8e7 100644 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheQueryTestValue.java +++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheQueryTestValue.java @@ -32,6 +32,7 @@ public class GridCacheQueryTestValue implements Serializable { private String field1; /** */ + @QuerySqlField private int field2; /** */ @@ -72,7 +73,6 @@ public void setField1(String field1) { * * @return Field. */ - @QuerySqlField public int getField2() { return field2; } diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java index 8c8828d1313f5..508dac923dae8 100644 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java +++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java @@ -310,7 +310,7 @@ else if (orgCache.getName().equals(meta.cacheName())) { Map fields = meta.fields("Organization"); assert fields != null; - assertEquals("Fields: " + fields, 5, fields.size()); + assertEquals("Fields: " + fields, 4, fields.size()); if (binaryMarshaller) { assert Object.class.getName().equals(fields.get("_VAL")); @@ -857,23 +857,6 @@ public void testPaginationIteratorKeepAll() throws Exception { } } - /** - * @throws Exception If failed. - */ - public void testMethodAnnotationWithoutGet() throws Exception { - if (!binaryMarshaller) { - QueryCursor> qry = - orgCache.query(sqlFieldsQuery("select methodField from Organization where methodField='name-A'") - .setPageSize(10)); - - List> flds = qry.getAll(); - - assertEquals(1, flds.size()); - - assertEquals("name-A", flds.get(0).get(0)); - } - } - /** * @throws Exception If failed. */ @@ -1060,14 +1043,6 @@ private Organization(int id, String name) { this.name = name; } - /** - * @return Generated method value. - */ - @QuerySqlField - public String methodField() { - return "name-" + name; - } - /** {@inheritDoc} */ @Override public boolean equals(Object o) { if (this == o) diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheDistributedJoinTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheDistributedJoinTest.java index a553c3f577eb0..e69b5ec070c17 100644 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheDistributedJoinTest.java +++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheDistributedJoinTest.java @@ -234,12 +234,15 @@ public void testJoins() throws Exception { */ public static class X { /** */ + @QuerySqlField(index = true) public long a; /** */ + @QuerySqlField(index = true) public long b; /** */ + @QuerySqlField(index = true) public long c; /** @@ -254,19 +257,16 @@ public X(int a, int b, int c) { } /** */ - @QuerySqlField(index = true) public long getA() { return a; } /** */ - @QuerySqlField(index = true) public long getB() { return b; } /** */ - @QuerySqlField(index = true) public long getC() { return c; } From b2a420f04075822682e1101d7776041e62dbf88b Mon Sep 17 00:00:00 2001 From: tledkov-gridgain Date: Thu, 20 Apr 2017 13:41:33 +0300 Subject: [PATCH 03/12] IGNITE-5036: save the progress --- .../cache/IgniteCacheAbstractFieldsQuerySelfTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java index 508dac923dae8..fedeef6d674a2 100644 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java +++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java @@ -605,7 +605,7 @@ public void testSelectAllJoined() throws Exception { int cnt = 0; for (List row : res) { - assertEquals(10, row.size()); + assertEquals(9, row.size()); if (cnt == 0) { assert new AffinityKey<>("p1", "o1").equals(row.get(0)); From 564e59f71482ef0791c4a6d18b50b12cb463d516 Mon Sep 17 00:00:00 2001 From: tledkov-gridgain Date: Fri, 21 Apr 2017 11:34:55 +0300 Subject: [PATCH 04/12] IGNITE-5036: save the progress --- .../configuration/CacheConfiguration.java | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java index d37834336e8a0..652c3cc451913 100644 --- a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java @@ -2148,32 +2148,6 @@ private static void processAnnotationsInClass(boolean key, Class cls, TypeDes processAnnotation(key, sqlAnn, txtAnn, cls, c, field.getType(), prop, type); } } - - for (Method mtd : c.getDeclaredMethods()) { - if (mtd.isBridge()) - continue; - - QuerySqlField sqlAnn = mtd.getAnnotation(QuerySqlField.class); - QueryTextField txtAnn = mtd.getAnnotation(QueryTextField.class); - - if (sqlAnn != null || txtAnn != null) { - if (mtd.getParameterTypes().length != 0) - throw new CacheException("Getter with QuerySqlField " + - "annotation cannot have parameters: " + mtd); - - ClassProperty prop = new ClassProperty(mtd); - - prop.parent(parent); - - // Add parent property before its possible nested properties so that - // resulting parent column comes before columns corresponding to those - // nested properties in the resulting table - that way nested - // properties override will happen properly (first parent, then children). - type.addProperty(prop, key, true); - - processAnnotation(key, sqlAnn, txtAnn, cls, c, mtd.getReturnType(), prop, type); - } - } } } From 53e07627f1e72dbe3e7594e805a56d9fa3522e42 Mon Sep 17 00:00:00 2001 From: tledkov-gridgain Date: Mon, 24 Apr 2017 15:28:39 +0300 Subject: [PATCH 05/12] IGNITE-5036: cassandra: save the progress --- .../persistence/KeyPersistenceSettings.java | 20 +++++++++++++------ .../cassandra/persistence/PojoField.java | 9 +++------ .../cassandra/persistence/PojoKeyField.java | 5 +++-- .../cassandra/persistence/PojoValueField.java | 5 +++-- .../persistence/ValuePersistenceSettings.java | 19 +++++++++++++----- 5 files changed, 37 insertions(+), 21 deletions(-) diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java index c614abfbeb804..968ba12ee5ca0 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java @@ -18,6 +18,7 @@ package org.apache.ignite.cache.store.cassandra.persistence; import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; import java.util.LinkedList; import java.util.List; @@ -214,13 +215,20 @@ private List detectFields(Element el, List descri if (el == null) { for (PropertyDescriptor desc : descriptors) { - boolean valid = desc.getWriteMethod() != null || - desc.getReadMethod().getAnnotation(QuerySqlField.class) != null || - desc.getReadMethod().getAnnotation(AffinityKeyMapped.class) != null; + try { + Field f = getJavaClass().getField(desc.getName()); - // Skip POJO field if it's read-only and is not annotated with @QuerySqlField or @AffinityKeyMapped. - if (valid) - list.add(new PojoKeyField(desc)); + QuerySqlField sqlField = f.getAnnotation(QuerySqlField.class); + + boolean valid = desc.getWriteMethod() != null || sqlField != null; + + // Skip POJO field if it's read-only and is not annotated with @QuerySqlField or @AffinityKeyMapped. + if (valid) + list.add(new PojoKeyField(desc, sqlField)); + } + catch (NoSuchFieldException e) { + // No-op. + } } return list; diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoField.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoField.java index 99b96d5b35c4a..936cfe8099159 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoField.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoField.java @@ -82,17 +82,14 @@ public PojoField(Element el, Class pojoCls) { * Creates instance of {@link PojoField} from its property descriptor. * * @param desc Field property descriptor. + * @param sqlField annotation object. */ - public PojoField(PropertyDescriptor desc) { + public PojoField(PropertyDescriptor desc, QuerySqlField sqlField) { this.name = desc.getName(); Method rdMthd = desc.getReadMethod(); - QuerySqlField sqlField = rdMthd != null && rdMthd.getAnnotation(QuerySqlField.class) != null - ? rdMthd.getAnnotation(QuerySqlField.class) - : desc.getWriteMethod() == null ? null : desc.getWriteMethod().getAnnotation(QuerySqlField.class); - - col = sqlField != null && sqlField.name() != null && + col = sqlField.name() != null && !sqlField.name().trim().isEmpty() ? sqlField.name() : name.toLowerCase(); init(desc); diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoKeyField.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoKeyField.java index ec3741155faf6..ace529de25081 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoKeyField.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoKeyField.java @@ -65,9 +65,10 @@ public PojoKeyField(Element el, Class pojoCls) { * Constructs Ignite cache key POJO object descriptor. * * @param desc property descriptor. + * @param sqlField annotation object. */ - public PojoKeyField(PropertyDescriptor desc) { - super(desc); + public PojoKeyField(PropertyDescriptor desc, QuerySqlField sqlField) { + super(desc, sqlField); } /** diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoValueField.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoValueField.java index fcdd408e3b1ef..d833875072637 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoValueField.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoValueField.java @@ -82,9 +82,10 @@ public PojoValueField(Element el, Class pojoCls) { * Constructs Ignite cache value field descriptor. * * @param desc field property descriptor. + * @param sqlField annotation object. */ - public PojoValueField(PropertyDescriptor desc) { - super(desc); + public PojoValueField(PropertyDescriptor desc, QuerySqlField sqlField) { + super(desc, sqlField); } /** {@inheritDoc} */ diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/ValuePersistenceSettings.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/ValuePersistenceSettings.java index f117fb6f1287d..c792395f799dd 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/ValuePersistenceSettings.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/ValuePersistenceSettings.java @@ -18,6 +18,7 @@ package org.apache.ignite.cache.store.cassandra.persistence; import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -86,13 +87,21 @@ private List detectFields(NodeList fieldNodes) { if (fieldNodes == null || fieldNodes.getLength() == 0) { List primitivePropDescriptors = PropertyMappingHelper.getPojoPropertyDescriptors(getJavaClass(), true); + for (PropertyDescriptor desc : primitivePropDescriptors) { - boolean valid = desc.getWriteMethod() != null || - desc.getReadMethod().getAnnotation(QuerySqlField.class) != null; - // Skip POJO field if it's read-only and is not annotated with @QuerySqlField. - if (valid) - list.add(new PojoValueField(desc)); + try { + Field f = getJavaClass().getField(desc.getName()); + + QuerySqlField sqlField = f.getAnnotation(QuerySqlField.class); + + // Skip POJO field if it's read-only and is not annotated with @QuerySqlField. + if (desc.getWriteMethod() != null || sqlField != null) + list.add(new PojoValueField(desc, sqlField)); + } + catch (NoSuchFieldException e) { + // No-op. + } } return list; From e27054f9cc430ce8d3541129efffe5b7e0ea523f Mon Sep 17 00:00:00 2001 From: tledkov-gridgain Date: Mon, 24 Apr 2017 16:28:10 +0300 Subject: [PATCH 06/12] IGNITE-5036: cassandra: save the progress --- .../test/java/org/apache/ignite/tests/pojos/ProductOrder.java | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/ProductOrder.java b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/ProductOrder.java index d14a0d140dde1..f58552815ff7b 100644 --- a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/ProductOrder.java +++ b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/ProductOrder.java @@ -141,7 +141,6 @@ public float getPrice() { } /** */ - @QuerySqlField public String getDayMillisecond() { return FORMAT.format(date); } From 732b6c8850a84a12536ff2b38964010e1c3d20ea Mon Sep 17 00:00:00 2001 From: tledkov-gridgain Date: Mon, 24 Apr 2017 17:16:11 +0300 Subject: [PATCH 07/12] IGNITE-5036: cassandra: save the progress --- .../persistence/KeyPersistenceSettings.java | 17 +++++++++-------- .../store/cassandra/persistence/PojoField.java | 4 +--- .../persistence/ValuePersistenceSettings.java | 13 +++++++------ 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java index 968ba12ee5ca0..715aac5aa24e7 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java @@ -215,20 +215,20 @@ private List detectFields(Element el, List descri if (el == null) { for (PropertyDescriptor desc : descriptors) { - try { - Field f = getJavaClass().getField(desc.getName()); - - QuerySqlField sqlField = f.getAnnotation(QuerySqlField.class); + QuerySqlField sqlField = null; - boolean valid = desc.getWriteMethod() != null || sqlField != null; + try { + Field f = getJavaClass().getDeclaredField(desc.getName()); - // Skip POJO field if it's read-only and is not annotated with @QuerySqlField or @AffinityKeyMapped. - if (valid) - list.add(new PojoKeyField(desc, sqlField)); + sqlField = f.getAnnotation(QuerySqlField.class); } catch (NoSuchFieldException e) { // No-op. } + + // Skip POJO field if it's read-only and is not annotated with @QuerySqlField or @AffinityKeyMapped. + if (desc.getWriteMethod() != null || sqlField != null) + list.add(new PojoKeyField(desc, sqlField)); } return list; @@ -289,6 +289,7 @@ private List getPartitionKeyDescriptors() { } /** + * @param partKeyFields List of fields. * @return POJO field descriptors for cluster key. */ private List getClusterKeyDescriptors(List partKeyFields) { diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoField.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoField.java index 936cfe8099159..6cfba371d07ed 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoField.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoField.java @@ -87,9 +87,7 @@ public PojoField(Element el, Class pojoCls) { public PojoField(PropertyDescriptor desc, QuerySqlField sqlField) { this.name = desc.getName(); - Method rdMthd = desc.getReadMethod(); - - col = sqlField.name() != null && + col = sqlField != null && sqlField.name() != null && !sqlField.name().trim().isEmpty() ? sqlField.name() : name.toLowerCase(); init(desc); diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/ValuePersistenceSettings.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/ValuePersistenceSettings.java index c792395f799dd..ac36a3223b644 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/ValuePersistenceSettings.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/ValuePersistenceSettings.java @@ -89,19 +89,20 @@ private List detectFields(NodeList fieldNodes) { List primitivePropDescriptors = PropertyMappingHelper.getPojoPropertyDescriptors(getJavaClass(), true); for (PropertyDescriptor desc : primitivePropDescriptors) { + QuerySqlField sqlField = null; try { - Field f = getJavaClass().getField(desc.getName()); + Field f = getJavaClass().getDeclaredField(desc.getName()); - QuerySqlField sqlField = f.getAnnotation(QuerySqlField.class); - - // Skip POJO field if it's read-only and is not annotated with @QuerySqlField. - if (desc.getWriteMethod() != null || sqlField != null) - list.add(new PojoValueField(desc, sqlField)); + sqlField = f.getAnnotation(QuerySqlField.class); } catch (NoSuchFieldException e) { // No-op. } + + // Skip POJO field if it's read-only and is not annotated with @QuerySqlField. + if (desc.getWriteMethod() != null || sqlField != null) + list.add(new PojoValueField(desc, sqlField)); } return list; From 504890f3182085b304166a88c4c965e1d5a12cbb Mon Sep 17 00:00:00 2001 From: tledkov-gridgain Date: Mon, 24 Apr 2017 17:37:41 +0300 Subject: [PATCH 08/12] IGNITE-5036: the progress --- .../apache/ignite/internal/jdbc2/JdbcResultSetSelfTest.java | 2 +- .../apache/ignite/cache/query/annotations/QueryTextField.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcResultSetSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcResultSetSelfTest.java index 64a077e8aa41d..8fb651d1481d5 100644 --- a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcResultSetSelfTest.java +++ b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcResultSetSelfTest.java @@ -654,10 +654,10 @@ private static class BaseTestObject implements Serializable { protected boolean boolVal3; /** */ + @QuerySqlField(index = false) protected boolean boolVal4; /** */ - @QuerySqlField(index = false) public boolean isBoolVal4() { return boolVal4; } diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QueryTextField.java b/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QueryTextField.java index 55809b6188844..1e01b6ad0572d 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QueryTextField.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/query/annotations/QueryTextField.java @@ -25,14 +25,14 @@ import org.apache.ignite.internal.processors.cache.query.CacheQuery; /** - * Annotation for fields or getters to be indexed for full text + * Annotation for fields to be indexed for full text * search using Lucene. For more information * refer to {@link CacheQuery} documentation. * @see CacheQuery */ @Documented @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE}) +@Target({ElementType.FIELD, ElementType.TYPE}) public @interface QueryTextField { // No-op. } \ No newline at end of file From f9825df845cd750aa1453901d327ed1ad325371b Mon Sep 17 00:00:00 2001 From: tledkov-gridgain Date: Tue, 25 Apr 2017 14:31:26 +0300 Subject: [PATCH 09/12] IGNITE-5036: cassandra: restore checking the AffinityKeyMapper --- .../cassandra/persistence/KeyPersistenceSettings.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java index 715aac5aa24e7..75e341d676a13 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java @@ -217,17 +217,22 @@ private List detectFields(Element el, List descri for (PropertyDescriptor desc : descriptors) { QuerySqlField sqlField = null; + boolean valid = false; + try { Field f = getJavaClass().getDeclaredField(desc.getName()); sqlField = f.getAnnotation(QuerySqlField.class); + + valid = desc.getWriteMethod() != null || sqlField != null + || f.getAnnotation(AffinityKeyMapped.class) != null; } catch (NoSuchFieldException e) { // No-op. } // Skip POJO field if it's read-only and is not annotated with @QuerySqlField or @AffinityKeyMapped. - if (desc.getWriteMethod() != null || sqlField != null) + if (valid) list.add(new PojoKeyField(desc, sqlField)); } From 8c4ff5090a949a6b3054f9948770b6f54a4ff00a Mon Sep 17 00:00:00 2001 From: tledkov-gridgain Date: Tue, 25 Apr 2017 14:37:04 +0300 Subject: [PATCH 10/12] IGNITE-5036: cassandra: restore checking the AffinityKeyMapper --- .../store/cassandra/persistence/KeyPersistenceSettings.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java index 75e341d676a13..e0ff13e44dd02 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java @@ -224,15 +224,14 @@ private List detectFields(Element el, List descri sqlField = f.getAnnotation(QuerySqlField.class); - valid = desc.getWriteMethod() != null || sqlField != null - || f.getAnnotation(AffinityKeyMapped.class) != null; + valid = sqlField != null || f.getAnnotation(AffinityKeyMapped.class) != null; } catch (NoSuchFieldException e) { // No-op. } // Skip POJO field if it's read-only and is not annotated with @QuerySqlField or @AffinityKeyMapped. - if (valid) + if (valid || desc.getWriteMethod() != null) list.add(new PojoKeyField(desc, sqlField)); } From 1a7de48ff4e2d16dddb6abb2d7c0e53b2a7f180f Mon Sep 17 00:00:00 2001 From: tledkov-gridgain Date: Tue, 25 Apr 2017 15:06:00 +0300 Subject: [PATCH 11/12] IGNITE-5036: cassandra: remove AffinityKeyMapper & QuerySqlField support --- .../persistence/KeyPersistenceSettings.java | 22 +++---------------- .../cassandra/persistence/PojoField.java | 18 ++------------- .../cassandra/persistence/PojoKeyField.java | 12 ++-------- .../cassandra/persistence/PojoValueField.java | 11 ++-------- .../persistence/ValuePersistenceSettings.java | 22 +++++-------------- .../org/apache/ignite/tests/pojos/Person.java | 1 - .../apache/ignite/tests/pojos/Product.java | 5 ----- .../ignite/tests/pojos/ProductOrder.java | 5 ----- 8 files changed, 14 insertions(+), 82 deletions(-) diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java index e0ff13e44dd02..e4902649ec5ce 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java @@ -18,13 +18,11 @@ package org.apache.ignite.cache.store.cassandra.persistence; import java.beans.PropertyDescriptor; -import java.lang.reflect.Field; import java.util.LinkedList; import java.util.List; import org.apache.ignite.IgniteException; import org.apache.ignite.cache.affinity.AffinityKeyMapped; -import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.store.cassandra.common.PropertyMappingHelper; import org.w3c.dom.Element; import org.w3c.dom.NodeList; @@ -215,24 +213,10 @@ private List detectFields(Element el, List descri if (el == null) { for (PropertyDescriptor desc : descriptors) { - QuerySqlField sqlField = null; - boolean valid = false; - - try { - Field f = getJavaClass().getDeclaredField(desc.getName()); - - sqlField = f.getAnnotation(QuerySqlField.class); - - valid = sqlField != null || f.getAnnotation(AffinityKeyMapped.class) != null; - } - catch (NoSuchFieldException e) { - // No-op. - } - - // Skip POJO field if it's read-only and is not annotated with @QuerySqlField or @AffinityKeyMapped. - if (valid || desc.getWriteMethod() != null) - list.add(new PojoKeyField(desc, sqlField)); + // Skip POJO field if it's read-only + if (desc.getWriteMethod() != null) + list.add(new PojoKeyField(desc)); } return list; diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoField.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoField.java index 6cfba371d07ed..566c0b97c9e51 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoField.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoField.java @@ -21,9 +21,7 @@ import com.datastax.driver.core.Row; import java.beans.PropertyDescriptor; import java.io.Serializable; -import java.lang.reflect.Method; import org.apache.ignite.IgniteException; -import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.store.cassandra.common.PropertyMappingHelper; import org.apache.ignite.cache.store.cassandra.serializer.Serializer; import org.w3c.dom.Element; @@ -82,18 +80,13 @@ public PojoField(Element el, Class pojoCls) { * Creates instance of {@link PojoField} from its property descriptor. * * @param desc Field property descriptor. - * @param sqlField annotation object. */ - public PojoField(PropertyDescriptor desc, QuerySqlField sqlField) { + public PojoField(PropertyDescriptor desc) { this.name = desc.getName(); - col = sqlField != null && sqlField.name() != null && - !sqlField.name().trim().isEmpty() ? sqlField.name() : name.toLowerCase(); + col = name.toLowerCase(); init(desc); - - if (sqlField != null) - init(sqlField); } /** @@ -196,13 +189,6 @@ public void setValueFromRow(Row row, Object obj, Serializer serializer) { } } - /** - * Initializes field info from annotation. - * - * @param sqlField {@link QuerySqlField} annotation. - */ - protected abstract void init(QuerySqlField sqlField); - /** * Initializes field info from property descriptor. * diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoKeyField.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoKeyField.java index ace529de25081..bf1d40e5668cb 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoKeyField.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoKeyField.java @@ -18,7 +18,6 @@ package org.apache.ignite.cache.store.cassandra.persistence; import java.beans.PropertyDescriptor; -import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.w3c.dom.Element; /** @@ -65,10 +64,9 @@ public PojoKeyField(Element el, Class pojoCls) { * Constructs Ignite cache key POJO object descriptor. * * @param desc property descriptor. - * @param sqlField annotation object. */ - public PojoKeyField(PropertyDescriptor desc, QuerySqlField sqlField) { - super(desc, sqlField); + public PojoKeyField(PropertyDescriptor desc) { + super(desc); } /** @@ -79,10 +77,4 @@ public PojoKeyField(PropertyDescriptor desc, QuerySqlField sqlField) { public SortOrder getSortOrder() { return sortOrder; } - - /** {@inheritDoc} */ - @Override protected void init(QuerySqlField sqlField) { - if (sqlField.descending()) - sortOrder = SortOrder.DESC; - } } diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoValueField.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoValueField.java index d833875072637..9d25b60e06a88 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoValueField.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/PojoValueField.java @@ -18,7 +18,6 @@ package org.apache.ignite.cache.store.cassandra.persistence; import java.beans.PropertyDescriptor; -import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.w3c.dom.Element; /** @@ -82,10 +81,9 @@ public PojoValueField(Element el, Class pojoCls) { * Constructs Ignite cache value field descriptor. * * @param desc field property descriptor. - * @param sqlField annotation object. */ - public PojoValueField(PropertyDescriptor desc, QuerySqlField sqlField) { - super(desc, sqlField); + public PojoValueField(PropertyDescriptor desc) { + super(desc); } /** {@inheritDoc} */ @@ -136,9 +134,4 @@ public String getIndexDDL(String keyspace, String tbl) { return builder.append(";").toString(); } - - /** {@inheritDoc} */ - @Override protected void init(QuerySqlField sqlField) { - // No-op. - } } diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/ValuePersistenceSettings.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/ValuePersistenceSettings.java index ac36a3223b644..bdcc0e2abae5f 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/ValuePersistenceSettings.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/ValuePersistenceSettings.java @@ -18,12 +18,10 @@ package org.apache.ignite.cache.store.cassandra.persistence; import java.beans.PropertyDescriptor; -import java.lang.reflect.Field; import java.util.Collections; import java.util.LinkedList; import java.util.List; -import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.store.cassandra.common.PropertyMappingHelper; import org.w3c.dom.Element; import org.w3c.dom.NodeList; @@ -86,23 +84,13 @@ private List detectFields(NodeList fieldNodes) { List list = new LinkedList<>(); if (fieldNodes == null || fieldNodes.getLength() == 0) { - List primitivePropDescriptors = PropertyMappingHelper.getPojoPropertyDescriptors(getJavaClass(), true); + List primitivePropDescriptors = PropertyMappingHelper.getPojoPropertyDescriptors( + getJavaClass(), true); for (PropertyDescriptor desc : primitivePropDescriptors) { - QuerySqlField sqlField = null; - - try { - Field f = getJavaClass().getDeclaredField(desc.getName()); - - sqlField = f.getAnnotation(QuerySqlField.class); - } - catch (NoSuchFieldException e) { - // No-op. - } - - // Skip POJO field if it's read-only and is not annotated with @QuerySqlField. - if (desc.getWriteMethod() != null || sqlField != null) - list.add(new PojoValueField(desc, sqlField)); + // Skip POJO field if it's read-only + if (desc.getWriteMethod() != null) + list.add(new PojoValueField(desc)); } return list; diff --git a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Person.java b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Person.java index 3d43cffab6caf..365a56f56c4e8 100644 --- a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Person.java +++ b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Person.java @@ -40,7 +40,6 @@ public class Person implements Externalizable { private String lastName; /** */ - @QuerySqlField private String fullName; /** */ diff --git a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Product.java b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Product.java index a71ba1ff384b3..7aa7ae94dcbc9 100644 --- a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Product.java +++ b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/Product.java @@ -24,23 +24,18 @@ */ public class Product { /** */ - @QuerySqlField(index = true) private long id; /** */ - @QuerySqlField private String type; /** */ - @QuerySqlField(index = true) private String title; /** */ - @QuerySqlField private String description; /** */ - @QuerySqlField private float price; /** */ diff --git a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/ProductOrder.java b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/ProductOrder.java index f58552815ff7b..079116d1cb361 100644 --- a/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/ProductOrder.java +++ b/modules/cassandra/store/src/test/java/org/apache/ignite/tests/pojos/ProductOrder.java @@ -34,23 +34,18 @@ public class ProductOrder { private static final DateFormat FULL_FORMAT = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss:S"); /** */ - @QuerySqlField(index = true) private long id; /** */ - @QuerySqlField(index = true) private long productId; /** */ - @QuerySqlField private Date date; /** */ - @QuerySqlField private int amount; /** */ - @QuerySqlField private float price; /** */ From d886db28d0e66706402e935ea3bd585852755868 Mon Sep 17 00:00:00 2001 From: tledkov-gridgain Date: Tue, 25 Apr 2017 17:16:42 +0300 Subject: [PATCH 12/12] IGNITE-5036: cassandra: remove AffinityKeyMapper --- .../common/PropertyMappingHelper.java | 21 +++---------------- .../persistence/KeyPersistenceSettings.java | 8 ++----- 2 files changed, 5 insertions(+), 24 deletions(-) diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/PropertyMappingHelper.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/PropertyMappingHelper.java index 64b784b4ec3b0..cb89bf091509b 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/PropertyMappingHelper.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/PropertyMappingHelper.java @@ -20,7 +20,6 @@ import com.datastax.driver.core.DataType; import com.datastax.driver.core.Row; import java.beans.PropertyDescriptor; -import java.lang.annotation.Annotation; import java.math.BigDecimal; import java.math.BigInteger; import java.net.InetAddress; @@ -103,25 +102,12 @@ public static PropertyDescriptor getPojoPropertyDescriptor(Class clazz, String p * Extracts all property descriptors from a class. * * @param clazz class which property descriptors should be extracted. - * @param primitive boolean flag indicating that only property descriptors for primitive properties should be extracted. + * @param primitive boolean flag indicating that only property descriptors for primitive properties + * should be extracted. * * @return list of class property descriptors */ public static List getPojoPropertyDescriptors(Class clazz, boolean primitive) { - return getPojoPropertyDescriptors(clazz, null, primitive); - } - - /** - * Extracts all property descriptors having specific annotation from a class. - * - * @param clazz class which property descriptors should be extracted. - * @param annotation annotation to look for. - * @param primitive boolean flag indicating that only property descriptors for primitive properties should be extracted. - * - * @return list of class property descriptors - */ - public static List getPojoPropertyDescriptors(Class clazz, - Class annotation, boolean primitive) { PropertyDescriptor[] descriptors = PropertyUtils.getPropertyDescriptors(clazz); List list = new ArrayList<>(descriptors == null ? 1 : descriptors.length); @@ -133,8 +119,7 @@ public static List getPojoPropertyDes if (descriptor.getReadMethod() == null || (primitive && !isPrimitivePropertyDescriptor(descriptor))) continue; - if (annotation == null || descriptor.getReadMethod().getAnnotation(annotation) != null) - list.add(descriptor); + list.add(descriptor); } return list; diff --git a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java index e4902649ec5ce..15f20fb8084b6 100644 --- a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java +++ b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/persistence/KeyPersistenceSettings.java @@ -22,7 +22,6 @@ import java.util.List; import org.apache.ignite.IgniteException; -import org.apache.ignite.cache.affinity.AffinityKeyMapped; import org.apache.ignite.cache.store.cassandra.common.PropertyMappingHelper; import org.w3c.dom.Element; import org.w3c.dom.NodeList; @@ -252,11 +251,8 @@ private List detectFields(Element el, List descri * @return POJO field descriptors for partition key. */ private List getPartitionKeyDescriptors() { - List primitivePropDescriptors = PropertyMappingHelper.getPojoPropertyDescriptors(getJavaClass(), - AffinityKeyMapped.class, true); - - primitivePropDescriptors = primitivePropDescriptors != null && !primitivePropDescriptors.isEmpty() ? - primitivePropDescriptors : PropertyMappingHelper.getPojoPropertyDescriptors(getJavaClass(), true); + List primitivePropDescriptors = PropertyMappingHelper.getPojoPropertyDescriptors( + getJavaClass(), true); boolean valid = false;