diff --git a/allure-java-commons/build.gradle.kts b/allure-java-commons/build.gradle.kts index 3d2000b20..5c7d7d2bb 100644 --- a/allure-java-commons/build.gradle.kts +++ b/allure-java-commons/build.gradle.kts @@ -8,8 +8,6 @@ dependencies { api(project(":allure-model")) compileOnly("org.aspectj:aspectjrt") implementation("com.fasterxml.jackson.core:jackson-databind") - implementation("org.apache.tika:tika-core") - implementation("org.jooq:joor-java-8") testImplementation("io.github.benas:random-beans") testImplementation("io.github.glytching:junit-extensions") testImplementation("org.apache.commons:commons-lang3") diff --git a/allure-java-commons/src/main/java/io/qameta/allure/util/NamingUtils.java b/allure-java-commons/src/main/java/io/qameta/allure/util/NamingUtils.java index 716d6595f..f52209b51 100644 --- a/allure-java-commons/src/main/java/io/qameta/allure/util/NamingUtils.java +++ b/allure-java-commons/src/main/java/io/qameta/allure/util/NamingUtils.java @@ -18,6 +18,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.lang.reflect.Field; import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -29,8 +30,6 @@ import java.util.stream.Stream; import java.util.stream.StreamSupport; -import static org.joor.Reflect.on; - /** * @author charlie (Dmitry Baev). */ @@ -88,9 +87,48 @@ private static String extractProperties(final Object object, final String[] part .map(child -> extractProperties(child, parts, index)) .collect(JOINER); } - final Object child = on(object).get(parts[index]); + final Object child = extractChild(object, parts[index]); return extractProperties(child, parts, index + 1); } return ObjectUtils.toString(object); } + + private static Object extractChild(final Object object, final String part) { + final Class type = object == null ? Object.class : object.getClass(); + try { + return extractField(object, part, type); + } catch (ReflectiveOperationException e) { + throw new IllegalStateException("Unable to extract " + part + " value from " + type.getName(), e); + } + } + + @SuppressWarnings("PMD.EmptyCatchBlock") + private static Object extractField(final Object object, final String part, final Class type) + throws ReflectiveOperationException { + try { + final Field field = type.getField(part); + return fieldValue(object, field); + } catch (NoSuchFieldException e) { + Class t = type; + while (t != null) { + try { + final Field declaredField = t.getDeclaredField(part); + return fieldValue(object, declaredField); + } catch (NoSuchFieldException ignore) { + // Ignore + } + t = t.getSuperclass(); + } + throw e; + } + } + + private static Object fieldValue(final Object object, final Field field) throws IllegalAccessException { + try { + return field.get(object); + } catch (IllegalAccessException e) { + field.setAccessible(true); + return field.get(object); + } + } } diff --git a/allure-java-commons/src/main/java/io/qameta/allure/util/ResultsUtils.java b/allure-java-commons/src/main/java/io/qameta/allure/util/ResultsUtils.java index b3a4beb88..4f6e01a45 100644 --- a/allure-java-commons/src/main/java/io/qameta/allure/util/ResultsUtils.java +++ b/allure-java-commons/src/main/java/io/qameta/allure/util/ResultsUtils.java @@ -27,10 +27,10 @@ import io.qameta.allure.model.Parameter; import io.qameta.allure.model.Status; import io.qameta.allure.model.StatusDetails; -import org.apache.tika.io.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; @@ -60,6 +60,7 @@ */ @SuppressWarnings({ "ClassFanOutComplexity", + "ClassDataAbstractionCoupling", "PMD.ExcessiveImports", "PMD.TooManyMethods", "PMD.GodClass", @@ -394,7 +395,7 @@ private static Optional readResource(final ClassLoader classLoader, fina if (Objects.isNull(is)) { return Optional.empty(); } - final byte[] bytes = IOUtils.toByteArray(is); + final byte[] bytes = toBytes(is); return Optional.of(new String(bytes, StandardCharsets.UTF_8)); } catch (IOException e) { LOGGER.warn("Unable to process description resource file", e); @@ -402,6 +403,19 @@ private static Optional readResource(final ClassLoader classLoader, fina return Optional.empty(); } + private static byte[] toBytes(final InputStream is) throws IOException { + final ByteArrayOutputStream output = new ByteArrayOutputStream(); + final byte[] buffer = new byte[4096]; + int n; + do { + n = is.read(buffer); + if (n > 0) { + output.write(buffer, 0, n); + } + } while (-1 != n); + return output.toByteArray(); + } + private static boolean separateLines() { return parseBoolean(loadAllureProperties().getProperty(ALLURE_SEPARATE_LINES_SYSPROP)); } diff --git a/build.gradle.kts b/build.gradle.kts index 27ce1490e..a6a5ffabf 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -88,14 +88,12 @@ configure(subprojects) { dependency("io.github.glytching:junit-extensions:2.4.0") dependency("org.apache.commons:commons-lang3:3.12.0") dependency("org.apache.httpcomponents:httpclient:4.5.13") - dependency("org.apache.tika:tika-core:1.26") dependency("org.aspectj:aspectjrt:1.9.6") dependency("org.aspectj:aspectjweaver:1.9.6") dependency("org.assertj:assertj-core:3.19.0") dependency("org.codehaus.groovy:groovy-all:2.5.13") dependency("org.freemarker:freemarker:2.3.31") dependency("org.jboss.resteasy:resteasy-client:4.6.0.Final") - dependency("org.jooq:joor-java-8:0.9.14") dependency("org.mock-server:mockserver-netty:5.11.2") dependency("org.mockito:mockito-core:3.10.0") dependencySet("org.slf4j:1.7.30") {