Merge branch 'develop' of https://github.com/mifosio/lang into develop
diff --git a/src/main/java/io/mifos/core/lang/ApplicationName.java b/src/main/java/io/mifos/core/lang/ApplicationName.java
index d984eb6..c3da900 100644
--- a/src/main/java/io/mifos/core/lang/ApplicationName.java
+++ b/src/main/java/io/mifos/core/lang/ApplicationName.java
@@ -41,6 +41,10 @@
   }
 
   static ApplicationName parse(final String springApplicationNameString) {
+    if (springApplicationNameString.length() > 64) {
+      throw new IllegalArgumentException("Spring application name strings for mifos io applications should be 64 characters or less.");
+    }
+
     final Pattern applicationNamePattern = Pattern.compile(
         "^(/??(?<name>\\p{Lower}[\\p{Lower}_]+)(?:-v(?<version>\\d[\\d\\._]*))?)$");
 
diff --git a/src/test/java/io/mifos/core/lang/validation/ValidApplicationNameTest.java b/src/test/java/io/mifos/core/lang/validation/ValidApplicationNameTest.java
index 31613d2..50481d7 100644
--- a/src/test/java/io/mifos/core/lang/validation/ValidApplicationNameTest.java
+++ b/src/test/java/io/mifos/core/lang/validation/ValidApplicationNameTest.java
@@ -44,6 +44,19 @@
   }
 
   @Test
+  public void tooLongAppplicationName()
+  {
+    final StringBuilder stringBuilder = new StringBuilder();
+    for (int i = 0; i < 65 -3; i++) {
+      stringBuilder.append("b");
+    }
+    stringBuilder.append("-v1");
+
+    final AnnotatedClass annotatedInstance = new AnnotatedClass(stringBuilder.toString());
+    Assert.assertFalse(isValid(annotatedInstance));
+  }
+
+  @Test
   public void nullAppplicationName()
   {
     final AnnotatedClass annotatedInstance = new AnnotatedClass(null);