diff --git a/archunit/src/main/java/com/tngtech/archunit/core/domain/JavaClass.java b/archunit/src/main/java/com/tngtech/archunit/core/domain/JavaClass.java index e11cfac8af..adeec64a2e 100644 --- a/archunit/src/main/java/com/tngtech/archunit/core/domain/JavaClass.java +++ b/archunit/src/main/java/com/tngtech/archunit/core/domain/JavaClass.java @@ -476,16 +476,36 @@ private Optional tryFindMatchingCodeUnit(Set code return Optional.absent(); } + @PublicAPI(usage = ACCESS) + public JavaMethod getMethod(String name) { + return findMatchingCodeUnit(methods, name, Collections.emptyList()); + } + @PublicAPI(usage = ACCESS) public JavaMethod getMethod(String name, Class... parameters) { return findMatchingCodeUnit(methods, name, namesOf(parameters)); } + @PublicAPI(usage = ACCESS) + public JavaMethod getMethod(String name, String... parameters) { + return findMatchingCodeUnit(methods, name, ImmutableList.copyOf(parameters)); + } + + @PublicAPI(usage = ACCESS) + public Optional tryGetMethod(String name) { + return tryFindMatchingCodeUnit(methods, name, Collections.emptyList()); + } + @PublicAPI(usage = ACCESS) public Optional tryGetMethod(String name, Class... parameters) { return tryFindMatchingCodeUnit(methods, name, namesOf(parameters)); } + @PublicAPI(usage = ACCESS) + public Optional tryGetMethod(String name, String... parameters) { + return tryFindMatchingCodeUnit(methods, name, ImmutableList.copyOf(parameters)); + } + @PublicAPI(usage = ACCESS) public Set getMethods() { return methods; @@ -497,11 +517,21 @@ public Set getAllMethods() { return allMethods.get(); } + @PublicAPI(usage = ACCESS) + public JavaConstructor getConstructor() { + return findMatchingCodeUnit(constructors, CONSTRUCTOR_NAME, Collections.emptyList()); + } + @PublicAPI(usage = ACCESS) public JavaConstructor getConstructor(Class... parameters) { return findMatchingCodeUnit(constructors, CONSTRUCTOR_NAME, namesOf(parameters)); } + @PublicAPI(usage = ACCESS) + public JavaConstructor getConstructor(String... parameters) { + return findMatchingCodeUnit(constructors, CONSTRUCTOR_NAME, ImmutableList.copyOf(parameters)); + } + @PublicAPI(usage = ACCESS) public Set getConstructors() { return constructors; diff --git a/archunit/src/test/java/com/tngtech/archunit/core/importer/ClassFileImporterTest.java b/archunit/src/test/java/com/tngtech/archunit/core/importer/ClassFileImporterTest.java index 30278420f7..a9b50d861a 100644 --- a/archunit/src/test/java/com/tngtech/archunit/core/importer/ClassFileImporterTest.java +++ b/archunit/src/test/java/com/tngtech/archunit/core/importer/ClassFileImporterTest.java @@ -649,6 +649,15 @@ public void imports_complex_method_with_correct_parameters() throws Exception { assertThat(clazz.getMethod("complex", String.class, long.class, long.class, Serializable.class, Serializable.class)) .isEquivalentTo(ClassWithComplexMethod.class.getDeclaredMethod( "complex", String.class, long.class, long.class, Serializable.class, Serializable.class)); + assertThat(clazz.tryGetMethod("complex", String.class, long.class, long.class, Serializable.class, Serializable.class).get()) + .isEquivalentTo(ClassWithComplexMethod.class.getDeclaredMethod( + "complex", String.class, long.class, long.class, Serializable.class, Serializable.class)); + assertThat(clazz.getMethod("complex", "java.lang.String", "long", "long", "java.io.Serializable", "java.io.Serializable")) + .isEquivalentTo(ClassWithComplexMethod.class.getDeclaredMethod( + "complex", String.class, long.class, long.class, Serializable.class, Serializable.class)); + assertThat(clazz.tryGetMethod("complex", "java.lang.String", "long", "long", "java.io.Serializable", "java.io.Serializable").get()) + .isEquivalentTo(ClassWithComplexMethod.class.getDeclaredMethod( + "complex", String.class, long.class, long.class, Serializable.class, Serializable.class)); } @Test @@ -874,8 +883,12 @@ public void imports_simple_constructors_with_correct_parameters() throws Excepti assertThat(clazz.getConstructor()).isEquivalentTo(ClassWithSimpleConstructors.class.getDeclaredConstructor()); assertThat(clazz.getConstructor(Object.class)) .isEquivalentTo(ClassWithSimpleConstructors.class.getDeclaredConstructor(Object.class)); + assertThat(clazz.getConstructor("java.lang.Object")) + .isEquivalentTo(ClassWithSimpleConstructors.class.getDeclaredConstructor(Object.class)); assertThat(clazz.getConstructor(int.class, int.class)) .isEquivalentTo(ClassWithSimpleConstructors.class.getDeclaredConstructor(int.class, int.class)); + assertThat(clazz.getConstructor("int", "int")) + .isEquivalentTo(ClassWithSimpleConstructors.class.getDeclaredConstructor(int.class, int.class)); } @Test