You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by dg...@apache.org on 2017/10/05 14:54:13 UTC
incubator-unomi git commit: UNOMI-117 apply changes after review from
@shuber
Repository: incubator-unomi
Updated Branches:
refs/heads/feature-UNOMI-117 003f8e9c8 -> f479d8f5d
UNOMI-117 apply changes after review from @shuber
Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/f479d8f5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/f479d8f5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/f479d8f5
Branch: refs/heads/feature-UNOMI-117
Commit: f479d8f5db528357db2dd0151b7fd4a98e3fd6ff
Parents: 003f8e9
Author: dgaillard <dg...@jahia.com>
Authored: Thu Oct 5 16:54:08 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Thu Oct 5 16:54:08 2017 +0200
----------------------------------------------------------------------
.../src/test/scala/unomi/AdminScenario.scala | 8 +-
.../elasticsearch/ESCustomObjectMapper.java | 1 +
.../persistence/elasticsearch/ESItemMixIn.java | 1 +
.../apache/unomi/shell/migration/Migration.java | 16 ++++
.../shell/migration/impl/MigrationTo130.java | 90 ++++++++++----------
.../shell/services/UnomiManagementService.java | 9 ++
.../resources/OSGI-INF/blueprint/blueprint.xml | 4 +-
7 files changed, 78 insertions(+), 51 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/performance-tests/src/test/scala/unomi/AdminScenario.scala
----------------------------------------------------------------------
diff --git a/performance-tests/src/test/scala/unomi/AdminScenario.scala b/performance-tests/src/test/scala/unomi/AdminScenario.scala
index 74be4d0..1139ab7 100644
--- a/performance-tests/src/test/scala/unomi/AdminScenario.scala
+++ b/performance-tests/src/test/scala/unomi/AdminScenario.scala
@@ -101,19 +101,19 @@ object AdminScenario {
// view the engaged users for the picked campaign ID
val campaignEngaged = feed(requestsFeed)
- .exec(http("Profile tags").get("/cxs/definitions/tags/profileTags")
+ .exec(http("Profile system tags").get("/cxs/definitions/systemTags/profileTags")
.headers(adminHeaders)
.check(jsonPath("$..id").find.is("profileTags")))
- .exec(http("Existing profile properties").get("/cxs/profiles/existingProperties?tag=profileProperties&itemType=profile")
+ .exec(http("Existing profile properties").get("/cxs/profiles/existingProperties?tag=profileProperties&itemType=profile&isSystemTag=true")
.headers(adminHeaders)
.check(jsonPath("$..itemId").find.exists))
- .exec(http("Profile conditions").get("/cxs/definitions/conditions/tags/profileCondition")
+ .exec(http("Profile conditions").get("/cxs/definitions/conditions/systemTags/profileCondition")
.headers(adminHeaders)
.check(jsonPath("$..id").find.is("booleanCondition")))
- .exec(http("Profile conditions").get("/cxs/definitions/conditions/tags/usableInPastEventCondition")
+ .exec(http("Profile conditions").get("/cxs/definitions/conditions/systemTags/usableInPastEventCondition")
.headers(adminHeaders)
.check(jsonPath("$..id").find.exists))
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java
----------------------------------------------------------------------
diff --git a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java
index 119d1b2..66e0e89 100644
--- a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java
+++ b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java
@@ -21,6 +21,7 @@ import org.apache.unomi.api.Item;
import org.apache.unomi.persistence.spi.CustomObjectMapper;
/**
+ * This CustomObjectMapper is used to avoid the version parameter to be registered in ES
* @author dgaillard
*/
public class ESCustomObjectMapper extends CustomObjectMapper {
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java
----------------------------------------------------------------------
diff --git a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java
index 40ea3c3..c20d8ef 100644
--- a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java
+++ b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java
@@ -19,6 +19,7 @@ package org.apache.unomi.persistence.elasticsearch;
import com.fasterxml.jackson.annotation.JsonIgnore;
/**
+ * This mixin is used in ESCustomObjectMapper to avoid the version parameter to be registered in ES
* @author dgaillard
*/
public abstract class ESItemMixIn {
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
index 08fb797..50307cb 100644
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
@@ -23,12 +23,28 @@ import org.osgi.framework.Version;
import java.io.IOException;
/**
+ * This interface must be implemented if you create a new migration class
* @author dgaillard
*/
public interface Migration {
+ /**
+ * This method return the minimal version before applying this migration
+ * TODO: not used for now
+ * @return return the version
+ */
Version getFromVersion();
+ /**
+ * This method return the target version after migration
+ * @return the target version
+ */
Version getToVersion();
+ /**
+ * This method is called to execute the migration
+ * @param session CommandSession
+ * @param httpClient CloseableHttpClient
+ * @throws IOException
+ */
void execute(CommandSession session, CloseableHttpClient httpClient) throws IOException;
}
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java
index a2cf255..bb252f6 100644
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java
@@ -36,7 +36,7 @@ public class MigrationTo130 implements Migration {
private CloseableHttpClient httpClient;
private CommandSession session;
- private LinkedHashMap<String, List<String>> tagsStructurePriorTo200;
+ private LinkedHashMap<String, List<String>> tagsStructurePriorTo130;
@Override
public Version getFromVersion() {
@@ -63,7 +63,7 @@ public class MigrationTo130 implements Migration {
}
private void migrateTags() throws IOException {
- initTagsStructurePriorTo200();
+ initTagsStructurePriorTo130();
String hostAddress = ConsoleUtils.askUserWithDefaultAnswer(session, "Host address (default = http://localhost:9200): ", "http://localhost:9200");
String tagsOperation = ConsoleUtils.askUserWithAuthorizedAnswer(session, "How to manage tags?\nno change: will keep tags in tags property\ncopy: will duplicate tags in systemTags property\nmove: will move tags in systemTags property\n(default/copy/move): ", Arrays.asList("no change", "copy", "move"));
@@ -138,8 +138,8 @@ public class MigrationTo130 implements Migration {
}
for (String tag : tagsBeforeMigration) {
- if (tagsStructurePriorTo200.containsKey(tag)) {
- tagsAfterMigration.addAll(tagsStructurePriorTo200.get(tag));
+ if (tagsStructurePriorTo130.containsKey(tag)) {
+ tagsAfterMigration.addAll(tagsStructurePriorTo130.get(tag));
}
tagsAfterMigration.add(tag);
}
@@ -185,46 +185,46 @@ public class MigrationTo130 implements Migration {
return tags;
}
- private void initTagsStructurePriorTo200() {
- tagsStructurePriorTo200 = new LinkedHashMap<>();
- tagsStructurePriorTo200.put("landing", Collections.singletonList("campaign"));
- tagsStructurePriorTo200.put("parameter", Collections.singletonList("campaign"));
- tagsStructurePriorTo200.put("referrer", Collections.singletonList("campaign"));
-
- tagsStructurePriorTo200.put("eventCondition", Collections.singletonList("condition"));
- tagsStructurePriorTo200.put("profileCondition", Collections.singletonList("condition"));
- tagsStructurePriorTo200.put("sessionCondition", Collections.singletonList("condition"));
- tagsStructurePriorTo200.put("sourceEventCondition", Collections.singletonList("condition"));
- tagsStructurePriorTo200.put("trackedCondition", Collections.singletonList("condition"));
- tagsStructurePriorTo200.put("usableInPastEventCondition", Collections.singletonList("condition"));
-
- tagsStructurePriorTo200.put("formMappingRule", Collections.<String>emptyList());
-
- tagsStructurePriorTo200.put("downloadGoal", Collections.singletonList("goal"));
- tagsStructurePriorTo200.put("formGoal", Collections.singletonList("goal"));
- tagsStructurePriorTo200.put("funnelGoal", Collections.singletonList("goal"));
- tagsStructurePriorTo200.put("landingPageGoal", Collections.singletonList("goal"));
- tagsStructurePriorTo200.put("pageVisitGoal", Collections.singletonList("goal"));
- tagsStructurePriorTo200.put("videoGoal", Collections.singletonList("goal"));
-
- tagsStructurePriorTo200.put("aggregated", Collections.singletonList("profileTags"));
- tagsStructurePriorTo200.put("autocompleted", Collections.singletonList("profileTags"));
- tagsStructurePriorTo200.put("demographic", Collections.singletonList("profileTags"));
- tagsStructurePriorTo200.put("event", Collections.singletonList("profileTags"));
- tagsStructurePriorTo200.put("geographic", Collections.singletonList("profileTags"));
- tagsStructurePriorTo200.put("logical", Collections.singletonList("profileTags"));
-
- tagsStructurePriorTo200.put("profileProperties", Collections.singletonList("properties"));
- tagsStructurePriorTo200.put("systemProfileProperties", Arrays.asList("properties", "profileProperties"));
- tagsStructurePriorTo200.put("basicProfileProperties", Arrays.asList("properties", "profileProperties"));
- tagsStructurePriorTo200.put("leadProfileProperties", Arrays.asList("properties", "profileProperties"));
- tagsStructurePriorTo200.put("contactProfileProperties", Arrays.asList("properties", "profileProperties"));
- tagsStructurePriorTo200.put("socialProfileProperties", Arrays.asList("properties", "profileProperties"));
- tagsStructurePriorTo200.put("personalProfileProperties", Arrays.asList("properties", "profileProperties"));
- tagsStructurePriorTo200.put("workProfileProperties", Arrays.asList("properties", "profileProperties"));
-
- tagsStructurePriorTo200.put("sessionProperties", Collections.singletonList("properties"));
- tagsStructurePriorTo200.put("geographicSessionProperties", Arrays.asList("properties", "sessionProperties"));
- tagsStructurePriorTo200.put("technicalSessionProperties", Arrays.asList("properties", "sessionProperties"));
+ private void initTagsStructurePriorTo130() {
+ tagsStructurePriorTo130 = new LinkedHashMap<>();
+ tagsStructurePriorTo130.put("landing", Collections.singletonList("campaign"));
+ tagsStructurePriorTo130.put("parameter", Collections.singletonList("campaign"));
+ tagsStructurePriorTo130.put("referrer", Collections.singletonList("campaign"));
+
+ tagsStructurePriorTo130.put("eventCondition", Collections.singletonList("condition"));
+ tagsStructurePriorTo130.put("profileCondition", Collections.singletonList("condition"));
+ tagsStructurePriorTo130.put("sessionCondition", Collections.singletonList("condition"));
+ tagsStructurePriorTo130.put("sourceEventCondition", Collections.singletonList("condition"));
+ tagsStructurePriorTo130.put("trackedCondition", Collections.singletonList("condition"));
+ tagsStructurePriorTo130.put("usableInPastEventCondition", Collections.singletonList("condition"));
+
+ tagsStructurePriorTo130.put("formMappingRule", Collections.<String>emptyList());
+
+ tagsStructurePriorTo130.put("downloadGoal", Collections.singletonList("goal"));
+ tagsStructurePriorTo130.put("formGoal", Collections.singletonList("goal"));
+ tagsStructurePriorTo130.put("funnelGoal", Collections.singletonList("goal"));
+ tagsStructurePriorTo130.put("landingPageGoal", Collections.singletonList("goal"));
+ tagsStructurePriorTo130.put("pageVisitGoal", Collections.singletonList("goal"));
+ tagsStructurePriorTo130.put("videoGoal", Collections.singletonList("goal"));
+
+ tagsStructurePriorTo130.put("aggregated", Collections.singletonList("profileTags"));
+ tagsStructurePriorTo130.put("autocompleted", Collections.singletonList("profileTags"));
+ tagsStructurePriorTo130.put("demographic", Collections.singletonList("profileTags"));
+ tagsStructurePriorTo130.put("event", Collections.singletonList("profileTags"));
+ tagsStructurePriorTo130.put("geographic", Collections.singletonList("profileTags"));
+ tagsStructurePriorTo130.put("logical", Collections.singletonList("profileTags"));
+
+ tagsStructurePriorTo130.put("profileProperties", Collections.singletonList("properties"));
+ tagsStructurePriorTo130.put("systemProfileProperties", Arrays.asList("properties", "profileProperties"));
+ tagsStructurePriorTo130.put("basicProfileProperties", Arrays.asList("properties", "profileProperties"));
+ tagsStructurePriorTo130.put("leadProfileProperties", Arrays.asList("properties", "profileProperties"));
+ tagsStructurePriorTo130.put("contactProfileProperties", Arrays.asList("properties", "profileProperties"));
+ tagsStructurePriorTo130.put("socialProfileProperties", Arrays.asList("properties", "profileProperties"));
+ tagsStructurePriorTo130.put("personalProfileProperties", Arrays.asList("properties", "profileProperties"));
+ tagsStructurePriorTo130.put("workProfileProperties", Arrays.asList("properties", "profileProperties"));
+
+ tagsStructurePriorTo130.put("sessionProperties", Collections.singletonList("properties"));
+ tagsStructurePriorTo130.put("geographicSessionProperties", Arrays.asList("properties", "sessionProperties"));
+ tagsStructurePriorTo130.put("technicalSessionProperties", Arrays.asList("properties", "sessionProperties"));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
index e77f4b9..f4070c0 100644
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
@@ -19,11 +19,20 @@ package org.apache.unomi.shell.services;
import org.osgi.framework.BundleException;
/**
+ * This service provide method to manage unomi
* @author dgaillard
*/
public interface UnomiManagementService {
+ /**
+ * This method will start Apache Unomi
+ * @throws BundleException
+ */
void startUnomi() throws BundleException;
+ /**
+ * This method will stop Apache Unomi
+ * @throws BundleException
+ */
void stopUnomi() throws BundleException;
}
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 7b31650..65f91f4 100644
--- a/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -21,7 +21,7 @@
xmlns:shell="http://karaf.apache.org/xmlns/shell/v1.1.0"
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
- <bean id="migrateTo200" class="org.apache.unomi.shell.migration.impl.MigrationTo130"/>
+ <bean id="migrateTo130" class="org.apache.unomi.shell.migration.impl.MigrationTo130"/>
<shell:command-bundle>
<shell:command>
@@ -29,7 +29,7 @@
<shell:property name="migrations">
<list>
<!-- Migration beans must be executed in the right order so you must place new bean at the end of this list -->
- <ref component-id="migrateTo200"/>
+ <ref component-id="migrateTo130"/>
</list>
</shell:property>
</shell:action>