You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by sh...@apache.org on 2020/01/28 15:11:21 UTC
[unomi] 24/27: Add custom unomi types with custom event types.
This is an automated email from the ASF dual-hosted git repository.
shuber pushed a commit to branch UNOMI-180-CXS-GRAPHQLAPI
in repository https://gitbox.apache.org/repos/asf/unomi.git
commit 055cdd8d6dc3478e036c0ff71a7abf14e22953d3
Author: Serge Huber <sh...@jahia.com>
AuthorDate: Tue May 28 17:55:54 2019 +0200
Add custom unomi types with custom event types.
---
.../unomi/graphql/internal/CDPSDLServletImpl.java | 16 ++++-
.../src/main/resources/cdp-schema.graphqls | 6 --
.../src/main/resources/unomi-schema.graphqls | 74 ++++++++++++++++++++++
3 files changed, 87 insertions(+), 9 deletions(-)
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/internal/CDPSDLServletImpl.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/internal/CDPSDLServletImpl.java
index 2deae05..6a0e7ff 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/internal/CDPSDLServletImpl.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/internal/CDPSDLServletImpl.java
@@ -148,7 +148,15 @@ public class CDPSDLServletImpl extends HttpServlet {
.typeResolver(new TypeResolver() {
@Override
public GraphQLObjectType getType(TypeResolutionEnvironment env) {
- return env.getSchema().getObjectType("CDP_ProfileUpdateEvent");
+ Map<String,Object> object = env.getObject();
+ String unomiEventType = (String) object.get("__unomiEventType");
+ if ("view".equals(unomiEventType)) {
+ return env.getSchema().getObjectType("Unomi_PageViewEvent");
+ } else if ("sessionCreated".equals(unomiEventType)) {
+ return env.getSchema().getObjectType("Unomi_SessionCreatedEvent");
+ } else {
+ return env.getSchema().getObjectType("Unomi_UnknownEvent");
+ }
}
}))
.type("CDP_ProfileInterface", typeWiring -> typeWiring
@@ -282,14 +290,16 @@ public class CDPSDLServletImpl extends HttpServlet {
SchemaParser schemaParser = new SchemaParser();
SchemaGenerator schemaGenerator = new SchemaGenerator();
- Reader schemaReader = getSchemaReader("cdp-schema.graphqls");
+ Reader cdpSchemaReader = getSchemaReader("cdp-schema.graphqls");
+ Reader unomiSchemaReader = getSchemaReader("unomi-schema.graphqls");
//File schemaFile2 = loadSchema("cdp-schema.graphqls");
//File schemaFile3 = loadSchema("cdp-schema.graphqls");
TypeDefinitionRegistry typeRegistry = new TypeDefinitionRegistry();
// each registry is merged into the main registry
- typeRegistry.merge(schemaParser.parse(schemaReader));
+ typeRegistry.merge(schemaParser.parse(cdpSchemaReader));
+ typeRegistry.merge(schemaParser.parse(unomiSchemaReader));
//typeRegistry.merge(schemaParser.parse(schemaFile2));
//typeRegistry.merge(schemaParser.parse(schemaFile3));
diff --git a/graphql/cxs-impl/src/main/resources/cdp-schema.graphqls b/graphql/cxs-impl/src/main/resources/cdp-schema.graphqls
index 1e71cbe..bea3348 100644
--- a/graphql/cxs-impl/src/main/resources/cdp-schema.graphqls
+++ b/graphql/cxs-impl/src/main/resources/cdp-schema.graphqls
@@ -972,9 +972,3 @@ https://github.com/graphql-java/graphql-java-extended-scalars for example
implementation
"""
scalar Time
-
-schema {
- query : Query
- mutation : Mutation
- subscription : Subscription
-}
\ No newline at end of file
diff --git a/graphql/cxs-impl/src/main/resources/unomi-schema.graphqls b/graphql/cxs-impl/src/main/resources/unomi-schema.graphqls
new file mode 100644
index 0000000..73a87ec
--- /dev/null
+++ b/graphql/cxs-impl/src/main/resources/unomi-schema.graphqls
@@ -0,0 +1,74 @@
+#
+# 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.
+#
+
+# This file contains extensions to the CDP specification that are specific to Apache Unomi
+
+type Unomi_PageView {
+ url : String
+ path : String
+ referrer : String
+}
+
+type Unomi_PageViewEvent implements CDP_EventInterface {
+ id: ID!
+ cdp_source: CDP_Source
+ cdp_client: CDP_Client
+ cdp_profileID: CDP_ProfileID!
+ cdp_profile: CDP_Profile!
+ cdp_object: CDP_Object!
+ cdp_location: GeoPoint
+ cdp_timestamp: DateTime
+ cdp_topics: [CDP_Topic]
+
+ pageView : Unomi_PageView
+}
+
+type Unomi_SessionCreated {
+ creationTime : DateTime
+ duration : Int
+}
+
+type Unomi_SessionCreatedEvent implements CDP_EventInterface {
+ id: ID!
+ cdp_source: CDP_Source
+ cdp_client: CDP_Client
+ cdp_profileID: CDP_ProfileID!
+ cdp_profile: CDP_Profile!
+ cdp_object: CDP_Object!
+ cdp_location: GeoPoint
+ cdp_timestamp: DateTime
+ cdp_topics: [CDP_Topic]
+
+ sessionCreated : Unomi_SessionCreated
+}
+
+type Unomi_PropertyPair {
+ name : String
+ value : JSON
+}
+
+type Unomi_UnknownEvent implements CDP_EventInterface {
+
+ id: ID!
+ cdp_source: CDP_Source
+ cdp_client: CDP_Client
+ cdp_profileID: CDP_ProfileID!
+ cdp_profile: CDP_Profile!
+ cdp_object: CDP_Object!
+ cdp_location: GeoPoint
+ cdp_timestamp: DateTime
+ cdp_topics: [CDP_Topic]
+
+ unknownProperties : [Unomi_PropertyPair]
+}
\ No newline at end of file