You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ik...@apache.org on 2019/09/02 22:39:20 UTC

[fineract-cn-template] branch develop updated (d7c232d -> 9e47fb4)

This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git.


    from d7c232d  Merge pull request #8 from ebenezergraham/FINCN-157
     new 4e85c4e  Migrate template service from MariaDB to PostgreSQL
     new db65864  Migrate template service from MariaDB to PostgreSQL
     new 09f93de  Fixed Flyway migration scripts
     new c83f004  Ensure flyway migrations target right database
     new 5aece2e  Enabling database-level sequence generation with pseudotypes
     new 666d932  Merge pull request #1 from ebenezergraham/FINCN-2
     new 9e47fb4  Merge pull request #6 from Izakey/FINCN-120

The 38 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .gitignore                                                |  3 ++-
 NOTICE.txt                                                |  2 +-
 .../apache/fineract/cn/template/SuiteTestEnvironment.java |  6 +++---
 .../java/org/apache/fineract/cn/template/TestSample.java  |  2 +-
 service/build.gradle                                      |  2 +-
 .../cn/template/service/TemplateConfiguration.java        |  4 ++--
 .../internal/command/handler/MigrationAggregate.java      |  2 +-
 service/src/main/resources/application.yml                | 15 ++++++++++-----
 .../{mariadb => postgresql}/V1__initial_setup.sql         |  2 +-
 shared.gradle                                             |  5 +++--
 10 files changed, 25 insertions(+), 18 deletions(-)
 rename service/src/main/resources/db/migrations/{mariadb => postgresql}/V1__initial_setup.sql (96%)


[fineract-cn-template] 26/38: Removing last references to mifos.

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 981ca5ace7b75b054235b886cb84e6f981717854
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Fri Apr 13 17:01:12 2018 +0200

    Removing last references to mifos.
---
 README.md | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/README.md b/README.md
index 0a1f496..0c955ed 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,6 @@
 # Apache Fineract CN Template
 
-[![Join the chat at https://gitter.im/mifos-initiative/mifos.io](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mifos-initiative/mifos.io?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-
-This project provides a template layout for all Apache Fineract CN microservices.
+This project provides a template layout for all Apache Fineract CN services.
 
 ## Abstract
 Apache Fineract CN is an application framework for digital financial services, a system to support nationwide and cross-national financial transactions and help to level and speed the creation of an inclusive, interconnected digital economy for every nation in the world.
@@ -25,11 +23,11 @@ Apache Fineract CN is an application framework for digital financial services, a
 
         gradle wrapper
 
-6.  Open all module specific build.gradle files (api, service, and component-test) and replace value of _group_ with io.mifos.{project name}
+6.  Open all module specific build.gradle files (api, service, and component-test) and replace value of _group_ with org.apache.fineract.cn.{project name}
 
 7.  Import project into IDE
 
-8.  Rename all org.apache.fineract.cn.template packages to io.mifos.{project name}
+8.  Rename all org.apache.fineract.cn.template packages to org.apache.fineract.cn.{project name}
 
 9.  Open _SampleRestConfiguration_ and _SampleServiceConfiguration_, adjust @ComponentScan to reflect the new package name
 


[fineract-cn-template] 31/38: Merge pull request #7 from aasaru/artifactory

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit e3a2b0bf4664328e5e9828bf581e4d8bbe25b0ec
Merge: 6686274 ae271bb
Author: Awasum Yannick <aw...@apache.org>
AuthorDate: Tue Apr 30 09:20:41 2019 +0100

    Merge pull request #7 from aasaru/artifactory
    
    FINCN-148 build with travis-ci.com and upload artifacts to Artifactory

 .travis.yml                 | 30 +++++++++++++++++++
 README.md                   |  7 ++++-
 api/build.gradle            |  3 +-
 build.gradle                |  8 +++++
 component-test/build.gradle |  4 ++-
 service/build.gradle        |  5 ++--
 shared.gradle               | 18 ++++++++++++
 travis.sh                   | 71 +++++++++++++++++++++++++++++++++++++++++++++
 8 files changed, 141 insertions(+), 5 deletions(-)


[fineract-cn-template] 36/38: Enabling database-level sequence generation with pseudotypes

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 5aece2ef15e2a634ae6bf1b71ad6fb0590bfb14e
Author: ebenezergraham <eg...@alustudent.com>
AuthorDate: Sun Jul 14 06:33:05 2019 +0400

    Enabling database-level sequence generation with pseudotypes
---
 .gitignore                                                             | 3 ++-
 .../src/main/resources/db/migrations/postgresql/V1__initial_setup.sql  | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/.gitignore b/.gitignore
index f9d7cba..554b089 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,8 @@
 .idea
 build/
 target/
-
+**/out
+**/build
 # Ignore Gradle GUI config
 gradle-app.setting
 
diff --git a/service/src/main/resources/db/migrations/postgresql/V1__initial_setup.sql b/service/src/main/resources/db/migrations/postgresql/V1__initial_setup.sql
index d45736c..2598274 100644
--- a/service/src/main/resources/db/migrations/postgresql/V1__initial_setup.sql
+++ b/service/src/main/resources/db/migrations/postgresql/V1__initial_setup.sql
@@ -18,7 +18,7 @@
 --
 
 CREATE TABLE template_samples (
-  id BIGINT NOT NULL,
+  id BIGSERIAL,
   identifier VARCHAR(8) NOT NULL,
   payload VARCHAR(512) NULL,
   CONSTRAINT template_samples_pk PRIMARY KEY (id)


[fineract-cn-template] 03/38: Adding example for test

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 8a38bb19f1dad2156cb095821852f29a7b1a3153
Author: myrle-krantz <mk...@mifos.org>
AuthorDate: Tue Apr 4 17:11:41 2017 +0200

    Adding example for test
---
 api/build.gradle                                   |  4 ++
 .../mifos/template/api/v1/domain/SampleTest.java   | 55 ++++++++++++++++++++++
 2 files changed, 59 insertions(+)

diff --git a/api/build.gradle b/api/build.gradle
index c5b6745..17c6648 100644
--- a/api/build.gradle
+++ b/api/build.gradle
@@ -21,6 +21,10 @@ dependencies {
             [group: 'org.hibernate', name: 'hibernate-validator', version: versions.validator],
             [group: 'org.hibernate', name: 'hibernate-validator-annotation-processor', version: versions.validator]
     )
+
+    testCompile(
+            [group: 'io.mifos.core', name: 'test', version: versions.frameworktest],
+    )
 }
 
 publishing {
diff --git a/api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java b/api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java
new file mode 100644
index 0000000..acf33cb
--- /dev/null
+++ b/api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2017 The Mifos Initiative.
+ *
+ * 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 io.mifos.template.api.v1.domain;
+
+import io.mifos.core.test.domain.ValidationTest;
+import io.mifos.core.test.domain.ValidationTestCase;
+import org.apache.commons.lang.RandomStringUtils;
+import org.junit.runners.Parameterized;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+public class SampleTest extends ValidationTest<Sample> {
+
+  public SampleTest(ValidationTestCase<Sample> testCase) {
+    super(testCase);
+  }
+
+  @Override
+  protected Sample createValidTestSubject() {
+    return Sample.create("xxxx", "yyy");
+  }
+
+  @Parameterized.Parameters
+  public static Collection testCases() {
+    final Collection<ValidationTestCase> ret = new ArrayList<>();
+    ret.add(new ValidationTestCase<Sample>("basicCase")
+            .adjustment(x -> {})
+            .valid(true));
+    ret.add(new ValidationTestCase<Sample>("nullIdentifier")
+            .adjustment(x -> x.setIdentifier(null))
+            .valid(false));
+    ret.add(new ValidationTestCase<Sample>("tooShortIdentifier")
+            .adjustment(x -> x.setIdentifier("z"))
+            .valid(false));
+    ret.add(new ValidationTestCase<Sample>("tooLongPayload")
+            .adjustment(x -> x.setPayload(RandomStringUtils.randomAlphanumeric(513)))
+            .valid(false));
+    return ret;
+  }
+
+}
\ No newline at end of file


[fineract-cn-template] 35/38: Merge pull request #8 from ebenezergraham/FINCN-157

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit d7c232dd555d88cf6d7b8e477162a9a5596df4e4
Merge: e3a2b0b bccb1ac
Author: Awasum Yannick <aw...@apache.org>
AuthorDate: Mon Jun 3 20:11:10 2019 +0100

    Merge pull request #8 from ebenezergraham/FINCN-157
    
    Adding rat report to After Failure procedure

 .travis.yml   | 3 +++
 shared.gradle | 1 +
 2 files changed, 4 insertions(+)


[fineract-cn-template] 25/38: Change package names from mifos to apache fineract.

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit a31d2fdf7c930dccaea2a5d6615a44ce3c5a4849
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Fri Apr 13 16:58:38 2018 +0200

    Change package names from mifos to apache fineract.
---
 README.md                                                  |  2 +-
 .../fineract/cn}/template/api/v1/PermittableGroupIds.java  |  2 +-
 .../cn}/template/api/v1/client/IamATeapotException.java    |  2 +-
 .../cn}/template/api/v1/client/TemplateManager.java        |  4 ++--
 .../apache/fineract/cn}/template/api/v1/domain/Sample.java |  2 +-
 .../cn}/template/api/v1/events/EventConstants.java         |  2 +-
 .../fineract/cn}/template/api/v1/domain/SampleTest.java    |  2 +-
 .../apache/fineract/cn}/template/SuiteTestEnvironment.java |  2 +-
 .../apache/fineract/cn}/template/TestSample.java           | 14 +++++++-------
 .../apache/fineract/cn}/template/TestSuite.java            |  2 +-
 .../cn}/template/listener/MigrationEventListener.java      |  4 ++--
 .../cn}/template/listener/SampleEventListener.java         |  4 ++--
 .../fineract/cn}/template/service/ServiceConstants.java    |  2 +-
 .../fineract/cn}/template/service/TemplateApplication.java |  2 +-
 .../cn}/template/service/TemplateConfiguration.java        | 12 ++++++------
 .../service/internal/command/InitializeServiceCommand.java |  2 +-
 .../template/service/internal/command/SampleCommand.java   |  4 ++--
 .../internal/command/handler/MigrationAggregate.java       |  8 ++++----
 .../service/internal/command/handler/SampleAggregate.java  | 10 +++++-----
 .../cn}/template/service/internal/mapper/SampleMapper.java |  6 +++---
 .../service/internal/repository/SampleJpaEntity.java       |  2 +-
 .../internal/repository/SampleJpaEntityRepository.java     |  2 +-
 .../template/service/internal/service/SampleService.java   |  8 ++++----
 .../cn}/template/service/rest/SampleRestController.java    | 14 +++++++-------
 24 files changed, 57 insertions(+), 57 deletions(-)

diff --git a/README.md b/README.md
index 3f20df9..0a1f496 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@ Apache Fineract CN is an application framework for digital financial services, a
 
 7.  Import project into IDE
 
-8.  Rename all io.mifos.template packages to io.mifos.{project name}
+8.  Rename all org.apache.fineract.cn.template packages to io.mifos.{project name}
 
 9.  Open _SampleRestConfiguration_ and _SampleServiceConfiguration_, adjust @ComponentScan to reflect the new package name
 
