IGNITE-2201 - Fixed affinity collocation with AffinityKey and examples model
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/bda0b19c Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/bda0b19c Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/bda0b19c Branch: refs/heads/ignite-1.5.1-2 Commit: bda0b19c7f4af8f51823ddeb2e23583a3217dd5a Parents: d391daa Author: Alexey Goncharuk <alexey.goncha...@gmail.com> Authored: Fri Dec 18 15:29:09 2015 +0300 Committer: Alexey Goncharuk <alexey.goncha...@gmail.com> Committed: Fri Dec 18 15:30:23 2015 +0300 ---------------------------------------------------------------------- ...ComputeClientBinaryTaskExecutionExample.java | 4 +- .../CacheClientBinaryPutGetExample.java | 6 +- .../datagrid/CacheClientBinaryQueryExample.java | 10 +-- .../examples/datagrid/CacheQueryExample.java | 4 +- .../apache/ignite/examples/model/Address.java | 72 +++++++++++++++ .../apache/ignite/examples/model/Employee.java | 93 ++++++++++++++++++++ .../ignite/examples/model/EmployeeKey.java | 93 ++++++++++++++++++++ .../ignite/examples/model/Organization.java | 85 ++++++++++++++++-- .../ignite/examples/model/OrganizationType.java | 32 +++++++ .../apache/ignite/examples/model/Person.java | 2 +- .../ignite/examples/model/binary/Address.java | 72 --------------- .../ignite/examples/model/binary/Employee.java | 93 -------------------- .../examples/model/binary/EmployeeKey.java | 93 -------------------- .../examples/model/binary/Organization.java | 93 -------------------- .../examples/model/binary/OrganizationType.java | 32 ------- .../ignite/examples/model/package-info.java | 23 +++++ .../ignite/internal/binary/BinaryContext.java | 16 +++- 17 files changed, 417 insertions(+), 406 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/binary/computegrid/ComputeClientBinaryTaskExecutionExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/binary/computegrid/ComputeClientBinaryTaskExecutionExample.java b/examples/src/main/java/org/apache/ignite/examples/binary/computegrid/ComputeClientBinaryTaskExecutionExample.java index d839c96..aced78c 100644 --- a/examples/src/main/java/org/apache/ignite/examples/binary/computegrid/ComputeClientBinaryTaskExecutionExample.java +++ b/examples/src/main/java/org/apache/ignite/examples/binary/computegrid/ComputeClientBinaryTaskExecutionExample.java @@ -22,8 +22,8 @@ import java.util.Arrays; import java.util.Collection; import org.apache.ignite.Ignite; import org.apache.ignite.Ignition; -import org.apache.ignite.examples.model.binary.Address; -import org.apache.ignite.examples.model.binary.Employee; +import org.apache.ignite.examples.model.Address; +import org.apache.ignite.examples.model.Employee; import org.apache.ignite.binary.BinaryObject; /** http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/binary/datagrid/CacheClientBinaryPutGetExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/binary/datagrid/CacheClientBinaryPutGetExample.java b/examples/src/main/java/org/apache/ignite/examples/binary/datagrid/CacheClientBinaryPutGetExample.java index b6fc455..f0f57af 100644 --- a/examples/src/main/java/org/apache/ignite/examples/binary/datagrid/CacheClientBinaryPutGetExample.java +++ b/examples/src/main/java/org/apache/ignite/examples/binary/datagrid/CacheClientBinaryPutGetExample.java @@ -28,9 +28,9 @@ import org.apache.ignite.Ignition; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.configuration.CacheConfiguration; -import org.apache.ignite.examples.model.binary.Address; -import org.apache.ignite.examples.model.binary.Organization; -import org.apache.ignite.examples.model.binary.OrganizationType; +import org.apache.ignite.examples.model.Address; +import org.apache.ignite.examples.model.Organization; +import org.apache.ignite.examples.model.OrganizationType; import org.apache.ignite.binary.BinaryObject; /** http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/binary/datagrid/CacheClientBinaryQueryExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/binary/datagrid/CacheClientBinaryQueryExample.java b/examples/src/main/java/org/apache/ignite/examples/binary/datagrid/CacheClientBinaryQueryExample.java index b05cbb5..11c00e9 100644 --- a/examples/src/main/java/org/apache/ignite/examples/binary/datagrid/CacheClientBinaryQueryExample.java +++ b/examples/src/main/java/org/apache/ignite/examples/binary/datagrid/CacheClientBinaryQueryExample.java @@ -34,11 +34,11 @@ import org.apache.ignite.cache.query.SqlFieldsQuery; import org.apache.ignite.cache.query.SqlQuery; import org.apache.ignite.cache.query.TextQuery; import org.apache.ignite.configuration.CacheConfiguration; -import org.apache.ignite.examples.model.binary.Address; -import org.apache.ignite.examples.model.binary.Employee; -import org.apache.ignite.examples.model.binary.EmployeeKey; -import org.apache.ignite.examples.model.binary.Organization; -import org.apache.ignite.examples.model.binary.OrganizationType; +import org.apache.ignite.examples.model.Address; +import org.apache.ignite.examples.model.Employee; +import org.apache.ignite.examples.model.EmployeeKey; +import org.apache.ignite.examples.model.Organization; +import org.apache.ignite.examples.model.OrganizationType; import org.apache.ignite.binary.BinaryObject; /** http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheQueryExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheQueryExample.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheQueryExample.java index ace7395..98af93c 100644 --- a/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheQueryExample.java +++ b/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheQueryExample.java @@ -273,8 +273,8 @@ public class CacheQueryExample { Organization org1 = new Organization("ApacheIgnite"); Organization org2 = new Organization("Other"); - orgCache.put(org1.id, org1); - orgCache.put(org2.id, org2); + orgCache.put(org1.id(), org1); + orgCache.put(org2.id(), org2); IgniteCache<AffinityKey<Long>, Person> personCache = Ignition.ignite().cache(PERSON_CACHE); http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/model/Address.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/model/Address.java b/examples/src/main/java/org/apache/ignite/examples/model/Address.java new file mode 100644 index 0000000..184de4a --- /dev/null +++ b/examples/src/main/java/org/apache/ignite/examples/model/Address.java @@ -0,0 +1,72 @@ +/* + * 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.examples.model; + +import org.apache.ignite.binary.BinaryObjectException; +import org.apache.ignite.binary.Binarylizable; +import org.apache.ignite.binary.BinaryReader; +import org.apache.ignite.binary.BinaryWriter; + +/** + * Employee address. + * <p> + * This class implements {@link org.apache.ignite.binary.Binarylizable} only for example purposes, + * in order to show how to customize serialization and deserialization of + * binary objects. + */ +public class Address implements Binarylizable { + /** Street. */ + private String street; + + /** ZIP code. */ + private int zip; + + /** + * Required for binary deserialization. + */ + public Address() { + // No-op. + } + + /** + * @param street Street. + * @param zip ZIP code. + */ + public Address(String street, int zip) { + this.street = street; + this.zip = zip; + } + + /** {@inheritDoc} */ + @Override public void writeBinary(BinaryWriter writer) throws BinaryObjectException { + writer.writeString("street", street); + writer.writeInt("zip", zip); + } + + /** {@inheritDoc} */ + @Override public void readBinary(BinaryReader reader) throws BinaryObjectException { + street = reader.readString("street"); + zip = reader.readInt("zip"); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return "Address [street=" + street + + ", zip=" + zip + ']'; + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/model/Employee.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/model/Employee.java b/examples/src/main/java/org/apache/ignite/examples/model/Employee.java new file mode 100644 index 0000000..a59ffce --- /dev/null +++ b/examples/src/main/java/org/apache/ignite/examples/model/Employee.java @@ -0,0 +1,93 @@ +/* + * 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.examples.model; + +import java.util.Collection; + +/** + * This class represents employee object. + */ +public class Employee { + /** Name. */ + private String name; + + /** Salary. */ + private long salary; + + /** Address. */ + private Address addr; + + /** Departments. */ + private Collection<String> departments; + + /** + * Required for binary deserialization. + */ + public Employee() { + // No-op. + } + + /** + * @param name Name. + * @param salary Salary. + * @param addr Address. + * @param departments Departments. + */ + public Employee(String name, long salary, Address addr, Collection<String> departments) { + this.name = name; + this.salary = salary; + this.addr = addr; + this.departments = departments; + } + + /** + * @return Name. + */ + public String name() { + return name; + } + + /** + * @return Salary. + */ + public long salary() { + return salary; + } + + /** + * @return Address. + */ + public Address address() { + return addr; + } + + /** + * @return Departments. + */ + public Collection<String> departments() { + return departments; + } + + /** {@inheritDoc} */ + @Override public String toString() { + return "Employee [name=" + name + + ", salary=" + salary + + ", address=" + addr + + ", departments=" + departments + ']'; + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/model/EmployeeKey.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/model/EmployeeKey.java b/examples/src/main/java/org/apache/ignite/examples/model/EmployeeKey.java new file mode 100644 index 0000000..55e7967 --- /dev/null +++ b/examples/src/main/java/org/apache/ignite/examples/model/EmployeeKey.java @@ -0,0 +1,93 @@ +/* + * 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.examples.model; + +import org.apache.ignite.cache.affinity.AffinityKeyMapped; + +/** + * This class represents key for employee object. + * <p> + * Used in query example to collocate employees + * with their organizations. + */ +public class EmployeeKey { + /** ID. */ + private int id; + + /** Organization ID. */ + @AffinityKeyMapped + private int organizationId; + + /** + * Required for binary deserialization. + */ + public EmployeeKey() { + // No-op. + } + + /** + * @param id ID. + * @param organizationId Organization ID. + */ + public EmployeeKey(int id, int organizationId) { + this.id = id; + this.organizationId = organizationId; + } + + /** + * @return ID. + */ + public int id() { + return id; + } + + /** + * @return Organization ID. + */ + public int organizationId() { + return organizationId; + } + + /** {@inheritDoc} */ + @Override public boolean equals(Object o) { + if (this == o) + return true; + + if (o == null || getClass() != o.getClass()) + return false; + + EmployeeKey key = (EmployeeKey)o; + + return id == key.id && organizationId == key.organizationId; + } + + /** {@inheritDoc} */ + @Override public int hashCode() { + int res = id; + + res = 31 * res + organizationId; + + return res; + } + + /** {@inheritDoc} */ + @Override public String toString() { + return "EmployeeKey [id=" + id + + ", organizationId=" + organizationId + ']'; + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/model/Organization.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/model/Organization.java b/examples/src/main/java/org/apache/ignite/examples/model/Organization.java index 2500584..70d4eee 100644 --- a/examples/src/main/java/org/apache/ignite/examples/model/Organization.java +++ b/examples/src/main/java/org/apache/ignite/examples/model/Organization.java @@ -17,28 +17,42 @@ package org.apache.ignite.examples.model; -import java.io.Serializable; +import java.sql.Timestamp; import java.util.concurrent.atomic.AtomicLong; import org.apache.ignite.cache.query.annotations.QuerySqlField; /** - * Organization class. + * This class represents organization object. */ -public class Organization implements Serializable { +public class Organization { /** */ private static final AtomicLong ID_GEN = new AtomicLong(); /** Organization ID (indexed). */ @QuerySqlField(index = true) - public Long id; + private Long id; /** Organization name (indexed). */ @QuerySqlField(index = true) - public String name; + private String name; + + /** Address. */ + private Address addr; + + /** Type. */ + private OrganizationType type; + + /** Last update time. */ + private Timestamp lastUpdated; + + /** + * Required for binary deserialization. + */ + public Organization() { + // No-op. + } /** - * Create organization. - * * @param name Organization name. */ public Organization(String name) { @@ -47,8 +61,63 @@ public class Organization implements Serializable { this.name = name; } + /** + * @param name Name. + * @param addr Address. + * @param type Type. + * @param lastUpdated Last update time. + */ + public Organization(String name, Address addr, OrganizationType type, Timestamp lastUpdated) { + id = ID_GEN.incrementAndGet(); + + this.name = name; + this.addr = addr; + this.type = type; + + this.lastUpdated = lastUpdated; + } + + /** + * @return Organization ID. + */ + public Long id() { + return id; + } + + /** + * @return Name. + */ + public String name() { + return name; + } + + /** + * @return Address. + */ + public Address address() { + return addr; + } + + /** + * @return Type. + */ + public OrganizationType type() { + return type; + } + + /** + * @return Last update time. + */ + public Timestamp lastUpdated() { + return lastUpdated; + } + /** {@inheritDoc} */ @Override public String toString() { - return "Organization [id=" + id + ", name=" + name + ']'; + return "Organization [id=" + id + + ", name=" + name + + ", address=" + addr + + ", type=" + type + + ", lastUpdated=" + lastUpdated + ']'; } } http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/model/OrganizationType.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/model/OrganizationType.java b/examples/src/main/java/org/apache/ignite/examples/model/OrganizationType.java new file mode 100644 index 0000000..8b22600 --- /dev/null +++ b/examples/src/main/java/org/apache/ignite/examples/model/OrganizationType.java @@ -0,0 +1,32 @@ +/* + * 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.examples.model; + +/** + * Organization type enum. + */ +public enum OrganizationType { + /** Non-profit organization. */ + NON_PROFIT, + + /** Private organization. */ + PRIVATE, + + /** Government organization. */ + GOVERNMENT +} http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/model/Person.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/model/Person.java b/examples/src/main/java/org/apache/ignite/examples/model/Person.java index 618fa5c..6d3a6df 100644 --- a/examples/src/main/java/org/apache/ignite/examples/model/Person.java +++ b/examples/src/main/java/org/apache/ignite/examples/model/Person.java @@ -77,7 +77,7 @@ public class Person implements Serializable { // Generate unique ID for this person. id = ID_GEN.incrementAndGet(); - orgId = org.id; + orgId = org.id(); this.firstName = firstName; this.lastName = lastName; http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/model/binary/Address.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/model/binary/Address.java b/examples/src/main/java/org/apache/ignite/examples/model/binary/Address.java deleted file mode 100644 index 2d17cb8..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/model/binary/Address.java +++ /dev/null @@ -1,72 +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.examples.model.binary; - -import org.apache.ignite.binary.BinaryObjectException; -import org.apache.ignite.binary.Binarylizable; -import org.apache.ignite.binary.BinaryReader; -import org.apache.ignite.binary.BinaryWriter; - -/** - * Employee address. - * <p> - * This class implements {@link org.apache.ignite.binary.Binarylizable} only for example purposes, - * in order to show how to customize serialization and deserialization of - * binary objects. - */ -public class Address implements Binarylizable { - /** Street. */ - private String street; - - /** ZIP code. */ - private int zip; - - /** - * Required for binary deserialization. - */ - public Address() { - // No-op. - } - - /** - * @param street Street. - * @param zip ZIP code. - */ - public Address(String street, int zip) { - this.street = street; - this.zip = zip; - } - - /** {@inheritDoc} */ - @Override public void writeBinary(BinaryWriter writer) throws BinaryObjectException { - writer.writeString("street", street); - writer.writeInt("zip", zip); - } - - /** {@inheritDoc} */ - @Override public void readBinary(BinaryReader reader) throws BinaryObjectException { - street = reader.readString("street"); - zip = reader.readInt("zip"); - } - - /** {@inheritDoc} */ - @Override public String toString() { - return "Address [street=" + street + - ", zip=" + zip + ']'; - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/model/binary/Employee.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/model/binary/Employee.java b/examples/src/main/java/org/apache/ignite/examples/model/binary/Employee.java deleted file mode 100644 index ad82065..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/model/binary/Employee.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.examples.model.binary; - -import java.util.Collection; - -/** - * This class represents employee object. - */ -public class Employee { - /** Name. */ - private String name; - - /** Salary. */ - private long salary; - - /** Address. */ - private Address addr; - - /** Departments. */ - private Collection<String> departments; - - /** - * Required for binary deserialization. - */ - public Employee() { - // No-op. - } - - /** - * @param name Name. - * @param salary Salary. - * @param addr Address. - * @param departments Departments. - */ - public Employee(String name, long salary, Address addr, Collection<String> departments) { - this.name = name; - this.salary = salary; - this.addr = addr; - this.departments = departments; - } - - /** - * @return Name. - */ - public String name() { - return name; - } - - /** - * @return Salary. - */ - public long salary() { - return salary; - } - - /** - * @return Address. - */ - public Address address() { - return addr; - } - - /** - * @return Departments. - */ - public Collection<String> departments() { - return departments; - } - - /** {@inheritDoc} */ - @Override public String toString() { - return "Employee [name=" + name + - ", salary=" + salary + - ", address=" + addr + - ", departments=" + departments + ']'; - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/model/binary/EmployeeKey.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/model/binary/EmployeeKey.java b/examples/src/main/java/org/apache/ignite/examples/model/binary/EmployeeKey.java deleted file mode 100644 index 20367ac..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/model/binary/EmployeeKey.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.examples.model.binary; - -import org.apache.ignite.cache.affinity.AffinityKeyMapped; - -/** - * This class represents key for employee object. - * <p> - * Used in query example to collocate employees - * with their organizations. - */ -public class EmployeeKey { - /** ID. */ - private int id; - - /** Organization ID. */ - @AffinityKeyMapped - private int organizationId; - - /** - * Required for binary deserialization. - */ - public EmployeeKey() { - // No-op. - } - - /** - * @param id ID. - * @param organizationId Organization ID. - */ - public EmployeeKey(int id, int organizationId) { - this.id = id; - this.organizationId = organizationId; - } - - /** - * @return ID. - */ - public int id() { - return id; - } - - /** - * @return Organization ID. - */ - public int organizationId() { - return organizationId; - } - - /** {@inheritDoc} */ - @Override public boolean equals(Object o) { - if (this == o) - return true; - - if (o == null || getClass() != o.getClass()) - return false; - - EmployeeKey key = (EmployeeKey)o; - - return id == key.id && organizationId == key.organizationId; - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - int res = id; - - res = 31 * res + organizationId; - - return res; - } - - /** {@inheritDoc} */ - @Override public String toString() { - return "EmployeeKey [id=" + id + - ", organizationId=" + organizationId + ']'; - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/model/binary/Organization.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/model/binary/Organization.java b/examples/src/main/java/org/apache/ignite/examples/model/binary/Organization.java deleted file mode 100644 index 6b7aca4..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/model/binary/Organization.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.examples.model.binary; - -import java.sql.Timestamp; - -/** - * This class represents organization object. - */ -public class Organization { - /** Name. */ - private String name; - - /** Address. */ - private Address addr; - - /** Type. */ - private OrganizationType type; - - /** Last update time. */ - private Timestamp lastUpdated; - - /** - * Required for binary deserialization. - */ - public Organization() { - // No-op. - } - - /** - * @param name Name. - * @param addr Address. - * @param type Type. - * @param lastUpdated Last update time. - */ - public Organization(String name, Address addr, OrganizationType type, Timestamp lastUpdated) { - this.name = name; - this.addr = addr; - this.type = type; - this.lastUpdated = lastUpdated; - } - - /** - * @return Name. - */ - public String name() { - return name; - } - - /** - * @return Address. - */ - public Address address() { - return addr; - } - - /** - * @return Type. - */ - public OrganizationType type() { - return type; - } - - /** - * @return Last update time. - */ - public Timestamp lastUpdated() { - return lastUpdated; - } - - /** {@inheritDoc} */ - @Override public String toString() { - return "Organization [name=" + name + - ", address=" + addr + - ", type=" + type + - ", lastUpdated=" + lastUpdated + ']'; - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/model/binary/OrganizationType.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/model/binary/OrganizationType.java b/examples/src/main/java/org/apache/ignite/examples/model/binary/OrganizationType.java deleted file mode 100644 index 69804c0..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/model/binary/OrganizationType.java +++ /dev/null @@ -1,32 +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.examples.model.binary; - -/** - * Organization type enum. - */ -public enum OrganizationType { - /** Non-profit organization. */ - NON_PROFIT, - - /** Private organization. */ - PRIVATE, - - /** Government organization. */ - GOVERNMENT -} http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/examples/src/main/java/org/apache/ignite/examples/model/package-info.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/model/package-info.java b/examples/src/main/java/org/apache/ignite/examples/model/package-info.java new file mode 100644 index 0000000..9ddba67 --- /dev/null +++ b/examples/src/main/java/org/apache/ignite/examples/model/package-info.java @@ -0,0 +1,23 @@ +/* + * 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 description. --> + * Model classes for Apache Ignite examples. + */ + +package org.apache.ignite.examples.model; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/bda0b19c/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java index abe283e..5c63fbd 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java @@ -212,7 +212,7 @@ public class BinaryContext implements Externalizable { registerPredefinedType(LinkedHashMap.class, 0); // Classes with overriden default serialization flag. - registerPredefinedType(AffinityKey.class, 0); + registerPredefinedType(AffinityKey.class, 0, affinityFieldName(AffinityKey.class)); registerPredefinedType(GridMapEntry.class, 60); registerPredefinedType(IgniteBiTuple.class, 61); @@ -761,6 +761,15 @@ public class BinaryContext implements Externalizable { * @return GridBinaryClassDescriptor. */ public BinaryClassDescriptor registerPredefinedType(Class<?> cls, int id) { + return registerPredefinedType(cls, id, null); + } + + /** + * @param cls Class. + * @param id Type ID. + * @return GridBinaryClassDescriptor. + */ + public BinaryClassDescriptor registerPredefinedType(Class<?> cls, int id, String affFieldName) { String typeName = typeName(cls.getName()); if (id == 0) @@ -772,7 +781,7 @@ public class BinaryContext implements Externalizable { false, id, typeName, - null, + affFieldName, BinaryInternalIdMapper.defaultInstance(), new BinaryReflectiveSerializer(), false, @@ -784,6 +793,9 @@ public class BinaryContext implements Externalizable { descByCls.put(cls, desc); + if (affFieldName != null) + affKeyFieldNames.putIfAbsent(id, affFieldName); + return desc; }