test_class.file: conjure-core/src/test/java/com/palantir/conjure/defs/validator/PackageValidatorTest.java
test_class.identifier: PackageValidatorTest
test_case.body: @Test
      public void testInvalidPackageNames() {
          for (String illegal : new String[] {".", "foo-bar", "foo_bar", "1a", "a.foo"}) {
              assertThatThrownBy(() -> PackageValidator.validate(illegal))
                      .isInstanceOf(IllegalArgumentException.class)
                      .hasMessage("Conjure package names must match pattern ^([a-z][a-z0-9]+(\\.[a-z][a-z0-9]*)*)?$: "
                              + illegal);
          }
      }
test_case.class_method_signature: PackageValidatorTest.testInvalidPackageNames()
test_case.full_signature: @Test public void testInvalidPackageNames()
test_case.identifier: testInvalidPackageNames
test_case.invocations: hasMessage isInstanceOf assertThatThrownBy validate
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testInvalidPackageNames()
focal_class.declarator: PRIMITIVE = ""
focal_class.modifier: public static final
focal_class.original_string: public static final String PRIMITIVE = "";
focal_class.type: String
focal_class.var_name: PRIMITIVE
focal_class.declarator: VALID_PACKAGE = Pattern.compile("^([a-z][a-z0-9]+(\\.[a-z][a-z0-9]*)*)?$")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern VALID_PACKAGE = Pattern.compile("^([a-z][a-z0-9]+(\\.[a-z][a-z0-9]*)*)?$");
focal_class.type: Pattern
focal_class.var_name: VALID_PACKAGE
focal_class.file: conjure-core/src/main/java/com/palantir/conjure/defs/validator/PackageValidator.java
focal_class.identifier: PackageValidator
focal_class.class_method_signature: PackageValidator.PackageValidator()
focal_class.full_signature: private  PackageValidator()
focal_class.identifier: PackageValidator
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.signature:  PackageValidator()
focal_class.class_method_signature: PackageValidator.components(String name)
focal_class.full_signature: public static List<String> components(String name)
focal_class.identifier: components
focal_class.modifiers: public static
focal_class.parameters: (String name)
focal_class.return: List<String>
focal_class.signature: List<String> components(String name)
focal_class.class_method_signature: PackageValidator.validate(String name)
focal_class.full_signature: public static void validate(String name)
focal_class.identifier: validate
focal_class.modifiers: public static
focal_class.parameters: (String name)
focal_class.return: void
focal_class.signature: void validate(String name)
focal_class.class_method_signature: PackageValidator.conjurePackage(Iterable<String> components)
focal_class.full_signature: public static String conjurePackage(Iterable<String> components)
focal_class.identifier: conjurePackage
focal_class.modifiers: public static
focal_class.parameters: (Iterable<String> components)
focal_class.return: String
focal_class.signature: String conjurePackage(Iterable<String> components)
focal_method.body: public static void validate(String name) {
          // TODO(rfink): NPE when the pattern is static !?!?
  
          Preconditions.checkArgument(
                  VALID_PACKAGE.matcher(name).matches(),
                  "Conjure package names must match pattern %s: %s",
                  VALID_PACKAGE.pattern(),
                  name);
      }
focal_method.class_method_signature: PackageValidator.validate(String name)
focal_method.full_signature: public static void validate(String name)
focal_method.identifier: validate
focal_method.invocations: checkArgument matches matcher pattern
focal_method.modifiers: public static
focal_method.parameters: (String name)
focal_method.return: void
focal_method.signature: void validate(String name)