diff --git a/api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java b/api/src/main/java/org/apache/fineract/cn/template/api/v1/PermittableGroupIds.java
similarity index 95%
rename from api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java
rename to api/src/main/java/org/apache/fineract/cn/template/api/v1/PermittableGroupIds.java
index ef5ec01..5b7a4a9 100644
--- a/api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java
+++ b/api/src/main/java/org/apache/fineract/cn/template/api/v1/PermittableGroupIds.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.api.v1;
+package org.apache.fineract.cn.template.api.v1;
 
 @SuppressWarnings("unused")
 public interface PermittableGroupIds {
diff --git a/api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java b/api/src/main/java/org/apache/fineract/cn/template/api/v1/client/IamATeapotException.java
similarity index 94%
rename from api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java
rename to api/src/main/java/org/apache/fineract/cn/template/api/v1/client/IamATeapotException.java
index 00825b2..df11da2 100644
--- a/api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java
+++ b/api/src/main/java/org/apache/fineract/cn/template/api/v1/client/IamATeapotException.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.api.v1.client;
+package org.apache.fineract.cn.template.api.v1.client;
 
 @SuppressWarnings("WeakerAccess")
 public class IamATeapotException extends RuntimeException {
diff --git a/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java b/api/src/main/java/org/apache/fineract/cn/template/api/v1/client/TemplateManager.java
similarity index 95%
rename from api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java
rename to api/src/main/java/org/apache/fineract/cn/template/api/v1/client/TemplateManager.java
index f4d7037..9caf8dc 100644
--- a/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java
+++ b/api/src/main/java/org/apache/fineract/cn/template/api/v1/client/TemplateManager.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.api.v1.client;
+package org.apache.fineract.cn.template.api.v1.client;
 
-import io.mifos.template.api.v1.domain.Sample;
+import org.apache.fineract.cn.template.api.v1.domain.Sample;
 import java.util.List;
 import org.apache.fineract.cn.api.annotation.ThrowsException;
 import org.apache.fineract.cn.api.util.CustomFeignClientsConfiguration;
diff --git a/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java b/api/src/main/java/org/apache/fineract/cn/template/api/v1/domain/Sample.java
similarity index 97%
rename from api/src/main/java/io/mifos/template/api/v1/domain/Sample.java
rename to api/src/main/java/org/apache/fineract/cn/template/api/v1/domain/Sample.java
index 12bf046..1155f4c 100644
--- a/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java
+++ b/api/src/main/java/org/apache/fineract/cn/template/api/v1/domain/Sample.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.api.v1.domain;
+package org.apache.fineract.cn.template.api.v1.domain;
 
 import java.util.Objects;
 import org.apache.fineract.cn.lang.validation.constraints.ValidIdentifier;
diff --git a/api/src/main/java/io/mifos/template/api/v1/events/EventConstants.java b/api/src/main/java/org/apache/fineract/cn/template/api/v1/events/EventConstants.java
similarity index 95%
rename from api/src/main/java/io/mifos/template/api/v1/events/EventConstants.java
rename to api/src/main/java/org/apache/fineract/cn/template/api/v1/events/EventConstants.java
index 58368c4..ce52f51 100644
--- a/api/src/main/java/io/mifos/template/api/v1/events/EventConstants.java
+++ b/api/src/main/java/org/apache/fineract/cn/template/api/v1/events/EventConstants.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.api.v1.events;
+package org.apache.fineract.cn.template.api.v1.events;
 
 @SuppressWarnings("unused")
 public interface EventConstants {
diff --git a/api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java b/api/src/test/java/org/apache/fineract/cn/template/api/v1/domain/SampleTest.java
similarity index 97%
rename from api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java
rename to api/src/test/java/org/apache/fineract/cn/template/api/v1/domain/SampleTest.java
index eb6dd03..b0a05bf 100644
--- a/api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java
+++ b/api/src/test/java/org/apache/fineract/cn/template/api/v1/domain/SampleTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.api.v1.domain;
+package org.apache.fineract.cn.template.api.v1.domain;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java b/component-test/src/main/java/org/apache/fineract/cn/template/SuiteTestEnvironment.java
similarity index 98%
rename from component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java
rename to component-test/src/main/java/org/apache/fineract/cn/template/SuiteTestEnvironment.java
index 3ec0a44..85b601e 100644
--- a/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/template/SuiteTestEnvironment.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template;
+package org.apache.fineract.cn.template;
 
 import org.apache.fineract.cn.test.env.TestEnvironment;
 import org.apache.fineract.cn.test.fixture.cassandra.CassandraInitializer;
diff --git a/component-test/src/main/java/io/mifos/template/TestSample.java b/component-test/src/main/java/org/apache/fineract/cn/template/TestSample.java
similarity index 90%
rename from component-test/src/main/java/io/mifos/template/TestSample.java
rename to component-test/src/main/java/org/apache/fineract/cn/template/TestSample.java
index 527e978..42fc067 100644
--- a/component-test/src/main/java/io/mifos/template/TestSample.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/template/TestSample.java
@@ -16,12 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template;
+package org.apache.fineract.cn.template;
 
-import io.mifos.template.api.v1.client.TemplateManager;
-import io.mifos.template.api.v1.domain.Sample;
-import io.mifos.template.api.v1.events.EventConstants;
-import io.mifos.template.service.TemplateConfiguration;
+import org.apache.fineract.cn.template.api.v1.client.TemplateManager;
+import org.apache.fineract.cn.template.api.v1.domain.Sample;
+import org.apache.fineract.cn.template.api.v1.events.EventConstants;
+import org.apache.fineract.cn.template.service.TemplateConfiguration;
 import java.util.List;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.fineract.cn.anubis.test.v1.TenantApplicationSecurityEnvironmentTestRule;
@@ -58,10 +58,10 @@ public class TestSample extends SuiteTestEnvironment {
 
   @Configuration
   @EnableEventRecording
-  @EnableFeignClients(basePackages = {"io.mifos.template.api.v1.client"})
+  @EnableFeignClients(basePackages = {"org.apache.fineract.cn.template.api.v1.client"})
   @RibbonClient(name = APP_NAME)
   @Import({TemplateConfiguration.class})
-  @ComponentScan("io.mifos.template.listener")
+  @ComponentScan("org.apache.fineract.cn.template.listener")
   public static class TestConfiguration {
     public TestConfiguration() {
       super();
diff --git a/component-test/src/main/java/io/mifos/template/TestSuite.java b/component-test/src/main/java/org/apache/fineract/cn/template/TestSuite.java
similarity index 96%
rename from component-test/src/main/java/io/mifos/template/TestSuite.java
rename to component-test/src/main/java/org/apache/fineract/cn/template/TestSuite.java
index 13af827..a8f0647 100644
--- a/component-test/src/main/java/io/mifos/template/TestSuite.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/template/TestSuite.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template;
+package org.apache.fineract.cn.template;
 
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
diff --git a/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java b/component-test/src/main/java/org/apache/fineract/cn/template/listener/MigrationEventListener.java
similarity index 94%
rename from component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
rename to component-test/src/main/java/org/apache/fineract/cn/template/listener/MigrationEventListener.java
index b54f66f..9222a99 100644
--- a/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/template/listener/MigrationEventListener.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.listener;
+package org.apache.fineract.cn.template.listener;
 
-import io.mifos.template.api.v1.events.EventConstants;
+import org.apache.fineract.cn.template.api.v1.events.EventConstants;
 import org.apache.fineract.cn.lang.config.TenantHeaderFilter;
 import org.apache.fineract.cn.test.listener.EventRecorder;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java b/component-test/src/main/java/org/apache/fineract/cn/template/listener/SampleEventListener.java
similarity index 94%
rename from component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
rename to component-test/src/main/java/org/apache/fineract/cn/template/listener/SampleEventListener.java
index cf6b8c4..c23228d 100644
--- a/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/template/listener/SampleEventListener.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.listener;
+package org.apache.fineract.cn.template.listener;
 
-import io.mifos.template.api.v1.events.EventConstants;
+import org.apache.fineract.cn.template.api.v1.events.EventConstants;
 import org.apache.fineract.cn.lang.config.TenantHeaderFilter;
 import org.apache.fineract.cn.test.listener.EventRecorder;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/service/src/main/java/io/mifos/template/service/ServiceConstants.java b/service/src/main/java/org/apache/fineract/cn/template/service/ServiceConstants.java
similarity index 94%
rename from service/src/main/java/io/mifos/template/service/ServiceConstants.java
rename to service/src/main/java/org/apache/fineract/cn/template/service/ServiceConstants.java
index fd1d982..eaff469 100644
--- a/service/src/main/java/io/mifos/template/service/ServiceConstants.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/ServiceConstants.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.service;
+package org.apache.fineract.cn.template.service;
 
 public interface ServiceConstants {
   String LOGGER_NAME = "rest-logger";
diff --git a/service/src/main/java/io/mifos/template/service/TemplateApplication.java b/service/src/main/java/org/apache/fineract/cn/template/service/TemplateApplication.java
similarity index 95%
rename from service/src/main/java/io/mifos/template/service/TemplateApplication.java
rename to service/src/main/java/org/apache/fineract/cn/template/service/TemplateApplication.java
index 473bec4..8d2bd42 100644
--- a/service/src/main/java/io/mifos/template/service/TemplateApplication.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/TemplateApplication.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.service;
+package org.apache.fineract.cn.template.service;
 
 import org.springframework.boot.SpringApplication;
 
diff --git a/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java b/service/src/main/java/org/apache/fineract/cn/template/service/TemplateConfiguration.java
similarity index 87%
rename from service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
rename to service/src/main/java/org/apache/fineract/cn/template/service/TemplateConfiguration.java
index b75c1ad..568ae47 100644
--- a/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/TemplateConfiguration.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.service;
+package org.apache.fineract.cn.template.service;
 
 import org.apache.fineract.cn.anubis.config.EnableAnubis;
 import org.apache.fineract.cn.async.config.EnableAsync;
@@ -48,13 +48,13 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
 @EnableAnubis
 @EnableServiceException
 @ComponentScan({
-    "io.mifos.template.service.rest",
-    "io.mifos.template.service.internal.service",
-    "io.mifos.template.service.internal.repository",
-    "io.mifos.template.service.internal.command.handler"
+    "org.apache.fineract.cn.template.service.rest",
+    "org.apache.fineract.cn.template.service.internal.service",
+    "org.apache.fineract.cn.template.service.internal.repository",
+    "org.apache.fineract.cn.template.service.internal.command.handler"
 })
 @EnableJpaRepositories({
-    "io.mifos.template.service.internal.repository"
+    "org.apache.fineract.cn.template.service.internal.repository"
 })
 public class TemplateConfiguration extends WebMvcConfigurerAdapter {
 
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java b/service/src/main/java/org/apache/fineract/cn/template/service/internal/command/InitializeServiceCommand.java
similarity index 93%
rename from service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java
rename to service/src/main/java/org/apache/fineract/cn/template/service/internal/command/InitializeServiceCommand.java
index aef272b..99ad3af 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/internal/command/InitializeServiceCommand.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.service.internal.command;
+package org.apache.fineract.cn.template.service.internal.command;
 
 public class InitializeServiceCommand {
 
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java b/service/src/main/java/org/apache/fineract/cn/template/service/internal/command/SampleCommand.java
similarity index 90%
rename from service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java
rename to service/src/main/java/org/apache/fineract/cn/template/service/internal/command/SampleCommand.java
index b11ecfc..bca95d9 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/internal/command/SampleCommand.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.service.internal.command;
+package org.apache.fineract.cn.template.service.internal.command;
 
-import io.mifos.template.api.v1.domain.Sample;
+import org.apache.fineract.cn.template.api.v1.domain.Sample;
 
 public class SampleCommand {
 
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java b/service/src/main/java/org/apache/fineract/cn/template/service/internal/command/handler/MigrationAggregate.java
similarity index 89%
rename from service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
rename to service/src/main/java/org/apache/fineract/cn/template/service/internal/command/handler/MigrationAggregate.java
index eeecf99..ef44e6c 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/internal/command/handler/MigrationAggregate.java
@@ -16,11 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.service.internal.command.handler;
+package org.apache.fineract.cn.template.service.internal.command.handler;
 
-import io.mifos.template.api.v1.events.EventConstants;
-import io.mifos.template.service.ServiceConstants;
-import io.mifos.template.service.internal.command.InitializeServiceCommand;
+import org.apache.fineract.cn.template.api.v1.events.EventConstants;
+import org.apache.fineract.cn.template.service.ServiceConstants;
+import org.apache.fineract.cn.template.service.internal.command.InitializeServiceCommand;
 import javax.sql.DataSource;
 import org.apache.fineract.cn.command.annotation.Aggregate;
 import org.apache.fineract.cn.command.annotation.CommandHandler;
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java b/service/src/main/java/org/apache/fineract/cn/template/service/internal/command/handler/SampleAggregate.java
similarity index 87%
rename from service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
rename to service/src/main/java/org/apache/fineract/cn/template/service/internal/command/handler/SampleAggregate.java
index c82db9f..26e396a 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/internal/command/handler/SampleAggregate.java
@@ -16,12 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.service.internal.command.handler;
+package org.apache.fineract.cn.template.service.internal.command.handler;
 
-import io.mifos.template.api.v1.events.EventConstants;
-import io.mifos.template.service.internal.command.SampleCommand;
-import io.mifos.template.service.internal.repository.SampleJpaEntity;
-import io.mifos.template.service.internal.repository.SampleJpaEntityRepository;
+import org.apache.fineract.cn.template.api.v1.events.EventConstants;
+import org.apache.fineract.cn.template.service.internal.command.SampleCommand;
+import org.apache.fineract.cn.template.service.internal.repository.SampleJpaEntity;
+import org.apache.fineract.cn.template.service.internal.repository.SampleJpaEntityRepository;
 import org.apache.fineract.cn.command.annotation.Aggregate;
 import org.apache.fineract.cn.command.annotation.CommandHandler;
 import org.apache.fineract.cn.command.annotation.CommandLogLevel;
diff --git a/service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java b/service/src/main/java/org/apache/fineract/cn/template/service/internal/mapper/SampleMapper.java
similarity index 87%
rename from service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java
rename to service/src/main/java/org/apache/fineract/cn/template/service/internal/mapper/SampleMapper.java
index 23ccc7a..028553d 100644
--- a/service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/internal/mapper/SampleMapper.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.service.internal.mapper;
+package org.apache.fineract.cn.template.service.internal.mapper;
 
-import io.mifos.template.api.v1.domain.Sample;
-import io.mifos.template.service.internal.repository.SampleJpaEntity;
+import org.apache.fineract.cn.template.api.v1.domain.Sample;
+import org.apache.fineract.cn.template.service.internal.repository.SampleJpaEntity;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java b/service/src/main/java/org/apache/fineract/cn/template/service/internal/repository/SampleJpaEntity.java
similarity index 95%
rename from service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java
rename to service/src/main/java/org/apache/fineract/cn/template/service/internal/repository/SampleJpaEntity.java
index 382437b..49452f3 100644
--- a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/internal/repository/SampleJpaEntity.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.service.internal.repository;
+package org.apache.fineract.cn.template.service.internal.repository;
 
 import javax.persistence.*;
 
diff --git a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java b/service/src/main/java/org/apache/fineract/cn/template/service/internal/repository/SampleJpaEntityRepository.java
similarity index 94%
rename from service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java
rename to service/src/main/java/org/apache/fineract/cn/template/service/internal/repository/SampleJpaEntityRepository.java
index 531c333..87dc990 100644
--- a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/internal/repository/SampleJpaEntityRepository.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.service.internal.repository;
+package org.apache.fineract.cn.template.service.internal.repository;
 
 import java.util.Optional;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/service/src/main/java/io/mifos/template/service/internal/service/SampleService.java b/service/src/main/java/org/apache/fineract/cn/template/service/internal/service/SampleService.java
similarity index 83%
rename from service/src/main/java/io/mifos/template/service/internal/service/SampleService.java
rename to service/src/main/java/org/apache/fineract/cn/template/service/internal/service/SampleService.java
index e87a379..ec791ed 100644
--- a/service/src/main/java/io/mifos/template/service/internal/service/SampleService.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/internal/service/SampleService.java
@@ -16,11 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.service.internal.service;
+package org.apache.fineract.cn.template.service.internal.service;
 
-import io.mifos.template.api.v1.domain.Sample;
-import io.mifos.template.service.internal.mapper.SampleMapper;
-import io.mifos.template.service.internal.repository.SampleJpaEntityRepository;
+import org.apache.fineract.cn.template.api.v1.domain.Sample;
+import org.apache.fineract.cn.template.service.internal.mapper.SampleMapper;
+import org.apache.fineract.cn.template.service.internal.repository.SampleJpaEntityRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
diff --git a/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java b/service/src/main/java/org/apache/fineract/cn/template/service/rest/SampleRestController.java
similarity index 89%
rename from service/src/main/java/io/mifos/template/service/rest/SampleRestController.java
rename to service/src/main/java/org/apache/fineract/cn/template/service/rest/SampleRestController.java
index 86bfa6e..30b0565 100644
--- a/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/rest/SampleRestController.java
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package io.mifos.template.service.rest;
+package org.apache.fineract.cn.template.service.rest;
 
-import io.mifos.template.api.v1.PermittableGroupIds;
-import io.mifos.template.api.v1.domain.Sample;
-import io.mifos.template.service.ServiceConstants;
-import io.mifos.template.service.internal.command.InitializeServiceCommand;
-import io.mifos.template.service.internal.command.SampleCommand;
-import io.mifos.template.service.internal.service.SampleService;
+import org.apache.fineract.cn.template.api.v1.PermittableGroupIds;
+import org.apache.fineract.cn.template.api.v1.domain.Sample;
+import org.apache.fineract.cn.template.service.ServiceConstants;
+import org.apache.fineract.cn.template.service.internal.command.InitializeServiceCommand;
+import org.apache.fineract.cn.template.service.internal.command.SampleCommand;
+import org.apache.fineract.cn.template.service.internal.service.SampleService;
 import java.util.List;
 import javax.validation.Valid;
 import org.apache.fineract.cn.anubis.annotation.AcceptedTokenType;


[fineract-cn-template] 05/38: added path configurer to allow dots in url

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit a0d25be681d7a3cd5033068eb735b02009408798
Author: mgeiss <mg...@mifos.org>
AuthorDate: Wed Apr 26 18:12:55 2017 +0200

    added path configurer to allow dots in url
---
 .../java/io/mifos/template/service/TemplateConfiguration.java    | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java b/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
index d0fd484..33ee609 100644
--- a/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
+++ b/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
@@ -30,6 +30,8 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
 
 @SuppressWarnings("WeakerAccess")
 @Configuration
@@ -51,7 +53,7 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 @EnableJpaRepositories({
     "io.mifos.template.service.internal.repository"
 })
-public class TemplateConfiguration {
+public class TemplateConfiguration extends WebMvcConfigurerAdapter {
 
   public TemplateConfiguration() {
     super();
@@ -61,4 +63,9 @@ public class TemplateConfiguration {
   public Logger logger() {
     return LoggerFactory.getLogger(ServiceConstants.LOGGER_NAME);
   }
+
+  @Override
+  public void configurePathMatch(final PathMatchConfigurer configurer) {
+    configurer.setUseSuffixPatternMatch(Boolean.FALSE);
+  }
 }


[fineract-cn-template] 37/38: Merge pull request #1 from ebenezergraham/FINCN-2

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 666d932b01348ddeb2531c83b78fbe9c2df743ec
Merge: c83f004 5aece2e
Author: Isaac Kamga <ik...@apache.org>
AuthorDate: Sun Aug 25 18:01:58 2019 +0100

    Merge pull request #1 from ebenezergraham/FINCN-2
    
    Enabling database-level sequence generation with pseudotypes

 .gitignore                                                             | 3 ++-
 .../src/main/resources/db/migrations/postgresql/V1__initial_setup.sql  | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)


[fineract-cn-template] 07/38: Provided example necessary for running multiple tests as a suite. This is a pre-req for continuous integration.

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 15528625ed719bc3350f337f0f59b6e3e0ff7f4f
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Mon Jul 10 11:51:53 2017 +0200

    Provided example necessary for running multiple tests as a suite. This
    is a pre-req for continuous integration.
---
 .../io/mifos/template/SuiteTestEnvironment.java    | 43 ++++++++++++++++++++++
 .../main/java/io/mifos/template/TestSample.java    | 34 +++++++----------
 .../src/main/java/io/mifos/template/TestSuite.java | 27 ++++++++++++++
 3 files changed, 84 insertions(+), 20 deletions(-)

diff --git a/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java b/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java
new file mode 100644
index 0000000..dd5bfd0
--- /dev/null
+++ b/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2017 The Mifos Initiative.
+ *
+ * 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 io.mifos.template;
+
+import io.mifos.core.test.env.TestEnvironment;
+import io.mifos.core.test.fixture.cassandra.CassandraInitializer;
+import io.mifos.core.test.fixture.mariadb.MariaDBInitializer;
+import org.junit.ClassRule;
+import org.junit.rules.RuleChain;
+import org.junit.rules.RunExternalResourceOnce;
+import org.junit.rules.TestRule;
+
+/**
+ * This contains the database resources required by the test.  They are in a separate
+ * class so that the test suite can initialize them before the classes it calls. This
+ * makes test runs faster and prevents tests from "stepping on each other's toes" when
+ * initializing and de-initializing external resources.
+ */
+public class SuiteTestEnvironment {
+  static final String APP_NAME = "template-v1";
+  static final TestEnvironment testEnvironment = new TestEnvironment(APP_NAME);
+  static final CassandraInitializer cassandraInitializer = new CassandraInitializer();
+  static final MariaDBInitializer mariaDBInitializer = new MariaDBInitializer();
+
+  @ClassRule
+  public static TestRule orderClassRules = RuleChain
+      .outerRule(new RunExternalResourceOnce(testEnvironment))
+      .around(new RunExternalResourceOnce(cassandraInitializer))
+      .around(new RunExternalResourceOnce(mariaDBInitializer));
+}
diff --git a/component-test/src/main/java/io/mifos/template/TestSample.java b/component-test/src/main/java/io/mifos/template/TestSample.java
index b829355..9e90129 100644
--- a/component-test/src/main/java/io/mifos/template/TestSample.java
+++ b/component-test/src/main/java/io/mifos/template/TestSample.java
@@ -17,10 +17,7 @@ package io.mifos.template;
 
 import io.mifos.anubis.test.v1.TenantApplicationSecurityEnvironmentTestRule;
 import io.mifos.core.api.context.AutoUserContext;
-import io.mifos.core.test.env.TestEnvironment;
 import io.mifos.core.test.fixture.TenantDataStoreContextTestRule;
-import io.mifos.core.test.fixture.cassandra.CassandraInitializer;
-import io.mifos.core.test.fixture.mariadb.MariaDBInitializer;
 import io.mifos.core.test.listener.EnableEventRecording;
 import io.mifos.core.test.listener.EventRecorder;
 import io.mifos.template.api.v1.EventConstants;
@@ -29,12 +26,11 @@ import io.mifos.template.api.v1.domain.Sample;
 import io.mifos.template.service.TemplateConfiguration;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.junit.*;
-import org.junit.rules.RuleChain;
-import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.cloud.netflix.feign.EnableFeignClients;
 import org.springframework.cloud.netflix.ribbon.RibbonClient;
@@ -48,9 +44,10 @@ import java.util.List;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
-public class TestSample {
+public class TestSample extends SuiteTestEnvironment {
+  private static final String LOGGER_NAME = "test-logger";
+  private static final String TEST_USER = "homer";
 
-  private static final String APP_NAME = "template-v1";
 
   @Configuration
   @EnableEventRecording
@@ -63,24 +60,14 @@ public class TestSample {
       super();
     }
 
-    @Bean()
+    @Bean(name = LOGGER_NAME)
     public Logger logger() {
-      return LoggerFactory.getLogger("test-logger");
+      return LoggerFactory.getLogger(LOGGER_NAME);
     }
   }
-  private static final String TEST_USER = "homer";
-
-  private final static TestEnvironment testEnvironment = new TestEnvironment(APP_NAME);
-  private final static CassandraInitializer cassandraInitializer = new CassandraInitializer();
-  private final static MariaDBInitializer mariaDBInitializer = new MariaDBInitializer();
-  private final static TenantDataStoreContextTestRule tenantDataStoreContext = TenantDataStoreContextTestRule.forRandomTenantName(cassandraInitializer, mariaDBInitializer);
 
   @ClassRule
-  public static TestRule orderClassRules = RuleChain
-          .outerRule(testEnvironment)
-          .around(cassandraInitializer)
-          .around(mariaDBInitializer)
-          .around(tenantDataStoreContext);
+  public final static TenantDataStoreContextTestRule tenantDataStoreContext = TenantDataStoreContextTestRule.forRandomTenantName(cassandraInitializer, mariaDBInitializer);
 
   @Rule
   public final TenantApplicationSecurityEnvironmentTestRule tenantApplicationSecurityEnvironment
@@ -94,6 +81,11 @@ public class TestSample {
   @Autowired
   private EventRecorder eventRecorder;
 
+  @SuppressWarnings("WeakerAccess")
+  @Autowired
+  @Qualifier(LOGGER_NAME)
+  Logger logger;
+
   public TestSample() {
     super();
   }
@@ -119,6 +111,7 @@ public class TestSample {
 
   @Test
   public void shouldCreateSample() throws InterruptedException {
+    logger.info("Running test shouldCreateSample.");
     final Sample sample = Sample.create(RandomStringUtils.randomAlphanumeric(8), RandomStringUtils.randomAlphanumeric(512));
     this.testSubject.createEntity(sample);
 
@@ -130,6 +123,7 @@ public class TestSample {
 
   @Test
   public void shouldListSamples() {
+    logger.info("Running test shouldListSamples.");
     final List<Sample> allEntities = this.testSubject.findAllEntities();
     Assert.assertNotNull(allEntities);
   }
diff --git a/component-test/src/main/java/io/mifos/template/TestSuite.java b/component-test/src/main/java/io/mifos/template/TestSuite.java
new file mode 100644
index 0000000..44ed340
--- /dev/null
+++ b/component-test/src/main/java/io/mifos/template/TestSuite.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2017 The Mifos Initiative.
+ *
+ * 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 io.mifos.template;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+    TestSample.class,
+    //TODO: when you create a new component test, add it here so you can run it with the suite.
+})
+public class TestSuite extends SuiteTestEnvironment {
+}


[fineract-cn-template] 15/38: updating artifact ids to apache fineract from mifos io

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 1c2531067507dbe5953fd2b3b3d19c27596681ef
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Mon Feb 26 18:21:45 2018 +0100

    updating artifact ids to apache fineract from mifos io
---
 api/build.gradle            |  4 ++--
 build.gradle                |  2 +-
 component-test/build.gradle | 12 ++++++------
 service/build.gradle        | 14 +++++++-------
 shared.gradle               |  4 ++--
 5 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/api/build.gradle b/api/build.gradle
index 17c6648..1ed9d2b 100644
--- a/api/build.gradle
+++ b/api/build.gradle
@@ -17,13 +17,13 @@ apply from: '../shared.gradle'
 dependencies {
     compile(
             [group: 'org.springframework.cloud', name: 'spring-cloud-starter-feign'],
-            [group: 'io.mifos.core', name: 'api', version: versions.frameworkapi],
+            [group: 'org.apache.fineract.cn', name: 'api', version: versions.frameworkapi],
             [group: 'org.hibernate', name: 'hibernate-validator', version: versions.validator],
             [group: 'org.hibernate', name: 'hibernate-validator-annotation-processor', version: versions.validator]
     )
 
     testCompile(
-            [group: 'io.mifos.core', name: 'test', version: versions.frameworktest],
+            [group: 'org.apache.fineract.cn', name: 'test', version: versions.frameworktest],
     )
 }
 
diff --git a/build.gradle b/build.gradle
index b30bd55..b82a3b2 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,4 +1,4 @@
-group 'io.mifos'
+group 'org.apache.fineract.cn'
 
 task publishApiToMavenLocal {
     dependsOn gradle.includedBuild('api').task(':publishToMavenLocal')
diff --git a/component-test/build.gradle b/component-test/build.gradle
index 7818273..d8f99af 100644
--- a/component-test/build.gradle
+++ b/component-test/build.gradle
@@ -19,12 +19,12 @@ apply from: '../shared.gradle'
 
 dependencies {
     compile(
-            [group: 'io.mifos.template', name: 'api', version: project.version],
-            [group: 'io.mifos.template', name: 'service', version: project.version],
-            [group: 'io.mifos.anubis', name: 'test', version: versions.frameworkanubis],
-            [group: 'io.mifos.core', name: 'api', version: versions.frameworkapi],
-            [group: 'io.mifos.core', name: 'test', version: versions.frameworktest],
-            [group: 'io.mifos.core', name: 'lang', version: versions.frameworklang],
+            [group: 'org.apache.fineract.cn.template', name: 'api', version: project.version],
+            [group: 'org.apache.fineract.cn.template', name: 'service', version: project.version],
+            [group: 'org.apache.fineract.cn.anubis', name: 'test', version: versions.frameworkanubis],
+            [group: 'org.apache.fineract.cn', name: 'api', version: versions.frameworkapi],
+            [group: 'org.apache.fineract.cn', name: 'test', version: versions.frameworktest],
+            [group: 'org.apache.fineract.cn', name: 'lang', version: versions.frameworklang],
             [group: 'org.springframework.boot', name: 'spring-boot-starter-test']
     )
 }
diff --git a/service/build.gradle b/service/build.gradle
index a9b4de9..b6ea00a 100644
--- a/service/build.gradle
+++ b/service/build.gradle
@@ -30,14 +30,14 @@ dependencies {
             [group: 'org.springframework.cloud', name: 'spring-cloud-starter-config'],
             [group: 'org.springframework.cloud', name: 'spring-cloud-starter-eureka'],
             [group: 'org.springframework.boot', name: 'spring-boot-starter-jetty'],
-            [group: 'io.mifos.template', name: 'api', version: project.version],
-            [group: 'io.mifos.anubis', name: 'library', version: versions.frameworkanubis],
+            [group: 'org.apache.fineract.cn.template', name: 'api', version: project.version],
+            [group: 'org.apache.fineract.cn.anubis', name: 'library', version: versions.frameworkanubis],
             [group: 'com.google.code.gson', name: 'gson'],
-            [group: 'io.mifos.core', name: 'lang', version: versions.frameworklang],
-            [group: 'io.mifos.core', name: 'async', version: versions.frameworkasync],
-            [group: 'io.mifos.core', name: 'cassandra', version: versions.frameworkcassandra],
-            [group: 'io.mifos.core', name: 'mariadb', version: versions.frameworkmariadb],
-            [group: 'io.mifos.core', name: 'command', version: versions.frameworkcommand],
+            [group: 'org.apache.fineract.cn', name: 'lang', version: versions.frameworklang],
+            [group: 'org.apache.fineract.cn', name: 'async', version: versions.frameworkasync],
+            [group: 'org.apache.fineract.cn', name: 'cassandra', version: versions.frameworkcassandra],
+            [group: 'org.apache.fineract.cn', name: 'mariadb', version: versions.frameworkmariadb],
+            [group: 'org.apache.fineract.cn', name: 'command', version: versions.frameworkcommand],
             [group: 'org.hibernate', name: 'hibernate-validator', version: versions.validator]
     )
 }
diff --git a/shared.gradle b/shared.gradle
index 1bfef46..66175e1 100644
--- a/shared.gradle
+++ b/shared.gradle
@@ -1,4 +1,4 @@
-group 'io.mifos.template'
+group 'org.apache.fineract.cn.template'
 version '0.1.0.BUILD-SNAPSHOT'
 
 ext.versions = [
@@ -67,4 +67,4 @@ license {
     }
     ext.year = Calendar.getInstance().get(Calendar.YEAR)
     ext.name = 'The Mifos Initiative'
-}
\ No newline at end of file
+}


[fineract-cn-template] 06/38: Merge pull request #2 from mgeiss/develop

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit d9745aa49188b07df5ad5f328dcf7e9ac6da2b6b
Merge: ec0791d a0d25be
Author: Markus Geiß <ma...@apache.org>
AuthorDate: Wed Apr 26 20:07:26 2017 +0200

    Merge pull request #2 from mgeiss/develop
    
    added path configurer to allow dots in url

 .../java/io/mifos/template/service/TemplateConfiguration.java    | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)


[fineract-cn-template] 27/38: Merge pull request #5 from myrle-krantz/develop

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 66862749b2f71f12fbe32a9855fe6a3a8c2faa0e
Merge: 54482d0 981ca5a
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Mon Apr 16 21:16:15 2018 +0200

    Merge pull request #5 from myrle-krantz/develop
    
    Updating package names.

 README.md                                          |  8 ++---
 .../cn}/template/api/v1/PermittableGroupIds.java   |  2 +-
 .../api/v1/client/IamATeapotException.java         |  2 +-
 .../template/api/v1/client/TemplateManager.java    | 11 +++----
 .../cn}/template/api/v1/domain/Sample.java         |  7 ++---
 .../cn}/template/api/v1/events/EventConstants.java |  2 +-
 .../cn}/template/api/v1/domain/SampleTest.java     | 11 +++----
 .../cn}/template/SuiteTestEnvironment.java         |  8 ++---
 .../apache/fineract/cn}/template/TestSample.java   | 36 ++++++++++++----------
 .../apache/fineract/cn}/template/TestSuite.java    |  2 +-
 .../template/listener/MigrationEventListener.java  |  8 ++---
 .../cn}/template/listener/SampleEventListener.java |  8 ++---
 .../cn}/template/service/ServiceConstants.java     |  2 +-
 .../cn}/template/service/TemplateApplication.java  |  2 +-
 .../template/service/TemplateConfiguration.java    | 26 ++++++++--------
 .../internal/command/InitializeServiceCommand.java |  2 +-
 .../service/internal/command/SampleCommand.java    |  4 +--
 .../command/handler/MigrationAggregate.java        | 23 +++++++-------
 .../internal/command/handler/SampleAggregate.java  | 18 +++++------
 .../service/internal/mapper/SampleMapper.java      |  6 ++--
 .../internal/repository/SampleJpaEntity.java       |  2 +-
 .../repository/SampleJpaEntityRepository.java      |  5 ++-
 .../service/internal/service/SampleService.java    |  8 ++---
 .../service/rest/SampleRestController.java         | 34 +++++++++++---------
 24 files changed, 119 insertions(+), 118 deletions(-)


[fineract-cn-template] 21/38: Adding rat checks.

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 76d2aabe042d03f2b43af667ccf1555c951ecda6
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Mon Apr 9 17:41:33 2018 +0200

    Adding rat checks.
---
 api/build.gradle               | 18 ++++++++++++++++++
 api/settings.gradle            | 17 +++++++++++++++++
 build.gradle                   | 24 ++++++++++++++++++++++++
 component-test/build.gradle    | 18 ++++++++++++++++++
 component-test/settings.gradle | 17 +++++++++++++++++
 service/build.gradle           | 18 ++++++++++++++++++
 service/settings.gradle        | 17 +++++++++++++++++
 settings.gradle                | 17 +++++++++++++++++
 shared.gradle                  | 31 +++++++++++++++++++++++++++++++
 9 files changed, 177 insertions(+)

diff --git a/api/build.gradle b/api/build.gradle
index 1ed9d2b..5b9924a 100644
--- a/api/build.gradle
+++ b/api/build.gradle
@@ -1,3 +1,20 @@
+/*
+ * 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.
+ */
+
 buildscript {
     repositories {
         jcenter()
@@ -10,6 +27,7 @@ buildscript {
 
 plugins {
     id "com.github.hierynomus.license" version "0.13.1"
+    id("org.nosphere.apache.rat") version "0.3.1"
 }
 
 apply from: '../shared.gradle'
diff --git a/api/settings.gradle b/api/settings.gradle
index 7c8e3dc..491f745 100644
--- a/api/settings.gradle
+++ b/api/settings.gradle
@@ -1 +1,18 @@
+/*
+ * 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.
+ */
+
 rootProject.name = 'api'
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index b82a3b2..848847a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,3 +1,20 @@
+/*
+ * 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.
+ */
+
 group 'org.apache.fineract.cn'
 
 task publishApiToMavenLocal {
@@ -34,3 +51,10 @@ task licenseFormat {
     dependsOn gradle.includedBuild('service').task(':licenseFormat')
     dependsOn gradle.includedBuild('component-test').task(':licenseFormat')
 }
+
+task rat {
+    group 'all'
+    dependsOn gradle.includedBuild('api').task(':rat')
+    dependsOn gradle.includedBuild('service').task(':rat')
+    dependsOn gradle.includedBuild('component-test').task(':rat')
+}
diff --git a/component-test/build.gradle b/component-test/build.gradle
index d8f99af..8611ca8 100644
--- a/component-test/build.gradle
+++ b/component-test/build.gradle
@@ -1,3 +1,20 @@
+/*
+ * 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.
+ */
+
 buildscript {
     ext {
         springBootVersion = '1.4.1.RELEASE'
@@ -14,6 +31,7 @@ buildscript {
 
 plugins {
     id "com.github.hierynomus.license" version "0.13.1"
+    id("org.nosphere.apache.rat") version "0.3.1"
 }
 apply from: '../shared.gradle'
 
diff --git a/component-test/settings.gradle b/component-test/settings.gradle
index 07867cb..a07a3bc 100644
--- a/component-test/settings.gradle
+++ b/component-test/settings.gradle
@@ -1 +1,18 @@
+/*
+ * 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.
+ */
+
 rootProject.name = 'component-test'
\ No newline at end of file
diff --git a/service/build.gradle b/service/build.gradle
index b6ea00a..23acde2 100644
--- a/service/build.gradle
+++ b/service/build.gradle
@@ -1,3 +1,20 @@
+/*
+ * 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.
+ */
+
 buildscript {
     ext {
         springBootVersion = '1.4.1.RELEASE'
@@ -14,6 +31,7 @@ buildscript {
 
 plugins {
     id "com.github.hierynomus.license" version "0.13.1"
+    id("org.nosphere.apache.rat") version "0.3.1"
 }
 
 apply from: '../shared.gradle'
diff --git a/service/settings.gradle b/service/settings.gradle
index 081feb4..1a4c2fd 100644
--- a/service/settings.gradle
+++ b/service/settings.gradle
@@ -1 +1,18 @@
+/*
+ * 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.
+ */
+
 rootProject.name = 'service'
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index 1630ef8..4cb1bd7 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,20 @@
+/*
+ * 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.
+ */
+
 rootProject.name = 'template'
 
 includeBuild 'api'
diff --git a/shared.gradle b/shared.gradle
index afa045a..31ee3aa 100644
--- a/shared.gradle
+++ b/shared.gradle
@@ -1,3 +1,20 @@
+/*
+ * 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.
+ */
+
 group 'org.apache.fineract.cn.template'
 version '0.1.0.BUILD-SNAPSHOT'
 
@@ -66,3 +83,17 @@ license {
         yaml = 'SCRIPT_STYLE'
     }
 }
+
+rat {
+    // List of exclude directives, defaults to ['**/.gradle/**']
+    excludes = [
+            "**/.idea/**",
+            "**/.gradle/**",
+            "**/gradle/**",
+            "**/build/**",
+            "gradlew",
+            "gradlew.bat",
+            "README.md"
+    ]
+}
+


[fineract-cn-template] 22/38: Merge pull request #4 from myrle-krantz/develop

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 0e59b1fc1f333df640522b3b09df2c24dfe200bc
Merge: bb33cd2 76d2aab
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Mon Apr 9 17:43:22 2018 +0200

    Merge pull request #4 from myrle-krantz/develop
    
    Adding rat checks.

 api/build.gradle               | 18 ++++++++++++++++++
 api/settings.gradle            | 17 +++++++++++++++++
 build.gradle                   | 24 ++++++++++++++++++++++++
 component-test/build.gradle    | 18 ++++++++++++++++++
 component-test/settings.gradle | 17 +++++++++++++++++
 service/build.gradle           | 18 ++++++++++++++++++
 service/settings.gradle        | 17 +++++++++++++++++
 settings.gradle                | 17 +++++++++++++++++
 shared.gradle                  | 31 +++++++++++++++++++++++++++++++
 9 files changed, 177 insertions(+)


[fineract-cn-template] 08/38: moved EventConstants to events package. events package is the appropriate location for multi-parameter event classes.

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 7a59849308aff186b7fb286923428799221232c0
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Mon Jul 10 12:02:16 2017 +0200

    moved EventConstants to events package.  events package is the
    appropriate location for multi-parameter event classes.
---
 .../java/io/mifos/template/api/v1/{ => events}/EventConstants.java     | 2 +-
 component-test/src/main/java/io/mifos/template/TestSample.java         | 2 +-
 .../main/java/io/mifos/template/listener/MigrationEventListener.java   | 2 +-
 .../src/main/java/io/mifos/template/listener/SampleEventListener.java  | 2 +-
 .../template/service/internal/command/handler/MigrationAggregate.java  | 3 ++-
 .../template/service/internal/command/handler/SampleAggregate.java     | 2 +-
 6 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/api/src/main/java/io/mifos/template/api/v1/EventConstants.java b/api/src/main/java/io/mifos/template/api/v1/events/EventConstants.java
similarity index 95%
rename from api/src/main/java/io/mifos/template/api/v1/EventConstants.java
rename to api/src/main/java/io/mifos/template/api/v1/events/EventConstants.java
index 69b1343..6207c03 100644
--- a/api/src/main/java/io/mifos/template/api/v1/EventConstants.java
+++ b/api/src/main/java/io/mifos/template/api/v1/events/EventConstants.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package io.mifos.template.api.v1;
+package io.mifos.template.api.v1.events;
 
 @SuppressWarnings("unused")
 public interface EventConstants {
diff --git a/component-test/src/main/java/io/mifos/template/TestSample.java b/component-test/src/main/java/io/mifos/template/TestSample.java
index 9e90129..924512b 100644
--- a/component-test/src/main/java/io/mifos/template/TestSample.java
+++ b/component-test/src/main/java/io/mifos/template/TestSample.java
@@ -20,7 +20,7 @@ import io.mifos.core.api.context.AutoUserContext;
 import io.mifos.core.test.fixture.TenantDataStoreContextTestRule;
 import io.mifos.core.test.listener.EnableEventRecording;
 import io.mifos.core.test.listener.EventRecorder;
-import io.mifos.template.api.v1.EventConstants;
+import io.mifos.template.api.v1.events.EventConstants;
 import io.mifos.template.api.v1.client.TemplateManager;
 import io.mifos.template.api.v1.domain.Sample;
 import io.mifos.template.service.TemplateConfiguration;
diff --git a/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java b/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
index 82408bb..52be53b 100644
--- a/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
+++ b/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
@@ -17,7 +17,7 @@ package io.mifos.template.listener;
 
 import io.mifos.core.lang.config.TenantHeaderFilter;
 import io.mifos.core.test.listener.EventRecorder;
-import io.mifos.template.api.v1.EventConstants;
+import io.mifos.template.api.v1.events.EventConstants;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jms.annotation.JmsListener;
 import org.springframework.messaging.handler.annotation.Header;
diff --git a/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java b/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
index 2e3c2cb..b54a819 100644
--- a/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
+++ b/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
@@ -17,7 +17,7 @@ package io.mifos.template.listener;
 
 import io.mifos.core.lang.config.TenantHeaderFilter;
 import io.mifos.core.test.listener.EventRecorder;
-import io.mifos.template.api.v1.EventConstants;
+import io.mifos.template.api.v1.events.EventConstants;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jms.annotation.JmsListener;
 import org.springframework.messaging.handler.annotation.Header;
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
index e4e3de1..083513c 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
@@ -17,9 +17,10 @@ package io.mifos.template.service.internal.command.handler;
 
 import io.mifos.core.command.annotation.Aggregate;
 import io.mifos.core.command.annotation.CommandHandler;
+import io.mifos.core.command.annotation.CommandLogLevel;
 import io.mifos.core.command.annotation.EventEmitter;
 import io.mifos.core.mariadb.domain.FlywayFactoryBean;
-import io.mifos.template.api.v1.EventConstants;
+import io.mifos.template.api.v1.events.EventConstants;
 import io.mifos.template.service.ServiceConstants;
 import io.mifos.template.service.internal.command.InitializeServiceCommand;
 import org.slf4j.Logger;
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java b/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
index 4de453a..b2e8d5d 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
@@ -18,7 +18,7 @@ package io.mifos.template.service.internal.command.handler;
 import io.mifos.core.command.annotation.Aggregate;
 import io.mifos.core.command.annotation.CommandHandler;
 import io.mifos.core.command.annotation.EventEmitter;
-import io.mifos.template.api.v1.EventConstants;
+import io.mifos.template.api.v1.events.EventConstants;
 import io.mifos.template.service.internal.command.SampleCommand;
 import io.mifos.template.service.internal.repository.SampleJpaEntity;
 import io.mifos.template.service.internal.repository.SampleJpaEntityRepository;


[fineract-cn-template] 29/38: Migrate template service from MariaDB to PostgreSQL

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit db65864ae5e57d0c97c721e66ecb8447687677cb
Author: Isaac Kamga <u2...@gmail.com>
AuthorDate: Sat Mar 23 00:06:19 2019 +0100

    Migrate template service from MariaDB to PostgreSQL
---
 .../java/org/apache/fineract/cn/template/SuiteTestEnvironment.java  | 6 +++---
 .../src/main/java/org/apache/fineract/cn/template/TestSample.java   | 2 +-
 service/src/main/resources/application.yml                          | 6 ++++++
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/component-test/src/main/java/org/apache/fineract/cn/template/SuiteTestEnvironment.java b/component-test/src/main/java/org/apache/fineract/cn/template/SuiteTestEnvironment.java
index 85b601e..8d93733 100644
--- a/component-test/src/main/java/org/apache/fineract/cn/template/SuiteTestEnvironment.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/template/SuiteTestEnvironment.java
@@ -20,7 +20,7 @@ package org.apache.fineract.cn.template;
 
 import org.apache.fineract.cn.test.env.TestEnvironment;
 import org.apache.fineract.cn.test.fixture.cassandra.CassandraInitializer;
-import org.apache.fineract.cn.test.fixture.mariadb.MariaDBInitializer;
+import org.apache.fineract.cn.test.fixture.postgresql.PostgreSQLInitializer;
 import org.junit.ClassRule;
 import org.junit.rules.RuleChain;
 import org.junit.rules.RunExternalResourceOnce;
@@ -38,11 +38,11 @@ public class SuiteTestEnvironment {
 
   static final TestEnvironment testEnvironment = new TestEnvironment(APP_NAME);
   static final CassandraInitializer cassandraInitializer = new CassandraInitializer();
-  static final MariaDBInitializer mariaDBInitializer = new MariaDBInitializer();
+  static final PostgreSQLInitializer postgreSQLInitializer = new PostgreSQLInitializer();
 
   @ClassRule
   public static TestRule orderClassRules = RuleChain
       .outerRule(new RunExternalResourceOnce(testEnvironment))
       .around(new RunExternalResourceOnce(cassandraInitializer))
-      .around(new RunExternalResourceOnce(mariaDBInitializer));
+      .around(new RunExternalResourceOnce(postgreSQLInitializer));
 }
diff --git a/component-test/src/main/java/org/apache/fineract/cn/template/TestSample.java b/component-test/src/main/java/org/apache/fineract/cn/template/TestSample.java
index 42fc067..10fdd37 100644
--- a/component-test/src/main/java/org/apache/fineract/cn/template/TestSample.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/template/TestSample.java
@@ -74,7 +74,7 @@ public class TestSample extends SuiteTestEnvironment {
   }
 
   @ClassRule
-  public final static TenantDataStoreContextTestRule tenantDataStoreContext = TenantDataStoreContextTestRule.forRandomTenantName(cassandraInitializer, mariaDBInitializer);
+  public final static TenantDataStoreContextTestRule tenantDataStoreContext = TenantDataStoreContextTestRule.forRandomTenantName(cassandraInitializer, postgreSQLInitializer);
 
   @Rule
   public final TenantApplicationSecurityEnvironmentTestRule tenantApplicationSecurityEnvironment
diff --git a/service/src/main/resources/application.yml b/service/src/main/resources/application.yml
index 2ae6bd0..b987018 100644
--- a/service/src/main/resources/application.yml
+++ b/service/src/main/resources/application.yml
@@ -23,6 +23,12 @@ spring:
       enabled: false
     config:
       enabled: false
+  datasource:
+    driver-class-name: org.postgresql.Driver
+    platform: postgres
+    url: jdbc:postgresql://localhost:5432/seshat
+    username: postgres
+    password: postgres
 
 eureka:
   client:


[fineract-cn-template] 28/38: Migrate template service from MariaDB to PostgreSQL

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 4e85c4e699261f09aee37440f020ba7d024f7a5f
Author: Isaac Kamga <u2...@gmail.com>
AuthorDate: Tue Mar 19 06:00:58 2019 +0100

    Migrate template service from MariaDB to PostgreSQL
---
 NOTICE.txt                                                     |  2 +-
 service/build.gradle                                           |  2 +-
 .../fineract/cn/template/service/TemplateConfiguration.java    |  4 ++--
 .../service/internal/command/handler/MigrationAggregate.java   |  2 +-
 service/src/main/resources/application.yml                     | 10 +++++-----
 .../migrations/{mariadb => postgresql}/V1__initial_setup.sql   |  0
 shared.gradle                                                  |  5 +++--
 7 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/NOTICE.txt b/NOTICE.txt
index 103e2dc..9632ed9 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -1,5 +1,5 @@
 Apache Fineract CN Template
-Copyright [2017-2018] The Apache Software Foundation
+Copyright [2017-2019] The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file
diff --git a/service/build.gradle b/service/build.gradle
index 23acde2..7dd4a75 100644
--- a/service/build.gradle
+++ b/service/build.gradle
@@ -54,7 +54,7 @@ dependencies {
             [group: 'org.apache.fineract.cn', name: 'lang', version: versions.frameworklang],
             [group: 'org.apache.fineract.cn', name: 'async', version: versions.frameworkasync],
             [group: 'org.apache.fineract.cn', name: 'cassandra', version: versions.frameworkcassandra],
-            [group: 'org.apache.fineract.cn', name: 'mariadb', version: versions.frameworkmariadb],
+            [group: 'org.apache.fineract.cn', name: 'postgresql', version: versions.frameworkpostgresql],
             [group: 'org.apache.fineract.cn', name: 'command', version: versions.frameworkcommand],
             [group: 'org.hibernate', name: 'hibernate-validator', version: versions.validator]
     )
diff --git a/service/src/main/java/org/apache/fineract/cn/template/service/TemplateConfiguration.java b/service/src/main/java/org/apache/fineract/cn/template/service/TemplateConfiguration.java
index 568ae47..0f1a8b2 100644
--- a/service/src/main/java/org/apache/fineract/cn/template/service/TemplateConfiguration.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/TemplateConfiguration.java
@@ -24,7 +24,7 @@ import org.apache.fineract.cn.cassandra.config.EnableCassandra;
 import org.apache.fineract.cn.command.config.EnableCommandProcessing;
 import org.apache.fineract.cn.lang.config.EnableServiceException;
 import org.apache.fineract.cn.lang.config.EnableTenantContext;
-import org.apache.fineract.cn.mariadb.config.EnableMariaDB;
+import org.apache.fineract.cn.postgresql.config.EnablePostgreSQL;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -43,7 +43,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
 @EnableAsync
 @EnableTenantContext
 @EnableCassandra
-@EnableMariaDB
+@EnablePostgreSQL
 @EnableCommandProcessing
 @EnableAnubis
 @EnableServiceException
diff --git a/service/src/main/java/org/apache/fineract/cn/template/service/internal/command/handler/MigrationAggregate.java b/service/src/main/java/org/apache/fineract/cn/template/service/internal/command/handler/MigrationAggregate.java
index ef44e6c..a5d9876 100644
--- a/service/src/main/java/org/apache/fineract/cn/template/service/internal/command/handler/MigrationAggregate.java
+++ b/service/src/main/java/org/apache/fineract/cn/template/service/internal/command/handler/MigrationAggregate.java
@@ -27,7 +27,7 @@ import org.apache.fineract.cn.command.annotation.CommandHandler;
 import org.apache.fineract.cn.command.annotation.CommandLogLevel;
 import org.apache.fineract.cn.command.annotation.EventEmitter;
 import org.apache.fineract.cn.lang.ApplicationName;
-import org.apache.fineract.cn.mariadb.domain.FlywayFactoryBean;
+import org.apache.fineract.cn.postgresql.domain.FlywayFactoryBean;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
diff --git a/service/src/main/resources/application.yml b/service/src/main/resources/application.yml
index 3d8ab85..2ae6bd0 100644
--- a/service/src/main/resources/application.yml
+++ b/service/src/main/resources/application.yml
@@ -42,13 +42,13 @@ cassandra:
     write: LOCAL_QUORUM
     delete: LOCAL_QUORUM
 
-mariadb:
-  driverClass: org.mariadb.jdbc.Driver
+postgresql:
+  driverClass: org.postgresql.Driver
   database: seshat
   host: localhost
-  port: 3306
-  user: root
-  password: mysql
+  port: 5432
+  user: postgres
+  password: postgres
 
 bonecp:
   idleMaxAgeInMinutes: 240
diff --git a/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql b/service/src/main/resources/db/migrations/postgresql/V1__initial_setup.sql
similarity index 100%
rename from service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
rename to service/src/main/resources/db/migrations/postgresql/V1__initial_setup.sql
diff --git a/shared.gradle b/shared.gradle
index 31ee3aa..cb075a0 100644
--- a/shared.gradle
+++ b/shared.gradle
@@ -23,7 +23,7 @@ ext.versions = [
         frameworklang : '0.1.0-BUILD-SNAPSHOT',
         frameworkasync : '0.1.0-BUILD-SNAPSHOT',
         frameworkcassandra : '0.1.0-BUILD-SNAPSHOT',
-        frameworkmariadb : '0.1.0-BUILD-SNAPSHOT',
+        frameworkpostgresql : '0.1.0-BUILD-SNAPSHOT',
         frameworkcommand : '0.1.0-BUILD-SNAPSHOT',
         frameworktest: '0.1.0-BUILD-SNAPSHOT',
         frameworkanubis: '0.1.0-BUILD-SNAPSHOT',
@@ -60,7 +60,8 @@ ext['spring-data-releasetrain.version'] = 'Gosling-SR2A'
 
 dependencies {
     compile(
-            [group: 'com.google.code.findbugs', name: 'jsr305']
+            [group: 'com.google.code.findbugs', name: 'jsr305'],
+            [group: 'org.apache.fineract.cn', name: 'postgresql', version: '0.1.0-BUILD-SNAPSHOT']
     )
 
     testCompile(


[fineract-cn-template] 34/38: Adding rat report to After Failure procedure

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit bccb1acf37736318790f89cde733eebb75877833
Author: ebenezergraham <eg...@alustudent.com>
AuthorDate: Wed May 29 19:17:16 2019 +0400

    Adding rat report to After Failure procedure
---
 .travis.yml   | 3 +++
 shared.gradle | 1 +
 2 files changed, 4 insertions(+)

diff --git a/.travis.yml b/.travis.yml
index 2a53f56..1f94a2c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -28,3 +28,6 @@ env:
     - ARTIFACTORY_URL=https://mifos.jfrog.io/mifos
     - ARTIFACTORY_USER=travis-ci
     - secure: "WO+UUvMOFTGl93jGbGPLj60fJq8+Gqei9Jx4j9t2OAuz1fTgVwa11VL4Zf51lgbXmy3YoxIn+hoXOdEDTfmMyGW5Y0cG5YbqUve/WII1nJJo5dc7hPf3z4HmsxHYfTRedk4ZnhFH8FDrjPzls4K+VVJuF7X92aUfZbVSuL97gbNXjvhftdWbko6xn+ZLw4HZwQfGDpCRwbqEq7WH2e900lL49QnBM7majONr/nf6mVuyomZvDJaRTDPLh9VXlwJ6hQ1WsajYbH6dCd3CgbAceKb9R7nF0dxMpxPVu3piz9zL9NXXNWqwIifJeJX5U9HT6i7ze5JnzUbBCD9iV0jGj1HGoYTKqKd78Z1K8uOdZxykAspA2Doz2ABQHctPJLNlkkWqagyrMNJmRlJMGVluOpStOIyw7d5GMelmzl16nZfdO0uz+zL56oJtke+G+Ur+ZEiZiHOLweM1/rO/60QxG31qZWsRH [...]
+after_failure:
+  - ./gradlew rat
+  - cat api/build/reports/rat/rat-report.txt
diff --git a/shared.gradle b/shared.gradle
index 372caf0..785574e 100644
--- a/shared.gradle
+++ b/shared.gradle
@@ -113,5 +113,6 @@ rat {
             "gradlew.bat",
             "README.md"
     ]
+    plainOutput = true
 }
 


[fineract-cn-template] 23/38: Merge pull request #3 from ebenezergraham/patch-1

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 54482d06928b7a28c4f937e3f2ced35dc41d48db
Merge: 0e59b1f 9b42378
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Mon Apr 9 17:43:49 2018 +0200

    Merge pull request #3 from ebenezergraham/patch-1
    
    Updated readme.md to use Apache Finearct CN

 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


[fineract-cn-template] 16/38: Merge pull request #1 from myrle-krantz/develop

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 01062a38d32bbd2f3248b96217cdb87a15c97aba
Merge: 08f8419 1c25310
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Mon Feb 26 18:36:40 2018 +0100

    Merge pull request #1 from myrle-krantz/develop
    
    updating artifact ids to apache fineract from mifos io

 api/build.gradle            |  4 ++--
 build.gradle                |  2 +-
 component-test/build.gradle | 12 ++++++------
 service/build.gradle        | 14 +++++++-------
 shared.gradle               |  4 ++--
 5 files changed, 18 insertions(+), 18 deletions(-)


[fineract-cn-template] 14/38: Merge pull request #5 from myrle-krantz/develop

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 08f84198fe12b8b7547ef6c104a3be23558278be
Merge: 7232d32 f35c15c
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Wed Jul 12 23:42:22 2017 +0200

    Merge pull request #5 from myrle-krantz/develop
    
    removing duplicate resources from build artifacts.

 shared.gradle | 1 +
 1 file changed, 1 insertion(+)


[fineract-cn-template] 18/38: Removed unused year and name variables

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit dfa46d62bf93f0a1e59a34b4ca43999b6224efd5
Author: Isaac Kamga <u2...@gmail.com>
AuthorDate: Mon Mar 5 21:23:04 2018 +0100

    Removed unused year and name variables
---
 shared.gradle | 2 --
 1 file changed, 2 deletions(-)

diff --git a/shared.gradle b/shared.gradle
index 6542efb..afa045a 100644
--- a/shared.gradle
+++ b/shared.gradle
@@ -65,6 +65,4 @@ license {
         yml = 'SCRIPT_STYLE'
         yaml = 'SCRIPT_STYLE'
     }
-    ext.year = Calendar.getInstance().get(Calendar.YEAR)
-    ext.name = 'The Apache Software Foundation'
 }


[fineract-cn-template] 38/38: Merge pull request #6 from Izakey/FINCN-120

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 9e47fb42b29ee6e9257bbded56df35025680d329
Merge: d7c232d 666d932
Author: Isaac Kamga <ik...@apache.org>
AuthorDate: Mon Sep 2 23:39:16 2019 +0100

    Merge pull request #6 from Izakey/FINCN-120
    
    Migrate template from MariaDB to PostgreSQL

 .gitignore                                                |  3 ++-
 NOTICE.txt                                                |  2 +-
 .../apache/fineract/cn/template/SuiteTestEnvironment.java |  6 +++---
 .../java/org/apache/fineract/cn/template/TestSample.java  |  2 +-
 service/build.gradle                                      |  2 +-
 .../cn/template/service/TemplateConfiguration.java        |  4 ++--
 .../internal/command/handler/MigrationAggregate.java      |  2 +-
 service/src/main/resources/application.yml                | 15 ++++++++++-----
 .../{mariadb => postgresql}/V1__initial_setup.sql         |  2 +-
 shared.gradle                                             |  5 +++--
 10 files changed, 25 insertions(+), 18 deletions(-)



[fineract-cn-template] 09/38: Provided example for hands-off command handler logging, and documented it's constraints.

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 9e03ed87002217cca55d8d91823f95254432f75b
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Mon Jul 10 12:05:02 2017 +0200

    Provided example for hands-off command handler logging, and documented
     it's constraints.
---
 .../internal/command/InitializeServiceCommand.java        |  5 +++++
 .../template/service/internal/command/SampleCommand.java  |  7 +++++++
 .../internal/command/handler/MigrationAggregate.java      |  2 +-
 .../service/internal/command/handler/SampleAggregate.java | 15 ++++++++++++++-
 4 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java b/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java
index db85b9d..e02d2d0 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java
@@ -20,4 +20,9 @@ public class InitializeServiceCommand {
   public InitializeServiceCommand() {
     super();
   }
+
+  @Override
+  public String toString() {
+    return "InitializeServiceCommand{}";
+  }
 }
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java b/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java
index 8ee6d92..5957f1b 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java
@@ -29,4 +29,11 @@ public class SampleCommand {
   public Sample sample() {
     return this.sample;
   }
+
+  @Override
+  public String toString() {
+    return "SampleCommand{" +
+        "sample=" + sample.getIdentifier() +
+        '}';
+  }
 }
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
index 083513c..920465a 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
@@ -50,7 +50,7 @@ public class MigrationAggregate {
     this.flywayFactoryBean = flywayFactoryBean;
   }
 
-  @CommandHandler
+  @CommandHandler(logStart = CommandLogLevel.INFO, logFinish = CommandLogLevel.INFO)
   @Transactional
   @EventEmitter(selectorName = EventConstants.SELECTOR_NAME, selectorValue = EventConstants.INITIALIZE)
   public String initialize(final InitializeServiceCommand initializeServiceCommand) {
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java b/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
index b2e8d5d..9a7c572 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
@@ -17,6 +17,7 @@ package io.mifos.template.service.internal.command.handler;
 
 import io.mifos.core.command.annotation.Aggregate;
 import io.mifos.core.command.annotation.CommandHandler;
+import io.mifos.core.command.annotation.CommandLogLevel;
 import io.mifos.core.command.annotation.EventEmitter;
 import io.mifos.template.api.v1.events.EventConstants;
 import io.mifos.template.service.internal.command.SampleCommand;
@@ -37,7 +38,19 @@ public class SampleAggregate {
     this.sampleJpaEntityRepository = sampleJpaEntityRepository;
   }
 
-  @CommandHandler
+  //TODO: Think about your command handler logging, then delete this comment.
+  // The log levels provided in the command handler cause log messages to be emitted each time this
+  // command handler is called before and after the call. Before the call, the command is logged
+  // using its toString() method, and after the call, the emitted event is logged via its toString()
+  // method.
+  //
+  // If you wish to adjust the information in the log messages, do so via the toString() methods.
+  // Financial transactions, passwords, and customer address data are examples of information which
+  // should not be placed in the logs.
+  //
+  // If a command handler should not emit a log message, change logStart and logFinish to:
+  // CommandLogLevel.NONE.
+  @CommandHandler(logStart = CommandLogLevel.INFO, logFinish = CommandLogLevel.INFO)
   @Transactional
   @EventEmitter(selectorName = EventConstants.SELECTOR_NAME, selectorValue = EventConstants.POST_SAMPLE)
   public String sample(final SampleCommand sampleCommand) {


[fineract-cn-template] 33/38: Ensure flyway migrations target right database

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit c83f004fddf94348ceb76c6d9e3f086cd7c9703f
Author: Isaac Kamga <u2...@gmail.com>
AuthorDate: Thu May 9 02:25:15 2019 +0100

    Ensure flyway migrations target right database
---
 service/src/main/resources/application.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/service/src/main/resources/application.yml b/service/src/main/resources/application.yml
index 6123bd6..6bdce44 100644
--- a/service/src/main/resources/application.yml
+++ b/service/src/main/resources/application.yml
@@ -25,7 +25,7 @@ spring:
       enabled: false
   datasource:
     driver-class-name: org.postgresql.Driver
-    url: jdbc:postgresql://localhost:5432/seshat
+    url: jdbc:postgresql://localhost:5432/playground
     username: postgres
     password: postgres
 


[fineract-cn-template] 10/38: Merge pull request #3 from myrle-krantz/develop

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 6b00c28ab9002b5fb186c2f7662271e5ed344abd
Merge: d9745aa 9e03ed8
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Mon Jul 10 12:08:59 2017 +0200

    Merge pull request #3 from myrle-krantz/develop
    
    added helpful examples to template.

 .../api/v1/{ => events}/EventConstants.java        |  2 +-
 .../io/mifos/template/SuiteTestEnvironment.java    | 43 ++++++++++++++++++++++
 .../main/java/io/mifos/template/TestSample.java    | 36 ++++++++----------
 .../src/main/java/io/mifos/template/TestSuite.java | 14 ++++---
 .../template/listener/MigrationEventListener.java  |  2 +-
 .../template/listener/SampleEventListener.java     |  2 +-
 .../internal/command/InitializeServiceCommand.java |  5 +++
 .../service/internal/command/SampleCommand.java    |  7 ++++
 .../command/handler/MigrationAggregate.java        |  5 ++-
 .../internal/command/handler/SampleAggregate.java  | 17 ++++++++-
 10 files changed, 100 insertions(+), 33 deletions(-)


[fineract-cn-template] 32/38: Fixed Flyway migration scripts

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 09f93de68812aa9c5fca73c697bf9a27c776abb5
Author: Isaac Kamga <u2...@gmail.com>
AuthorDate: Thu May 2 03:25:35 2019 +0100

    Fixed Flyway migration scripts
---
 service/src/main/resources/application.yml                              | 1 -
 .../src/main/resources/db/migrations/postgresql/V1__initial_setup.sql   | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/service/src/main/resources/application.yml b/service/src/main/resources/application.yml
index b987018..6123bd6 100644
--- a/service/src/main/resources/application.yml
+++ b/service/src/main/resources/application.yml
@@ -25,7 +25,6 @@ spring:
       enabled: false
   datasource:
     driver-class-name: org.postgresql.Driver
-    platform: postgres
     url: jdbc:postgresql://localhost:5432/seshat
     username: postgres
     password: postgres
diff --git a/service/src/main/resources/db/migrations/postgresql/V1__initial_setup.sql b/service/src/main/resources/db/migrations/postgresql/V1__initial_setup.sql
index 8e4ba15..d45736c 100644
--- a/service/src/main/resources/db/migrations/postgresql/V1__initial_setup.sql
+++ b/service/src/main/resources/db/migrations/postgresql/V1__initial_setup.sql
@@ -18,7 +18,7 @@
 --
 
 CREATE TABLE template_samples (
-  id BIGINT NOT NULL AUTO_INCREMENT,
+  id BIGINT NOT NULL,
   identifier VARCHAR(8) NOT NULL,
   payload VARCHAR(512) NULL,
   CONSTRAINT template_samples_pk PRIMARY KEY (id)


[fineract-cn-template] 04/38: Merge pull request #1 from myrle-krantz/develop

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit ec0791dcdfd7fc91c0a5876f9810d5c349407aaf
Merge: e51bec1 8a38bb1
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Tue Apr 4 17:13:14 2017 +0200

    Merge pull request #1 from myrle-krantz/develop
    
    adding example for api domain object testing.

 api/build.gradle                                   |  4 ++
 .../io/mifos/template/api/v1/EventConstants.java   |  2 +-
 .../mifos/template/api/v1/PermittableGroupIds.java |  2 +-
 .../api/v1/client/IamATeapotException.java         |  2 +-
 .../template/api/v1/client/TemplateManager.java    |  2 +-
 .../io/mifos/template/api/v1/domain/Sample.java    |  2 +-
 .../mifos/template/api/v1/domain/SampleTest.java   | 55 ++++++++++++++++++++++
 .../main/java/io/mifos/template/TestSample.java    |  2 +-
 .../template/listener/MigrationEventListener.java  |  2 +-
 .../template/listener/SampleEventListener.java     |  2 +-
 .../mifos/template/service/ServiceConstants.java   |  2 +-
 .../template/service/TemplateApplication.java      |  2 +-
 .../template/service/TemplateConfiguration.java    |  2 +-
 .../internal/command/InitializeServiceCommand.java |  2 +-
 .../service/internal/command/SampleCommand.java    |  2 +-
 .../command/handler/MigrationAggregate.java        |  2 +-
 .../internal/command/handler/SampleAggregate.java  |  2 +-
 .../service/internal/mapper/SampleMapper.java      |  2 +-
 .../internal/repository/SampleJpaEntity.java       |  2 +-
 .../repository/SampleJpaEntityRepository.java      |  2 +-
 .../service/internal/service/SampleService.java    |  2 +-
 .../service/rest/SampleRestController.java         |  2 +-
 service/src/main/resources/application.yml         |  2 +-
 service/src/main/resources/bootstrap.yml           |  2 +-
 .../db/migrations/mariadb/V1__initial_setup.sql    |  2 +-
 25 files changed, 82 insertions(+), 23 deletions(-)


[fineract-cn-template] 12/38: Merge pull request #4 from myrle-krantz/develop

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 7232d32efa7531b34a8adae0d27bb05ceda5b20a
Merge: 6b00c28 486ae6b
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Mon Jul 10 12:16:57 2017 +0200

    Merge pull request #4 from myrle-krantz/develop
    
    Changed initialize payload to the version number as agreed.

 .../src/main/java/io/mifos/template/SuiteTestEnvironment.java     | 4 +++-
 component-test/src/main/java/io/mifos/template/TestSample.java    | 2 +-
 .../service/internal/command/handler/MigrationAggregate.java      | 8 ++++++--
 3 files changed, 10 insertions(+), 4 deletions(-)


[fineract-cn-template] 20/38: Updated readme.md to use Apache Finearct CN

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 9b42378f673bfc704ce46bba4eb708e2f8489789
Author: Ebenezer Graham <eg...@alustudent.com>
AuthorDate: Fri Apr 6 21:31:34 2018 +0400

    Updated readme.md to use Apache Finearct CN
---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index c5ad0cd..3f20df9 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
 
 [![Join the chat at https://gitter.im/mifos-initiative/mifos.io](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mifos-initiative/mifos.io?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
 
-This project provides a template layout for all Mifos I/O microservices.
+This project provides a template layout for all Apache Fineract CN microservices.
 
 ## Abstract
 Apache Fineract CN is an application framework for digital financial services, a system to support nationwide and cross-national financial transactions and help to level and speed the creation of an inclusive, interconnected digital economy for every nation in the world.


[fineract-cn-template] 17/38: Updated copyright information on template

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit d57f5e32720b4feb78dbdfd286eca704fdaf26ab
Author: Isaac Kamga <u2...@gmail.com>
AuthorDate: Fri Mar 2 22:27:23 2018 +0100

    Updated copyright information on template
---
 HEADER                                             | 25 ++++++++++++----------
 NOTICE.txt                                         |  5 +++++
 README.md                                          |  6 +++---
 .../mifos/template/api/v1/PermittableGroupIds.java | 25 ++++++++++++----------
 .../api/v1/client/IamATeapotException.java         | 25 ++++++++++++----------
 .../template/api/v1/client/TemplateManager.java    | 25 ++++++++++++----------
 .../io/mifos/template/api/v1/domain/Sample.java    | 25 ++++++++++++----------
 .../template/api/v1/events/EventConstants.java     | 25 ++++++++++++----------
 .../mifos/template/api/v1/domain/SampleTest.java   | 25 ++++++++++++----------
 .../io/mifos/template/SuiteTestEnvironment.java    | 25 ++++++++++++----------
 .../main/java/io/mifos/template/TestSample.java    | 25 ++++++++++++----------
 .../src/main/java/io/mifos/template/TestSuite.java | 25 ++++++++++++----------
 .../template/listener/MigrationEventListener.java  | 25 ++++++++++++----------
 .../template/listener/SampleEventListener.java     | 25 ++++++++++++----------
 .../mifos/template/service/ServiceConstants.java   | 25 ++++++++++++----------
 .../template/service/TemplateApplication.java      | 25 ++++++++++++----------
 .../template/service/TemplateConfiguration.java    | 25 ++++++++++++----------
 .../internal/command/InitializeServiceCommand.java | 25 ++++++++++++----------
 .../service/internal/command/SampleCommand.java    | 25 ++++++++++++----------
 .../command/handler/MigrationAggregate.java        | 25 ++++++++++++----------
 .../internal/command/handler/SampleAggregate.java  | 25 ++++++++++++----------
 .../service/internal/mapper/SampleMapper.java      | 25 ++++++++++++----------
 .../internal/repository/SampleJpaEntity.java       | 25 ++++++++++++----------
 .../repository/SampleJpaEntityRepository.java      | 25 ++++++++++++----------
 .../service/internal/service/SampleService.java    | 25 ++++++++++++----------
 .../service/rest/SampleRestController.java         | 25 ++++++++++++----------
 service/src/main/resources/application.yml         | 25 ++++++++++++----------
 service/src/main/resources/bootstrap.yml           | 25 ++++++++++++----------
 .../db/migrations/mariadb/V1__initial_setup.sql    | 25 ++++++++++++----------
 shared.gradle                                      |  2 +-
 30 files changed, 387 insertions(+), 301 deletions(-)

diff --git a/HEADER b/HEADER
index 4b2eadf..90705e0 100644
--- a/HEADER
+++ b/HEADER
@@ -1,13 +1,16 @@
-Copyright ${year} ${name}.
+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
 
-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
 
-   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.
\ No newline at end of file
+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.
\ No newline at end of file
diff --git a/NOTICE.txt b/NOTICE.txt
new file mode 100644
index 0000000..103e2dc
--- /dev/null
+++ b/NOTICE.txt
@@ -0,0 +1,5 @@
+Apache Fineract CN Template
+Copyright [2017-2018] The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file
diff --git a/README.md b/README.md
index 1839633..c5ad0cd 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,17 @@
-# Mifos I/O Template
+# Apache Fineract CN Template
 
 [![Join the chat at https://gitter.im/mifos-initiative/mifos.io](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mifos-initiative/mifos.io?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
 
 This project provides a template layout for all Mifos I/O microservices.
 
 ## Abstract
-Mifos I/O is an application framework for digital financial services, a system to support nationwide and cross-national financial transactions and help to level and speed the creation of an inclusive, interconnected digital economy for every nation in the world.
+Apache Fineract CN is an application framework for digital financial services, a system to support nationwide and cross-national financial transactions and help to level and speed the creation of an inclusive, interconnected digital economy for every nation in the world.
 
 ## Steps needed to turn the template project into a real project
 
 1.  Git clone template into {project name} folder
 
-        git clone https://github.com/mifosio/template.git {project name}
+        git clone https://github.com/apache/fineract-cn-template.git {project name}
 
 2.  Delete _.git_
 
diff --git a/api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java b/api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java
index 239e2ac..ef5ec01 100644
--- a/api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java
+++ b/api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.api.v1;
 
diff --git a/api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java b/api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java
index ec4383c..00825b2 100644
--- a/api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java
+++ b/api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.api.v1.client;
 
diff --git a/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java b/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java
index 9914e36..96cfc98 100644
--- a/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java
+++ b/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.api.v1.client;
 
diff --git a/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java b/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java
index 6f25719..12549e9 100644
--- a/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java
+++ b/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.api.v1.domain;
 
diff --git a/api/src/main/java/io/mifos/template/api/v1/events/EventConstants.java b/api/src/main/java/io/mifos/template/api/v1/events/EventConstants.java
index 6207c03..58368c4 100644
--- a/api/src/main/java/io/mifos/template/api/v1/events/EventConstants.java
+++ b/api/src/main/java/io/mifos/template/api/v1/events/EventConstants.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.api.v1.events;
 
diff --git a/api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java b/api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java
index acf33cb..eab7ef9 100644
--- a/api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java
+++ b/api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.api.v1.domain;
 
diff --git a/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java b/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java
index 923cf79..a5eaa0d 100644
--- a/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java
+++ b/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template;
 
diff --git a/component-test/src/main/java/io/mifos/template/TestSample.java b/component-test/src/main/java/io/mifos/template/TestSample.java
index 92ae690..365009c 100644
--- a/component-test/src/main/java/io/mifos/template/TestSample.java
+++ b/component-test/src/main/java/io/mifos/template/TestSample.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template;
 
diff --git a/component-test/src/main/java/io/mifos/template/TestSuite.java b/component-test/src/main/java/io/mifos/template/TestSuite.java
index 44ed340..13af827 100644
--- a/component-test/src/main/java/io/mifos/template/TestSuite.java
+++ b/component-test/src/main/java/io/mifos/template/TestSuite.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template;
 
diff --git a/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java b/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
index 52be53b..3fb8213 100644
--- a/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
+++ b/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.listener;
 
diff --git a/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java b/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
index b54a819..0ff3df7 100644
--- a/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
+++ b/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.listener;
 
diff --git a/service/src/main/java/io/mifos/template/service/ServiceConstants.java b/service/src/main/java/io/mifos/template/service/ServiceConstants.java
index e9e0623..fd1d982 100644
--- a/service/src/main/java/io/mifos/template/service/ServiceConstants.java
+++ b/service/src/main/java/io/mifos/template/service/ServiceConstants.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.service;
 
diff --git a/service/src/main/java/io/mifos/template/service/TemplateApplication.java b/service/src/main/java/io/mifos/template/service/TemplateApplication.java
index 7ca88f0..473bec4 100644
--- a/service/src/main/java/io/mifos/template/service/TemplateApplication.java
+++ b/service/src/main/java/io/mifos/template/service/TemplateApplication.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.service;
 
diff --git a/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java b/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
index 33ee609..5e62592 100644
--- a/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
+++ b/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.service;
 
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java b/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java
index e02d2d0..aef272b 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.service.internal.command;
 
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java b/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java
index 5957f1b..b11ecfc 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.service.internal.command;
 
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
index 12ae643..f0034aa 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.service.internal.command.handler;
 
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java b/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
index 9a7c572..3640a05 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.service.internal.command.handler;
 
diff --git a/service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java b/service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java
index 983b5d5..23ccc7a 100644
--- a/service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java
+++ b/service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.service.internal.mapper;
 
diff --git a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java
index 9cbcd73..382437b 100644
--- a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java
+++ b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.service.internal.repository;
 
diff --git a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java
index 87ea8a7..6b9df88 100644
--- a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java
+++ b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.service.internal.repository;
 
diff --git a/service/src/main/java/io/mifos/template/service/internal/service/SampleService.java b/service/src/main/java/io/mifos/template/service/internal/service/SampleService.java
index caba840..e87a379 100644
--- a/service/src/main/java/io/mifos/template/service/internal/service/SampleService.java
+++ b/service/src/main/java/io/mifos/template/service/internal/service/SampleService.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.service.internal.service;
 
diff --git a/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java b/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java
index 9919252..b6ced2b 100644
--- a/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java
+++ b/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 The Mifos Initiative.
+ * 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
  *
- * 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
  *
- *    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.
+ * 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 io.mifos.template.service.rest;
 
diff --git a/service/src/main/resources/application.yml b/service/src/main/resources/application.yml
index 8b395ca..3d8ab85 100644
--- a/service/src/main/resources/application.yml
+++ b/service/src/main/resources/application.yml
@@ -1,17 +1,20 @@
 #
-# Copyright 2017 The Mifos Initiative.
+# 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
 #
-# 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
 #
-#    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.
+# 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.
 #
 
 spring:
diff --git a/service/src/main/resources/bootstrap.yml b/service/src/main/resources/bootstrap.yml
index 6b9e3e8..e6e5279 100644
--- a/service/src/main/resources/bootstrap.yml
+++ b/service/src/main/resources/bootstrap.yml
@@ -1,17 +1,20 @@
 #
-# Copyright 2017 The Mifos Initiative.
+# 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
 #
-# 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
 #
-#    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.
+# 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.
 #
 
 spring:
diff --git a/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql b/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
index fb1b54e..8e4ba15 100644
--- a/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
+++ b/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
@@ -1,17 +1,20 @@
 --
--- Copyright 2017 The Mifos Initiative.
+-- 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
 --
--- 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
 --
---    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.
+-- 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.
 --
 
 CREATE TABLE template_samples (
diff --git a/shared.gradle b/shared.gradle
index 66175e1..6542efb 100644
--- a/shared.gradle
+++ b/shared.gradle
@@ -66,5 +66,5 @@ license {
         yaml = 'SCRIPT_STYLE'
     }
     ext.year = Calendar.getInstance().get(Calendar.YEAR)
-    ext.name = 'The Mifos Initiative'
+    ext.name = 'The Apache Software Foundation'
 }


[fineract-cn-template] 01/38: Initial Commit

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit e51bec140fe7f7f19a1fa8ac5f89e44c50359919
Author: Markus Geiss <mg...@mifos.org>
AuthorDate: Wed Mar 15 08:06:19 2017 +0100

    Initial Commit
---
 .gitignore                                         |  16 ++
 HEADER                                             |  13 ++
 LICENSE                                            | 201 +++++++++++++++++++++
 README.md                                          |  66 +++++++
 api/build.gradle                                   |  35 ++++
 api/settings.gradle                                |   1 +
 .../io/mifos/template/api/v1/EventConstants.java   |  27 +++
 .../mifos/template/api/v1/PermittableGroupIds.java |  22 +++
 .../api/v1/client/IamATeapotException.java         |  20 ++
 .../template/api/v1/client/TemplateManager.java    |  57 ++++++
 .../io/mifos/template/api/v1/domain/Sample.java    |  70 +++++++
 build.gradle                                       |  36 ++++
 component-test/build.gradle                        |  38 ++++
 component-test/settings.gradle                     |   1 +
 .../main/java/io/mifos/template/TestSample.java    | 136 ++++++++++++++
 .../template/listener/MigrationEventListener.java  |  47 +++++
 .../template/listener/SampleEventListener.java     |  47 +++++
 gradle/wrapper/gradle-wrapper.jar                  | Bin 0 -> 54212 bytes
 gradle/wrapper/gradle-wrapper.properties           |   6 +
 gradlew                                            | 172 ++++++++++++++++++
 gradlew.bat                                        |  84 +++++++++
 service/build.gradle                               |  63 +++++++
 service/settings.gradle                            |   1 +
 .../mifos/template/service/ServiceConstants.java   |  20 ++
 .../template/service/TemplateApplication.java      |  29 +++
 .../template/service/TemplateConfiguration.java    |  64 +++++++
 .../internal/command/InitializeServiceCommand.java |  23 +++
 .../service/internal/command/SampleCommand.java    |  32 ++++
 .../command/handler/MigrationAggregate.java        |  60 ++++++
 .../internal/command/handler/SampleAggregate.java  |  52 ++++++
 .../service/internal/mapper/SampleMapper.java      |  43 +++++
 .../internal/repository/SampleJpaEntity.java       |  61 +++++++
 .../repository/SampleJpaEntityRepository.java      |  26 +++
 .../service/internal/service/SampleService.java    |  45 +++++
 .../service/rest/SampleRestController.java         | 112 ++++++++++++
 service/src/main/resources/application.yml         |  66 +++++++
 service/src/main/resources/bootstrap.yml           |  19 ++
 .../db/migrations/mariadb/V1__initial_setup.sql    |  22 +++
 settings.gradle                                    |   6 +
 shared.gradle                                      |  69 +++++++
 40 files changed, 1908 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f9d7cba
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,16 @@
+.gradle
+.idea
+build/
+target/
+
+# Ignore Gradle GUI config
+gradle-app.setting
+
+# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
+!gradle-wrapper.jar
+
+*.iml
+
+*.log
+
+*.toDelete
diff --git a/HEADER b/HEADER
new file mode 100644
index 0000000..4b2eadf
--- /dev/null
+++ b/HEADER
@@ -0,0 +1,13 @@
+Copyright ${year} ${name}.
+
+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.
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..8dada3e
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   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.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1839633
--- /dev/null
+++ b/README.md
@@ -0,0 +1,66 @@
+# Mifos I/O Template
+
+[![Join the chat at https://gitter.im/mifos-initiative/mifos.io](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mifos-initiative/mifos.io?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+
+This project provides a template layout for all Mifos I/O microservices.
+
+## Abstract
+Mifos I/O is an application framework for digital financial services, a system to support nationwide and cross-national financial transactions and help to level and speed the creation of an inclusive, interconnected digital economy for every nation in the world.
+
+## Steps needed to turn the template project into a real project
+
+1.  Git clone template into {project name} folder
+
+        git clone https://github.com/mifosio/template.git {project name}
+
+2.  Delete _.git_
+
+        rm -rf .git
+    
+3.  Open settings.gradle and replace value of _rootProject.name_ with {project name}
+
+4.  Open root build.gradle and replace value of _version_ with 0.1.0-snapshot
+
+6.  Create Gradle wrapper
+
+        gradle wrapper
+
+6.  Open all module specific build.gradle files (api, service, and component-test) and replace value of _group_ with io.mifos.{project name}
+
+7.  Import project into IDE
+
+8.  Rename all io.mifos.template packages to io.mifos.{project name}
+
+9.  Open _SampleRestConfiguration_ and _SampleServiceConfiguration_, adjust @ComponentScan to reflect the new package name
+
+10. Open _application.yml_ and replace _server.contextPath_ with /{project name}/v1/*
+
+11. Open _bootstrap.yml_ and replace _spring.application.name_ with {project name}/v1/
+
+12. Open _SampleTest_ and replace constructor argument of TestEnvironment in line 80 with {project name}/v1/
+
+13. Run _SampleTest_
+
+14. Replace the contents of the README with text describing your new project.
+
+15. Happy coding! ; o) 
+
+## Versioning
+The version numbers follow the [Semantic Versioning](http://semver.org/) scheme.
+
+In addition to MAJOR.MINOR.PATCH the following postfixes are used to indicate the development state.
+
+* BUILD-SNAPSHOT - A release currently in development. 
+* M - A _milestone_ release include specific sets of functions and are released as soon as the functionality is complete.
+* RC - A _release candidate_ is a version with potential to be a final product, considered _code complete_.
+* RELEASE - _General availability_ indicates that this release is the best available version and is recommended for all usage.
+
+The versioning layout is {MAJOR}.{MINOR}.{PATCH}-{INDICATOR}[.{PATCH}]. Only milestones and release candidates can  have patch versions. Some examples:
+
+1.2.3.BUILD-SNAPSHOT  
+1.3.5.M.1  
+1.5.7.RC.2  
+2.0.0.RELEASE
+
+## License
+See [LICENSE](LICENSE) file.
diff --git a/api/build.gradle b/api/build.gradle
new file mode 100644
index 0000000..c5b6745
--- /dev/null
+++ b/api/build.gradle
@@ -0,0 +1,35 @@
+buildscript {
+    repositories {
+        jcenter()
+    }
+
+    dependencies {
+        classpath 'io.spring.gradle:dependency-management-plugin:0.6.0.RELEASE'
+    }
+}
+
+plugins {
+    id "com.github.hierynomus.license" version "0.13.1"
+}
+
+apply from: '../shared.gradle'
+
+dependencies {
+    compile(
+            [group: 'org.springframework.cloud', name: 'spring-cloud-starter-feign'],
+            [group: 'io.mifos.core', name: 'api', version: versions.frameworkapi],
+            [group: 'org.hibernate', name: 'hibernate-validator', version: versions.validator],
+            [group: 'org.hibernate', name: 'hibernate-validator-annotation-processor', version: versions.validator]
+    )
+}
+
+publishing {
+    publications {
+        api(MavenPublication) {
+            from components.java
+            groupId project.group
+            artifactId project.name
+            version project.version
+        }
+    }
+}
diff --git a/api/settings.gradle b/api/settings.gradle
new file mode 100644
index 0000000..7c8e3dc
--- /dev/null
+++ b/api/settings.gradle
@@ -0,0 +1 @@
+rootProject.name = 'api'
\ No newline at end of file
diff --git a/api/src/main/java/io/mifos/template/api/v1/EventConstants.java b/api/src/main/java/io/mifos/template/api/v1/EventConstants.java
new file mode 100644
index 0000000..ec508b0
--- /dev/null
+++ b/api/src/main/java/io/mifos/template/api/v1/EventConstants.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.api.v1;
+
+@SuppressWarnings("unused")
+public interface EventConstants {
+
+  String DESTINATION = "template-v1";
+  String SELECTOR_NAME = "action";
+  String INITIALIZE = "initialize";
+  String POST_SAMPLE = "post-sample";
+  String SELECTOR_INITIALIZE = SELECTOR_NAME + " = '" + INITIALIZE + "'";
+  String SELECTOR_POST_SAMPLE = SELECTOR_NAME + " = '" + POST_SAMPLE + "'";
+}
diff --git a/api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java b/api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java
new file mode 100644
index 0000000..2a3bdb1
--- /dev/null
+++ b/api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.api.v1;
+
+@SuppressWarnings("unused")
+public interface PermittableGroupIds {
+  String SAMPLE_MANAGEMENT = "template__v1__samples";
+  String SELF_MANAGEMENT = "template__v1__self";
+}
diff --git a/api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java b/api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java
new file mode 100644
index 0000000..c1c9e74
--- /dev/null
+++ b/api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.api.v1.client;
+
+@SuppressWarnings("WeakerAccess")
+public class IamATeapotException extends RuntimeException {
+}
diff --git a/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java b/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java
new file mode 100644
index 0000000..6b0cb4c
--- /dev/null
+++ b/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.api.v1.client;
+
+import io.mifos.core.api.annotation.ThrowsException;
+import io.mifos.core.api.util.CustomFeignClientsConfiguration;
+import io.mifos.template.api.v1.domain.Sample;
+import org.springframework.cloud.netflix.feign.FeignClient;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import java.util.List;
+
+@SuppressWarnings("unused")
+@FeignClient(value="template-v1", path="/template/v1", configuration = CustomFeignClientsConfiguration.class)
+public interface TemplateManager {
+
+  @RequestMapping(
+          value = "/sample",
+          method = RequestMethod.GET,
+          produces = MediaType.ALL_VALUE,
+          consumes = MediaType.APPLICATION_JSON_VALUE
+  )
+  List<Sample> findAllEntities();
+
+  @RequestMapping(
+          value = "/sample/{identifier}",
+          method = RequestMethod.GET,
+          produces = MediaType.ALL_VALUE,
+          consumes = MediaType.APPLICATION_JSON_VALUE)
+  Sample getEntity(@PathVariable("identifier") final String identifier);
+
+  @RequestMapping(
+      value = "/sample",
+      method = RequestMethod.POST,
+      produces = MediaType.APPLICATION_JSON_VALUE,
+      consumes = MediaType.APPLICATION_JSON_VALUE
+  )
+  @ThrowsException(status = HttpStatus.I_AM_A_TEAPOT, exception = IamATeapotException.class)
+  void createEntity(final Sample sample);
+}
diff --git a/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java b/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java
new file mode 100644
index 0000000..d3dbd54
--- /dev/null
+++ b/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.api.v1.domain;
+
+import io.mifos.core.lang.validation.constraints.ValidIdentifier;
+import org.hibernate.validator.constraints.Length;
+
+import java.util.Objects;
+
+@SuppressWarnings({"WeakerAccess", "unused"})
+public class Sample {
+  @ValidIdentifier
+  private String identifier;
+  @Length(max = 512)
+  private String payload;
+
+  public Sample() {
+    super();
+  }
+
+  public static Sample create(final String identifier, final String payload) {
+    final Sample sample = new Sample();
+    sample.setIdentifier(identifier);
+    sample.setPayload(payload);
+    return sample;
+  }
+
+  public String getIdentifier() {
+    return this.identifier;
+  }
+
+  public void setIdentifier(final String identifier) {
+    this.identifier = identifier;
+  }
+
+  public String getPayload() {
+    return payload;
+  }
+
+  public void setPayload(String payload) {
+    this.payload = payload;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+    Sample sample = (Sample) o;
+    return Objects.equals(identifier, sample.identifier) &&
+            Objects.equals(payload, sample.payload);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(identifier, payload);
+  }
+}
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..b30bd55
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,36 @@
+group 'io.mifos'
+
+task publishApiToMavenLocal {
+    dependsOn gradle.includedBuild('api').task(':publishToMavenLocal')
+}
+
+task publishServiceToMavenLocal {
+    mustRunAfter publishApiToMavenLocal
+    dependsOn gradle.includedBuild('service').task(':publishToMavenLocal')
+}
+
+task publishComponentTestToMavenLocal {
+    mustRunAfter publishApiToMavenLocal
+    mustRunAfter publishServiceToMavenLocal
+    dependsOn gradle.includedBuild('component-test').task(':publishToMavenLocal')
+}
+
+task publishToMavenLocal {
+    group 'all'
+    dependsOn publishApiToMavenLocal
+    dependsOn publishServiceToMavenLocal
+    dependsOn publishComponentTestToMavenLocal
+}
+
+task prepareForTest {
+    group 'all'
+    dependsOn publishToMavenLocal
+    dependsOn gradle.includedBuild('component-test').task(':build')
+}
+
+task licenseFormat {
+    group 'all'
+    dependsOn gradle.includedBuild('api').task(':licenseFormat')
+    dependsOn gradle.includedBuild('service').task(':licenseFormat')
+    dependsOn gradle.includedBuild('component-test').task(':licenseFormat')
+}
diff --git a/component-test/build.gradle b/component-test/build.gradle
new file mode 100644
index 0000000..7818273
--- /dev/null
+++ b/component-test/build.gradle
@@ -0,0 +1,38 @@
+buildscript {
+    ext {
+        springBootVersion = '1.4.1.RELEASE'
+    }
+
+    repositories {
+        jcenter()
+    }
+
+    dependencies {
+        classpath ("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
+    }
+}
+
+plugins {
+    id "com.github.hierynomus.license" version "0.13.1"
+}
+apply from: '../shared.gradle'
+
+dependencies {
+    compile(
+            [group: 'io.mifos.template', name: 'api', version: project.version],
+            [group: 'io.mifos.template', name: 'service', version: project.version],
+            [group: 'io.mifos.anubis', name: 'test', version: versions.frameworkanubis],
+            [group: 'io.mifos.core', name: 'api', version: versions.frameworkapi],
+            [group: 'io.mifos.core', name: 'test', version: versions.frameworktest],
+            [group: 'io.mifos.core', name: 'lang', version: versions.frameworklang],
+            [group: 'org.springframework.boot', name: 'spring-boot-starter-test']
+    )
+}
+
+publishing {
+    publications {
+        mavenJava(MavenPublication) {
+            from components.java
+        }
+    }
+}
diff --git a/component-test/settings.gradle b/component-test/settings.gradle
new file mode 100644
index 0000000..07867cb
--- /dev/null
+++ b/component-test/settings.gradle
@@ -0,0 +1 @@
+rootProject.name = 'component-test'
\ No newline at end of file
diff --git a/component-test/src/main/java/io/mifos/template/TestSample.java b/component-test/src/main/java/io/mifos/template/TestSample.java
new file mode 100644
index 0000000..ea40b09
--- /dev/null
+++ b/component-test/src/main/java/io/mifos/template/TestSample.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template;
+
+import io.mifos.anubis.test.v1.TenantApplicationSecurityEnvironmentTestRule;
+import io.mifos.core.api.context.AutoUserContext;
+import io.mifos.core.test.env.TestEnvironment;
+import io.mifos.core.test.fixture.TenantDataStoreContextTestRule;
+import io.mifos.core.test.fixture.cassandra.CassandraInitializer;
+import io.mifos.core.test.fixture.mariadb.MariaDBInitializer;
+import io.mifos.core.test.listener.EnableEventRecording;
+import io.mifos.core.test.listener.EventRecorder;
+import io.mifos.template.api.v1.EventConstants;
+import io.mifos.template.api.v1.client.TemplateManager;
+import io.mifos.template.api.v1.domain.Sample;
+import io.mifos.template.service.TemplateConfiguration;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.*;
+import org.junit.rules.RuleChain;
+import org.junit.rules.TestRule;
+import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.cloud.netflix.feign.EnableFeignClients;
+import org.springframework.cloud.netflix.ribbon.RibbonClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.List;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
+public class TestSample {
+
+  private static final String APP_NAME = "template-v1";
+
+  @Configuration
+  @EnableEventRecording
+  @EnableFeignClients(basePackages = {"io.mifos.template.api.v1.client"})
+  @RibbonClient(name = APP_NAME)
+  @Import({TemplateConfiguration.class})
+  @ComponentScan("io.mifos.template.listener")
+  public static class TestConfiguration {
+    public TestConfiguration() {
+      super();
+    }
+
+    @Bean()
+    public Logger logger() {
+      return LoggerFactory.getLogger("test-logger");
+    }
+  }
+  private static final String TEST_USER = "homer";
+
+  private final static TestEnvironment testEnvironment = new TestEnvironment(APP_NAME);
+  private final static CassandraInitializer cassandraInitializer = new CassandraInitializer();
+  private final static MariaDBInitializer mariaDBInitializer = new MariaDBInitializer();
+  private final static TenantDataStoreContextTestRule tenantDataStoreContext = TenantDataStoreContextTestRule.forRandomTenantName(cassandraInitializer, mariaDBInitializer);
+
+  @ClassRule
+  public static TestRule orderClassRules = RuleChain
+          .outerRule(testEnvironment)
+          .around(cassandraInitializer)
+          .around(mariaDBInitializer)
+          .around(tenantDataStoreContext);
+
+  @Rule
+  public final TenantApplicationSecurityEnvironmentTestRule tenantApplicationSecurityEnvironment
+          = new TenantApplicationSecurityEnvironmentTestRule(testEnvironment, this::waitForInitialize);
+
+  private AutoUserContext userContext;
+
+  @Autowired
+  private TemplateManager testSubject;
+
+  @Autowired
+  private EventRecorder eventRecorder;
+
+  public TestSample() {
+    super();
+  }
+
+  @Before
+  public void prepTest() {
+    userContext = tenantApplicationSecurityEnvironment.createAutoUserContext(TestSample.TEST_USER);
+  }
+
+  @After
+  public void cleanTest() {
+    userContext.close();
+    eventRecorder.clear();
+  }
+
+  public boolean waitForInitialize() {
+    try {
+      return this.eventRecorder.wait(EventConstants.INITIALIZE, EventConstants.INITIALIZE);
+    } catch (final InterruptedException e) {
+      throw new IllegalStateException(e);
+    }
+  }
+
+  @Test
+  public void shouldCreateSample() throws InterruptedException {
+    final Sample sample = Sample.create(RandomStringUtils.randomAlphanumeric(8), RandomStringUtils.randomAlphanumeric(512));
+    this.testSubject.createEntity(sample);
+
+    Assert.assertTrue(this.eventRecorder.wait(EventConstants.POST_SAMPLE, sample.getIdentifier()));
+
+    final Sample createdSample = this.testSubject.getEntity(sample.getIdentifier());
+    Assert.assertEquals(sample, createdSample);
+  }
+
+  @Test
+  public void shouldListSamples() {
+    final List<Sample> allEntities = this.testSubject.findAllEntities();
+    Assert.assertNotNull(allEntities);
+  }
+}
diff --git a/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java b/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
new file mode 100644
index 0000000..3f67928
--- /dev/null
+++ b/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.listener;
+
+import io.mifos.core.lang.config.TenantHeaderFilter;
+import io.mifos.core.test.listener.EventRecorder;
+import io.mifos.template.api.v1.EventConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jms.annotation.JmsListener;
+import org.springframework.messaging.handler.annotation.Header;
+import org.springframework.stereotype.Component;
+
+@SuppressWarnings("unused")
+@Component
+public class MigrationEventListener {
+
+  private final EventRecorder eventRecorder;
+
+  @Autowired
+  public MigrationEventListener(@SuppressWarnings("SpringJavaAutowiringInspection") final EventRecorder eventRecorder) {
+    super();
+    this.eventRecorder = eventRecorder;
+  }
+
+  @JmsListener(
+      subscription = EventConstants.DESTINATION,
+      destination = EventConstants.DESTINATION,
+      selector = EventConstants.SELECTOR_INITIALIZE
+  )
+  public void onInitialization(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
+                               final String payload) {
+    this.eventRecorder.event(tenant, EventConstants.INITIALIZE, payload, String.class);
+  }
+}
diff --git a/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java b/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
new file mode 100644
index 0000000..6f547a4
--- /dev/null
+++ b/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.listener;
+
+import io.mifos.core.lang.config.TenantHeaderFilter;
+import io.mifos.core.test.listener.EventRecorder;
+import io.mifos.template.api.v1.EventConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jms.annotation.JmsListener;
+import org.springframework.messaging.handler.annotation.Header;
+import org.springframework.stereotype.Component;
+
+@SuppressWarnings("unused")
+@Component
+public class SampleEventListener {
+
+  private final EventRecorder eventRecorder;
+
+  @Autowired
+  public SampleEventListener(@SuppressWarnings("SpringJavaAutowiringInspection") final EventRecorder eventRecorder) {
+    super();
+    this.eventRecorder = eventRecorder;
+  }
+
+  @JmsListener(
+      subscription = EventConstants.DESTINATION,
+      destination = EventConstants.DESTINATION,
+      selector = EventConstants.SELECTOR_POST_SAMPLE
+  )
+  public void onCreateSample(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
+                             final String payload) {
+    this.eventRecorder.event(tenant, EventConstants.POST_SAMPLE, payload, String.class);
+  }
+}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..400f155
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..2888922
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Mar 17 17:54:20 CET 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.4.1-bin.zip
diff --git a/gradlew b/gradlew
new file mode 100755
index 0000000..4453cce
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Escape application args
+save ( ) {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+  cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..e95643d
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem  Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/service/build.gradle b/service/build.gradle
new file mode 100644
index 0000000..a9b4de9
--- /dev/null
+++ b/service/build.gradle
@@ -0,0 +1,63 @@
+buildscript {
+    ext {
+        springBootVersion = '1.4.1.RELEASE'
+    }
+
+    repositories {
+        jcenter()
+    }
+
+    dependencies {
+        classpath ("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
+    }
+}
+
+plugins {
+    id "com.github.hierynomus.license" version "0.13.1"
+}
+
+apply from: '../shared.gradle'
+
+apply plugin: 'spring-boot'
+
+springBoot {
+    executable = true
+    classifier = 'boot'
+}
+
+dependencies {
+    compile(
+            [group: 'org.springframework.cloud', name: 'spring-cloud-starter-config'],
+            [group: 'org.springframework.cloud', name: 'spring-cloud-starter-eureka'],
+            [group: 'org.springframework.boot', name: 'spring-boot-starter-jetty'],
+            [group: 'io.mifos.template', name: 'api', version: project.version],
+            [group: 'io.mifos.anubis', name: 'library', version: versions.frameworkanubis],
+            [group: 'com.google.code.gson', name: 'gson'],
+            [group: 'io.mifos.core', name: 'lang', version: versions.frameworklang],
+            [group: 'io.mifos.core', name: 'async', version: versions.frameworkasync],
+            [group: 'io.mifos.core', name: 'cassandra', version: versions.frameworkcassandra],
+            [group: 'io.mifos.core', name: 'mariadb', version: versions.frameworkmariadb],
+            [group: 'io.mifos.core', name: 'command', version: versions.frameworkcommand],
+            [group: 'org.hibernate', name: 'hibernate-validator', version: versions.validator]
+    )
+}
+
+publishToMavenLocal.dependsOn bootRepackage
+
+publishing {
+    publications {
+        service(MavenPublication) {
+            from components.java
+            groupId project.group
+            artifactId project.name
+            version project.version
+        }
+        bootService(MavenPublication) {
+            // "boot" jar
+            artifact ("$buildDir/libs/$project.name-$version-boot.jar")
+            groupId project.group
+            artifactId ("$project.name-boot")
+            version project.version
+        }
+    }
+}
diff --git a/service/settings.gradle b/service/settings.gradle
new file mode 100644
index 0000000..081feb4
--- /dev/null
+++ b/service/settings.gradle
@@ -0,0 +1 @@
+rootProject.name = 'service'
\ No newline at end of file
diff --git a/service/src/main/java/io/mifos/template/service/ServiceConstants.java b/service/src/main/java/io/mifos/template/service/ServiceConstants.java
new file mode 100644
index 0000000..e9ee910
--- /dev/null
+++ b/service/src/main/java/io/mifos/template/service/ServiceConstants.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.service;
+
+public interface ServiceConstants {
+  String LOGGER_NAME = "rest-logger";
+}
diff --git a/service/src/main/java/io/mifos/template/service/TemplateApplication.java b/service/src/main/java/io/mifos/template/service/TemplateApplication.java
new file mode 100644
index 0000000..bd2464b
--- /dev/null
+++ b/service/src/main/java/io/mifos/template/service/TemplateApplication.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.service;
+
+import org.springframework.boot.SpringApplication;
+
+public class TemplateApplication {
+
+  public TemplateApplication() {
+    super();
+  }
+
+  public static void main(String[] args) {
+    SpringApplication.run(TemplateConfiguration.class, args);
+  }
+}
diff --git a/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java b/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
new file mode 100644
index 0000000..2b6ce06
--- /dev/null
+++ b/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.service;
+
+import io.mifos.anubis.config.EnableAnubis;
+import io.mifos.core.async.config.EnableAsync;
+import io.mifos.core.cassandra.config.EnableCassandra;
+import io.mifos.core.command.config.EnableCommandProcessing;
+import io.mifos.core.lang.config.EnableServiceException;
+import io.mifos.core.lang.config.EnableTenantContext;
+import io.mifos.core.mariadb.config.EnableMariaDB;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+
+@SuppressWarnings("WeakerAccess")
+@Configuration
+@EnableAutoConfiguration
+@EnableDiscoveryClient
+@EnableAsync
+@EnableTenantContext
+@EnableCassandra
+@EnableMariaDB
+@EnableCommandProcessing
+@EnableAnubis
+@EnableServiceException
+@ComponentScan({
+    "io.mifos.template.service.rest",
+    "io.mifos.template.service.internal.service",
+    "io.mifos.template.service.internal.repository",
+    "io.mifos.template.service.internal.command.handler"
+})
+@EnableJpaRepositories({
+    "io.mifos.template.service.internal.repository"
+})
+public class TemplateConfiguration {
+
+  public TemplateConfiguration() {
+    super();
+  }
+
+  @Bean(name = ServiceConstants.LOGGER_NAME)
+  public Logger logger() {
+    return LoggerFactory.getLogger(ServiceConstants.LOGGER_NAME);
+  }
+}
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java b/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java
new file mode 100644
index 0000000..5e8dc63
--- /dev/null
+++ b/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.service.internal.command;
+
+public class InitializeServiceCommand {
+
+  public InitializeServiceCommand() {
+    super();
+  }
+}
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java b/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java
new file mode 100644
index 0000000..d700762
--- /dev/null
+++ b/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.service.internal.command;
+
+import io.mifos.template.api.v1.domain.Sample;
+
+public class SampleCommand {
+
+  private final Sample sample;
+
+  public SampleCommand(final Sample sample) {
+    super();
+    this.sample = sample;
+  }
+
+  public Sample sample() {
+    return this.sample;
+  }
+}
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
new file mode 100644
index 0000000..6108d06
--- /dev/null
+++ b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.service.internal.command.handler;
+
+import io.mifos.core.command.annotation.Aggregate;
+import io.mifos.core.command.annotation.CommandHandler;
+import io.mifos.core.command.annotation.EventEmitter;
+import io.mifos.core.mariadb.domain.FlywayFactoryBean;
+import io.mifos.template.api.v1.EventConstants;
+import io.mifos.template.service.ServiceConstants;
+import io.mifos.template.service.internal.command.InitializeServiceCommand;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.sql.DataSource;
+
+@SuppressWarnings({
+    "unused"
+})
+@Aggregate
+public class MigrationAggregate {
+
+  private final Logger logger;
+  private final DataSource dataSource;
+  private final FlywayFactoryBean flywayFactoryBean;
+
+  @Autowired
+  public MigrationAggregate(@Qualifier(ServiceConstants.LOGGER_NAME) final Logger logger,
+                            final DataSource dataSource,
+                            final FlywayFactoryBean flywayFactoryBean) {
+    super();
+    this.logger = logger;
+    this.dataSource = dataSource;
+    this.flywayFactoryBean = flywayFactoryBean;
+  }
+
+  @CommandHandler
+  @Transactional
+  @EventEmitter(selectorName = EventConstants.SELECTOR_NAME, selectorValue = EventConstants.INITIALIZE)
+  public String initialize(final InitializeServiceCommand initializeServiceCommand) {
+    this.logger.debug("Start service migration.");
+    this.flywayFactoryBean.create(this.dataSource).migrate();
+    return EventConstants.INITIALIZE;
+  }
+}
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java b/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
new file mode 100644
index 0000000..7109b49
--- /dev/null
+++ b/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.service.internal.command.handler;
+
+import io.mifos.core.command.annotation.Aggregate;
+import io.mifos.core.command.annotation.CommandHandler;
+import io.mifos.core.command.annotation.EventEmitter;
+import io.mifos.template.api.v1.EventConstants;
+import io.mifos.template.service.internal.command.SampleCommand;
+import io.mifos.template.service.internal.repository.SampleJpaEntity;
+import io.mifos.template.service.internal.repository.SampleJpaEntityRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@SuppressWarnings("unused")
+@Aggregate
+public class SampleAggregate {
+
+  private final SampleJpaEntityRepository sampleJpaEntityRepository;
+
+  @Autowired
+  public SampleAggregate(final SampleJpaEntityRepository sampleJpaEntityRepository) {
+    super();
+    this.sampleJpaEntityRepository = sampleJpaEntityRepository;
+  }
+
+  @CommandHandler
+  @Transactional
+  @EventEmitter(selectorName = EventConstants.SELECTOR_NAME, selectorValue = EventConstants.POST_SAMPLE)
+  public String sample(final SampleCommand sampleCommand) {
+
+    final SampleJpaEntity entity = new SampleJpaEntity();
+    entity.setIdentifier(sampleCommand.sample().getIdentifier());
+    entity.setPayload(sampleCommand.sample().getPayload());
+    this.sampleJpaEntityRepository.save(entity);
+
+    return sampleCommand.sample().getIdentifier();
+  }
+}
diff --git a/service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java b/service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java
new file mode 100644
index 0000000..de36734
--- /dev/null
+++ b/service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.service.internal.mapper;
+
+import io.mifos.template.api.v1.domain.Sample;
+import io.mifos.template.service.internal.repository.SampleJpaEntity;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class SampleMapper {
+
+  private SampleMapper() {
+    super();
+  }
+
+  public static Sample map(final SampleJpaEntity sampleJpaEntity) {
+    final Sample sample = new Sample();
+    sample.setIdentifier(sampleJpaEntity.getIdentifier());
+    sample.setPayload(sampleJpaEntity.getPayload());
+    return sample;
+  }
+
+  public static List<Sample> map(final List<SampleJpaEntity> sampleJpaEntities) {
+    final ArrayList<Sample> samples = new ArrayList<>(sampleJpaEntities.size());
+    samples.addAll(sampleJpaEntities.stream().map(SampleMapper::map).collect(Collectors.toList()));
+    return samples;
+  }
+}
diff --git a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java
new file mode 100644
index 0000000..c8c741e
--- /dev/null
+++ b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.service.internal.repository;
+
+import javax.persistence.*;
+
+@SuppressWarnings("unused")
+@Entity
+@Table(name = "template_samples")
+public class SampleJpaEntity {
+
+  @Id
+  @GeneratedValue(strategy = GenerationType.IDENTITY)
+  @Column(name = "id")
+  private Long id;
+  @Column(name = "identifier")
+  private String identifier;
+  @Column(name = "payload")
+  private String payload;
+
+  public SampleJpaEntity() {
+    super();
+  }
+
+  public Long getId() {
+    return id;
+  }
+
+  public void setId(Long id) {
+    this.id = id;
+  }
+
+  public String getIdentifier() {
+    return this.identifier;
+  }
+
+  public void setIdentifier(final String identifier) {
+    this.identifier = identifier;
+  }
+
+  public String getPayload() {
+    return payload;
+  }
+
+  public void setPayload(String payload) {
+    this.payload = payload;
+  }
+}
diff --git a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java
new file mode 100644
index 0000000..3f5539e
--- /dev/null
+++ b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.service.internal.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+
+@Repository
+public interface SampleJpaEntityRepository extends JpaRepository<SampleJpaEntity, Long> {
+  Optional<SampleJpaEntity> findByIdentifier(String identifier);
+}
diff --git a/service/src/main/java/io/mifos/template/service/internal/service/SampleService.java b/service/src/main/java/io/mifos/template/service/internal/service/SampleService.java
new file mode 100644
index 0000000..5b4be95
--- /dev/null
+++ b/service/src/main/java/io/mifos/template/service/internal/service/SampleService.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.service.internal.service;
+
+import io.mifos.template.api.v1.domain.Sample;
+import io.mifos.template.service.internal.mapper.SampleMapper;
+import io.mifos.template.service.internal.repository.SampleJpaEntityRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class SampleService {
+
+  private final SampleJpaEntityRepository sampleJpaEntityRepository;
+
+  @Autowired
+  public SampleService(final SampleJpaEntityRepository sampleJpaEntityRepository) {
+    super();
+    this.sampleJpaEntityRepository = sampleJpaEntityRepository;
+  }
+
+  public List<Sample> findAllEntities() {
+    return SampleMapper.map(this.sampleJpaEntityRepository.findAll());
+  }
+
+  public Optional<Sample> findByIdentifier(final String identifier) {
+    return this.sampleJpaEntityRepository.findByIdentifier(identifier).map(SampleMapper::map);
+  }
+}
diff --git a/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java b/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java
new file mode 100644
index 0000000..9cce47d
--- /dev/null
+++ b/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2017 The Mifos Initiative
+ *
+ * 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 io.mifos.template.service.rest;
+
+import io.mifos.anubis.annotation.AcceptedTokenType;
+import io.mifos.anubis.annotation.Permittable;
+import io.mifos.core.command.gateway.CommandGateway;
+import io.mifos.core.lang.ServiceException;
+import io.mifos.template.api.v1.PermittableGroupIds;
+import io.mifos.template.api.v1.domain.Sample;
+import io.mifos.template.service.ServiceConstants;
+import io.mifos.template.service.internal.command.InitializeServiceCommand;
+import io.mifos.template.service.internal.command.SampleCommand;
+import io.mifos.template.service.internal.service.SampleService;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@SuppressWarnings("unused")
+@RestController
+@RequestMapping("/")
+public class SampleRestController {
+
+  private final Logger logger;
+  private final CommandGateway commandGateway;
+  private final SampleService sampleService;
+
+  @Autowired
+  public SampleRestController(@Qualifier(ServiceConstants.LOGGER_NAME) final Logger logger,
+                              final CommandGateway commandGateway,
+                              final SampleService sampleService) {
+    super();
+    this.logger = logger;
+    this.commandGateway = commandGateway;
+    this.sampleService = sampleService;
+  }
+
+  @Permittable(value = AcceptedTokenType.SYSTEM)
+  @RequestMapping(
+      value = "/initialize",
+      method = RequestMethod.POST,
+      consumes = MediaType.ALL_VALUE,
+      produces = MediaType.APPLICATION_JSON_VALUE
+  )
+  public
+  @ResponseBody
+  ResponseEntity<Void> initialize() throws InterruptedException {
+      this.commandGateway.process(new InitializeServiceCommand());
+      return ResponseEntity.accepted().build();
+  }
+
+  @Permittable(value = AcceptedTokenType.TENANT, groupId = PermittableGroupIds.SAMPLE_MANAGEMENT)
+  @RequestMapping(
+          value = "/sample",
+          method = RequestMethod.GET,
+          consumes = MediaType.ALL_VALUE,
+          produces = MediaType.APPLICATION_JSON_VALUE
+  )
+  public
+  @ResponseBody
+  List<Sample> findAllEntities() {
+    return this.sampleService.findAllEntities();
+  }
+
+  @Permittable(value = AcceptedTokenType.TENANT, groupId = PermittableGroupIds.SAMPLE_MANAGEMENT)
+  @RequestMapping(
+          value = "/sample/{identifier}",
+          method = RequestMethod.GET,
+          consumes = MediaType.ALL_VALUE,
+          produces = MediaType.APPLICATION_JSON_VALUE
+  )
+  public
+  @ResponseBody
+  ResponseEntity<Sample> getEntity(@PathVariable("identifier") final String identifier) {
+    return this.sampleService.findByIdentifier(identifier)
+            .map(ResponseEntity::ok)
+            .orElseThrow(() -> ServiceException.notFound("Instance with identifier " + identifier + " doesn't exist."));
+  }
+
+  @Permittable(value = AcceptedTokenType.TENANT, groupId = PermittableGroupIds.SAMPLE_MANAGEMENT)
+  @RequestMapping(
+      value = "/sample",
+      method = RequestMethod.POST,
+      consumes = MediaType.APPLICATION_JSON_VALUE,
+      produces = MediaType.APPLICATION_JSON_VALUE
+  )
+  public
+  @ResponseBody
+  ResponseEntity<Void> createEntity(@RequestBody @Valid final Sample instance) throws InterruptedException {
+    this.commandGateway.process(new SampleCommand(instance));
+    return ResponseEntity.accepted().build();
+  }
+}
diff --git a/service/src/main/resources/application.yml b/service/src/main/resources/application.yml
new file mode 100644
index 0000000..1859323
--- /dev/null
+++ b/service/src/main/resources/application.yml
@@ -0,0 +1,66 @@
+#
+# Copyright 2017 The Mifos Initiative
+#
+# 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.
+#
+
+spring:
+  cloud:
+    discovery:
+      enabled: false
+    config:
+      enabled: false
+
+eureka:
+  client:
+    serviceUrl:
+      defaultZone: http://localhost:8761/eureka/
+
+server:
+  port: 8081
+  contextPath: /template/v1/*
+
+cassandra:
+  clusterName: staging_cluster
+  contactPoints: 127.0.0.1:9042,127.0.0.2:9042,127.0.0.3:9042
+  keyspace: seshat
+  cl:
+    read: LOCAL_QUORUM
+    write: LOCAL_QUORUM
+    delete: LOCAL_QUORUM
+
+mariadb:
+  driverClass: org.mariadb.jdbc.Driver
+  database: seshat
+  host: localhost
+  port: 3306
+  user: root
+  password: mysql
+
+bonecp:
+  idleMaxAgeInMinutes: 240
+  idleConnectionTestPeriodInMinutes: 60
+  maxConnectionsPerPartition: 10
+  minConnectionsPerPartition: 1
+  partitionCount: 2
+  acquireIncrement: 5
+  statementsCacheSize: 100
+
+async:
+  corePoolSize: 32
+  maxPoolSize: 16384
+  queueCapacity: 0
+  threadName: async-processor-
+
+flyway:
+  enabled: false
diff --git a/service/src/main/resources/bootstrap.yml b/service/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..b814525
--- /dev/null
+++ b/service/src/main/resources/bootstrap.yml
@@ -0,0 +1,19 @@
+#
+# Copyright 2017 The Mifos Initiative
+#
+# 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.
+#
+
+spring:
+    application:
+        name: template-v1
diff --git a/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql b/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
new file mode 100644
index 0000000..3719a09
--- /dev/null
+++ b/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
@@ -0,0 +1,22 @@
+--
+-- Copyright 2017 The Mifos Initiative
+--
+-- 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.
+--
+
+CREATE TABLE template_samples (
+  id BIGINT NOT NULL AUTO_INCREMENT,
+  identifier VARCHAR(8) NOT NULL,
+  payload VARCHAR(512) NULL,
+  CONSTRAINT template_samples_pk PRIMARY KEY (id)
+);
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..1630ef8
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,6 @@
+rootProject.name = 'template'
+
+includeBuild 'api'
+includeBuild 'service'
+includeBuild 'component-test'
+
diff --git a/shared.gradle b/shared.gradle
new file mode 100644
index 0000000..4a79b9c
--- /dev/null
+++ b/shared.gradle
@@ -0,0 +1,69 @@
+group 'io.mifos.template'
+version '0.1.0.BUILD-SNAPSHOT'
+
+ext.versions = [
+        frameworkapi : '0.1.0-BUILD-SNAPSHOT',
+        frameworklang : '0.1.0-BUILD-SNAPSHOT',
+        frameworkasync : '0.1.0-BUILD-SNAPSHOT',
+        frameworkcassandra : '0.1.0-BUILD-SNAPSHOT',
+        frameworkmariadb : '0.1.0-BUILD-SNAPSHOT',
+        frameworkcommand : '0.1.0-BUILD-SNAPSHOT',
+        frameworktest: '0.1.0-BUILD-SNAPSHOT',
+        frameworkanubis: '0.1.0-BUILD-SNAPSHOT',
+        validator : '5.3.0.Final'
+]
+
+apply plugin: 'java'
+apply plugin: 'idea'
+apply plugin: 'maven-publish'
+apply plugin: 'io.spring.dependency-management'
+
+tasks.withType(JavaCompile) {
+    sourceCompatibility = JavaVersion.VERSION_1_8
+    targetCompatibility = JavaVersion.VERSION_1_8
+}
+
+repositories {
+    jcenter()
+    mavenLocal()
+}
+
+dependencyManagement {
+    imports {
+        mavenBom 'io.spring.platform:platform-bom:Athens-RELEASE'
+        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Camden.SR1'
+    }
+}
+
+// override certain dependency provided by Spring platform using newer releases
+ext['cassandra.version'] = '3.6'
+ext['cassandra-driver.version'] = '3.1.2'
+ext['activemq.version'] = '5.13.2'
+ext['spring-data-releasetrain.version'] = 'Gosling-SR2A'
+
+dependencies {
+    compile(
+            [group: 'com.google.code.findbugs', name: 'jsr305']
+    )
+
+    testCompile(
+            [group: 'org.springframework.boot', name: 'spring-boot-starter-test']
+    )
+}
+
+jar {
+    from sourceSets.main.allSource
+}
+
+license {
+    header rootProject.file('../HEADER')
+    strictCheck true
+    mapping {
+        java = 'SLASHSTAR_STYLE'
+        xml = 'XML_STYLE'
+        yml = 'SCRIPT_STYLE'
+        yaml = 'SCRIPT_STYLE'
+    }
+    ext.year = Calendar.getInstance().get(Calendar.YEAR)
+    ext.name = 'The Mifos Initiative'
+}
\ No newline at end of file


[fineract-cn-template] 24/38: Adjusting to package name changes in upstream repositories.

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit c6b23d9f89d5e3412ac7e94721fdc01e5ee2eeb6
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Fri Apr 13 16:53:27 2018 +0200

    Adjusting to package name changes in upstream repositories.
---
 .../template/api/v1/client/TemplateManager.java    |  7 +++----
 .../io/mifos/template/api/v1/domain/Sample.java    |  5 ++---
 .../mifos/template/api/v1/domain/SampleTest.java   |  9 ++++-----
 .../io/mifos/template/SuiteTestEnvironment.java    |  6 +++---
 .../main/java/io/mifos/template/TestSample.java    | 22 +++++++++++++---------
 .../template/listener/MigrationEventListener.java  |  4 ++--
 .../template/listener/SampleEventListener.java     |  4 ++--
 .../template/service/TemplateConfiguration.java    | 14 +++++++-------
 .../command/handler/MigrationAggregate.java        | 15 +++++++--------
 .../internal/command/handler/SampleAggregate.java  |  8 ++++----
 .../repository/SampleJpaEntityRepository.java      |  3 +--
 .../service/rest/SampleRestController.java         | 20 ++++++++++++--------
 12 files changed, 60 insertions(+), 57 deletions(-)

diff --git a/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java b/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java
index 96cfc98..f4d7037 100644
--- a/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java
+++ b/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java
@@ -18,9 +18,10 @@
  */
 package io.mifos.template.api.v1.client;
 
-import io.mifos.core.api.annotation.ThrowsException;
-import io.mifos.core.api.util.CustomFeignClientsConfiguration;
 import io.mifos.template.api.v1.domain.Sample;
+import java.util.List;
+import org.apache.fineract.cn.api.annotation.ThrowsException;
+import org.apache.fineract.cn.api.util.CustomFeignClientsConfiguration;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
@@ -28,8 +29,6 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
-import java.util.List;
-
 @SuppressWarnings("unused")
 @FeignClient(value="template-v1", path="/template/v1", configuration = CustomFeignClientsConfiguration.class)
 public interface TemplateManager {
diff --git a/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java b/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java
index 12549e9..12bf046 100644
--- a/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java
+++ b/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java
@@ -18,10 +18,9 @@
  */
 package io.mifos.template.api.v1.domain;
 
-import io.mifos.core.lang.validation.constraints.ValidIdentifier;
-import org.hibernate.validator.constraints.Length;
-
 import java.util.Objects;
+import org.apache.fineract.cn.lang.validation.constraints.ValidIdentifier;
+import org.hibernate.validator.constraints.Length;
 
 @SuppressWarnings({"WeakerAccess", "unused"})
 public class Sample {
diff --git a/api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java b/api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java
index eab7ef9..eb6dd03 100644
--- a/api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java
+++ b/api/src/test/java/io/mifos/template/api/v1/domain/SampleTest.java
@@ -18,13 +18,12 @@
  */
 package io.mifos.template.api.v1.domain;
 
-import io.mifos.core.test.domain.ValidationTest;
-import io.mifos.core.test.domain.ValidationTestCase;
-import org.apache.commons.lang.RandomStringUtils;
-import org.junit.runners.Parameterized;
-
 import java.util.ArrayList;
 import java.util.Collection;
+import org.apache.commons.lang.RandomStringUtils;
+import org.apache.fineract.cn.test.domain.ValidationTest;
+import org.apache.fineract.cn.test.domain.ValidationTestCase;
+import org.junit.runners.Parameterized;
 
 public class SampleTest extends ValidationTest<Sample> {
 
diff --git a/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java b/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java
index a5eaa0d..3ec0a44 100644
--- a/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java
+++ b/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java
@@ -18,9 +18,9 @@
  */
 package io.mifos.template;
 
-import io.mifos.core.test.env.TestEnvironment;
-import io.mifos.core.test.fixture.cassandra.CassandraInitializer;
-import io.mifos.core.test.fixture.mariadb.MariaDBInitializer;
+import org.apache.fineract.cn.test.env.TestEnvironment;
+import org.apache.fineract.cn.test.fixture.cassandra.CassandraInitializer;
+import org.apache.fineract.cn.test.fixture.mariadb.MariaDBInitializer;
 import org.junit.ClassRule;
 import org.junit.rules.RuleChain;
 import org.junit.rules.RunExternalResourceOnce;
diff --git a/component-test/src/main/java/io/mifos/template/TestSample.java b/component-test/src/main/java/io/mifos/template/TestSample.java
index 365009c..527e978 100644
--- a/component-test/src/main/java/io/mifos/template/TestSample.java
+++ b/component-test/src/main/java/io/mifos/template/TestSample.java
@@ -18,17 +18,23 @@
  */
 package io.mifos.template;
 
-import io.mifos.anubis.test.v1.TenantApplicationSecurityEnvironmentTestRule;
-import io.mifos.core.api.context.AutoUserContext;
-import io.mifos.core.test.fixture.TenantDataStoreContextTestRule;
-import io.mifos.core.test.listener.EnableEventRecording;
-import io.mifos.core.test.listener.EventRecorder;
-import io.mifos.template.api.v1.events.EventConstants;
 import io.mifos.template.api.v1.client.TemplateManager;
 import io.mifos.template.api.v1.domain.Sample;
+import io.mifos.template.api.v1.events.EventConstants;
 import io.mifos.template.service.TemplateConfiguration;
+import java.util.List;
 import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.*;
+import org.apache.fineract.cn.anubis.test.v1.TenantApplicationSecurityEnvironmentTestRule;
+import org.apache.fineract.cn.api.context.AutoUserContext;
+import org.apache.fineract.cn.test.fixture.TenantDataStoreContextTestRule;
+import org.apache.fineract.cn.test.listener.EnableEventRecording;
+import org.apache.fineract.cn.test.listener.EventRecorder;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,8 +49,6 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import java.util.List;
-
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
 public class TestSample extends SuiteTestEnvironment {
diff --git a/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java b/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
index 3fb8213..b54f66f 100644
--- a/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
+++ b/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
@@ -18,9 +18,9 @@
  */
 package io.mifos.template.listener;
 
-import io.mifos.core.lang.config.TenantHeaderFilter;
-import io.mifos.core.test.listener.EventRecorder;
 import io.mifos.template.api.v1.events.EventConstants;
+import org.apache.fineract.cn.lang.config.TenantHeaderFilter;
+import org.apache.fineract.cn.test.listener.EventRecorder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jms.annotation.JmsListener;
 import org.springframework.messaging.handler.annotation.Header;
diff --git a/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java b/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
index 0ff3df7..cf6b8c4 100644
--- a/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
+++ b/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
@@ -18,9 +18,9 @@
  */
 package io.mifos.template.listener;
 
-import io.mifos.core.lang.config.TenantHeaderFilter;
-import io.mifos.core.test.listener.EventRecorder;
 import io.mifos.template.api.v1.events.EventConstants;
+import org.apache.fineract.cn.lang.config.TenantHeaderFilter;
+import org.apache.fineract.cn.test.listener.EventRecorder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jms.annotation.JmsListener;
 import org.springframework.messaging.handler.annotation.Header;
diff --git a/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java b/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
index 5e62592..b75c1ad 100644
--- a/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
+++ b/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
@@ -18,13 +18,13 @@
  */
 package io.mifos.template.service;
 
-import io.mifos.anubis.config.EnableAnubis;
-import io.mifos.core.async.config.EnableAsync;
-import io.mifos.core.cassandra.config.EnableCassandra;
-import io.mifos.core.command.config.EnableCommandProcessing;
-import io.mifos.core.lang.config.EnableServiceException;
-import io.mifos.core.lang.config.EnableTenantContext;
-import io.mifos.core.mariadb.config.EnableMariaDB;
+import org.apache.fineract.cn.anubis.config.EnableAnubis;
+import org.apache.fineract.cn.async.config.EnableAsync;
+import org.apache.fineract.cn.cassandra.config.EnableCassandra;
+import org.apache.fineract.cn.command.config.EnableCommandProcessing;
+import org.apache.fineract.cn.lang.config.EnableServiceException;
+import org.apache.fineract.cn.lang.config.EnableTenantContext;
+import org.apache.fineract.cn.mariadb.config.EnableMariaDB;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
index f0034aa..eeecf99 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
@@ -18,22 +18,21 @@
  */
 package io.mifos.template.service.internal.command.handler;
 
-import io.mifos.core.command.annotation.Aggregate;
-import io.mifos.core.command.annotation.CommandHandler;
-import io.mifos.core.command.annotation.CommandLogLevel;
-import io.mifos.core.command.annotation.EventEmitter;
-import io.mifos.core.lang.ApplicationName;
-import io.mifos.core.mariadb.domain.FlywayFactoryBean;
 import io.mifos.template.api.v1.events.EventConstants;
 import io.mifos.template.service.ServiceConstants;
 import io.mifos.template.service.internal.command.InitializeServiceCommand;
+import javax.sql.DataSource;
+import org.apache.fineract.cn.command.annotation.Aggregate;
+import org.apache.fineract.cn.command.annotation.CommandHandler;
+import org.apache.fineract.cn.command.annotation.CommandLogLevel;
+import org.apache.fineract.cn.command.annotation.EventEmitter;
+import org.apache.fineract.cn.lang.ApplicationName;
+import org.apache.fineract.cn.mariadb.domain.FlywayFactoryBean;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.sql.DataSource;
-
 @SuppressWarnings({
     "unused"
 })
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java b/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
index 3640a05..c82db9f 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
@@ -18,14 +18,14 @@
  */
 package io.mifos.template.service.internal.command.handler;
 
-import io.mifos.core.command.annotation.Aggregate;
-import io.mifos.core.command.annotation.CommandHandler;
-import io.mifos.core.command.annotation.CommandLogLevel;
-import io.mifos.core.command.annotation.EventEmitter;
 import io.mifos.template.api.v1.events.EventConstants;
 import io.mifos.template.service.internal.command.SampleCommand;
 import io.mifos.template.service.internal.repository.SampleJpaEntity;
 import io.mifos.template.service.internal.repository.SampleJpaEntityRepository;
+import org.apache.fineract.cn.command.annotation.Aggregate;
+import org.apache.fineract.cn.command.annotation.CommandHandler;
+import org.apache.fineract.cn.command.annotation.CommandLogLevel;
+import org.apache.fineract.cn.command.annotation.EventEmitter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
diff --git a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java
index 6b9df88..531c333 100644
--- a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java
+++ b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java
@@ -18,11 +18,10 @@
  */
 package io.mifos.template.service.internal.repository;
 
+import java.util.Optional;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
-import java.util.Optional;
-
 @Repository
 public interface SampleJpaEntityRepository extends JpaRepository<SampleJpaEntity, Long> {
   Optional<SampleJpaEntity> findByIdentifier(String identifier);
diff --git a/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java b/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java
index b6ced2b..86bfa6e 100644
--- a/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java
+++ b/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java
@@ -18,25 +18,29 @@
  */
 package io.mifos.template.service.rest;
 
-import io.mifos.anubis.annotation.AcceptedTokenType;
-import io.mifos.anubis.annotation.Permittable;
-import io.mifos.core.command.gateway.CommandGateway;
-import io.mifos.core.lang.ServiceException;
 import io.mifos.template.api.v1.PermittableGroupIds;
 import io.mifos.template.api.v1.domain.Sample;
 import io.mifos.template.service.ServiceConstants;
 import io.mifos.template.service.internal.command.InitializeServiceCommand;
 import io.mifos.template.service.internal.command.SampleCommand;
 import io.mifos.template.service.internal.service.SampleService;
+import java.util.List;
+import javax.validation.Valid;
+import org.apache.fineract.cn.anubis.annotation.AcceptedTokenType;
+import org.apache.fineract.cn.anubis.annotation.Permittable;
+import org.apache.fineract.cn.command.gateway.CommandGateway;
+import org.apache.fineract.cn.lang.ServiceException;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.util.List;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
 
 @SuppressWarnings("unused")
 @RestController


[fineract-cn-template] 19/38: Merge pull request #2 from Izakey/develop

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit bb33cd281400b4c3b72bd4fbb91901d3e6c734fd
Merge: 01062a3 dfa46d6
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Fri Mar 16 11:57:00 2018 +0100

    Merge pull request #2 from Izakey/develop
    
    Updated copyright information on template

 HEADER                                             | 25 ++++++++++++----------
 NOTICE.txt                                         |  5 +++++
 README.md                                          |  6 +++---
 .../mifos/template/api/v1/PermittableGroupIds.java | 25 ++++++++++++----------
 .../api/v1/client/IamATeapotException.java         | 25 ++++++++++++----------
 .../template/api/v1/client/TemplateManager.java    | 25 ++++++++++++----------
 .../io/mifos/template/api/v1/domain/Sample.java    | 25 ++++++++++++----------
 .../template/api/v1/events/EventConstants.java     | 25 ++++++++++++----------
 .../mifos/template/api/v1/domain/SampleTest.java   | 25 ++++++++++++----------
 .../io/mifos/template/SuiteTestEnvironment.java    | 25 ++++++++++++----------
 .../main/java/io/mifos/template/TestSample.java    | 25 ++++++++++++----------
 .../src/main/java/io/mifos/template/TestSuite.java | 25 ++++++++++++----------
 .../template/listener/MigrationEventListener.java  | 25 ++++++++++++----------
 .../template/listener/SampleEventListener.java     | 25 ++++++++++++----------
 .../mifos/template/service/ServiceConstants.java   | 25 ++++++++++++----------
 .../template/service/TemplateApplication.java      | 25 ++++++++++++----------
 .../template/service/TemplateConfiguration.java    | 25 ++++++++++++----------
 .../internal/command/InitializeServiceCommand.java | 25 ++++++++++++----------
 .../service/internal/command/SampleCommand.java    | 25 ++++++++++++----------
 .../command/handler/MigrationAggregate.java        | 25 ++++++++++++----------
 .../internal/command/handler/SampleAggregate.java  | 25 ++++++++++++----------
 .../service/internal/mapper/SampleMapper.java      | 25 ++++++++++++----------
 .../internal/repository/SampleJpaEntity.java       | 25 ++++++++++++----------
 .../repository/SampleJpaEntityRepository.java      | 25 ++++++++++++----------
 .../service/internal/service/SampleService.java    | 25 ++++++++++++----------
 .../service/rest/SampleRestController.java         | 25 ++++++++++++----------
 service/src/main/resources/application.yml         | 25 ++++++++++++----------
 service/src/main/resources/bootstrap.yml           | 25 ++++++++++++----------
 .../db/migrations/mariadb/V1__initial_setup.sql    | 25 ++++++++++++----------
 shared.gradle                                      |  2 --
 30 files changed, 386 insertions(+), 302 deletions(-)


[fineract-cn-template] 11/38: Changed initialize payload to the version number as agreed.

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit 486ae6b52dc351172e7a2c6be4b511914ebb3cb1
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Mon Jul 10 12:16:22 2017 +0200

    Changed initialize payload to the version number as agreed.
---
 .../src/main/java/io/mifos/template/SuiteTestEnvironment.java     | 4 +++-
 component-test/src/main/java/io/mifos/template/TestSample.java    | 2 +-
 .../service/internal/command/handler/MigrationAggregate.java      | 8 ++++++--
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java b/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java
index dd5bfd0..923cf79 100644
--- a/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java
+++ b/component-test/src/main/java/io/mifos/template/SuiteTestEnvironment.java
@@ -30,7 +30,9 @@ import org.junit.rules.TestRule;
  * initializing and de-initializing external resources.
  */
 public class SuiteTestEnvironment {
-  static final String APP_NAME = "template-v1";
+  static final String APP_VERSION = "1";
+  static final String APP_NAME = "template-v" + APP_VERSION;
+
   static final TestEnvironment testEnvironment = new TestEnvironment(APP_NAME);
   static final CassandraInitializer cassandraInitializer = new CassandraInitializer();
   static final MariaDBInitializer mariaDBInitializer = new MariaDBInitializer();
diff --git a/component-test/src/main/java/io/mifos/template/TestSample.java b/component-test/src/main/java/io/mifos/template/TestSample.java
index 924512b..92ae690 100644
--- a/component-test/src/main/java/io/mifos/template/TestSample.java
+++ b/component-test/src/main/java/io/mifos/template/TestSample.java
@@ -103,7 +103,7 @@ public class TestSample extends SuiteTestEnvironment {
 
   public boolean waitForInitialize() {
     try {
-      return this.eventRecorder.wait(EventConstants.INITIALIZE, EventConstants.INITIALIZE);
+      return this.eventRecorder.wait(EventConstants.INITIALIZE, APP_VERSION);
     } catch (final InterruptedException e) {
       throw new IllegalStateException(e);
     }
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
index 920465a..12ae643 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
@@ -19,6 +19,7 @@ import io.mifos.core.command.annotation.Aggregate;
 import io.mifos.core.command.annotation.CommandHandler;
 import io.mifos.core.command.annotation.CommandLogLevel;
 import io.mifos.core.command.annotation.EventEmitter;
+import io.mifos.core.lang.ApplicationName;
 import io.mifos.core.mariadb.domain.FlywayFactoryBean;
 import io.mifos.template.api.v1.events.EventConstants;
 import io.mifos.template.service.ServiceConstants;
@@ -39,15 +40,18 @@ public class MigrationAggregate {
   private final Logger logger;
   private final DataSource dataSource;
   private final FlywayFactoryBean flywayFactoryBean;
+  private final ApplicationName applicationName;
 
   @Autowired
   public MigrationAggregate(@Qualifier(ServiceConstants.LOGGER_NAME) final Logger logger,
                             final DataSource dataSource,
-                            final FlywayFactoryBean flywayFactoryBean) {
+                            final FlywayFactoryBean flywayFactoryBean,
+                            final ApplicationName applicationName) {
     super();
     this.logger = logger;
     this.dataSource = dataSource;
     this.flywayFactoryBean = flywayFactoryBean;
+    this.applicationName = applicationName;
   }
 
   @CommandHandler(logStart = CommandLogLevel.INFO, logFinish = CommandLogLevel.INFO)
@@ -56,6 +60,6 @@ public class MigrationAggregate {
   public String initialize(final InitializeServiceCommand initializeServiceCommand) {
     this.logger.debug("Start service migration.");
     this.flywayFactoryBean.create(this.dataSource).migrate();
-    return EventConstants.INITIALIZE;
+    return this.applicationName.getVersionString();
   }
 }


[fineract-cn-template] 30/38: FINCN-148 build with travis-ci.com and upload artifacts to Artifactory

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit ae271bbce46d30afdfb8a1537193d3df944d7b19
Author: Juhan Aasaru <Ju...@nortal.com>
AuthorDate: Thu Apr 25 14:23:38 2019 +0300

    FINCN-148 build with travis-ci.com and upload artifacts to Artifactory
---
 .travis.yml                 | 30 +++++++++++++++++++
 README.md                   |  7 ++++-
 api/build.gradle            |  3 +-
 build.gradle                |  8 +++++
 component-test/build.gradle |  4 ++-
 service/build.gradle        |  5 ++--
 shared.gradle               | 18 ++++++++++++
 travis.sh                   | 71 +++++++++++++++++++++++++++++++++++++++++++++
 8 files changed, 141 insertions(+), 5 deletions(-)

diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..2a53f56
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,30 @@
+#
+# 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.
+#
+language: java
+sudo: false
+jdk:
+- openjdk8
+install: true
+script: "./travis.sh"
+env:
+  global:
+    - BUILD_SNAPSHOTS_BRANCH=develop
+    - ARTIFACTORY_URL=https://mifos.jfrog.io/mifos
+    - ARTIFACTORY_USER=travis-ci
+    - secure: "WO+UUvMOFTGl93jGbGPLj60fJq8+Gqei9Jx4j9t2OAuz1fTgVwa11VL4Zf51lgbXmy3YoxIn+hoXOdEDTfmMyGW5Y0cG5YbqUve/WII1nJJo5dc7hPf3z4HmsxHYfTRedk4ZnhFH8FDrjPzls4K+VVJuF7X92aUfZbVSuL97gbNXjvhftdWbko6xn+ZLw4HZwQfGDpCRwbqEq7WH2e900lL49QnBM7majONr/nf6mVuyomZvDJaRTDPLh9VXlwJ6hQ1WsajYbH6dCd3CgbAceKb9R7nF0dxMpxPVu3piz9zL9NXXNWqwIifJeJX5U9HT6i7ze5JnzUbBCD9iV0jGj1HGoYTKqKd78Z1K8uOdZxykAspA2Doz2ABQHctPJLNlkkWqagyrMNJmRlJMGVluOpStOIyw7d5GMelmzl16nZfdO0uz+zL56oJtke+G+Ur+ZEiZiHOLweM1/rO/60QxG31qZWsRH [...]
diff --git a/README.md b/README.md
index 0c955ed..65b1413 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Apache Fineract CN Template
+# Apache Fineract CN Template [![Build Status](https://api.travis-ci.com/apache/fineract-cn-template.svg?branch=develop)](https://travis-ci.com/apache/fineract-cn-template)
 
 This project provides a template layout for all Apache Fineract CN services.
 
@@ -43,6 +43,11 @@ Apache Fineract CN is an application framework for digital financial services, a
 
 15. Happy coding! ; o) 
 
+16. For Travis-ci.com continuous integration server to start uploading artifacts to Artifactory
+ you need to put into .travis.yml a password that is encrypted with public key of https://travis-ci.com/apache/fineract-cn-newRepositoryNameInGithub
+See [project wiki](https://cwiki.apache.org/confluence/display/FINERACT/Fineract+CN+Project+Structure).
+
+
 ## Versioning
 The version numbers follow the [Semantic Versioning](http://semver.org/) scheme.
 
diff --git a/api/build.gradle b/api/build.gradle
index 5b9924a..a11f487 100644
--- a/api/build.gradle
+++ b/api/build.gradle
@@ -28,6 +28,7 @@ buildscript {
 plugins {
     id "com.github.hierynomus.license" version "0.13.1"
     id("org.nosphere.apache.rat") version "0.3.1"
+    id "com.jfrog.artifactory" version "4.9.5"
 }
 
 apply from: '../shared.gradle'
@@ -51,7 +52,7 @@ publishing {
             from components.java
             groupId project.group
             artifactId project.name
-            version project.version
+            version project.findProperty('externalVersion') ?: project.version
         }
     }
 }
diff --git a/build.gradle b/build.gradle
index 848847a..eeb68fb 100644
--- a/build.gradle
+++ b/build.gradle
@@ -39,6 +39,14 @@ task publishToMavenLocal {
     dependsOn publishComponentTestToMavenLocal
 }
 
+task artifactoryPublish {
+    group 'all'
+    dependsOn publishToMavenLocal
+    dependsOn gradle.includedBuild('api').task(':artifactoryPublish')
+    dependsOn gradle.includedBuild('service').task(':artifactoryPublish')
+    dependsOn gradle.includedBuild('component-test').task(':artifactoryPublish')
+}
+
 task prepareForTest {
     group 'all'
     dependsOn publishToMavenLocal
diff --git a/component-test/build.gradle b/component-test/build.gradle
index 8611ca8..2e2e1eb 100644
--- a/component-test/build.gradle
+++ b/component-test/build.gradle
@@ -32,6 +32,7 @@ buildscript {
 plugins {
     id "com.github.hierynomus.license" version "0.13.1"
     id("org.nosphere.apache.rat") version "0.3.1"
+    id "com.jfrog.artifactory" version "4.9.5"
 }
 apply from: '../shared.gradle'
 
@@ -49,8 +50,9 @@ dependencies {
 
 publishing {
     publications {
-        mavenJava(MavenPublication) {
+        componentTest(MavenPublication) {
             from components.java
+            version project.findProperty('externalVersion') ?: project.version
         }
     }
 }
diff --git a/service/build.gradle b/service/build.gradle
index 23acde2..2b90588 100644
--- a/service/build.gradle
+++ b/service/build.gradle
@@ -32,6 +32,7 @@ buildscript {
 plugins {
     id "com.github.hierynomus.license" version "0.13.1"
     id("org.nosphere.apache.rat") version "0.3.1"
+    id "com.jfrog.artifactory" version "4.9.5"
 }
 
 apply from: '../shared.gradle'
@@ -68,14 +69,14 @@ publishing {
             from components.java
             groupId project.group
             artifactId project.name
-            version project.version
+            version project.findProperty('externalVersion') ?: project.version
         }
         bootService(MavenPublication) {
             // "boot" jar
             artifact ("$buildDir/libs/$project.name-$version-boot.jar")
             groupId project.group
             artifactId ("$project.name-boot")
-            version project.version
+            version project.findProperty('externalVersion') ?: project.version
         }
     }
 }
diff --git a/shared.gradle b/shared.gradle
index 31ee3aa..372caf0 100644
--- a/shared.gradle
+++ b/shared.gradle
@@ -43,6 +43,7 @@ tasks.withType(JavaCompile) {
 repositories {
     jcenter()
     mavenLocal()
+    maven { url 'https://mifos.jfrog.io/mifos/libs-snapshot/' }
 }
 
 dependencyManagement {
@@ -73,6 +74,23 @@ jar {
     duplicatesStrategy = DuplicatesStrategy.EXCLUDE
 }
 
+artifactory {
+    contextUrl = System.getenv("ARTIFACTORY_URL")
+    publish {
+        repository {
+            repoKey = project.findProperty('artifactoryRepoKey')
+            username = System.getenv("ARTIFACTORY_USER")
+            password = System.getenv("ARTIFACTORY_PASSWORD")
+        }
+
+        defaults {
+            publications ('api', 'componentTest', 'service', 'bootService')
+        }
+    }
+}
+artifactoryPublish.dependsOn('clean','publishToMavenLocal')
+
+
 license {
     header rootProject.file('../HEADER')
     strictCheck true
diff --git a/travis.sh b/travis.sh
new file mode 100755
index 0000000..03a75ee
--- /dev/null
+++ b/travis.sh
@@ -0,0 +1,71 @@
+#!/usr/bin/env bash
+#
+# 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.
+#
+
+# Documentation: https://cwiki.apache.org/confluence/display/FINERACT/Fineract-CN+Artifactory
+
+#Exit immediately if a command exits with a non-zero status.
+set -e
+EXIT_STATUS=0
+
+# Builds and Publishes a SNAPSHOT
+function build_snapshot() {
+  echo -e "Building and publishing a snapshot out of branch [$TRAVIS_BRANCH]"
+  ./gradlew -PartifactoryRepoKey=libs-snapshot-local -DbuildInfo.build.number=${TRAVIS_COMMIT::7} artifactoryPublish --stacktrace || EXIT_STATUS=$?
+}
+
+# Builds a Pull Request
+function build_pullrequest() {
+  echo -e "Building pull request #$TRAVIS_PULL_REQUEST of branch [$TRAVIS_BRANCH]. Won't publish anything to Artifactory."
+  ./gradlew publishToMavenLocal rat || EXIT_STATUS=$?
+}
+
+# For other branches we need to add branch name as prefix
+function build_otherbranch() {
+  echo -e "Building a snapshot out of branch [$TRAVIS_BRANCH] and publishing it with prefix '${TRAVIS_BRANCH}-SNAPSHOT'"
+  ./gradlew -PartifactoryRepoKey=libs-snapshot-local -DbuildInfo.build.number=${TRAVIS_COMMIT::7} -PexternalVersion=${TRAVIS_BRANCH}-SNAPSHOT artifactoryPublish --stacktrace || EXIT_STATUS=$?
+}
+
+# Builds and Publishes a Tag
+function build_tag() {
+  echo -e "Building tag [$TRAVIS_TAG] and publishing it as a release"
+  ./gradlew -PartifactoryRepoKey=libs-release-local -PexternalVersion=$TRAVIS_TAG artifactoryPublish --stacktrace || EXIT_STATUS=$?
+
+}
+
+echo -e "TRAVIS_BRANCH=$TRAVIS_BRANCH"
+echo -e "TRAVIS_TAG=$TRAVIS_TAG"
+echo -e "TRAVIS_COMMIT=${TRAVIS_COMMIT::7}"
+echo -e "TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST"
+
+# Build Logic
+if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
+  build_pullrequest
+elif [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_BRANCH" != "$BUILD_SNAPSHOTS_BRANCH" ] && [ "$TRAVIS_TAG" == "" ]  ; then
+  build_otherbranch
+elif [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_BRANCH" == "$BUILD_SNAPSHOTS_BRANCH" ] && [ "$TRAVIS_TAG" == "" ] ; then
+  build_snapshot
+elif [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_TAG" != "" ]; then
+  build_tag
+else
+  echo -e "WARN: Unexpected env variable values => Branch [$TRAVIS_BRANCH], Tag [$TRAVIS_TAG], Pull Request [#$TRAVIS_PULL_REQUEST]"
+  ./gradlew clean build
+fi
+
+exit ${EXIT_STATUS}


[fineract-cn-template] 13/38: removing duplicate resources from build artifacts.

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit f35c15cb56174f79e8cb87425d9b960c7dd7f98c
Author: Myrle Krantz <my...@apache.org>
AuthorDate: Wed Jul 12 23:32:58 2017 +0200

    removing duplicate resources from build artifacts.
---
 shared.gradle | 1 +
 1 file changed, 1 insertion(+)

diff --git a/shared.gradle b/shared.gradle
index 4a79b9c..1bfef46 100644
--- a/shared.gradle
+++ b/shared.gradle
@@ -53,6 +53,7 @@ dependencies {
 
 jar {
     from sourceSets.main.allSource
+    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
 }
 
 license {


[fineract-cn-template] 02/38: Making headers consistent.

Posted by ik...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-template.git

commit ba7f6cf26b7917e20720b4678cefb4205987aa6c
Author: myrle-krantz <mk...@mifos.org>
AuthorDate: Tue Apr 4 16:50:52 2017 +0200

    Making headers consistent.
---
 api/src/main/java/io/mifos/template/api/v1/EventConstants.java          | 2 +-
 api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java     | 2 +-
 .../main/java/io/mifos/template/api/v1/client/IamATeapotException.java  | 2 +-
 api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java  | 2 +-
 api/src/main/java/io/mifos/template/api/v1/domain/Sample.java           | 2 +-
 component-test/src/main/java/io/mifos/template/TestSample.java          | 2 +-
 .../main/java/io/mifos/template/listener/MigrationEventListener.java    | 2 +-
 .../src/main/java/io/mifos/template/listener/SampleEventListener.java   | 2 +-
 service/src/main/java/io/mifos/template/service/ServiceConstants.java   | 2 +-
 .../src/main/java/io/mifos/template/service/TemplateApplication.java    | 2 +-
 .../src/main/java/io/mifos/template/service/TemplateConfiguration.java  | 2 +-
 .../template/service/internal/command/InitializeServiceCommand.java     | 2 +-
 .../java/io/mifos/template/service/internal/command/SampleCommand.java  | 2 +-
 .../template/service/internal/command/handler/MigrationAggregate.java   | 2 +-
 .../template/service/internal/command/handler/SampleAggregate.java      | 2 +-
 .../java/io/mifos/template/service/internal/mapper/SampleMapper.java    | 2 +-
 .../io/mifos/template/service/internal/repository/SampleJpaEntity.java  | 2 +-
 .../template/service/internal/repository/SampleJpaEntityRepository.java | 2 +-
 .../java/io/mifos/template/service/internal/service/SampleService.java  | 2 +-
 .../main/java/io/mifos/template/service/rest/SampleRestController.java  | 2 +-
 service/src/main/resources/application.yml                              | 2 +-
 service/src/main/resources/bootstrap.yml                                | 2 +-
 service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql  | 2 +-
 23 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/api/src/main/java/io/mifos/template/api/v1/EventConstants.java b/api/src/main/java/io/mifos/template/api/v1/EventConstants.java
index ec508b0..69b1343 100644
--- a/api/src/main/java/io/mifos/template/api/v1/EventConstants.java
+++ b/api/src/main/java/io/mifos/template/api/v1/EventConstants.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java b/api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java
index 2a3bdb1..239e2ac 100644
--- a/api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java
+++ b/api/src/main/java/io/mifos/template/api/v1/PermittableGroupIds.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java b/api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java
index c1c9e74..ec4383c 100644
--- a/api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java
+++ b/api/src/main/java/io/mifos/template/api/v1/client/IamATeapotException.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java b/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java
index 6b0cb4c..9914e36 100644
--- a/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java
+++ b/api/src/main/java/io/mifos/template/api/v1/client/TemplateManager.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java b/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java
index d3dbd54..6f25719 100644
--- a/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java
+++ b/api/src/main/java/io/mifos/template/api/v1/domain/Sample.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/component-test/src/main/java/io/mifos/template/TestSample.java b/component-test/src/main/java/io/mifos/template/TestSample.java
index ea40b09..b829355 100644
--- a/component-test/src/main/java/io/mifos/template/TestSample.java
+++ b/component-test/src/main/java/io/mifos/template/TestSample.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java b/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
index 3f67928..82408bb 100644
--- a/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
+++ b/component-test/src/main/java/io/mifos/template/listener/MigrationEventListener.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java b/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
index 6f547a4..2e3c2cb 100644
--- a/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
+++ b/component-test/src/main/java/io/mifos/template/listener/SampleEventListener.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/service/src/main/java/io/mifos/template/service/ServiceConstants.java b/service/src/main/java/io/mifos/template/service/ServiceConstants.java
index e9ee910..e9e0623 100644
--- a/service/src/main/java/io/mifos/template/service/ServiceConstants.java
+++ b/service/src/main/java/io/mifos/template/service/ServiceConstants.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/service/src/main/java/io/mifos/template/service/TemplateApplication.java b/service/src/main/java/io/mifos/template/service/TemplateApplication.java
index bd2464b..7ca88f0 100644
--- a/service/src/main/java/io/mifos/template/service/TemplateApplication.java
+++ b/service/src/main/java/io/mifos/template/service/TemplateApplication.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java b/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
index 2b6ce06..d0fd484 100644
--- a/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
+++ b/service/src/main/java/io/mifos/template/service/TemplateConfiguration.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java b/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java
index 5e8dc63..db85b9d 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/InitializeServiceCommand.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java b/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java
index d700762..8ee6d92 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/SampleCommand.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
index 6108d06..e4e3de1 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/handler/MigrationAggregate.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java b/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
index 7109b49..4de453a 100644
--- a/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
+++ b/service/src/main/java/io/mifos/template/service/internal/command/handler/SampleAggregate.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java b/service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java
index de36734..983b5d5 100644
--- a/service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java
+++ b/service/src/main/java/io/mifos/template/service/internal/mapper/SampleMapper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java
index c8c741e..9cbcd73 100644
--- a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java
+++ b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntity.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java
index 3f5539e..87ea8a7 100644
--- a/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java
+++ b/service/src/main/java/io/mifos/template/service/internal/repository/SampleJpaEntityRepository.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/service/src/main/java/io/mifos/template/service/internal/service/SampleService.java b/service/src/main/java/io/mifos/template/service/internal/service/SampleService.java
index 5b4be95..caba840 100644
--- a/service/src/main/java/io/mifos/template/service/internal/service/SampleService.java
+++ b/service/src/main/java/io/mifos/template/service/internal/service/SampleService.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java b/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java
index 9cce47d..9919252 100644
--- a/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java
+++ b/service/src/main/java/io/mifos/template/service/rest/SampleRestController.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 The Mifos Initiative
+ * Copyright 2017 The Mifos Initiative.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/service/src/main/resources/application.yml b/service/src/main/resources/application.yml
index 1859323..8b395ca 100644
--- a/service/src/main/resources/application.yml
+++ b/service/src/main/resources/application.yml
@@ -1,5 +1,5 @@
 #
-# Copyright 2017 The Mifos Initiative
+# Copyright 2017 The Mifos Initiative.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
diff --git a/service/src/main/resources/bootstrap.yml b/service/src/main/resources/bootstrap.yml
index b814525..6b9e3e8 100644
--- a/service/src/main/resources/bootstrap.yml
+++ b/service/src/main/resources/bootstrap.yml
@@ -1,5 +1,5 @@
 #
-# Copyright 2017 The Mifos Initiative
+# Copyright 2017 The Mifos Initiative.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
diff --git a/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql b/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
index 3719a09..fb1b54e 100644
--- a/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
+++ b/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
@@ -1,5 +1,5 @@
 --
--- Copyright 2017 The Mifos Initiative
+-- Copyright 2017 The Mifos Initiative.
 --
 -- Licensed under the Apache License, Version 2.0 (the "License");
 -- you may not use this file except in compliance with the License.