You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2016/08/28 06:54:20 UTC
[5/5] olingo-odata2 git commit: [OLINGO-1011] Added UUID generation
to DataStore.KeyAccess.createKey.
[OLINGO-1011] Added UUID generation to DataStore.KeyAccess.createKey.
Signed-off-by: mibo <mi...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/cd4810b9
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/cd4810b9
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/cd4810b9
Branch: refs/heads/master
Commit: cd4810b9b8bcd542c4ece8656cab580421152404
Parents: 07984dc
Author: Michael Strasser <mi...@michaelstrasser.com>
Authored: Thu Aug 25 20:48:47 2016 +1000
Committer: mibo <mi...@apache.org>
Committed: Sun Aug 28 08:53:40 2016 +0200
----------------------------------------------------------------------
.../processor/core/datasource/DataStore.java | 3 ++
.../datasource/AnnotationsInMemoryDsTest.java | 35 ++++++++++++
.../processor/core/model/GuidKeyEntity.java | 56 ++++++++++++++++++++
3 files changed, 94 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cd4810b9/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/datasource/DataStore.java
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/datasource/DataStore.java b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/datasource/DataStore.java
index c03a557..98f86f1 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/datasource/DataStore.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/datasource/DataStore.java
@@ -26,6 +26,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.olingo.odata2.annotation.processor.core.util.AnnotationHelper;
@@ -263,6 +264,8 @@ public class DataStore<T> {
return Integer.valueOf(idCounter.getAndIncrement());
} else if (type == Long.class || type == long.class) {
return Long.valueOf(idCounter.getAndIncrement());
+ } else if (type == UUID.class) {
+ return UUID.randomUUID();
}
throw new UnsupportedOperationException("Automated key generation for type '" + type
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cd4810b9/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/datasource/AnnotationsInMemoryDsTest.java
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/datasource/AnnotationsInMemoryDsTest.java b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/datasource/AnnotationsInMemoryDsTest.java
index 7b2ee4b..089b6d4 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/datasource/AnnotationsInMemoryDsTest.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/datasource/AnnotationsInMemoryDsTest.java
@@ -24,6 +24,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.UUID;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -32,6 +33,7 @@ import org.apache.olingo.odata2.annotation.processor.core.edm.AnnotationEdmProvi
import org.apache.olingo.odata2.annotation.processor.core.model.Building;
import org.apache.olingo.odata2.annotation.processor.core.model.City;
import org.apache.olingo.odata2.annotation.processor.core.model.Employee;
+import org.apache.olingo.odata2.annotation.processor.core.model.GuidKeyEntity;
import org.apache.olingo.odata2.annotation.processor.core.model.Location;
import org.apache.olingo.odata2.annotation.processor.core.model.Manager;
import org.apache.olingo.odata2.annotation.processor.core.model.ModelSharedConstants;
@@ -686,6 +688,39 @@ public class AnnotationsInMemoryDsTest {
}
@Test
+ public void createGuidKeyEntity() throws Exception {
+ EdmEntitySet edmEntitySet = createMockedEdmEntitySet(GuidKeyEntity.GUID_KEY_ENTITIES);
+
+ final String entityName = "Entity name";
+ GuidKeyEntity testEntity = new GuidKeyEntity();
+ testEntity.setName(entityName);
+ datasource.createData(edmEntitySet, testEntity);
+
+ List entities = datasource.readData(edmEntitySet);
+ GuidKeyEntity readEntity = (GuidKeyEntity) entities.get(0);
+ Assert.assertEquals(entityName, readEntity.getName());
+ }
+
+ @Test
+ public void createGuidKeyEntityWithOwnKey() throws Exception {
+ EdmEntitySet edmEntitySet = createMockedEdmEntitySet(GuidKeyEntity.GUID_KEY_ENTITIES);
+
+ final UUID entityId = UUID.randomUUID();
+ final String entityName = "Entity name";
+ GuidKeyEntity testEntity = new GuidKeyEntity();
+ testEntity.setId(entityId);
+ testEntity.setName(entityName);
+ datasource.createData(edmEntitySet, testEntity);
+
+ Map<String, Object> keys = new HashMap<String, Object>();
+ keys.put("Id", entityId);
+
+ GuidKeyEntity readEntity = (GuidKeyEntity) datasource.readData(edmEntitySet, keys);
+ Assert.assertEquals(entityId, readEntity.getId());
+ Assert.assertEquals(entityName, readEntity.getName());
+ }
+
+ @Test
public void deleteSimpleEntity() throws Exception {
EdmEntitySet edmEntitySet = createMockedEdmEntitySet("Buildings");
DataStore<Building> datastore = datasource.getDataStore(Building.class);
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cd4810b9/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/model/GuidKeyEntity.java
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/model/GuidKeyEntity.java b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/model/GuidKeyEntity.java
new file mode 100644
index 0000000..36feabe
--- /dev/null
+++ b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/model/GuidKeyEntity.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2013 The Apache Software Foundation.
+ *
+ * Licensed 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.olingo.odata2.annotation.processor.core.model;
+
+import org.apache.olingo.odata2.api.annotation.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.annotation.edm.EdmEntityType;
+import org.apache.olingo.odata2.api.annotation.edm.EdmFacets;
+import org.apache.olingo.odata2.api.annotation.edm.EdmKey;
+import org.apache.olingo.odata2.api.annotation.edm.EdmProperty;
+import org.apache.olingo.odata2.api.annotation.edm.EdmType;
+
+import java.util.AbstractMap;
+import java.util.UUID;
+
+@EdmEntityType(name = "GuidKeyEntity", namespace = ModelSharedConstants.NAMESPACE_1)
+@EdmEntitySet(name = GuidKeyEntity.GUID_KEY_ENTITIES)
+public class GuidKeyEntity {
+
+ public static final String GUID_KEY_ENTITIES = "GuidKeyEntities";
+ @EdmProperty(name = "Id", type = EdmType.GUID, facets = @EdmFacets(nullable = false))
+ @EdmKey
+ protected UUID id;
+
+ @EdmProperty(name = "Name")
+ protected String name;
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}