diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 1c15cb04..b058c58f 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -12,14 +12,14 @@ on: jobs: build-and-test: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Checkout Repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - - name: Set up JDK 21 - uses: actions/setup-java@v3 + - name: Set up JDK 22 + uses: actions/setup-java@v4 with: java-version: '21' distribution: 'adopt' @@ -30,17 +30,8 @@ jobs: sudo wget -q -O - "https://apache.osuosl.org/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz" | sudo tar xzf - -C /usr/share sudo ln -s /usr/share/apache-maven-3.9.8/bin/mvn /usr/bin/mvn - - name: Build and Test with Maven - run: | - mvn -B package --file pom.xml -DskipTests - mvn test + - name: Build + run: mvn clean package -DskipTests - - name: Run Tests on Student Submission - run: | - git config --global url.https://github.com/.insteadOf git://github.com/ - git clone https://github.com/sarpsahinalp/test-student-submission.git - mkdir test-student-submission/libs - cp target/*.jar test-student-submission/libs - cd test-student-submission - ./gradlew build - ./gradlew test + - name: Test + run: mvn test diff --git a/pom.xml b/pom.xml index d8995ef0..626eb6aa 100644 --- a/pom.xml +++ b/pom.xml @@ -443,10 +443,10 @@ org.apache.maven.plugins maven-surefire-plugin - 3.3.0 + 3.5.1 1 - -javaagent:${project.build.directory}/ares-2.0.0-SNAPSHOT-agent.jar -Xbootclasspath/a:${user.home}/.m2/repository/org/aspectj/aspectjrt/${aspectj.version}/aspectjrt-${aspectj.version}.jar + -javaagent:${project.build.directory}${file.separator}ares-2.0.0-SNAPSHOT-agent.jar -Xbootclasspath/a:${user.home}${file.separator}.m2${file.separator}repository${file.separator}org${file.separator}aspectj${file.separator}aspectjrt${file.separator}${aspectj.version}${file.separator}aspectjrt-${aspectj.version}.jar diff --git a/src/main/java/de/tum/cit/ase/ares/api/aop/java/JavaAOPMode.java b/src/main/java/de/tum/cit/ase/ares/api/aop/java/JavaAOPMode.java index ea46c8ff..9169b96a 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/aop/java/JavaAOPMode.java +++ b/src/main/java/de/tum/cit/ase/ares/api/aop/java/JavaAOPMode.java @@ -9,6 +9,8 @@ import java.util.List; import java.util.stream.Stream; +import static de.tum.cit.ase.ares.api.aop.java.instrumentation.advice.JavaInstrumentationAdviceToolbox.localize; + /** * Enum representing the different modes of Aspect-Oriented Programming (AOP) * available for Java in Ares. @@ -212,16 +214,16 @@ public void reset() { method.setAccessible(false); } catch (ClassNotFoundException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): The class for the specific security test case settings could not be found. Ensure the class name is correct and the class is available at runtime.", e); + throw new SecurityException(localize("security.creation.reset.class.not.found.exception"), e); } catch (NoSuchMethodException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): The 'reset' method could not be found in the specified class. Ensure the method exists and is correctly named.", e); + throw new SecurityException(localize("security.creation.reset.no.method.exception"), e); } catch (IllegalAccessException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Access to the 'reset' method was denied. Ensure the method is public and accessible.", e); + throw new SecurityException(localize("security.creation.reset.illegal.access.exception"), e); } catch (InvocationTargetException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): An error occurred while invoking the 'reset' method. This could be due to an underlying issue within the method implementation.", e); + throw new SecurityException(localize("security.creation.reset.invocation.target.exception"), e); } } // diff --git a/src/main/java/de/tum/cit/ase/ares/api/aop/java/JavaSecurityTestCase.java b/src/main/java/de/tum/cit/ase/ares/api/aop/java/JavaSecurityTestCase.java index 5eb54456..044c874e 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/aop/java/JavaSecurityTestCase.java +++ b/src/main/java/de/tum/cit/ase/ares/api/aop/java/JavaSecurityTestCase.java @@ -18,6 +18,8 @@ import java.util.Map; import java.util.function.Predicate; import java.util.stream.Collectors; + +import static de.tum.cit.ase.ares.api.aop.java.instrumentation.advice.JavaInstrumentationAdviceToolbox.localize; // /** @@ -80,21 +82,13 @@ private static String generateAdviceSettingValue(@Nonnull String dataType, @Nonn return switch (dataType) { case "String" -> { if (!(value instanceof String)) { - throw new SecurityException(String.format( - "Ares Security Error (Reason: Ares-Code; Stage: Creation): " - + "Invalid value type for String advice setting: " - + "%s but should be String.", - value.getClass())); + throw new SecurityException(localize("security.advice.settings.data.type.mismatch.string", value.getClass())); } yield String.format("private static String %s = \"%s\";%n", adviceSetting, value); } case "String[]" -> { if (!(value instanceof List)) { - throw new SecurityException(String.format( - "Ares Security Error (Reason: Ares-Code; Stage: Creation): " - + "Invalid value type for String[] advice setting: " - + "%s but should be List.", - value.getClass())); + throw new SecurityException(localize("security.advice.settings.data.type.mismatch.string[]", value.getClass())); } String stringArrayValue = ((List) value).stream() .map(Object::toString) @@ -104,11 +98,7 @@ private static String generateAdviceSettingValue(@Nonnull String dataType, @Nonn } case "String[][]" -> { if (!(value instanceof List)) { - throw new SecurityException(String.format( - "Ares Security Error (Reason: Ares-Code; Stage: Creation): " - + "Invalid value type for String[][] advice setting: " - + "%s but should be List>.", - value.getClass())); + throw new SecurityException(localize("security.advice.settings.data.type.mismatch.string[][]", value.getClass())); } String stringArrayArrayValue = ((List) value).stream() .filter(e -> e instanceof List) @@ -123,38 +113,17 @@ private static String generateAdviceSettingValue(@Nonnull String dataType, @Nonn } case "int[]" -> { if (!(value instanceof List)) { - throw new SecurityException(String.format( - "Ares Security Error (Reason: Ares-Code; Stage: Creation): " - + "Invalid value type for int[] advice setting: " - + "%s but should be List.", - value.getClass())); + throw new SecurityException(localize("security.advice.settings.data.type.mismatch.int[]", value.getClass())); } String intArrayValue = ((List) value).stream() .map(Object::toString) .collect(Collectors.joining(", ")); yield String.format("private static int[] %s = new int[] {%s};%n", adviceSetting, intArrayValue); } - default -> throw new SecurityException( - "Ares Security Error (Reason: Ares-Code; Stage: Creation): " - + "Unknown data type while creating the value " - + value - + " for the advice settings " - + dataType - + " " - + adviceSetting - ); + default -> throw new SecurityException(localize("security.advice.settings.data.type.unknown", value, dataType, adviceSetting)); }; } catch (IllegalFormatException e) { - throw new SecurityException( - "Ares Security Error (Reason: Ares-Code; Stage: Creation): " - + "Format error while creating the value " - + value - + " for the advice settings " - + dataType - + " " - + adviceSetting, - e - ); + throw new SecurityException(localize("security.advice.invalid.format", value, dataType, adviceSetting)); } } @@ -179,53 +148,31 @@ public static void setJavaAdviceSettingValue(@Nonnull String adviceSetting, @Nul field.setAccessible(false); } catch (LinkageError e) { throw new SecurityException( - "Ares Security Error (Reason: Ares-Code; Stage: Creation):" - + "Linkage error while accessing field '" - + adviceSetting - + "' in AdviceSettings", + localize("security.advice.linkage.exception", adviceSetting), e); } catch (ClassNotFoundException e) { throw new SecurityException( - "Ares Security Error (Reason: Ares-Code; Stage: Creation):" - + "Could not find 'JavaSecurityTestCaseSettings' class to access field '" - + adviceSetting - + "'", + localize("security.advice.class.not.found.exception", adviceSetting), e); } catch (NoSuchFieldException e) { throw new SecurityException( - "Ares Security Error (Reason: Ares-Code; Stage: Creation):" - + "Field '" - + adviceSetting - + "' not found in AdviceSettings", + localize("security.advice.no.such.field.exception", adviceSetting), e); } catch (NullPointerException e) { throw new SecurityException( - "Ares Security Error (Reason: Ares-Code; Stage: Creation):" - + "Null pointer exception while accessing field '" - + adviceSetting - + "' in AdviceSettings", + localize("security.advice.null.pointer.exception", adviceSetting), e); } catch (IllegalAccessException e) { throw new SecurityException( - "Ares Security Error (Reason: Ares-Code; Stage: Creation):" - + "Field '" - + adviceSetting - + "' is not accessible in AdviceSettings", + localize("security.advice.illegal.access.exception", adviceSetting), e); } catch (IllegalArgumentException e) { throw new SecurityException( - "Ares Security Error (Reason: Ares-Code; Stage: Creation):" - + "Illegal argument while setting field '" - + adviceSetting - + "' in AdviceSettings with value " - + value, + localize("security.advice.illegal.argument.exception", adviceSetting, value), e); } catch (InaccessibleObjectException e) { throw new SecurityException( - "Ares Security Error (Reason: Ares-Code; Stage: Creation):" - + "Field '" - + adviceSetting - + "' is inaccessible in AdviceSettings", + localize("security.advice.inaccessible.object.exception", adviceSetting), e); } } @@ -265,7 +212,7 @@ private List getPermittedFilePaths(@Nonnull String filePermission) { case "execute" -> FilePermission::executeAllFiles; case "delete" -> FilePermission::deleteAllFiles; default -> - throw new IllegalArgumentException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Invalid file permission: " + filePermission); + throw new IllegalArgumentException(localize("security.advice.settings.invalid.file.permission", filePermission)); }; return resourceAccesses.regardingFileSystemInteractions() .stream() @@ -328,7 +275,7 @@ private List getPermittedNetworkHosts(@Nonnull String networkPermission) case "send" -> NetworkPermission::sendData; case "receive" -> NetworkPermission::receiveData; default -> - throw new IllegalArgumentException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Invalid network permission: " + networkPermission); + throw new IllegalArgumentException(localize("security.advice.settings.invalid.network.permission", networkPermission)); }; return resourceAccesses.regardingNetworkConnections() .stream() @@ -350,7 +297,7 @@ private List getPermittedNetworkPorts(@Nonnull String networkPermission case "send" -> NetworkPermission::sendData; case "receive" -> NetworkPermission::receiveData; default -> - throw new IllegalArgumentException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Invalid network permission: " + networkPermission); + throw new IllegalArgumentException(localize("security.advice.settings.invalid.network.permission", networkPermission)); }; return resourceAccesses.regardingNetworkConnections() .stream() diff --git a/src/main/java/de/tum/cit/ase/ares/api/aop/java/aspectj/adviceandpointcut/JavaAspectJFileSystemAdviceDefinitions.aj b/src/main/java/de/tum/cit/ase/ares/api/aop/java/aspectj/adviceandpointcut/JavaAspectJFileSystemAdviceDefinitions.aj index 360fdde2..81cd19d4 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/aop/java/aspectj/adviceandpointcut/JavaAspectJFileSystemAdviceDefinitions.aj +++ b/src/main/java/de/tum/cit/ase/ares/api/aop/java/aspectj/adviceandpointcut/JavaAspectJFileSystemAdviceDefinitions.aj @@ -8,6 +8,8 @@ import java.lang.reflect.InaccessibleObjectException; import java.nio.file.InvalidPathException; import java.nio.file.Path; +import static de.tum.cit.ase.ares.api.localization.Messages.localized; + public aspect JavaAspectJFileSystemAdviceDefinitions { // @@ -30,17 +32,17 @@ public aspect JavaAspectJFileSystemAdviceDefinitions { field.setAccessible(false); return value; } catch (LinkageError e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Linkage error while accessing field '" + fieldName + "' in AdviceSettings", e); + throw new SecurityException(localized("security.advice.linkage.exception", fieldName), e); } catch (ClassNotFoundException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Could not find 'JavaSecurityTestCaseSettings' class to access field '" + fieldName + "'", e); + throw new SecurityException(localized("security.advice.class.not.found.exception", fieldName), e); } catch (NoSuchFieldException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '" + fieldName + "' not found in AdviceSettings", e); + throw new SecurityException(localized("security.advice.no.such.field.exception", fieldName), e); } catch (NullPointerException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Null pointer exception while accessing field '" + fieldName + "' in AdviceSettings", e); + throw new SecurityException(localized("security.advice.null.pointer.exception", fieldName), e); } catch (IllegalAccessException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '" + fieldName + "' is not accessible in AdviceSettings", e); + throw new SecurityException(localized("security.advice.illegal.access.exception", fieldName), e); } catch (InaccessibleObjectException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '" + fieldName + "' is inaccessible in AdviceSettings", e); + throw new SecurityException(localized("security.advice.inaccessible.object.exception", fieldName), e); } } // @@ -109,30 +111,30 @@ public aspect JavaAspectJFileSystemAdviceDefinitions { */ private static Path variableToPath(Object variableValue) { if (variableValue == null) { - throw new InvalidPathException("null", "Cannot transform to path"); + throw new InvalidPathException("null", localized("security.advice.transform.path.exception")); } else if (variableValue instanceof Path) { Path path = (Path) variableValue; try { return path.normalize().toAbsolutePath(); } catch (InvalidPathException e) { - throw new InvalidPathException(path.toString(), "Cannot transform to path"); + throw new InvalidPathException(path.toString(), localized("security.advice.transform.path.exception")); } } else if (variableValue instanceof String) { String string = (String) variableValue; try { return Path.of(string).normalize().toAbsolutePath(); } catch (InvalidPathException e) { - throw new InvalidPathException(string, "Cannot transform to path"); + throw new InvalidPathException(string, localized("security.advice.transform.path.exception")); } } else if (variableValue instanceof File) { File file = (File) variableValue; try { return Path.of(file.toURI()).normalize().toAbsolutePath(); } catch (InvalidPathException e) { - throw new InvalidPathException(file.toString(), "Cannot transform to path"); + throw new InvalidPathException(file.toString(), localized("security.advice.transform.path.exception")); } } else { - throw new InvalidPathException(variableValue.toString(), "Cannot transform to path"); + throw new InvalidPathException(variableValue.toString(), localized("security.advice.transform.path.exception")); } } @@ -214,7 +216,7 @@ public aspect JavaAspectJFileSystemAdviceDefinitions { if (illegallyReadingMethod != null) { String illegallyReadPath = (parameters == null || parameters.length == 0) ? null : checkIfVariableCriteriaIsViolated(parameters, allowedPaths); if (illegallyReadPath != null) { - throw new SecurityException("Ares Security Error (Reason: Student-Code; Stage: Execution):" + illegallyReadingMethod + " tried to illegally " + action + " from " + illegallyReadPath + " via " + fullMethodSignature + "but was blocked by Ares."); + throw new SecurityException(localized("security.advice.illegal.method.execution", illegallyReadingMethod, action, illegallyReadPath, fullMethodSignature)); } } } @@ -232,7 +234,7 @@ public aspect JavaAspectJFileSystemAdviceDefinitions { de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.bufferedReaderInitMethods() || de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.scannerInitMethods() || de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.fileReaderInitMethods() || - de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.lineNumberReaderInitMethods() || + de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.desktopExecuteMethods() || de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.randomAccessFileInitMethods() { checkFileSystemInteraction("read", thisJoinPoint); } @@ -246,11 +248,7 @@ public aspect JavaAspectJFileSystemAdviceDefinitions { de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.fileHandlerMethods() || de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.fileSystemProviderWriteMethods() || de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.printWriterInitMethods() || - de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.bufferedWriterInitMethods() || - de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.outputStreamWriterInitMethods() || - de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.dataOutputStreamInitMethods() || - de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.objectOutputStreamInitMethods() || - de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.printStreamInitMethods() { + de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.desktopExecuteMethods() { checkFileSystemInteraction("write", thisJoinPoint); } @@ -268,6 +266,7 @@ public aspect JavaAspectJFileSystemAdviceDefinitions { before(): de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.fileDeleteMethods() || de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.filesDeleteMethods() || + de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.desktopExecuteMethods() || de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemPointcutDefinitions.fileSystemProviderDeleteMethods() { checkFileSystemInteraction("delete", thisJoinPoint); } diff --git a/src/main/java/de/tum/cit/ase/ares/api/aop/java/aspectj/adviceandpointcut/JavaAspectJFileSystemPointcutDefinitions.aj b/src/main/java/de/tum/cit/ase/ares/api/aop/java/aspectj/adviceandpointcut/JavaAspectJFileSystemPointcutDefinitions.aj index db9ace23..3125dac6 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/aop/java/aspectj/adviceandpointcut/JavaAspectJFileSystemPointcutDefinitions.aj +++ b/src/main/java/de/tum/cit/ase/ares/api/aop/java/aspectj/adviceandpointcut/JavaAspectJFileSystemPointcutDefinitions.aj @@ -40,7 +40,6 @@ public aspect JavaAspectJFileSystemPointcutDefinitions { (call(* java.io.File.canExecute(..)) || call(* java.io.File.renameTo(..)) || call(* java.io.File.toPath(..)) || - call(* java.io.File.toURI(..)) || call(* java.io.File.mkdirs(..)) || call(* java.io.File.listFiles(..))); @@ -222,20 +221,8 @@ public aspect JavaAspectJFileSystemPointcutDefinitions { pointcut fileReaderInitMethods(): call(java.io.FileReader.new(..)); - pointcut lineNumberReaderInitMethods(): call(java.io.LineNumberReader.new(..)); - pointcut printWriterInitMethods(): call(java.io.PrintWriter.new(..)); - pointcut bufferedWriterInitMethods(): call(java.io.BufferedWriter.new(..)); - - pointcut outputStreamWriterInitMethods(): call(java.io.OutputStreamWriter.new(..)); - - pointcut dataOutputStreamInitMethods(): call(java.io.DataOutputStream.new(..)); - - pointcut objectOutputStreamInitMethods(): call(java.io.ObjectOutputStream.new(..)); - - pointcut printStreamInitMethods(): call(java.io.PrintStream.new(..)); - //TODO Sarp: These should definitely be considered in different pointcut files or this one pointcut desktopExecuteMethods(): (call(* java.awt.Desktop.browse(..)) || diff --git a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/JavaInstrumentationAgent.java b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/JavaInstrumentationAgent.java index ee3fec8a..34806e6d 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/JavaInstrumentationAgent.java +++ b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/JavaInstrumentationAgent.java @@ -9,6 +9,8 @@ import net.bytebuddy.agent.builder.AgentBuilder; import net.bytebuddy.matcher.ElementMatchers; +import static de.tum.cit.ase.ares.api.aop.java.instrumentation.advice.JavaInstrumentationAdviceToolbox.localize; + /** * This class is the entry point for the Java instrumentation agent. * It installs the agent builder for the different types of file operations. @@ -58,7 +60,7 @@ private static void installAgentBuilder( .transform(transformer) .installOn(inst); } catch (Exception e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Failed to install agent builder on " + String.join(", ", methodsMap.keySet()) + ".", e); + throw new SecurityException(localize("security.instrumentation.agent.installation.error", String.join(", ", methodsMap.keySet())), e); } } diff --git a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationAdviceToolbox.java b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationAdviceToolbox.java index ded44033..92b1c695 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationAdviceToolbox.java +++ b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationAdviceToolbox.java @@ -3,6 +3,8 @@ import java.io.File; import java.lang.reflect.Field; import java.lang.reflect.InaccessibleObjectException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.nio.file.InvalidPathException; import java.nio.file.Path; @@ -50,17 +52,17 @@ private static Object getValueFromSettings(String fieldName) { field.setAccessible(false); return value; } catch (LinkageError e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Linkage error while accessing field '" + fieldName + "' in AdviceSettings", e); + throw new SecurityException(localize("security.advice.linkage.exception", fieldName), e); } catch (ClassNotFoundException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Could not find 'JavaSecurityTestCaseSettings' class to access field '" + fieldName + "'", e); + throw new SecurityException(localize("security.advice.class.not.found.exception", fieldName), e); } catch (NoSuchFieldException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '" + fieldName + "' not found in AdviceSettings", e); + throw new SecurityException(localize("security.advice.no.such.field.exception", fieldName), e); } catch (NullPointerException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Null pointer exception while accessing field '" + fieldName + "' in AdviceSettings", e); + throw new SecurityException(localize("security.advice.null.pointer.exception", fieldName), e); } catch (IllegalAccessException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '" + fieldName + "' is not accessible in AdviceSettings", e); + throw new SecurityException(localize("security.advice.illegal.access.exception", fieldName), e); } catch (InaccessibleObjectException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '" + fieldName + "' is inaccessible in AdviceSettings", e); + throw new SecurityException(localize("security.advice.inaccessible.object.exception", fieldName), e); } } // @@ -104,7 +106,10 @@ private static String checkIfCallstackCriteriaIsViolated(String restrictedPackag // Skip the OutputTester and InputTester classes, as they intercept the output and input for System.out and System.in // Therefore, they cause false positives. // Also, X11FontManager needs to be set when using AWT therefore we have to allow it - if (element.getClassName().equals("de.tum.cit.ase.ares.api.io.OutputTester") || element.getClassName().equals("de.tum.cit.ase.ares.api.io.InputTester") || element.getClassName().equals("sun.awt.X11FontManager")) { + if (element.getClassName().equals("de.tum.cit.ase.ares.api.io.OutputTester") + || element.getClassName().equals("de.tum.cit.ase.ares.api.io.InputTester") + || element.getClassName().equals("sun.awt.X11FontManager") + || element.getClassName().equals("de.tum.cit.ase.ares.api.localization.Messages")) { return null; } if (!checkIfCallstackElementIsAllowed(allowedClasses, element)) { @@ -130,30 +135,27 @@ private static String checkIfCallstackCriteriaIsViolated(String restrictedPackag */ private static Path variableToPath(Object variableValue) { if (variableValue == null) { - throw new InvalidPathException("null", "Cannot transform to path"); - } else if (variableValue instanceof Path) { - Path path = (Path) variableValue; + throw new InvalidPathException("null", localize("security.advice.transform.path.exception")); + } else if (variableValue instanceof Path path) { try { return path.normalize().toAbsolutePath(); } catch (InvalidPathException e) { - throw new InvalidPathException(path.toString(), "Cannot transform to path"); + throw new InvalidPathException(path.toString(), localize("security.advice.transform.path.exception")); } - } else if (variableValue instanceof String) { - String string = (String) variableValue; + } else if (variableValue instanceof String string) { try { return Path.of(string).normalize().toAbsolutePath(); } catch (InvalidPathException e) { - throw new InvalidPathException(string, "Cannot transform to path"); + throw new InvalidPathException(string, localize("security.advice.transform.path.exception")); } - } else if (variableValue instanceof File) { - File file = (File) variableValue; + } else if (variableValue instanceof File file) { try { return Path.of(file.toURI()).normalize().toAbsolutePath(); } catch (InvalidPathException e) { - throw new InvalidPathException(file.toString(), "Cannot transform to path"); + throw new InvalidPathException(file.toString(), localize("security.advice.transform.path.exception")); } } else { - throw new InvalidPathException(variableValue.toString(), "Cannot transform to path"); + throw new InvalidPathException(variableValue.toString(), localize("security.advice.transform.path.exception")); } } @@ -245,10 +247,26 @@ public static void checkFileSystemInteraction( illegallyReadPath = (attributes == null || attributes.length == 0) ? null : checkIfVariableCriteriaIsViolated(attributes, allowedPaths); } if (illegallyReadPath != null) { - throw new SecurityException("Ares Security Error (Reason: Student-Code; Stage: Execution):" + illegallyReadingMethod + " tried to illegally " + action + " from " + illegallyReadPath + " via " + fullMethodSignature + "but was blocked by Ares."); + throw new SecurityException(localize("security.advice.illegal.method.execution", illegallyReadingMethod, action, illegallyReadPath, fullMethodSignature)); } } } // // + + public static String localize(String key, Object... args) { + try { + Class messagesClass = Class.forName("de.tum.cit.ase.ares.api.localization.Messages", true, Thread.currentThread().getContextClassLoader()); + Method localized = messagesClass.getDeclaredMethod("localized", String.class, Object[].class); + Object result = localized.invoke(null, key, args); + if (result instanceof String str) { + return str; + } else { + throw new IllegalStateException("Method does not return a String"); + } + } catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { + // Fallback: Return the key if localization fails + return key; + } + } } \ No newline at end of file diff --git a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationDeletePathMethodAdvice.java b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationDeletePathMethodAdvice.java index 415984e7..6bfdf030 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationDeletePathMethodAdvice.java +++ b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationDeletePathMethodAdvice.java @@ -3,6 +3,7 @@ import java.lang.reflect.Field; import java.lang.reflect.InaccessibleObjectException; +import static de.tum.cit.ase.ares.api.aop.java.instrumentation.advice.JavaInstrumentationAdviceToolbox.localize; import static net.bytebuddy.asm.Advice.*; /** @@ -50,21 +51,15 @@ public static void onEnter( fields[i].setAccessible(true); attributes[i] = fields[i].get(instance); } catch (InaccessibleObjectException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Unable to make field '" + fields[i].getName() + "' in class '" - + instance.getClass().getName() + "' accessible due to JVM security restrictions.", e); + throw new SecurityException(localize("security.instrumentation.inaccessible.object.exception", fields[i].getName(), instance.getClass().getName()), e); } catch (IllegalAccessException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Access denied to field '" + fields[i].getName() - + "' in class '" + instance.getClass().getName() + "'. Field access is not permitted.", e); + throw new SecurityException(localize("security.instrumentation.illegal.access.exception", fields[i].getName(), instance.getClass().getName()), e); } catch (IllegalArgumentException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '" + fields[i].getName() + "' in class '" - + fields[i].getDeclaringClass().getName() + "' cannot be accessed because the provided instance is of type '" - + instance.getClass().getName() + "', which is not the declaring class or interface.", e); + throw new SecurityException(localize("security.instrumentation.illegal.argument.exception", fields[i].getName(), fields[i].getDeclaringClass().getName(), instance.getClass().getName()), e); } catch (NullPointerException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): The field '" + fields[i].getName() - + "' in class '" + instance.getClass().getName() + "' is unexpectedly null. This may indicate a corrupt or improperly initialized object.", e); + throw new SecurityException(localize("security.instrumentation.null.pointer.exception", fields[i].getName(), instance.getClass().getName()), e); } catch (ExceptionInInitializerError e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Initialization of the field '" + fields[i].getName() - + "' in class '" + instance.getClass().getName() + "' failed due to an error during static initialization or field setup.", e); + throw new SecurityException(localize("security.instrumentation.exception.in-initializer.error", fields[i].getName(), instance.getClass().getName()), e); } } } diff --git a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationExecutePathMethodAdvice.java b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationExecutePathMethodAdvice.java index 62b3c964..dd75f983 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationExecutePathMethodAdvice.java +++ b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationExecutePathMethodAdvice.java @@ -3,6 +3,7 @@ import java.lang.reflect.Field; import java.lang.reflect.InaccessibleObjectException; +import static de.tum.cit.ase.ares.api.aop.java.instrumentation.advice.JavaInstrumentationAdviceToolbox.localize; import static net.bytebuddy.asm.Advice.OnMethodEnter; import static net.bytebuddy.asm.Advice.Origin; import static net.bytebuddy.asm.Advice.This; @@ -53,21 +54,15 @@ public static void onEnter( fields[i].setAccessible(true); attributes[i] = fields[i].get(instance); } catch (InaccessibleObjectException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Unable to make field '" + fields[i].getName() + "' in class '" - + instance.getClass().getName() + "' accessible due to JVM security restrictions.", e); + throw new SecurityException(localize("security.instrumentation.inaccessible.object.exception", fields[i].getName(), instance.getClass().getName()), e); } catch (IllegalAccessException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Access denied to field '" + fields[i].getName() - + "' in class '" + instance.getClass().getName() + "'. Field access is not permitted.", e); + throw new SecurityException(localize("security.instrumentation.illegal.access.exception", fields[i].getName(), instance.getClass().getName()), e); } catch (IllegalArgumentException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '" + fields[i].getName() + "' in class '" - + fields[i].getDeclaringClass().getName() + "' cannot be accessed because the provided instance is of type '" - + instance.getClass().getName() + "', which is not the declaring class or interface.", e); + throw new SecurityException(localize("security.instrumentation.illegal.argument.exception", fields[i].getName(), fields[i].getDeclaringClass().getName(), instance.getClass().getName()), e); } catch (NullPointerException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): The field '" + fields[i].getName() - + "' in class '" + instance.getClass().getName() + "' is unexpectedly null. This may indicate a corrupt or improperly initialized object.", e); + throw new SecurityException(localize("security.instrumentation.null.pointer.exception", fields[i].getName(), instance.getClass().getName()), e); } catch (ExceptionInInitializerError e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Initialization of the field '" + fields[i].getName() - + "' in class '" + instance.getClass().getName() + "' failed due to an error during static initialization or field setup.", e); + throw new SecurityException(localize("security.instrumentation.exception.in-initializer.error", fields[i].getName(), instance.getClass().getName()), e); } } } diff --git a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationOverwritePathMethodAdvice.java b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationOverwritePathMethodAdvice.java index c9d57d98..56115deb 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationOverwritePathMethodAdvice.java +++ b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationOverwritePathMethodAdvice.java @@ -3,6 +3,7 @@ import java.lang.reflect.Field; import java.lang.reflect.InaccessibleObjectException; +import static de.tum.cit.ase.ares.api.aop.java.instrumentation.advice.JavaInstrumentationAdviceToolbox.localize; import static net.bytebuddy.asm.Advice.OnMethodEnter; import static net.bytebuddy.asm.Advice.Origin; import static net.bytebuddy.asm.Advice.This; @@ -52,22 +53,16 @@ public static void onEnter( try { fields[i].setAccessible(true); attributes[i] = fields[i].get(instance); - }catch (InaccessibleObjectException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Unable to make field '" + fields[i].getName() + "' in class '" - + instance.getClass().getName() + "' accessible due to JVM security restrictions.", e); + } catch (InaccessibleObjectException e) { + throw new SecurityException(localize("security.instrumentation.inaccessible.object.exception", fields[i].getName(), instance.getClass().getName()), e); } catch (IllegalAccessException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Access denied to field '" + fields[i].getName() - + "' in class '" + instance.getClass().getName() + "'. Field access is not permitted.", e); + throw new SecurityException(localize("security.instrumentation.illegal.access.exception", fields[i].getName(), instance.getClass().getName()), e); } catch (IllegalArgumentException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '" + fields[i].getName() + "' in class '" - + fields[i].getDeclaringClass().getName() + "' cannot be accessed because the provided instance is of type '" - + instance.getClass().getName() + "', which is not the declaring class or interface.", e); + throw new SecurityException(localize("security.instrumentation.illegal.argument.exception", fields[i].getName(), fields[i].getDeclaringClass().getName(), instance.getClass().getName()), e); } catch (NullPointerException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): The field '" + fields[i].getName() - + "' in class '" + instance.getClass().getName() + "' is unexpectedly null. This may indicate a corrupt or improperly initialized object.", e); + throw new SecurityException(localize("security.instrumentation.null.pointer.exception", fields[i].getName(), instance.getClass().getName()), e); } catch (ExceptionInInitializerError e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Initialization of the field '" + fields[i].getName() - + "' in class '" + instance.getClass().getName() + "' failed due to an error during static initialization or field setup.", e); + throw new SecurityException(localize("security.instrumentation.exception.in-initializer.error", fields[i].getName(), instance.getClass().getName()), e); } } } diff --git a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationReadPathMethodAdvice.java b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationReadPathMethodAdvice.java index b491024a..9c201281 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationReadPathMethodAdvice.java +++ b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/advice/JavaInstrumentationReadPathMethodAdvice.java @@ -3,6 +3,7 @@ import java.lang.reflect.Field; import java.lang.reflect.InaccessibleObjectException; +import static de.tum.cit.ase.ares.api.aop.java.instrumentation.advice.JavaInstrumentationAdviceToolbox.localize; import static net.bytebuddy.asm.Advice.OnMethodEnter; import static net.bytebuddy.asm.Advice.Origin; import static net.bytebuddy.asm.Advice.This; @@ -53,21 +54,15 @@ public static void onEnter( fields[i].setAccessible(true); attributes[i] = fields[i].get(instance); } catch (InaccessibleObjectException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Unable to make field '" + fields[i].getName() + "' in class '" - + instance.getClass().getName() + "' accessible due to JVM security restrictions.", e); + throw new SecurityException(localize("security.instrumentation.inaccessible.object.exception", fields[i].getName(), instance.getClass().getName()), e); } catch (IllegalAccessException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Access denied to field '" + fields[i].getName() - + "' in class '" + instance.getClass().getName() + "'. Field access is not permitted.", e); + throw new SecurityException(localize("security.instrumentation.illegal.access.exception", fields[i].getName(), instance.getClass().getName()), e); } catch (IllegalArgumentException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '" + fields[i].getName() + "' in class '" - + fields[i].getDeclaringClass().getName() + "' cannot be accessed because the provided instance is of type '" - + instance.getClass().getName() + "', which is not the declaring class or interface.", e); + throw new SecurityException(localize("security.instrumentation.illegal.argument.exception", fields[i].getName(), fields[i].getDeclaringClass().getName(), instance.getClass().getName()), e); } catch (NullPointerException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): The field '" + fields[i].getName() - + "' in class '" + instance.getClass().getName() + "' is unexpectedly null. This may indicate a corrupt or improperly initialized object.", e); + throw new SecurityException(localize("security.instrumentation.null.pointer.exception", fields[i].getName(), instance.getClass().getName()), e); } catch (ExceptionInInitializerError e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Initialization of the field '" + fields[i].getName() - + "' in class '" + instance.getClass().getName() + "' failed due to an error during static initialization or field setup.", e); + throw new SecurityException(localize("security.instrumentation.exception.in-initializer.error", fields[i].getName(), instance.getClass().getName()), e); } } } diff --git a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/pointcut/JavaInstrumentationBindingDefinitions.java b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/pointcut/JavaInstrumentationBindingDefinitions.java index 5f11f137..dd307d05 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/pointcut/JavaInstrumentationBindingDefinitions.java +++ b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/pointcut/JavaInstrumentationBindingDefinitions.java @@ -21,6 +21,8 @@ import java.util.List; import java.util.Map; +import static de.tum.cit.ase.ares.api.aop.java.instrumentation.advice.JavaInstrumentationAdviceToolbox.localize; + /** * This class provides the definitions for the bindings of the Java instrumentation. * It is responsible for creating the bindings for different pointcuts, which represent file system @@ -36,7 +38,7 @@ public class JavaInstrumentationBindingDefinitions { * This class is a utility class and should not be instantiated. */ private JavaInstrumentationBindingDefinitions() { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): JavaInstrumentationBindingDefinitions is a utility class and should not be instantiated."); + throw new SecurityException(localize("security.general.utility.initialization")); } // @@ -63,7 +65,7 @@ private static DynamicType.Builder createMethodBinding( loadToolbox(classLoader); return builder.visit(Advice.to(advice).on(JavaInstrumentationPointcutDefinitions.getMethodsMatcher(typeDescription, pointcuts))); } catch (Exception e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create a binding in general.", e); + throw new SecurityException(localize("security.instrumentation.binding.error"), e); } } @@ -75,7 +77,7 @@ private static DynamicType.Builder createConstructorBinding( loadToolbox(classLoader); return builder.visit(Advice.to(advice).on(JavaInstrumentationPointcutDefinitions.getConstructorsMatcher(typeDescription, pointcuts))); } catch (Exception e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create a binding in general.", e); + throw new SecurityException(localize("security.instrumentation.binding.error"), e); } } @@ -134,7 +136,7 @@ public static DynamicType.Builder createReadPathMethodBinding( JavaInstrumentationPointcutDefinitions.methodsWhichCanReadFiles, JavaInstrumentationReadPathMethodAdvice.class ); } catch (Exception e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for read path method.", e); + throw new SecurityException(localize("security.instrumentation.read.method.binding.error"), e); } } @@ -149,7 +151,7 @@ public static DynamicType.Builder createReadPathConstructorBinding( JavaInstrumentationPointcutDefinitions.methodsWhichCanReadFiles, JavaInstrumentationReadPathConstructorAdvice.class ); } catch (Exception e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for read path constructor.", e); + throw new SecurityException(localize("security.instrumentation.read.constructor.binding.error"), e); } } // @@ -180,7 +182,7 @@ public static DynamicType.Builder createOverwritePathMethodBinding( JavaInstrumentationPointcutDefinitions.methodsWhichCanOverwriteFiles, JavaInstrumentationOverwritePathMethodAdvice.class ); } catch (Exception e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for overwrite path method.", e); + throw new SecurityException(localize("security.instrumentation.overwrite.method.binding.error"), e); } } @@ -196,7 +198,7 @@ public static DynamicType.Builder createOverwritePathConstructorBinding( JavaInstrumentationPointcutDefinitions.methodsWhichCanOverwriteFiles, JavaInstrumentationOverwritePathConstructorAdvice.class ); } catch (Exception e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for overwrite path constructor.", e); + throw new SecurityException(localize("security.instrumentation.overwrite.constructor.binding.error"), e); } } @@ -228,7 +230,7 @@ public static DynamicType.Builder createExecutePathMethodBinding( JavaInstrumentationPointcutDefinitions.methodsWhichCanExecuteFiles, JavaInstrumentationExecutePathMethodAdvice.class ); } catch (Exception e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for execute path method.", e); + throw new SecurityException(localize("security.instrumentation.execute.method.binding.error"), e); } } @@ -243,7 +245,7 @@ public static DynamicType.Builder createExecutePathConstructorBinding( JavaInstrumentationPointcutDefinitions.methodsWhichCanExecuteFiles, JavaInstrumentationExecutePathConstructorAdvice.class ); } catch (Exception e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for execute path constructor.", e); + throw new SecurityException(localize("security.instrumentation.execute.constructor.binding.error"), e); } } // @@ -274,7 +276,7 @@ public static DynamicType.Builder createDeletePathMethodBinding( JavaInstrumentationPointcutDefinitions.methodsWhichCanDeleteFiles, JavaInstrumentationDeletePathMethodAdvice.class ); } catch (Exception e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for delete path method.", e); + throw new SecurityException(localize("security.instrumentation.delete.method.binding.error"), e); } } @@ -289,7 +291,7 @@ public static DynamicType.Builder createDeletePathConstructorBinding( JavaInstrumentationPointcutDefinitions.methodsWhichCanDeleteFiles, JavaInstrumentationDeletePathConstructorAdvice.class ); } catch (Exception e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for delete path constructor.", e); + throw new SecurityException(localize("security.instrumentation.delete.constructor.binding.error"), e); } } // diff --git a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/pointcut/JavaInstrumentationPointcutDefinitions.java b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/pointcut/JavaInstrumentationPointcutDefinitions.java index 72820016..84e53b57 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/pointcut/JavaInstrumentationPointcutDefinitions.java +++ b/src/main/java/de/tum/cit/ase/ares/api/aop/java/instrumentation/pointcut/JavaInstrumentationPointcutDefinitions.java @@ -10,6 +10,8 @@ import java.util.Map; import java.util.Set; +import static de.tum.cit.ase.ares.api.aop.java.instrumentation.advice.JavaInstrumentationAdviceToolbox.localize; + /** * This class contains the pointcut definitions for the Java instrumentation agent. * These pointcuts are used to identify methods that perform file system operations @@ -25,7 +27,7 @@ public class JavaInstrumentationPointcutDefinitions { * This constructor is private to prevent instantiation of this utility class. */ private JavaInstrumentationPointcutDefinitions() { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): JavaInstrumentationPointcutDefinitions is a utility class and should not be instantiated."); + throw new SecurityException(localize("security.general.utility.initialization")); } // diff --git a/src/main/java/de/tum/cit/ase/ares/api/architecture/java/archunit/FileHandlerConstants.java b/src/main/java/de/tum/cit/ase/ares/api/architecture/java/archunit/FileHandlerConstants.java index 1e7e5ecb..e2fd0c05 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/architecture/java/archunit/FileHandlerConstants.java +++ b/src/main/java/de/tum/cit/ase/ares/api/architecture/java/archunit/FileHandlerConstants.java @@ -4,6 +4,8 @@ import java.nio.file.Path; +import static de.tum.cit.ase.ares.api.localization.Messages.localized; + /** * Constants for the path of the files used in the ArchitectureTestCaseStorage */ @@ -17,6 +19,6 @@ public class FileHandlerConstants { public static final Path JAVA_THREAD_CREATION_METHODS = FileTools.resolveOnResources("templates", "architecture" , "java", "archunit", "methods", "thread-creation-methods.txt"); private FileHandlerConstants() { - throw new UnsupportedOperationException("Ares Security Error (Reason: Ares-Code; Stage: Execution): FileHandlerConstants is a utility class and should not be instantiated."); + throw new UnsupportedOperationException(localized("security.general.utility.initialization")); } } diff --git a/src/main/java/de/tum/cit/ase/ares/api/architecture/java/archunit/JavaArchUnitSecurityTestCase.java b/src/main/java/de/tum/cit/ase/ares/api/architecture/java/archunit/JavaArchUnitSecurityTestCase.java index fbf97a51..57e9a5c9 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/architecture/java/archunit/JavaArchUnitSecurityTestCase.java +++ b/src/main/java/de/tum/cit/ase/ares/api/architecture/java/archunit/JavaArchUnitSecurityTestCase.java @@ -11,6 +11,7 @@ import java.util.stream.Collectors; import static de.tum.cit.ase.ares.api.architecture.java.archunit.postcompile.JavaArchitectureTestCaseCollection.getArchitectureRuleFileContent; +import static de.tum.cit.ase.ares.api.localization.Messages.localized; // /** @@ -95,7 +96,10 @@ public void executeArchitectureTestCase(JavaClasses classes) { default -> throw new UnsupportedOperationException("Not implemented yet"); } } catch (AssertionError e) { - throw new SecurityException("Ares Security Error (Reason: Student-Code; Stage: Execution): Illegal Statement found: " + e.getMessage()); + if (e.getMessage() == null || e.getMessage().split("\n").length < 2) { + throw new SecurityException(localized("security.archunit.illegal.execution", e.getMessage())); + } + throw new SecurityException(localized("security.archunit.illegal.execution", e.getMessage().split("\n")[1])); } } // diff --git a/src/main/java/de/tum/cit/ase/ares/api/architecture/java/archunit/postcompile/CustomClassResolver.java b/src/main/java/de/tum/cit/ase/ares/api/architecture/java/archunit/postcompile/CustomClassResolver.java index a3ea5f8f..09cf5113 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/architecture/java/archunit/postcompile/CustomClassResolver.java +++ b/src/main/java/de/tum/cit/ase/ares/api/architecture/java/archunit/postcompile/CustomClassResolver.java @@ -30,6 +30,7 @@ private CustomClassResolver() { * @return The resolved class if it exists. */ public static Optional tryResolve(String typeName) { + // Advice definition uses Reflection and therefor should not be resolved if (typeName.startsWith("de.tum.cit.ase.ares.api.aop.java.aspectj.adviceandpointcut.JavaAspectJFileSystemAdviceDefinitions")) { return Optional.empty(); } diff --git a/src/main/java/de/tum/cit/ase/ares/api/jqwik/JqwikSecurityExtension.java b/src/main/java/de/tum/cit/ase/ares/api/jqwik/JqwikSecurityExtension.java index 087a2fe4..6c300e3f 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/jqwik/JqwikSecurityExtension.java +++ b/src/main/java/de/tum/cit/ase/ares/api/jqwik/JqwikSecurityExtension.java @@ -1,10 +1,7 @@ package de.tum.cit.ase.ares.api.jqwik; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.nio.file.Path; import java.util.Optional; -import java.util.stream.Stream; import de.tum.cit.ase.ares.api.Policy; import de.tum.cit.ase.ares.api.jupiter.JupiterSecurityExtension; diff --git a/src/main/java/de/tum/cit/ase/ares/api/jupiter/JupiterSecurityExtension.java b/src/main/java/de/tum/cit/ase/ares/api/jupiter/JupiterSecurityExtension.java index 373d6c6b..4ba30022 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/jupiter/JupiterSecurityExtension.java +++ b/src/main/java/de/tum/cit/ase/ares/api/jupiter/JupiterSecurityExtension.java @@ -5,7 +5,6 @@ import java.nio.file.InvalidPathException; import java.nio.file.Path; import java.util.Optional; -import java.util.stream.Stream; import de.tum.cit.ase.ares.api.Policy; import de.tum.cit.ase.ares.api.policy.SecurityPolicyReaderAndDirector; @@ -13,6 +12,7 @@ import org.apiguardian.api.API.Status; import org.junit.jupiter.api.extension.*; +import static de.tum.cit.ase.ares.api.aop.java.instrumentation.advice.JavaInstrumentationAdviceToolbox.localize; import static de.tum.cit.ase.ares.api.internal.TestGuardUtils.hasAnnotation; import static org.junit.platform.commons.support.AnnotationSupport.findAnnotation; //REMOVED: Import of ArtemisSecurityManager @@ -48,7 +48,7 @@ public T interceptGenericInvocation(Invocation invocation, ExtensionConte javaSecurityTestCaseSettingsClass = Class.forName("de.tum.cit.ase.ares.api.aop.java.JavaSecurityTestCaseSettings", true, null); resetSettings(javaSecurityTestCaseSettingsClass); } catch (ClassNotFoundException e) { - throw new SecurityException("Security configuration error: The class for the specific security test case settings could not be found. Ensure the class name is correct and the class is available at runtime.", e); + throw new SecurityException(localize("security.settings.error"), e); } } //REMOVED: Installing of ArtemisSecurityManager @@ -78,27 +78,27 @@ public static void resetSettings(Class javaSecurityTestCaseSettingsClass) { resetMethod.invoke(null); resetMethod.setAccessible(false); } catch (NoSuchMethodException e) { - throw new SecurityException("Security configuration error: The 'reset' method could not be found in the specified class. Ensure the method exists and is correctly named.", e); + throw new SecurityException(localize("security.settings.reset.method.not.found"), e); } catch (IllegalAccessException e) { - throw new SecurityException("Security configuration error: Access to the 'reset' method was denied. Ensure the method is public and accessible.", e); + throw new SecurityException(localize("security.settings.reset.access.denied"), e); } catch (InvocationTargetException e) { - throw new SecurityException("Security configuration error: An error occurred while invoking the 'reset' method. This could be due to an underlying issue within the method implementation.", e); + throw new SecurityException(localize("security.settings.error.within.method"), e); } } public static Path testAndGetPolicyValue(Policy policyAnnotation) { String policyValue = policyAnnotation.value(); if (policyValue.isBlank()) { - throw new SecurityException("The policy file path is not specified."); + throw new SecurityException(localize("security.policy.reader.path.blank")); } try { Path policyPath = Path.of(policyValue); if (!policyPath.toFile().exists()) { - throw new SecurityException("The following policy file path does not exist: " + policyPath); + throw new SecurityException(localize("security.policy.reader.path.not.exists", policyPath)); } return policyPath; } catch (InvalidPathException e) { - throw new SecurityException("The following policy file path is invalid: " + policyValue); + throw new SecurityException(localize("security.policy.reader.path.invalid", policyValue)); } } @@ -107,11 +107,11 @@ public static Path testAndGetPolicyWithinPath(Policy policyAnnotation) { try { Path policyWithinPath = Path.of(policyValue); if (!policyWithinPath.startsWith("classes") && !policyWithinPath.startsWith("test-classes")) { - throw new SecurityException("The following path is invalid for withinPath it should start with classes or test-classes: " + policyValue); + throw new SecurityException(localize("security.policy.within.path.wrong.bytecode.path", policyValue)); } return policyWithinPath; } catch (InvalidPathException e) { - throw new SecurityException("The following path is invalid for withinPath: " + policyValue); + throw new SecurityException(localize("security.policy.within.path.invalid", policyValue)); } } } diff --git a/src/main/java/de/tum/cit/ase/ares/api/localization/Messages.java b/src/main/java/de/tum/cit/ase/ares/api/localization/Messages.java index ff1c08c3..cffa1623 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/localization/Messages.java +++ b/src/main/java/de/tum/cit/ase/ares/api/localization/Messages.java @@ -3,13 +3,10 @@ import java.util.*; import java.util.Locale.Category; -import org.apiguardian.api.API; -import org.apiguardian.api.API.Status; import org.opentest4j.AssertionFailedError; import de.tum.cit.ase.ares.api.util.LruCache; -@API(status = Status.INTERNAL) public final class Messages { private static final String BUNDLE_NAME = "de.tum.cit.ase.ares.api.localization.messages"; //$NON-NLS-1$ diff --git a/src/main/java/de/tum/cit/ase/ares/api/policy/SecurityPolicyReaderAndDirector.java b/src/main/java/de/tum/cit/ase/ares/api/policy/SecurityPolicyReaderAndDirector.java index d7cfe274..7c869938 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/policy/SecurityPolicyReaderAndDirector.java +++ b/src/main/java/de/tum/cit/ase/ares/api/policy/SecurityPolicyReaderAndDirector.java @@ -17,6 +17,8 @@ import java.io.IOException; import java.nio.file.Path; import java.util.List; + +import static de.tum.cit.ase.ares.api.aop.java.instrumentation.advice.JavaInstrumentationAdviceToolbox.localize; // /** @@ -62,13 +64,13 @@ public SecurityPolicyReaderAndDirector(@Nonnull Path securityPolicyPath, @Nonnul projectPath ); } catch (StreamReadException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Failed to read the security policy file '" + securityPolicyPath + "'.", e); + throw new SecurityException(localize("security.policy.read.failed", securityPolicyPath.toString()), e); } catch (DatabindException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Failed to bind data from the security policy file '" + securityPolicyPath + "'.", e); + throw new SecurityException(localize("security.policy.data.bind.failed", securityPolicyPath.toString()), e); } catch (UnsupportedOperationException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): The security policy contains unsupported operations.", e); + throw new SecurityException(localize("security.policy.unsupported.operation"), e); } catch (IOException e) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Execution): Error occurred while accessing the security policy file '" + securityPolicyPath + "'.", e); + throw new SecurityException(localize("security.policy.io.exception", securityPolicyPath.toString()), e); } } // diff --git a/src/main/java/de/tum/cit/ase/ares/api/securitytest/java/JavaSecurityTestCaseFactoryAndBuilder.java b/src/main/java/de/tum/cit/ase/ares/api/securitytest/java/JavaSecurityTestCaseFactoryAndBuilder.java index 028ff5a5..e7635d4c 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/securitytest/java/JavaSecurityTestCaseFactoryAndBuilder.java +++ b/src/main/java/de/tum/cit/ase/ares/api/securitytest/java/JavaSecurityTestCaseFactoryAndBuilder.java @@ -3,7 +3,6 @@ // import com.google.common.collect.Streams; -import com.tngtech.archunit.ArchConfiguration; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.core.importer.ClassFileImporter; import de.tum.cit.ase.ares.api.aop.java.JavaSecurityTestCaseSupported; @@ -30,6 +29,7 @@ import java.util.stream.Stream; import static com.google.common.collect.Iterables.isEmpty; +import static de.tum.cit.ase.ares.api.aop.java.instrumentation.advice.JavaInstrumentationAdviceToolbox.localize; // /** @@ -128,37 +128,37 @@ public JavaSecurityTestCaseFactoryAndBuilder( @Nonnull Path projectPath ) { if (securityPolicy.regardingTheSupervisedCode().theProgrammingLanguageUsesTheFollowingPackage() == null) { - throw new IllegalArgumentException("Ares Security Error (Reason: Ares-Code; Stage: Execution): The package name cannot be null."); + throw new IllegalArgumentException(localize("security.policy.restricted.package.null")); } else if (securityPolicy.regardingTheSupervisedCode().theMainClassInsideThisPackageIs() == null) { - throw new IllegalArgumentException("Ares Security Error (Reason: Ares-Code; Stage: Execution): The main class inside the package cannot be null."); + throw new IllegalArgumentException(localize("security.policy.package.main.class.null")); } if (javaBuildMode == null) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): The build mode cannot be null."); + throw new SecurityException(localize("security.policy.java.build.mode.null")); } this.javaBuildMode = javaBuildMode; if (javaArchitectureMode == null) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): The architecture mode cannot be null."); + throw new SecurityException(localize("security.policy.java.architecture.mode.null")); } this.javaArchitectureMode = javaArchitectureMode; if (javaAOPMode == null) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): The AOP mode cannot be null."); + throw new SecurityException(localize("security.policy.java.aop.mode.null")); } this.javaAOPMode = javaAOPMode; if (securityPolicy.regardingTheSupervisedCode().theProgrammingLanguageUsesTheFollowingPackage() == null) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): The x cannot be null."); + throw new SecurityException(localize("security.policy.java.not.correct.set")); } this.packageName = securityPolicy.regardingTheSupervisedCode().theProgrammingLanguageUsesTheFollowingPackage(); if (securityPolicy.regardingTheSupervisedCode().theMainClassInsideThisPackageIs() == null) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): The x cannot be null."); + throw new SecurityException(localize("security.policy.java.not.correct.set")); } this.mainClassInPackageName = securityPolicy.regardingTheSupervisedCode().theMainClassInsideThisPackageIs(); if (securityPolicy.regardingTheSupervisedCode().theFollowingResourceAccessesArePermitted() == null) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): The x cannot be null."); + throw new SecurityException(localize("security.policy.java.not.correct.set")); } this.resourceAccesses = securityPolicy.regardingTheSupervisedCode().theFollowingResourceAccessesArePermitted(); if (securityPolicy.regardingTheSupervisedCode().theFollowingClassesAreTestClasses() == null) { - throw new SecurityException("Ares Security Error (Reason: Ares-Code; Stage: Creation): The x cannot be null."); + throw new SecurityException(localize("security.policy.java.not.correct.set")); } this.testClasses = securityPolicy.regardingTheSupervisedCode().theFollowingClassesAreTestClasses(); // TODO Markus: projectPath is configured wrongly, since for AOP and Architecture tests different paths are used (for Architectural path to bytecode, for AOP path to source code) @@ -196,10 +196,6 @@ public JavaSecurityTestCaseFactoryAndBuilder( *

*/ private void createSecurityTestCases() { - // - //javaAOPMode.reset(); - // - // Set allowedPackages = new HashSet<>(resourceAccesses.regardingPackageImports()); // Add default imports needed for the execution diff --git a/src/main/java/de/tum/cit/ase/ares/api/util/FileTools.java b/src/main/java/de/tum/cit/ase/ares/api/util/FileTools.java index 2e55429a..bd41e282 100644 --- a/src/main/java/de/tum/cit/ase/ares/api/util/FileTools.java +++ b/src/main/java/de/tum/cit/ase/ares/api/util/FileTools.java @@ -17,15 +17,16 @@ import java.util.stream.IntStream; import java.util.stream.Stream; +import static de.tum.cit.ase.ares.api.aop.java.instrumentation.advice.JavaInstrumentationAdviceToolbox.localize; + /** * Utility class providing file-related operations such as copying files, reading file content, * and writing content to files. These methods are intended for use in scenarios where * secure and reliable file handling is required. */ public class FileTools { - - public static final String ARES_ERROR_MESSAGE = "Ares Security Error (Stage: Creation): Failed to read content from source file."; + // TODO: This is only needed for the pre-compile mode, translation not that necessary /** * Private constructor to prevent instantiation of this utility class. *

@@ -103,7 +104,7 @@ public static List copyJavaFiles(List sourceFilePaths, List ta StandardOpenOption.WRITE ); } catch (IOException e) { - throw new SecurityException(ARES_ERROR_MESSAGE, e); + throw new SecurityException(localize("security.file-tools.read.content.failure"), e); } } return copiedFiles; @@ -142,7 +143,7 @@ public static String readFile(Path sourceFilePath) { } } catch (IOException e) { - throw new SecurityException(ARES_ERROR_MESSAGE, e); + throw new SecurityException(localize("security.file-tools.read.content.failure"), e); } catch (OutOfMemoryError e) { throw new SecurityException("Ares Security Error (Stage: Creation): Out of memory while reading content.", e); } catch (IllegalFormatException e) { @@ -268,7 +269,7 @@ public static Path createThreePartedJavaFile( StandardOpenOption.WRITE ); } catch (IOException e) { - throw new SecurityException(ARES_ERROR_MESSAGE, e); + throw new SecurityException(localize("security.file-tools.read.content.failure"), e); } return createdFile; } diff --git a/src/main/resources/de/tum/cit/ase/ares/api/localization/messages.properties b/src/main/resources/de/tum/cit/ase/ares/api/localization/messages.properties index 04f97bbf..b0168fb5 100644 --- a/src/main/resources/de/tum/cit/ase/ares/api/localization/messages.properties +++ b/src/main/resources/de/tum/cit/ase/ares/api/localization/messages.properties @@ -42,6 +42,73 @@ security.configuration_invalid_port_negative=allow local port: port number must security.configuration_invalid_port_over_max=allow local port: port number must not exceed MAXIMUM security.configuration_invalid_port_allowed_in_rage=allowed local port values must not be greater than allowPortsAbove security.configuration_invalid_port_exclude_outside_rage=local ports exclusion values must be greater than allowPortsAbove + +# Ares Code Execution +security.advice.linkage.exception=Ares Security Error (Reason: Ares-Code; Stage: Execution): Linkage error while accessing field '%s' in AdviceSettings +security.advice.class.not.found.exception=Ares Security Error (Reason: Ares-Code; Stage: Execution): Could not find 'JavaSecurityTestCaseSettings' class to access field '%s' +security.advice.no.such.field.exception=Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '%s' not found in AdviceSettings +security.advice.null.pointer.exception=Ares Security Error (Reason: Ares-Code; Stage: Execution): Null pointer exception while accessing field '%s' in AdviceSettings +security.advice.illegal.access.exception=Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '%s' is not accessible in AdviceSettings +security.advice.illegal.argument.exception=Ares Security Error (Reason: Ares-Code; Stage: Execution): Illegal argument while setting field '%s' in AdviceSettings with value %s +security.advice.inaccessible.object.exception=Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '%s' is inaccessible in AdviceSettings +security.advice.transform.path.exception=Cannot transform to path +security.instrumentation.inaccessible.object.exception=Ares Security Error (Reason: Ares-Code; Stage: Execution): Unable to make field '%s' in class '%s' accessible due to JVM security restrictions. +security.instrumentation.illegal.access.exception=Ares Security Error (Reason: Ares-Code; Stage: Execution): Access denied to field '%s' in class '%s'. Field access is not permitted. +security.instrumentation.illegal.argument.exception=Ares Security Error (Reason: Ares-Code; Stage: Execution): Field '%s' in class '%s' cannot be accessed because the provided instance is of type '%s', which is not the declaring class or interface. +security.instrumentation.null.pointer.exception=Ares Security Error (Reason: Ares-Code; Stage: Execution): The field '%s' is unexpectedly null. This may indicate a corrupt or improperly initialized object. +security.instrumentation.exception.in-initializer.error=Ares Security Error (Reason: Ares-Code; Stage: Execution): Initialization of the field '%s' in class '%s' failed due to an error during static initialization or field setup. +security.policy.read.failed=Ares Security Error (Reason: Ares-Code; Stage: Execution): Failed to read the security policy file '%s'. +security.policy.data.bind.failed=Ares Security Error (Reason: Ares-Code; Stage: Execution): Failed to bind data from the security policy file '%s'. +security.policy.unsupported.operation=Ares Security Error (Reason: Ares-Code; Stage: Execution): The security policy contains unsupported operations. +security.policy.io.exception=Ares Security Error (Reason: Ares-Code; Stage: Execution): Error occurred while accessing the security policy file '%s'. +security.policy.restricted.package.null=Ares Security Error (Reason: Ares-Code; Stage: Execution): The restricted package name cannot be null. +security.policy.package.main.class.null=Ares Security Error (Reason: Ares-Code; Stage: Execution): The main class inside the package cannot be null. + +# Student Code Execution +security.advice.illegal.method.execution=Ares Security Error (Reason: Student-Code; Stage: Execution): %s tried to illegally %s from %s via %s but was blocked by Ares. +security.archunit.illegal.execution=\n\u0020- Ares Security Error (Reason: Student-Code; Stage: Execution):\n\u0020\u0020- %s + +# Ares Code Creation +security.settings.error=Security configuration error: The class for the specific security test case settings could not be found. Ensure the class name is correct and the class is available at runtime. +security.settings.reset.method.not.found=Security configuration error: The 'reset' method could not be found in the specified class. Ensure the method exists and is correctly named. +security.settings.reset.access.denied=Security configuration error: Access to the 'reset' method was denied. Ensure the method is public and accessible. +security.settings.error.within.method=Security configuration error: An error occurred while invoking the 'reset' method. This could be due to an underlying issue within the method implementation. +security.general.utility.initialization=Ares Security Error (Reason: Ares-Code; Stage: Creation): Utility class should not be instantiated. +security.instrumentation.binding.error=Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create a binding in general. +security.instrumentation.read.method.binding.error=Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for read path method. +security.instrumentation.read.constructor.binding.error=Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for read path constructor. +security.instrumentation.overwrite.method.binding.error=Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for overwrite path method. +security.instrumentation.overwrite.constructor.binding.error=Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for overwrite path constructor. +security.instrumentation.delete.method.binding.error=Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for delete path method. +security.instrumentation.delete.constructor.binding.error=Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for delete path constructor. +security.instrumentation.execute.method.binding.error=Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for execute path method. +security.instrumentation.execute.constructor.binding.error=Ares Security Error (Reason: Ares-Code; Stage: Creation): Could not create binding for execute path constructor. +security.instrumentation.agent.installation.error=Ares Security Error (Reason: Ares-Code; Stage: Creation): Failed to install agent builder on %s. +security.creation.reset.class.not.found.exception=Ares Security Error (Reason: Ares-Code; Stage: Creation): The class for the specific security test case settings could not be found. Ensure the class name is correct and the class is available at runtime. +security.creation.reset.no.method.exception=Ares Security Error (Reason: Ares-Code; Stage: Creation): The 'reset' method could not be found in the specified class. Ensure the method exists and is correctly named. +security.creation.reset.illegal.access.exception=Ares Security Error (Reason: Ares-Code; Stage: Creation): Access to the 'reset' method was denied. Ensure the method is public and accessible. +security.creation.reset.invocation.target.exception=Ares Security Error (Reason: Ares-Code; Stage: Creation): An error occurred while invoking the 'reset' method. This could be due to an underlying issue within the method implementation. +security.policy.java.build.mode.null=Ares Security Error (Reason: Ares-Code; Stage: Creation): The build mode cannot be null. +security.policy.java.architecture.mode.null=Ares Security Error (Reason: Ares-Code; Stage: Creation): The architecture mode cannot be null. +security.policy.java.aop.mode.null=Ares Security Error (Reason: Ares-Code; Stage: Creation): The AOP mode cannot be null. +security.policy.java.not.correct.set=Ares Security Error (Reason: Ares-Code; Stage: Creation): The x cannot be null. +security.file-tools.read.content.failure=Ares Security Error (Stage: Creation): Failed to read content from source file. +security.advice.settings.data.type.mismatch.string=Ares Security Error (Reason: Ares-Code; Stage: Creation): Invalid value type for String advice setting: %s but should be String. +security.advice.settings.data.type.mismatch.string[]=Ares Security Error (Reason: Ares-Code; Stage: Creation): Invalid value type for String[] advice setting: %s but should be List. +security.advice.settings.data.type.mismatch.string[][]=Ares Security Error (Reason: Ares-Code; Stage: Creation): Invalid value type for String[][] advice setting: %s but should be List>. +security.advice.settings.data.type.mismatch.int[]=Ares Security Error (Reason: Ares-Code; Stage: Creation): Invalid value type for int[] advice setting: %s but should be List. +security.advice.settings.data.type.unknown=Ares Security Error (Reason: Ares-Code; Stage: Creation): Unknown data type while creating the value %s for the advice settings %s %s +security.advice.invalid.format=Ares Security Error (Reason: Ares-Code; Stage: Creation): Format error while creating the value %s for the advice settings %s %s +security.advice.settings.invalid.file.permission=Ares Security Error (Reason: Ares-Code; Stage: Creation): Invalid file permission: %s +security.advice.settings.invalid.network.permission=Ares Security Error (Reason: Ares-Code; Stage: Creation): Invalid network permission: %s + +# Policy reader and configurer +security.policy.reader.path.blank=The policy file path is not specified. +security.policy.reader.path.not.exists=The following policy file path does not exist: %s +security.policy.reader.path.invalid=The following policy file path is invalid: %s +security.policy.within.path.wrong.bytecode.path=The following path is invalid for withinPath it should start with classes or test-classes: %s +security.policy.within.path.invalid=The following path is invalid for withinPath: %s + # test guard and deadline handling test_guard.extended_deadline_zero_or_negative=deadline extension must not be ZERO or negative: %s test_guard.hidden_test_before_deadline_message=hidden tests will be executed after the deadline. diff --git a/src/main/resources/de/tum/cit/ase/ares/api/localization/messages_de.properties b/src/main/resources/de/tum/cit/ase/ares/api/localization/messages_de.properties index 45dcf517..54642f5f 100644 --- a/src/main/resources/de/tum/cit/ase/ares/api/localization/messages_de.properties +++ b/src/main/resources/de/tum/cit/ase/ares/api/localization/messages_de.properties @@ -1,7 +1,7 @@ # localization active_localization=de_DE # security manager and similar -security.access_token_invalid=Access token ist ungültig +security.access_token_invalid=Access token ist ungültig security.already_created=ArtemisSecurityManager schon initialisiert security.already_disabled=ArtemisSecurityManager ist schon deaktiviert security.already_installed=ArtemisSecurityManager schon installiert @@ -10,7 +10,7 @@ security.error_awt=AWT nicht nutzten security.error_blacklist=Unerlaubte Operation security.error_classloader=Das ist nun wirklich nicht nötig. security.error_disallowed_package=Unerlaubter package Zugriff auf %s -security.error_execute=Befehle / Dateien ausführen ist nicht gestattet +security.error_execute=Befehle / Dateien ausführen ist nicht gestattet security.error_link=Das Einbinden von Bibliotheken ist nicht gestattet security.error_management=Management nicht modifizieren security.error_modify_auth=Authentifizierung nicht modifizieren @@ -37,17 +37,84 @@ security.error_package_definition=In package %s darf nichts definiert werden security.stackframe_add_info=%s in Zeile %d in %s security.privileged_throw_not_allowed=Aufrufende Klasse darf keine privilegierten Exceptions werfen security.configuration_invalid_negative_threads=Erlaubte Threadanzahl muss nicht-negativ sein -security.configuration_invalid_port_rule_intersection=Erlaubte und ausgeschlossene lokale Ports dürfen sich nicht überschneiden +security.configuration_invalid_port_rule_intersection=Erlaubte und ausgeschlossene lokale Ports dürfen sich nicht überschneiden security.configuration_invalid_port_negative=Erlaubte lokalen Ports: Portnummer darf nicht negativ sein -security.configuration_invalid_port_over_max=Erlaubte lokalen Ports: Portnummer darf nicht MAXIMUM nicht überschreiten -security.configuration_invalid_port_allowed_in_rage=Erlaubte lokale Portnummern dürfen nicht größer sein als allowPortsAbove -security.configuration_invalid_port_exclude_outside_rage=Ausgeschlossene lokale Ports müssen größer sein als allowPortsAbove +security.configuration_invalid_port_over_max=Erlaubte lokalen Ports: Portnummer darf nicht MAXIMUM nicht überschreiten +security.configuration_invalid_port_allowed_in_rage=Erlaubte lokale Portnummern dürfen nicht größer sein als allowPortsAbove +security.configuration_invalid_port_exclude_outside_rage=Ausgeschlossene lokale Ports müssen größer sein als allowPortsAbove + +# Ares Code Execution +security.advice.linkage.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Verknüpfungsfehler beim Zugriff auf das Feld '%s' in AdviceSettings +security.advice.class.not.found.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Die Klasse 'JavaSecurityTestCaseSettings' konnte nicht gefunden werden, um auf das Feld '%s' zuzugreifen +security.advice.no.such.field.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Das Feld '%s' wurde in AdviceSettings nicht gefunden +security.advice.null.pointer.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): NullPointerException beim Zugriff auf das Feld '%s' in AdviceSettings +security.advice.illegal.access.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Das Feld '%s' ist in AdviceSettings nicht zugänglich +security.advice.illegal.argument.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Ungültiges Argument beim Setzen des Feldes '%s' in AdviceSettings mit dem Wert %s +security.advice.inaccessible.object.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Das Feld '%s' ist in AdviceSettings unzugänglich +security.advice.transform.path.exception=Kann nicht in Pfad umgewandelt werden +security.instrumentation.inaccessible.object.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Das Feld '%s' in der Klasse '%s' kann aufgrund von JVM-Sicherheitsbeschränkungen nicht zugänglich gemacht werden. +security.instrumentation.illegal.access.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Der Zugriff auf das Feld '%s' in der Klasse '%s' wurde verweigert. Der Zugriff auf das Feld ist nicht gestattet. +security.instrumentation.illegal.argument.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Das Feld '%s' in der Klasse '%s' kann nicht abgerufen werden, da die bereitgestellte Instanz vom Typ '%s' ist, der nicht die deklarierende Klasse oder Schnittstelle ist. +security.instrumentation.null.pointer.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Das Feld '%s' ist unerwartet null. Dies kann auf ein beschädigtes oder fehlerhaft initialisiertes Objekt hinweisen. +security.instrumentation.exception.in-initializer.error=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Die Initialisierung des Feldes '%s' in der Klasse '%s' ist aufgrund eines Fehlers bei der statischen Initialisierung oder Einrichtung des Feldes fehlgeschlagen. +security.policy.read.failed=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Die Sicherheitsrichtliniendatei '%s' konnte nicht gelesen werden. +security.policy.data.bind.failed=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Daten aus der Sicherheitsrichtliniendatei '%s' konnten nicht gebunden werden. +security.policy.unsupported.operation=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Die Sicherheitsrichtlinie enthält nicht unterstützte Vorgänge. +security.policy.io.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Beim Zugriff auf die Sicherheitsrichtliniendatei '%s' ist ein Fehler aufgetreten. +security.policy.restricted.package.null=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Der Name des eingeschränkten Pakets darf nicht null sein. +security.policy.package.main.class.null=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Ausführung): Die Hauptklasse innerhalb des Pakets darf nicht null sein. + +# Student Code Execution +security.advice.illegal.method.execution=Ares Sicherheitsfehler (Grund: Student-Code; Phase: Ausführung): %s hat versucht, illegal %s von %s über %s auszuführen, wurde jedoch von Ares blockiert. +security.archunit.illegal.execution=\n\u0020- Ares Sicherheitsfehler (Grund: Student-Code; Phase: Ausführung):\n\u0020\u0020- %s + +# Ares Code Creation +security.settings.error=Sicherheitskonfigurationsfehler: Die Klasse für die spezifischen Sicherheitstestfalleinstellungen konnte nicht gefunden werden. Stellen Sie sicher, dass der Klassenname korrekt ist und die Klasse zur Laufzeit verfügbar ist. +security.settings.reset.method.not.found=Sicherheitskonfigurationsfehler: Die 'reset'-Methode konnte in der angegebenen Klasse nicht gefunden werden. Stellen Sie sicher, dass die Methode existiert und korrekt benannt ist. +security.settings.reset.access.denied=Sicherheitskonfigurationsfehler: Der Zugriff auf die 'reset'-Methode wurde verweigert. Stellen Sie sicher, dass die Methode öffentlich und zugänglich ist. +security.settings.error.within.method=Sicherheitskonfigurationsfehler: Beim Aufruf der 'reset'-Methode ist ein Fehler aufgetreten. Dies könnte auf ein zugrunde liegendes Problem in der Methodenimplementierung hinweisen. +security.general.utility.initialization=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Dienstprogrammsklasse sollte nicht instanziiert werden. +security.instrumentation.binding.error=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Konnte keine allgemeine Bindung erstellen. +security.instrumentation.read.method.binding.error=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Konnte keine Bindung für die Leseweg-Methode erstellen. +security.instrumentation.read.constructor.binding.error=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Konnte keine Bindung für den Leseweg-Konstruktor erstellen. +security.instrumentation.overwrite.method.binding.error=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Konnte keine Bindung für die Überschreibweg-Methode erstellen. +security.instrumentation.overwrite.constructor.binding.error=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Konnte keine Bindung für den Überschreibweg-Konstruktor erstellen. +security.instrumentation.delete.method.binding.error=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Konnte keine Bindung für die Löschweg-Methode erstellen. +security.instrumentation.delete.constructor.binding.error=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Konnte keine Bindung für den Löschweg-Konstruktor erstellen. +security.instrumentation.execute.method.binding.error=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Konnte keine Bindung für die Ausführweg-Methode erstellen. +security.instrumentation.execute.constructor.binding.error=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Konnte keine Bindung für den Ausführweg-Konstruktor erstellen. +security.instrumentation.agent.installation.error=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Die Installation des Agenten auf %s ist fehlgeschlagen. +security.creation.reset.class.not.found.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Die Klasse für die spezifischen Sicherheitstestfalleinstellungen konnte nicht gefunden werden. Stellen Sie sicher, dass der Klassenname korrekt ist und die Klasse zur Laufzeit verfügbar ist. +security.creation.reset.no.method.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Die 'reset'-Methode konnte in der angegebenen Klasse nicht gefunden werden. Stellen Sie sicher, dass die Methode existiert und korrekt benannt ist. +security.creation.reset.illegal.access.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Der Zugriff auf die 'reset'-Methode wurde verweigert. Stellen Sie sicher, dass die Methode öffentlich und zugänglich ist. +security.creation.reset.invocation.target.exception=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Beim Aufruf der 'reset'-Methode ist ein Fehler aufgetreten. Dies könnte auf ein zugrunde liegendes Problem in der Methodenimplementierung hinweisen. +security.policy.java.build.mode.null=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Der Build-Modus darf nicht null sein. +security.policy.java.architecture.mode.null=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Der Architekturmodus darf nicht null sein. +security.policy.java.aop.mode.null=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Der AOP-Modus darf nicht null sein. +security.policy.java.not.correct.set=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Die x darf nicht null sein. +security.file-tools.read.content.failure=Ares Sicherheitsfehler (Phase: Erstellung): Konnte den Inhalt der Quelldatei nicht lesen. +security.advice.settings.data.type.mismatch.string=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Ungültiger Datentyp für String-Rateneinstellung: %s, erwartet wurde String. +security.advice.settings.data.type.mismatch.string[]=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Ungültiger Datentyp für String[]-Rateneinstellung: %s, erwartet wurde Liste. +security.advice.settings.data.type.mismatch.string[][]=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Ungültiger Datentyp für String[][]-Rateneinstellung: %s, erwartet wurde Liste>. +security.advice.settings.data.type.mismatch.int[]=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Ungültiger Datentyp für int[]-Rateneinstellung: %s, erwartet wurde Liste. +security.advice.settings.data.type.unknown=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Unbekannter Datentyp beim Erstellen des Wertes %s für die Rateneinstellungen %s %s +security.advice.invalid.format=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Formatfehler beim Erstellen des Wertes %s für die Rateneinstellungen %s %s +security.advice.settings.invalid.file.permission=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Ungültige Dateiberechtigung: %s +security.advice.settings.invalid.network.permission=Ares Sicherheitsfehler (Grund: Ares-Code; Phase: Erstellung): Ungültige Netzwerkberechtigung: %s + +# Policy reader and configurer +security.policy.reader.path.blank=Der Pfad zur Richtliniendatei ist nicht angegeben. +security.policy.reader.path.not.exists=Der folgende Pfad zur Richtliniendatei existiert nicht: %s +security.policy.reader.path.invalid=Der folgende Pfad zur Richtliniendatei ist ungültig: %s +security.policy.within.path.wrong.bytecode.path=Der folgende Pfad ist für withinPath ungültig. Er sollte mit 'classes' oder 'test-classes' beginnen: %s +security.policy.within.path.invalid=Der folgende Pfad ist für withinPath ungültig: %s + # test guard and deadline handling test_guard.extended_deadline_zero_or_negative=Deadline Verlängerung muss positiv sein: %s -test_guard.hidden_test_before_deadline_message=Versteckte Tests werden nach der Deadline ausgeführt. -test_guard.hidden_test_missing_deadline=Für den versteckten Test %s konnte keine Deadline gefunden werden -test_guard.invalid_deadline_format=Ungültiges ExtendedDeadline Format: %s -test_guard.invalid_extended_deadline_format=Ungültiges ExtendedDeadline Format: %s +test_guard.hidden_test_before_deadline_message=Versteckte Tests werden nach der Deadline ausgeführt. +test_guard.hidden_test_missing_deadline=Für den versteckten Test %s konnte keine Deadline gefunden werden +test_guard.invalid_deadline_format=Ungültiges ExtendedDeadline Format: %s +test_guard.invalid_extended_deadline_format=Ungültiges ExtendedDeadline Format: %s test_guard.obfuscate_hidden_test_missing_deadline=Dem versteckten Test %s fehlt ein Deadline test_guard.public_test_cannot_have_deadline=Öffentlicher Test %s kann keine Deadline haben test_guard.test_cannot_be_public_and_hidden=Test %s kann nicht öffentlich und versteckt sein @@ -69,7 +136,7 @@ reporting.problem_location_hint=/// Mögliche Problemstelle: %s /// sanitization.sanitization_exception_message=%s warf eine Exception beim Erfassen von Informationen. (%s) sanitization.sanitization_failure=%s geworfen, kann aber nicht angezeigt werden: %s # timeout -timeout.failure_message=Zeitüberschreitung der Ausführung nach %s +timeout.failure_message=Zeitüberschreitung der Ausführung nach %s # jqwik jqwik.duplicate_locale_extension_failure=Locale-Erweiterung bereits aktiv # structural @@ -87,7 +154,7 @@ structural.class.extends=Die Klasse '%s' ist nicht wie erwartet eine Unterklasse structural.class.implements=Die Klasse '%s' implementiert die Schnittstelle '%s' nicht wie erwartet. Implementiere die Schnittstelle und ihre Methoden. structural.class.interface=Der Typ '%s' ist keine, wie erwartet. structural.class.modifiers=Der/die Modifikator(en) (Zugriffstyp, abstrakt, etc.) von %s sind nicht wie erwartet implementiert. -structural.common.classLoadFailed=Problem während des %s-Tests: %s. Ãœberprüfe noch einmal, ob du die Klasse korrekt implementiert hast\! +structural.common.classLoadFailed=Problem während des %s-Tests: %s. Ãœberprüfe noch einmal, ob du die Klasse korrekt implementiert hast\! structural.common.noParams=keinen Parametern structural.common.withParams=den Parametern: %s structural.constructor.annotations=Die Annotation(en) des erwarteten Konstruktors der Klasse '%s' mit %s sind nicht wie erwartet implementiert. @@ -97,19 +164,51 @@ structural.method.annoations=Die Annotation(en) der erwarteten Methode '%s' der structural.method.modifiers=Die Modifikatoren (Zugriffstyp, abstrakt, etc.) der erwarteten Methode '%s' der Klasse '%s' mit %s sind nicht wie erwartet implementiert. structural.method.name=Die erwartete Methode '%s' der Klasse '%s' mit %s wurde nicht gefunden oder ist falsch benannt. structural.method.parameters=Die Parameter der erwarteten Methode '%s' der Klasse '%s' mit %s sind nicht wie erwartet implementiert. -structural.method.return=Der Rückgabetyp der erwarteten Methode '%s' der Klasse '%s' mit %s ist nicht wie erwartet implementiert. +structural.method.return=Der Rückgabetyp der erwarteten Methode '%s' der Klasse '%s' mit %s ist nicht wie erwartet implementiert. structural.scan.correctNameCorrectPlace=Die Klasse %s hat den richtigen Namen und befindet sich im richtigen Paket. structural.scan.correctNameMisplaced=Die Klasse %s hat den richtigen Namen, aber das Paket, in dem sie sich befindet, %s, weicht von der Erwartung ab. Stelle sicher, dass sie dem richtigen Paket zugeordnet ist. -structural.scan.correctNameMultiple=Die Klasse %s hat den richtigen Namen, aber sie befindet sich mehrfach im Projekt und in den Paketen: %s, was von der Erwartung abweicht. Stelle sicher, dass du die Klasse dem richtigen Paket zuordnest und alle überflüssigen Pakete entfernst. +structural.scan.correctNameMultiple=Die Klasse %s hat den richtigen Namen, aber sie befindet sich mehrfach im Projekt und in den Paketen: %s, was von der Erwartung abweicht. Stelle sicher, dass du die Klasse dem richtigen Paket zuordnest und alle überflüssigen Pakete entfernst. structural.scan.default=Die Klasse konnte nicht gescannt werden. structural.scan.notFound=Die Aufgabe erwartet eine Klasse mit dem Namen %s in dem Paket %s. Du hast die Klasse in der Aufgabe nicht implementiert. -structural.scan.typosCorrectPlace=Die Aufgabe erwartet eine Klasse mit dem Namen %s. Wir haben festgestellt, dass du eine Klasse %s implementiert hast, die von der Erwartung abweicht. Ãœberprüfe auf Tippfehler im Klassennamen. -structural.scan.typosMisplaced=Die Aufgabe erwartet eine Klasse mit dem Namen %s im Paket %s. Wir haben festgestellt, dass du eine Klasse %s im Paket %s implementiert hast, die von der Erwartung abweicht. Ãœberprüfe den Klassennamen auf Tippfehler und stelle sicher, dass du die Klasse dem richtigen Paket zuordnest. -structural.scan.typosMultiple=Die Aufgabe erwartet eine Klasse mit dem Namen %s in dem Paket %s. Wir haben festgestellt, dass du eine Klasse %s im Paket %s implementiert hast, die von der Erwartung abweicht. Ãœberprüfe den Klassennamen auf Tippfehler und stelle sicher, dass du die Klasse in das richtige Paket einordnest und alle überflüssigen Klassen entfernst. -structural.scan.wrongCaseCorrectPlace=Die Aufgabe erwartet eine Klasse mit dem Namen %s. Wir haben festgestellt, dass du eine Klasse %s implementiert hast, die von der Erwartung abweicht. Prüfe auf falsche Groß-/Kleinschreibung. -structural.scan.wrongCaseMisplaced=Die Aufgabe erwartet eine Klasse mit dem Namen %s im Paket %s. Wir haben festgestellt, dass du eine Klasse %s im Paket %s implementiert hast, die von der Erwartung abweicht. Ãœberprüfe auf falsche Groß-/Kleinschreibung und stelle sicher, dass du sie in das richtige Paket einordnest. -structural.scan.wrongCaseMultiple=Die Aufgabe erwartet eine Klasse mit dem Namen %s im Paket %s. Wir haben festgestellt, dass du eine Klasse %s im Paket %s implementiert hast, die von der Erwartung abweicht. Prüfe auf falsche Groß-/Kleinschreibung und stelle sicher, dass du eine Klasse dem richtigen Paket zuordnest und alle überflüssigen Klassen entfernst. +structural.scan.typosCorrectPlace=Die Aufgabe erwartet eine Klasse mit dem Namen %s. Wir haben festgestellt, dass du eine Klasse %s implementiert hast, die von der Erwartung abweicht. Ãœberprüfe auf Tippfehler im Klassennamen. +structural.scan.typosMisplaced=Die Aufgabe erwartet eine Klasse mit dem Namen %s im Paket %s. Wir haben festgestellt, dass du eine Klasse %s im Paket %s implementiert hast, die von der Erwartung abweicht. Ãœberprüfe den Klassennamen auf Tippfehler und stelle sicher, dass du die Klasse dem richtigen Paket zuordnest. +structural.scan.typosMultiple=Die Aufgabe erwartet eine Klasse mit dem Namen %s in dem Paket %s. Wir haben festgestellt, dass du eine Klasse %s im Paket %s implementiert hast, die von der Erwartung abweicht. Ãœberprüfe den Klassennamen auf Tippfehler und stelle sicher, dass du die Klasse in das richtige Paket einordnest und alle überflüssigen Klassen entfernst. +structural.scan.wrongCaseCorrectPlace=Die Aufgabe erwartet eine Klasse mit dem Namen %s. Wir haben festgestellt, dass du eine Klasse %s implementiert hast, die von der Erwartung abweicht. Prüfe auf falsche Groß-/Kleinschreibung. +structural.scan.wrongCaseMisplaced=Die Aufgabe erwartet eine Klasse mit dem Namen %s im Paket %s. Wir haben festgestellt, dass du eine Klasse %s im Paket %s implementiert hast, die von der Erwartung abweicht. Ãœberprüfe auf falsche Groß-/Kleinschreibung und stelle sicher, dass du sie in das richtige Paket einordnest. +structural.scan.wrongCaseMultiple=Die Aufgabe erwartet eine Klasse mit dem Namen %s im Paket %s. Wir haben festgestellt, dass du eine Klasse %s im Paket %s implementiert hast, die von der Erwartung abweicht. Prüfe auf falsche Groß-/Kleinschreibung und stelle sicher, dass du eine Klasse dem richtigen Paket zuordnest und alle überflüssigen Klassen entfernst. structural.scan.defaultPackage= (d.h. kein Paket) + +# reflection test utils +reflection_test_utils.attribute_access=Das Attribut '%s' konnte aus der Klasse %s nicht abgerufen werden, da der Zugriff auf das Attribut verweigert wurde. Stellen Sie sicher, dass Sie die Modifizierer des %s überprüfen. +reflection_test_utils.attribute_not_found=Das Attribut '%s' konnte aus der Klasse %s nicht abgerufen werden, da das Attribut nicht existiert. Stellen Sie sicher, dass das Attribut korrekt implementiert ist. +reflection_test_utils.attribute_null=Der Wert des Attributs '%s' konnte nicht abgerufen werden, da das Objekt null war. +reflection_test_utils.attribute_set_final=Der Wert des Attributs '%s' aus der Klasse %s konnte nicht gesetzt werden, da es final ist. Stellen Sie sicher, dass Sie die Modifizierer des Attributs überprüfen. +reflection_test_utils.class_initialization=Die Klasse '%s' konnte nicht initialisiert werden, da eine Ausnahme in einem statischen Initialisierungsblock ausgelöst wurde. Stellen Sie sicher, dass die statische Initialisierung fehlerfrei implementiert ist. +reflection_test_utils.class_not_found=Die Klasse '%s' wurde innerhalb der Übermittlung nicht gefunden. Stellen Sie sicher, dass sie korrekt implementiert ist. +reflection_test_utils.constructor_abstract_class=Die Klasse %s konnte nicht instanziiert werden, da die Klasse abstrakt ist und keinen Konstruktor haben sollte. Stellen Sie sicher, dass der Konstruktor der Klasse entfernt wird. +reflection_test_utils.constructor_access=Die Klasse %s konnte nicht instanziiert werden, da der Zugriff auf ihren Konstruktor mit den Parametern: %s verweigert wurde. Stellen Sie sicher, dass Sie die Modifizierer des %s überprüfen. +reflection_test_utils.constructor_arguments=Die Klasse %s konnte nicht instanziiert werden, da der tatsächliche Konstruktor oder keiner der tatsächlichen Konstruktoren dieser Klasse mit dem erwarteten übereinstimmt. Wir erwarten unter anderem einen mit %s Parametern, der nicht existiert. Stellen Sie sicher, dass Sie diesen Konstruktor korrekt implementieren. +reflection_test_utils.constructor_class_init=Die Klasse %s konnte nicht instanziiert werden, da der Konstruktor mit %d Parametern nicht initialisiert werden konnte. +reflection_test_utils.constructor_internal_exception=Die Klasse %s konnte nicht instanziiert werden, da der Konstruktor mit %d Parametern eine Ausnahme ausgelöst hat und nicht initialisiert werden konnte. Stellen Sie sicher, dass Sie die Implementierung des Konstruktors überprüfen. +reflection_test_utils.constructor_not_found_args=Die Klasse %s konnte nicht instanziiert werden, da die Klasse keinen Konstruktor mit den Argumenten: %s hat. Stellen Sie sicher, dass Sie diesen Konstruktor korrekt implementieren. +reflection_test_utils.constructor_not_found_params=Der Konstruktor %s in der Klasse %s konnte nicht gefunden werden, da der Konstruktor nicht existiert. Stellen Sie sicher, dass Sie diesen Konstruktor korrekt implementieren. +reflection_test_utils.constructor_null_args=Die Klasse %s konnte nicht instanziiert werden, da kein passender Konstruktor gefunden werden konnte, weil eines der übergebenen Argumente null war. +reflection_test_utils.method_access=Die Methode '%s' in der Klasse %s konnte nicht aufgerufen werden, da der Zugriff auf die Methode verweigert wurde. Stellen Sie sicher, dass Sie die Modifizierer des %s überprüfen. +reflection_test_utils.method_class_init=Die Methode '%s' in der Klasse %s konnte nicht aufgerufen werden, da die durch diese Methode ausgelöste statische Initialisierung fehlgeschlagen ist. Stellen Sie sicher, dass Sie die durch diese Methode ausgelöste Initialisierung überprüfen. +reflection_test_utils.method_internal_exception=Die Methode '%s' in der Klasse %s konnte nicht aufgerufen werden, aufgrund einer Ausnahme innerhalb der Methode: %s +reflection_test_utils.method_name_null=Die Methode '%s' in der Klasse %s konnte nicht gefunden werden, da der Name der Methode null ist. Stellen Sie sicher, dass Sie den Namen der Methode überprüfen. +reflection_test_utils.method_not_found=Die Methode '%s' in der Klasse %s konnte nicht gefunden werden, da die Methode nicht existiert. Stellen Sie sicher, dass Sie diese Methode korrekt implementieren. +reflection_test_utils.method_null_args=Die Methode '%s' konnte nicht gefunden werden, da eines der übergebenen Argumente null war. +reflection_test_utils.method_null_target=Die Methode '%s' konnte nicht gefunden werden, da das Objekt null war. +reflection_test_utils.method_null_target_instance=Die Methode '%s' in der Klasse %s konnte nicht aufgerufen werden, da das Objekt null war und die Methode eine Instanzmethode ist. Stellen Sie sicher, dass Sie den statischen Modifikator der Methode überprüfen. +reflection_test_utils.method_parameters=Die Methode '%s' in der Klasse %s konnte nicht aufgerufen werden, da die Parameter nicht korrekt implementiert sind. Stellen Sie sicher, dass Sie die Parameter der Methode überprüfen. +reflection_test_utils.no_parameters= +reflection_test_utils.with_parameters=mit den Parametern: %s\u0020 +reflection_test_utils.construct.class=Klasse +reflection_test_utils.construct.constructor=Konstruktor +reflection_test_utils.construct.field=Attribut +reflection_test_utils.construct.method=Methode + # dynamics dynamics.check.final=%s ist final. dynamics.check.not_final=%s ist nicht final. @@ -129,7 +228,7 @@ dynamics.constructor.abstract=Objekt der Klasse %s konnte nicht erzeugt werden, dynamics.constructor.access=Zugriff auf den Konstruktor %s nicht möglich, sind die Zugriffsmodifikatoren korrekt? dynamics.constructor.arguments=Konstruktor %s konnte Argumente mit den Typen %s nicht entgegennehmen. dynamics.constructor.name=Konstruktor %s -dynamics.constructor.not_found=Kein Konstruktor für %s mit Parametern %s gefunden. +dynamics.constructor.not_found=Kein Konstruktor für %s mit Parametern %s gefunden. dynamics.field.access=Zugriff auf das Attribut %s der Klasse %s nicht möglich, sind die Zugriffsmodifikatoren korrekt? dynamics.field.cast=Attribut %s der Klasse %s kann nicht nach %s gecastet werden. dynamics.field.name=Attribut %s @@ -139,25 +238,25 @@ dynamics.field.target=Attribut %s von Klasse %s wurde nicht auf einem passenden dynamics.field.final=Attribut %s der Klasse %s kann nicht gesetzt werden, da es final ist. dynamics.field.cast_set=Attribut %s der Klasse %s vom Typ %s kann keine Instanz der Klasse %s zugewiesen werden. dynamics.method.access=Zugriff auf die Methode %s nicht möglich, sind die Zugriffsmodifikatoren korrekt? -dynamics.method.arguments=Methode %s konnte Argumente mit den Typen %s für Objekt vom Typ %s nicht entgegennehmen. -dynamics.method.cast=Rückgabewert der Methode %s kann nicht nach %s gecastet werden, ist der Rückgabetyp korrekt? +dynamics.method.arguments=Methode %s konnte Argumente mit den Typen %s für Objekt vom Typ %s nicht entgegennehmen. +dynamics.method.cast=Rückgabewert der Methode %s kann nicht nach %s gecastet werden, ist der Rückgabetyp korrekt? dynamics.method.name=Methode %s dynamics.method.not_found=Keine Methode %s %s gefunden. dynamics.method.null=Methode %s konnte nicht aufgerufen werden, das Objekt ist null. -dynamics.method.return=Methode %s gibt nicht %s zurück. +dynamics.method.return=Methode %s gibt nicht %s zurück. dynamics.method.static=Methode %s ist nicht statisch. #AST -ast.method.has_no=Unerwünschte Anweisung gefunden: +ast.method.has_no=Unerwünschte Anweisung gefunden: ast.method.convert_from_file=Die Datei %s konnte nicht gelesen werden. ast.method.read_from_directory=Der Ordner %s konnte nicht gelesen werden. ast.method.to_string=Zwischen %s und %s ast.check.has_begin_end=Zeile %s (Spalte %s) -ast.check.not_has_begin=kein Anfang verügbar -ast.check.not_has_end=kein Ende verügbar +ast.check.not_has_begin=kein Anfang verügbar +ast.check.not_has_end=kein Ende verügbar ast.check.begin_end_prefix=\u0020\u0020\u0020- %s bei der Methode %s ast.method.get_formatted_unwanted_node_string_prefix= - %s wurde gefunden: ast.method.get_formatted_file_string_prefix= - In %s: -ast.recursion.has.recursion=Erwünschte Rekursion nicht gefunden: +ast.recursion.has.recursion=Erwünschte Rekursion nicht gefunden: ast.recursion.no.recursion.found=Kein rekursiver Aufruf festgestellt ast.enum.loop_type.for=For-Anweisung diff --git a/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/file-system-access-methods.txt b/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/file-system-access-methods.txt index a9db91a5..3006af40 100644 --- a/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/file-system-access-methods.txt +++ b/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/file-system-access-methods.txt @@ -42,8 +42,9 @@ java.net.http.HttpResponse$BodyHandlers.ofFile(java.nio.file.Path, [Ljava.nio.fi java.net.http.HttpResponse$BodyHandlers.ofFileDownload(java.nio.file.Path, [Ljava.nio.file.OpenOption;) java.net.http.HttpResponse$BodySubscribers.ofFile(java.nio.file.Path) java.net.http.HttpResponse$BodySubscribers.ofFile(java.nio.file.Path, [Ljava.nio.file.OpenOption;) +java.nio.channels.AsynchronousFileChannel java.nio.channels.FileChannel -java.nio.file.Files +java.nio.file java.security.KeyStore$Builder.newInstance(java.io.File, java.security.KeyStore$ProtectionParameter) java.security.KeyStore$Builder.newInstance(java.lang.String, java.security.Provider, java.io.File, java.security.KeyStore$ProtectionParameter) java.security.KeyStore.getInstance(java.io.File, [C) @@ -182,42 +183,6 @@ javax.naming.spi.NamingManager.getObjectInstance(java.lang.Object, javax.naming. javax.naming.spi.NamingManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable) javax.naming.spi.NamingManager.getURLContext(java.lang.String, java.util.Hashtable) javax.print.ServiceUI.printDialog(java.awt.GraphicsConfiguration, int, int, [Ljavax.print.PrintService;, javax.print.PrintService, javax.print.DocFlavor, javax.print.attribute.PrintRequestAttributeSet) -javax.security.auth.PrivateCredentialPermission.(java.lang.String, java.lang.String) -javax.security.auth.Subject.(boolean, java.util.Set, java.util.Set, java.util.Set) -javax.security.auth.Subject.callAs(javax.security.auth.Subject, java.util.concurrent.Callable) -javax.security.auth.Subject.current() -javax.security.auth.Subject.doAs(javax.security.auth.Subject, java.security.PrivilegedAction) -javax.security.auth.Subject.doAs(javax.security.auth.Subject, java.security.PrivilegedExceptionAction) -javax.security.auth.Subject.doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedAction, java.security.AccessControlContext) -javax.security.auth.Subject.doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction, java.security.AccessControlContext) -javax.security.auth.Subject.getPrincipals(java.lang.Class) -javax.security.auth.Subject.getPrivateCredentials(java.lang.Class) -javax.security.auth.Subject.getPublicCredentials(java.lang.Class) -javax.security.auth.Subject.getSubject(java.security.AccessControlContext) -javax.security.auth.Subject.toString() -javax.security.auth.kerberos.KerberosKey.(javax.security.auth.kerberos.KerberosPrincipal, [C, java.lang.String) -javax.security.auth.kerberos.KerberosPrincipal.(java.lang.String) -javax.security.auth.kerberos.KerberosPrincipal.(java.lang.String, int) -javax.security.auth.kerberos.KerberosTicket.refresh() -javax.security.auth.kerberos.KeyTab.exists() -javax.security.auth.kerberos.KeyTab.getKeys(javax.security.auth.kerberos.KerberosPrincipal) -javax.security.auth.login.AppConfigurationEntry$LoginModuleControlFlag.toString() -javax.security.auth.login.LoginContext.(java.lang.String) -javax.security.auth.login.LoginContext.(java.lang.String, javax.security.auth.Subject) -javax.security.auth.login.LoginContext.(java.lang.String, javax.security.auth.Subject, javax.security.auth.callback.CallbackHandler) -javax.security.auth.login.LoginContext.(java.lang.String, javax.security.auth.Subject, javax.security.auth.callback.CallbackHandler, javax.security.auth.login.Configuration) -javax.security.auth.login.LoginContext.(java.lang.String, javax.security.auth.callback.CallbackHandler) -javax.security.auth.login.LoginContext.logout() -javax.security.auth.x500.X500Principal.(java.lang.String) -javax.security.auth.x500.X500Principal.(java.lang.String, java.util.Map) -javax.security.auth.x500.X500Principal.getName(java.lang.String, java.util.Map) -javax.security.sasl.Sasl.createSaslClient([Ljava.lang.String;, java.lang.String, java.lang.String, java.lang.String, java.util.Map, javax.security.auth.callback.CallbackHandler) -javax.security.sasl.Sasl.createSaslServer(java.lang.String, java.lang.String, java.lang.String, java.util.Map, javax.security.auth.callback.CallbackHandler) -javax.sql.rowset.spi.SyncFactory.getInstance(java.lang.String) -javax.sql.rowset.spi.SyncFactory.getRegisteredProviders() -javax.sql.rowset.spi.SyncFactory.registerProvider(java.lang.String) -javax.sql.rowset.spi.SyncFactory.unregisterProvider(java.lang.String) -javax.sql.rowset.spi.SyncProviderException.getSyncResolver() javax.swing.JFileChooser.() javax.swing.JFileChooser.(java.io.File) javax.swing.JFileChooser.(java.io.File, javax.swing.filechooser.FileSystemView) @@ -281,28 +246,6 @@ javax.xml.validation.SchemaFactory.newSchema(java.io.File) javax.xml.xpath.XPathFactory.newDefaultInstance() javax.xml.xpath.XPathFactory.newInstance() javax.xml.xpath.XPathFactory.newInstance(java.lang.String) -jdk.xml.internal.JdkProperty.(jdk.xml.internal.JdkProperty$ImplPropMap, java.lang.Class, java.lang.Object, jdk.xml.internal.JdkProperty$State) -jdk.xml.internal.JdkXmlFeatures.(boolean) -jdk.xml.internal.JdkXmlFeatures.update() -jdk.xml.internal.JdkXmlUtils.getCatalogFeatures(java.lang.String, java.lang.String, java.lang.String, java.lang.String) -jdk.xml.internal.JdkXmlUtils.getDOMDocument() -jdk.xml.internal.JdkXmlUtils.getDOMFactory(boolean) -jdk.xml.internal.JdkXmlUtils.getSAXFactory(boolean) -jdk.xml.internal.JdkXmlUtils.getSAXTransformFactory(boolean) -jdk.xml.internal.JdkXmlUtils.getXMLReader(boolean, boolean) -jdk.xml.internal.SecuritySupport.doesFileExist(java.io.File) -jdk.xml.internal.SecuritySupport.getErrorMessage(java.util.Locale, java.lang.String, java.lang.String, [Ljava.lang.Object;) -jdk.xml.internal.SecuritySupport.getFileInputStream(java.io.File) -jdk.xml.internal.SecuritySupport.getJAXPSystemProperty(java.lang.Class, java.lang.String, java.lang.String) -jdk.xml.internal.SecuritySupport.getJAXPSystemProperty(java.lang.String) -jdk.xml.internal.SecuritySupport.getResourceAsStream(java.lang.ClassLoader, java.lang.String) -jdk.xml.internal.SecuritySupport.getResourceAsStream(java.lang.String) -jdk.xml.internal.SecuritySupport.getResourceBundle(java.lang.String) -jdk.xml.internal.SecuritySupport.getResourceBundle(java.lang.String, java.util.Locale) -jdk.xml.internal.SecuritySupport.isDirectory(java.io.File) -jdk.xml.internal.SecuritySupport.isFileExists(java.io.File) -jdk.xml.internal.SecuritySupport.readConfig(java.lang.String) -jdk.xml.internal.SecuritySupport.readConfig(java.lang.String, boolean) org.xml.sax.helpers.ParserAdapter.() org.xml.sax.helpers.ParserFactory.makeParser() org.xml.sax.helpers.ParserFactory.makeParser(java.lang.String) @@ -361,10 +304,6 @@ sun.awt.shell.ShellFolder.renameTo(java.io.File) sun.awt.shell.ShellFolder.setLastModified(long) sun.awt.shell.ShellFolder.setReadOnly() sun.awt.shell.ShellFolderManager.checkFile(java.io.File, java.lang.SecurityManager) -sun.jvmstat.perfdata.monitor.protocol.file.FileMonitoredVm.(sun.jvmstat.monitor.VmIdentifier, int) -sun.jvmstat.perfdata.monitor.protocol.file.MonitoredHostProvider.getMonitoredVm(sun.jvmstat.monitor.VmIdentifier) -sun.jvmstat.perfdata.monitor.protocol.file.MonitoredHostProvider.getMonitoredVm(sun.jvmstat.monitor.VmIdentifier, int) -sun.jvmstat.perfdata.monitor.protocol.file.PerfDataBuffer.(sun.jvmstat.monitor.VmIdentifier) sun.launcher.LauncherHelper.checkAndLoadMain(boolean, int, java.lang.String) sun.net.httpserver.simpleserver.FileServerHandler.(java.nio.file.Path, java.util.function.UnaryOperator) sun.net.httpserver.simpleserver.FileServerHandler.create(java.nio.file.Path, java.util.function.UnaryOperator) diff --git a/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/network-access-methods.txt b/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/network-access-methods.txt index 84cdc663..367dd5cc 100644 --- a/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/network-access-methods.txt +++ b/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/network-access-methods.txt @@ -1,7 +1,1312 @@ -java.net -java.net.http -javax.net -javax.net.ssl -com.sun.net.httpserver -sun.net.httpserver -jdk.net \ No newline at end of file +java.net.URLClassLoader.findResource(java.lang.String) +java.net.Inet6Address.getAddress() +java.net.Inet6Address.getScopeId() +java.net.Inet6Address.getScopedInterface() +java.net.Inet6Address.isLoopbackAddress() +java.net.Inet6Address.equals(java.lang.Object) +java.net.Inet6Address.isLinkLocalAddress() +java.net.Inet6Address.hashCode() +java.net.Inet6Address.isSiteLocalAddress() +java.net.Inet6Address.isMCNodeLocal() +java.net.Inet6Address.isMCSiteLocal() +java.net.Inet6Address.isAnyLocalAddress() +java.net.Inet6Address.isMCLinkLocal() +java.net.Inet6Address.isMCGlobal() +java.net.Inet6Address.isMulticastAddress() +java.net.Inet6Address.isIPv4CompatibleAddress() +java.net.Inet6Address.getHostAddress() +java.net.Inet6Address.isMCOrgLocal() +java.net.ProxySelector.of(java.net.InetSocketAddress) +java.net.Proxy.type() +java.net.Proxy.<init>(java.net.Proxy$Type, java.net.SocketAddress) +java.net.Proxy.address() +java.net.Socket.<init>(java.net.Proxy) +java.net.URL.openConnection(java.net.Proxy) +sun.net.NetworkClient.<init>() +sun.net.NetworkClient.<init>(java.lang.String, int) +sun.net.www.http.HttpClient.New(java.net.URL, java.net.Proxy, int, boolean, sun.net.www.protocol.http.HttpURLConnection) +sun.net.www.http.HttpClient.New(java.net.URL) +sun.net.www.http.HttpClient.New(java.net.URL, boolean) +sun.net.www.http.HttpClient.<init>(java.net.URL, java.lang.String, int, boolean, int) +sun.net.www.protocol.ftp.FtpURLConnection.connect() +java.net.Proxy.equals(java.lang.Object) +java.net.Proxy.hashCode() +java.net.Proxy.toString() +sun.net.www.protocol.http.HttpURLConnection.usingProxy() +sun.net.www.http.HttpClient.getProxyHostUsed() +sun.net.www.http.HttpClient.getProxyPortUsed() +sun.net.www.protocol.http.HttpURLConnection.<init>(java.net.URL, java.lang.String, int) +java.net.InetSocketAddress.hashCode() +java.net.InetSocketAddress.equals(java.lang.Object) +java.net.InetSocketAddress.toString() +java.net.InetSocketAddress.getAddress() +java.net.InetSocketAddress.isUnresolved() +java.net.InetSocketAddress.getPort() +java.net.InetSocketAddress.getHostName() +java.net.InetSocketAddress.getHostString() +java.net.InetSocketAddress.<init>(java.net.InetAddress, int) +java.net.InetSocketAddress.<init>(java.lang.String, int) +java.net.BindException.<init>(java.lang.String) +java.net.ConnectException.<init>(java.lang.String) +java.net.DatagramSocket.setDatagramSocketImplFactory(java.net.DatagramSocketImplFactory) +java.net.NetworkInterface.networkInterfaces() +java.net.NetworkInterface.getNetworkInterfaces() +java.net.NoRouteToHostException.<init>(java.lang.String) +java.net.PortUnreachableException.<init>(java.lang.String) +java.net.ServerSocket.getReuseAddress() +java.net.ServerSocket.getSoTimeout() +java.net.ServerSocket.accept() +java.net.ServerSocket.bind(java.net.SocketAddress, int) +java.net.ServerSocket.setReceiveBufferSize(int) +java.net.ServerSocket.getReceiveBufferSize() +java.net.ServerSocket.setReuseAddress(boolean) +java.net.ServerSocket.setSoTimeout(int) +java.net.ServerSocket.setSocketFactory(java.net.SocketImplFactory) +java.net.ServerSocket.setOption(java.net.SocketOption, java.lang.Object) +java.net.ServerSocket.getOption(java.net.SocketOption) +java.net.Socket.getOutputStream() +java.net.Socket.setOOBInline(boolean) +java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) +java.net.Socket.setSoLinger(boolean, int) +java.net.Socket.setTcpNoDelay(boolean) +java.net.Socket.setReuseAddress(boolean) +java.net.Socket.getTcpNoDelay() +java.net.Socket.shutdownInput() +java.net.Socket.getSoLinger() +java.net.Socket.getReceiveBufferSize() +java.net.Socket.getOption(java.net.SocketOption) +java.net.Socket.shutdownOutput() +java.net.Socket.setSendBufferSize(int) +java.net.Socket.bind(java.net.SocketAddress) +java.net.Socket.setOption(java.net.SocketOption, java.lang.Object) +java.net.Socket.setTrafficClass(int) +java.net.Socket.connect(java.net.SocketAddress, int) +java.net.Socket.sendUrgentData(int) +java.net.Socket.getOOBInline() +java.net.Socket.getReuseAddress() +java.net.Socket.getInputStream() +java.net.Socket.getSoTimeout() +java.net.Socket.getSendBufferSize() +java.net.Socket.setKeepAlive(boolean) +java.net.Socket.getKeepAlive() +java.net.Socket.setSoTimeout(int) +java.net.Socket.setReceiveBufferSize(int) +java.rmi.server.RMISocketFactory.setSocketFactory(java.rmi.server.RMISocketFactory) +javax.net.ServerSocketFactory.createServerSocket() +sun.net.ConnectionResetException.<init>(java.lang.String) +sun.net.ResourceManager.beforeUdpCreate() +sun.nio.ch.DatagramSocketAdaptor.getInterface() +sun.nio.ch.DatagramSocketAdaptor.receive(java.net.DatagramPacket) +sun.nio.ch.DatagramSocketAdaptor.getSoTimeout() +sun.nio.ch.DatagramSocketAdaptor.leaveGroup(java.net.SocketAddress, java.net.NetworkInterface) +sun.nio.ch.DatagramSocketAdaptor.setInterface(java.net.InetAddress) +sun.nio.ch.DatagramSocketAdaptor.joinGroup(java.net.SocketAddress, java.net.NetworkInterface) +sun.nio.ch.DatagramSocketAdaptor.setSoTimeout(int) +sun.nio.ch.NioSocketImpl.getOption(int) +sun.nio.ch.NioSocketImpl.setOption(int, java.lang.Object) +sun.security.ssl.SSLSocketImpl.connect(java.net.SocketAddress, int) +sun.security.ssl.SSLSocketImpl.getInputStream() +sun.security.ssl.SSLSocketImpl.getOutputStream() +javax.net.SocketFactory.createSocket() +sun.nio.ch.DatagramSocketAdaptor.joinGroup(java.net.InetAddress) +sun.nio.ch.DatagramSocketAdaptor.leaveGroup(java.net.InetAddress) +sun.nio.ch.DatagramSocketAdaptor.send(java.net.DatagramPacket) +java.net.BindException.<init>() +java.net.ConnectException.<init>() +java.net.NoRouteToHostException.<init>() +java.net.PortUnreachableException.<init>() +sun.net.ConnectionResetException.<init>() +java.net.URLPermission.equals(java.lang.Object) +java.net.URLPermission.hashCode() +java.net.URLPermission.implies(java.security.Permission) +java.net.URLDecoder.decode(java.lang.String) +com.sun.jndi.toolkit.url.UrlUtil.decode(java.lang.String, java.lang.String) +java.net.URLDecoder.decode(java.lang.String, java.lang.String) +java.net.JarURLConnection.getJarEntry() +java.net.JarURLConnection.getEntryName() +java.net.JarURLConnection.getJarFileURL() +sun.net.www.protocol.jar.JarURLConnection.getPermission() +sun.net.www.protocol.jar.JarURLConnection.setAllowUserInteraction(boolean) +sun.net.www.protocol.jar.JarURLConnection.getDefaultUseCaches() +sun.net.www.protocol.jar.JarURLConnection.getRequestProperties() +sun.net.www.protocol.jar.JarURLConnection.getContentLengthLong() +sun.net.www.protocol.jar.JarURLConnection.getAllowUserInteraction() +sun.net.www.protocol.jar.JarURLConnection.getUseCaches() +sun.net.www.protocol.jar.JarURLConnection.setIfModifiedSince(long) +sun.net.www.protocol.jar.JarURLConnection.setDefaultUseCaches(boolean) +sun.net.www.protocol.jar.JarURLConnection.getHeaderField(java.lang.String) +sun.net.www.protocol.jar.JarURLConnection.setUseCaches(boolean) +sun.net.www.protocol.jar.JarURLConnection.addRequestProperty(java.lang.String, java.lang.String) +sun.net.www.protocol.jar.JarURLConnection.setRequestProperty(java.lang.String, java.lang.String) +sun.net.www.protocol.jar.JarURLConnection.getRequestProperty(java.lang.String) +sun.net.www.protocol.jar.JarURLConnection.connect() +sun.net.www.protocol.jar.JarURLConnection.<init>(java.net.URL, sun.net.www.protocol.jar.Handler) +jdk.internal.loader.URLClassPath.check(java.net.URL) +java.net.JarURLConnection.getManifest() +java.net.URLClassLoader.getResourceAsStream(java.lang.String) +java.net.JarURLConnection.getMainAttributes() +java.net.JarURLConnection.getAttributes() +java.net.JarURLConnection.getCertificates() +java.util.ResourceBundle$Control.needsReload(java.lang.String, java.util.Locale, java.lang.String, java.lang.ClassLoader, java.util.ResourceBundle, long) +sun.net.www.protocol.jar.JarURLConnection.getInputStream() +sun.net.www.protocol.jar.JarURLConnection.getContent() +sun.net.www.protocol.jar.JarURLConnection.getContentType() +java.net.URLClassLoader.findResources(java.lang.String) +java.net.MulticastSocket.joinGroup(java.net.InetAddress) +java.net.MulticastSocket.leaveGroup(java.net.InetAddress) +java.net.MulticastSocket.getInterface() +java.net.MulticastSocket.setNetworkInterface(java.net.NetworkInterface) +java.net.MulticastSocket.send(java.net.DatagramPacket, byte) +java.net.MulticastSocket.setTTL(byte) +java.net.MulticastSocket.getTimeToLive() +java.net.MulticastSocket.getTTL() +java.net.MulticastSocket.setTimeToLive(int) +java.net.MulticastSocket.setLoopbackMode(boolean) +java.net.MulticastSocket.getNetworkInterface() +java.net.MulticastSocket.setInterface(java.net.InetAddress) +java.net.MulticastSocket.getLoopbackMode() +java.net.MulticastSocket.<init>(java.net.SocketAddress) +java.net.MulticastSocket.<init>(int) +java.net.MulticastSocket.<init>() +java.net.Inet6Address.getByAddress(java.lang.String, [B, java.net.NetworkInterface) +java.net.Inet6Address.getByAddress(java.lang.String, [B, int) +java.net.InetAddress.getAllByName(java.lang.String) +java.net.InetAddress.getByAddress(java.lang.String, [B) +java.net.InetAddress.getLocalHost() +java.net.InetAddress.getCanonicalHostName() +java.net.NetworkInterface.getByInetAddress(java.net.InetAddress) +java.net.InetAddress.isReachable(java.net.NetworkInterface, int, int) +java.net.InetAddress.getLoopbackAddress() +java.net.InetAddress.getByName(java.lang.String) +sun.security.krb5.internal.HostAddresses.<init>(sun.security.krb5.PrincipalName) +java.net.InetAddress.toString() +java.net.Inet4Address.getAddress() +java.net.Inet4Address.hashCode() +java.net.Inet4Address.isSiteLocalAddress() +java.net.Inet4Address.isMulticastAddress() +java.net.Inet4Address.isLinkLocalAddress() +java.net.Inet4Address.equals(java.lang.Object) +java.net.Inet4Address.isMCOrgLocal() +java.net.Inet4Address.isAnyLocalAddress() +java.net.Inet4Address.isMCLinkLocal() +java.net.Inet4Address.isMCSiteLocal() +java.net.Socket.getLocalAddress() +sun.nio.ch.DatagramSocketAdaptor.getLocalSocketAddress() +sun.rmi.registry.RegistryImpl.checkAccess(java.lang.String) +java.net.InetAddress.isReachable(int) +java.net.InetAddress.getHostName() +sun.security.krb5.internal.HostAddress.getInetAddress() +sun.security.krb5.internal.HostAddress.<init>(int, [B) +sun.security.x509.IPAddressName.getName() +java.net.NetworkInterface.equals(java.lang.Object) +org.ietf.jgss.ChannelBinding.equals(java.lang.Object) +sun.security.krb5.PrincipalName.<init>(java.lang.String, int, java.lang.String) +com.sun.tools.jdi.SocketTransportService.attach(java.lang.String, long, long) +java.net.ServerSocket.getInetAddress() +javax.management.MBeanServerDelegate.getMBeanServerId() +javax.management.remote.JMXServiceURL.<init>(java.lang.String, java.lang.String, int, java.lang.String) +sun.net.util.IPAddressUtil.toScopedAddress(java.net.InetAddress) +java.net.InetAddress.getByAddress([B) +java.lang.SecurityManager.checkMulticast(java.net.InetAddress, byte) +java.lang.SecurityManager.checkMulticast(java.net.InetAddress) +java.net.NetworkInterface.getInterfaceAddresses() +java.rmi.registry.LocateRegistry.getRegistry(java.lang.String, int, java.rmi.server.RMIClientSocketFactory) +sun.management.jmxremote.ConnectorBootstrap.startLocalConnectorServer() +sun.nio.ch.DatagramSocketAdaptor.getLocalAddress() +com.sun.jndi.dns.DnsClient.<init>([Ljava.lang.String;, int, int) +java.net.Socket.<init>(java.lang.String, int, boolean) +java.net.Socket.<init>(java.lang.String, int, java.net.InetAddress, int) +java.net.Socket.<init>(java.lang.String, int) +jdk.internal.joptsimple.util.InetAddressConverter.convert(java.lang.String) +sun.net.www.protocol.http.HttpCallerInfo.<init>(java.net.URL, java.security.cert.X509Certificate, java.net.Authenticator) +sun.security.krb5.internal.HostAddresses.getLocalAddresses() +java.net.InterfaceAddress.hashCode() +org.ietf.jgss.ChannelBinding.hashCode() +sun.security.krb5.internal.HostAddress.<init>() +sun.security.krb5.internal.HostAddress.<init>(java.net.InetAddress) +javax.security.auth.kerberos.KerberosTicket.toString() +sun.management.jdp.JdpBroadcaster.<init>(java.net.InetAddress, java.net.InetAddress, int, int) +java.net.InetSocketAddress.<init>(int) +java.net.CookieHandler.setDefault(java.net.CookieHandler) +java.net.CookieHandler.getDefault() +java.net.CookieManager.<init>(java.net.CookieStore, java.net.CookiePolicy) +java.net.URLClassLoader.close() +java.net.URLClassLoader.getURLs() +java.net.URLClassLoader.<init>([Ljava.net.URL;, java.lang.ClassLoader, java.net.URLStreamHandlerFactory) +java.net.URLClassLoader.<init>(java.lang.String, [Ljava.net.URL;, java.lang.ClassLoader, java.net.URLStreamHandlerFactory) +java.net.URLClassLoader.<init>(java.lang.String, [Ljava.net.URL;, java.lang.ClassLoader) +java.net.URLClassLoader.<init>([Ljava.net.URL;, java.lang.ClassLoader) +java.net.URLClassLoader.<init>([Ljava.net.URL;) +javax.management.loading.MLet.addURL(java.lang.String) +javax.management.loading.MLet.addURL(java.net.URL) +com.sun.org.apache.bcel.internal.util.ModularRuntimeImage.close() +com.sun.naming.internal.VersionHelper.loadClass(java.lang.String, java.lang.String) +sun.jvm.hotspot.SALauncherLoader.loadClass(java.lang.String, boolean) +com.sun.media.sound.JARSoundbankReader.getSoundbank(java.net.URL) +com.sun.org.apache.bcel.internal.util.ModularRuntimeImage.<init>(java.lang.String) +javax.management.loading.MLet.getURLs() +sun.rmi.server.LoaderHandler.getClassAnnotation(java.lang.Class) +sun.rmi.server.LoaderHandler.getSecurityContext(java.lang.ClassLoader) +javax.management.loading.MLet.<init>([Ljava.net.URL;, java.lang.ClassLoader, java.net.URLStreamHandlerFactory, boolean) +javax.management.loading.MLet.<init>([Ljava.net.URL;, java.lang.ClassLoader, boolean) +sun.jvm.hotspot.SALauncherLoader.<init>(java.lang.ClassLoader) +javax.management.loading.MLet.<init>([Ljava.net.URL;, boolean) +sun.rmi.registry.RegistryImpl.createRegistry(int) +sun.security.tools.jarsigner.Main.run([Ljava.lang.String;) +jdk.internal.net.http.common.Utils.permissionForProxy(java.net.InetSocketAddress) +jdk.internal.net.http.common.Utils.resolveAddress(java.net.InetSocketAddress) +jdk.internal.net.http.common.Utils.getServerName(java.net.InetSocketAddress) +java.net.InetSocketAddress.createUnresolved(java.lang.String, int) +java.net.DatagramPacket.setSocketAddress(java.net.SocketAddress) +sun.net.util.IPAddressUtil.toScopedAddress(java.net.InetSocketAddress) +sun.nio.ch.DatagramSocketAdaptor.getInetAddress() +sun.nio.ch.Net.checkAddress(java.net.SocketAddress) +sun.net.ftp.impl.FtpClient.startSecureSession() +sun.nio.ch.DatagramSocketAdaptor.getLocalPort() +sun.nio.ch.DatagramSocketAdaptor.getPort() +java.net.DatagramPacket.getSocketAddress() +java.net.DatagramSocket.<init>(int, java.net.InetAddress) +java.net.ServerSocket.getLocalSocketAddress() +java.net.ServerSocket.<init>(int, int, java.net.InetAddress) +java.net.Socket.getRemoteSocketAddress() +java.net.Socket.getLocalSocketAddress() +java.net.Socket.<init>(java.net.InetAddress, int, java.net.InetAddress, int) +java.net.Socket.<init>(java.net.InetAddress, int, boolean) +java.net.Socket.<init>(java.net.InetAddress, int) +sun.management.jdp.JdpBroadcaster.sendPacket(sun.management.jdp.JdpPacket) +sun.nio.ch.DatagramSocketAdaptor.connect(java.net.InetAddress, int) +sun.nio.ch.Net.localAddress(java.io.FileDescriptor) +java.net.DatagramSocket.<init>() +sun.nio.ch.DatagramSocketAdaptor.bind(java.net.SocketAddress) +sun.net.ftp.FtpClient.create(java.lang.String) +java.net.URLEncoder.encode(java.lang.String, java.nio.charset.Charset) +java.net.URLEncoder.encode(java.lang.String) +java.net.URLEncoder.encode(java.lang.String, java.lang.String) +sun.security.provider.certpath.OCSP.getOCSPBytes(java.util.List, java.net.URI, java.util.List) +java.net.Socket.getTrafficClass() +java.net.Authenticator$RequestorType.values() +sun.net.www.protocol.http.HttpCallerInfo.<init>(java.net.URL, java.lang.String, int, java.security.cert.X509Certificate, java.net.Authenticator) +java.net.DatagramSocket.connect(java.net.SocketAddress) +java.net.DatagramSocket.getLocalSocketAddress() +java.net.DatagramSocket.setSendBufferSize(int) +java.net.DatagramSocket.getReuseAddress() +java.net.DatagramSocket.isClosed() +java.net.DatagramSocket.getInetAddress() +java.net.DatagramSocket.getBroadcast() +java.net.DatagramSocket.setTrafficClass(int) +java.net.DatagramSocket.getSoTimeout() +java.net.DatagramSocket.setReceiveBufferSize(int) +java.net.DatagramSocket.setBroadcast(boolean) +java.net.DatagramSocket.getPort() +java.net.DatagramSocket.setOption(java.net.SocketOption, java.lang.Object) +jdk.net.Sockets.setOption(java.net.DatagramSocket, java.net.SocketOption, java.lang.Object) +java.net.DatagramSocket.send(java.net.DatagramPacket) +java.net.DatagramSocket.bind(java.net.SocketAddress) +java.net.DatagramSocket.<init>(java.net.SocketAddress) +java.net.DatagramSocket.getLocalAddress() +java.net.DatagramSocket.getSendBufferSize() +java.net.DatagramSocket.getLocalPort() +java.net.DatagramSocket.setSoTimeout(int) +java.net.DatagramSocket.close() +java.net.DatagramSocket.getRemoteSocketAddress() +java.net.DatagramSocket.receive(java.net.DatagramPacket) +java.net.DatagramSocket.joinGroup(java.net.SocketAddress, java.net.NetworkInterface) +java.net.DatagramSocket.supportedOptions() +java.net.DatagramSocket.isConnected() +java.net.DatagramSocket.isBound() +java.net.DatagramSocket.leaveGroup(java.net.SocketAddress, java.net.NetworkInterface) +java.net.DatagramSocket.disconnect() +java.net.DatagramSocket.getOption(java.net.SocketOption) +java.net.DatagramSocket.getReceiveBufferSize() +java.net.DatagramSocket.connect(java.net.InetAddress, int) +java.net.DatagramSocket.getTrafficClass() +java.net.DatagramSocket.setReuseAddress(boolean) +java.net.MulticastSocket.joinGroup(java.net.SocketAddress, java.net.NetworkInterface) +java.net.MulticastSocket.leaveGroup(java.net.SocketAddress, java.net.NetworkInterface) +jdk.net.Sockets.getOption(java.net.DatagramSocket, java.net.SocketOption) +java.net.DatagramSocket.<init>(int) +java.net.ServerSocket.close() +java.net.ServerSocket.<init>() +java.net.ServerSocket.toString() +java.net.ServerSocket.isClosed() +java.net.ServerSocket.supportedOptions() +java.net.ServerSocket.isBound() +com.sun.tools.jdi.SocketTransportService.accept(com.sun.jdi.connect.spi.TransportService$ListenKey, long, long) +java.net.ServerSocket.getLocalPort() +java.net.ServerSocket.bind(java.net.SocketAddress) +com.sun.tools.jdi.SocketTransportService.stopListening(com.sun.jdi.connect.spi.TransportService$ListenKey) +jdk.net.Sockets.setOption(java.net.ServerSocket, java.net.SocketOption, java.lang.Object) +jdk.net.Sockets.getOption(java.net.ServerSocket, java.net.SocketOption) +java.net.ServerSocket.<init>(int, int) +java.net.ServerSocket.<init>(int) +sun.rmi.transport.tcp.TCPDirectSocketFactory.createServerSocket(int) +java.net.URL.equals(java.lang.Object) +java.net.URL.toExternalForm() +java.net.URL.hashCode() +java.net.URL.sameFile(java.net.URL) +java.net.URL.<init>(java.net.URL, java.lang.String, java.net.URLStreamHandler) +java.net.URL.getDefaultPort() +java.net.URL.openConnection() +sun.net.www.protocol.file.Handler.<init>() +sun.net.www.protocol.ftp.Handler.<init>() +sun.net.www.protocol.http.Handler.<init>() +sun.net.www.protocol.http.Handler.<init>(java.lang.String, int) +sun.net.www.protocol.jar.Handler.<init>() +sun.net.www.protocol.jmod.Handler.<init>() +sun.net.www.protocol.jrt.Handler.<init>() +sun.net.www.protocol.mailto.Handler.<init>() +java.net.Proxy$Type.values() +java.net.SecureCacheResponse.<init>() +java.net.ResponseCache.getDefault() +java.net.ResponseCache.setDefault(java.net.ResponseCache) +sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getLocalCertificates() +sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getCipherSuite() +sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getServerCertificates() +java.net.URLClassLoader.newInstance([Ljava.net.URL;, java.lang.ClassLoader) +sun.nio.ch.SelectorProviderImpl.openServerSocketChannel(java.net.ProtocolFamily) +sun.nio.ch.SelectorProviderImpl.openSocketChannel(java.net.ProtocolFamily) +java.net.StandardProtocolFamily.values() +java.nio.channels.SocketChannel.open(java.net.SocketAddress) +java.net.SocketPermission.hashCode() +java.net.SocketPermission.equals(java.lang.Object) +java.net.SocketPermission.getActions() +java.net.SocketPermission.implies(java.security.Permission) +java.net.SocketPermission.<init>(java.lang.String, java.lang.String) +java.lang.SecurityManager.checkAccept(java.lang.String, int) +java.lang.SecurityManager.checkListen(int) +java.lang.SecurityManager.checkConnect(java.lang.String, int) +java.lang.SecurityManager.checkConnect(java.lang.String, int, java.lang.Object) +java.net.HttpURLConnection.getPermission() +sun.net.www.protocol.ftp.FtpURLConnection.getPermission() +sun.net.www.protocol.mailto.MailToURLConnection.getPermission() +sun.rmi.registry.RegistryImpl.<init>(int, java.rmi.server.RMIClientSocketFactory, java.rmi.server.RMIServerSocketFactory, java.io.ObjectInputFilter) +sun.rmi.registry.RegistryImpl.<init>(int) +java.net.IDN.toASCII(java.lang.String, int) +java.net.IDN.toUnicode(java.lang.String, int) +java.net.IDN.toASCII(java.lang.String) +javax.net.ssl.SNIHostName.<init>(java.lang.String) +javax.net.ssl.SNIHostName.<init>([B) +java.net.IDN.toUnicode(java.lang.String) +java.net.DatagramPacket.setData([B, int, int) +java.net.DatagramPacket.setData([B) +java.net.DatagramPacket.setLength(int) +java.net.DatagramPacket.getPort() +java.net.DatagramPacket.setPort(int) +java.net.DatagramPacket.getAddress() +java.net.DatagramPacket.setAddress(java.net.InetAddress) +java.net.DatagramPacket.getOffset() +java.net.DatagramPacket.getLength() +java.net.DatagramPacket.getData() +java.net.DatagramPacket.<init>([B, int, int, java.net.SocketAddress) +java.net.DatagramPacket.<init>([B, int, int, java.net.InetAddress, int) +java.net.DatagramPacket.<init>([B, int, int) +java.net.DatagramPacket.<init>([B, int) +java.net.DatagramPacket.<init>([B, int, java.net.InetAddress, int) +java.net.DatagramPacket.<init>([B, int, java.net.SocketAddress) +java.net.CookieManager.put(java.net.URI, java.util.Map) +java.net.CookieManager.get(java.net.URI, java.util.Map) +java.net.InterfaceAddress.equals(java.lang.Object) +java.net.InterfaceAddress.toString() +java.net.InterfaceAddress.getAddress() +java.net.InterfaceAddress.getBroadcast() +java.net.InterfaceAddress.getNetworkPrefixLength() +java.net.URI.getHost() +java.net.URI.parseServerAuthority() +java.net.URI.compareTo(java.net.URI) +java.net.URI.equals(java.lang.Object) +java.net.URI.getRawSchemeSpecificPart() +java.net.URI.hashCode() +java.net.URI.getSchemeSpecificPart() +java.net.URI.getQuery() +java.net.URI.getAuthority() +java.net.URI.isAbsolute() +java.net.URI.getScheme() +java.net.URI.getUserInfo() +java.net.URI.getRawUserInfo() +java.net.URI.getRawQuery() +java.net.URI.toString() +java.net.URI.getPath() +java.net.URI.getRawPath() +java.net.URI.isOpaque() +java.net.URI.getPort() +java.net.URI.<init>(java.lang.String, java.lang.String, java.lang.String) +java.net.URI.<init>(java.lang.String, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String) +java.net.URI.<init>(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) +java.net.URI.<init>(java.lang.String) +java.net.URI.getRawFragment() +java.net.URI.getFragment() +java.net.URI.getRawAuthority() +java.net.URL.of(java.net.URI, java.net.URLStreamHandler) +jdk.internal.net.http.ResponseBodyHandlers$PushPromisesHandlerWithMap.applyPushPromise(java.net.http.HttpRequest, java.net.http.HttpRequest, java.util.function.Function) +jdk.internal.net.http.common.Utils.hostString(jdk.internal.net.http.HttpRequestImpl) +sun.jvmstat.monitor.HostIdentifier.getHost() +sun.jvmstat.monitor.VmIdentifier.getHost() +sun.net.spi.DefaultProxySelector.select(java.net.URI) +sun.security.provider.certpath.ldap.LDAPCertStore.<init>(java.security.cert.CertStoreParameters) +sun.security.x509.URIName.<init>(java.lang.String) +com.sun.tools.javac.file.PathFileObject.getSimpleName(javax.tools.FileObject) +jdk.nio.zipfs.ZipFileSystemProvider.getPath(java.net.URI) +sun.jvmstat.monitor.HostIdentifier.getSchemeSpecificPart() +sun.jvmstat.monitor.VmIdentifier.getSchemeSpecificPart() +sun.print.Win32PrintService.isAttributeValueSupported(javax.print.attribute.Attribute, javax.print.DocFlavor, javax.print.attribute.AttributeSet) +sun.security.x509.URIName.nameConstraint(sun.security.util.DerValue) +java.io.File.<init>(java.net.URI) +jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter.resolveExternalSpecURI(java.net.URI) +sun.jvmstat.monitor.HostIdentifier.getScheme() +sun.security.util.PropertyExpander.expand(java.lang.String, boolean) +java.net.URI.resolve(java.lang.String) +jdk.internal.net.http.common.Utils.permissionForServer(java.net.URI, java.lang.String, java.util.stream.Stream) +sun.awt.shell.ShellFolder.getNormalizedFile(java.io.File) +jdk.internal.jrtfs.JrtFileSystemProvider.getPath(java.net.URI) +sun.jvmstat.monitor.HostIdentifier.getQuery() +sun.jvmstat.monitor.VmIdentifier.getQuery() +sun.jvmstat.monitor.HostIdentifier.getPort() +sun.jvmstat.monitor.VmIdentifier.getPort() +com.sun.jndi.ldap.LdapURL.validateURI(java.lang.String) +com.sun.org.apache.xml.internal.security.utils.resolver.implementations.ResolverDirectHTTP.engineResolveURI(com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolverContext) +com.sun.org.apache.xml.internal.security.utils.resolver.implementations.ResolverLocalFilesystem.engineResolveURI(com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolverContext) +com.sun.tools.jdeps.JdepsConfiguration.splitPackages() +java.net.URI.toASCIIString() +java.nio.file.FileSystems.getFileSystem(java.net.URI) +java.security.cert.URICertStoreParameters.toString() +javax.print.attribute.URISyntax.toString() +jdk.internal.net.http.HttpRequestImpl.toString() +sun.awt.datatransfer.DataTransferer.translateTransferable(java.awt.datatransfer.Transferable, java.awt.datatransfer.DataFlavor, long) +sun.jvmstat.monitor.HostIdentifier.toString() +sun.jvmstat.monitor.VmIdentifier.toString() +sun.security.x509.URIName.toString() +sun.security.x509.URIName.getName() +com.sun.org.apache.bcel.internal.util.ModularRuntimeImage.<init>() +com.sun.tools.javac.file.JRTIndex.isAvailable() +javax.xml.crypto.dom.DOMCryptoContext.setBaseURI(java.lang.String) +jdk.internal.module.ModulePatcher$PatchedModuleReader.find(java.lang.String) +jdk.javadoc.internal.doclets.toolkit.util.Utils.checkJavaScriptInOption(java.lang.String, java.lang.String) +jdk.tools.jlink.internal.Utils.jrtFileSystem() +org.jcp.xml.dsig.internal.dom.DOMURIDereferencer.dereference(javax.xml.crypto.URIReference, javax.xml.crypto.XMLCryptoContext) +org.jcp.xml.dsig.internal.dom.Policy.restrictReferenceUriScheme(java.lang.String) +sun.jvmstat.monitor.HostIdentifier.getUserInfo() +sun.jvmstat.monitor.VmIdentifier.getUserInfo() +sun.jvmstat.monitor.VmIdentifier.getLocalVmId() +com.sun.media.sound.JARSoundbankReader.getSoundbank(java.io.File) +com.sun.tools.javac.file.FSInfo.getJarClassPath(java.nio.file.Path) +com.sun.tools.javac.file.JavacFileManager.getClassLoader(javax.tools.JavaFileManager$Location) +java.lang.Package.isSealed(java.net.URL) +java.lang.module.ModuleReader.open(java.lang.String) +sun.security.provider.ConfigFile$Spi.<init>(java.net.URI) +sun.security.provider.PolicySpiFile.<init>(java.security.Policy$Parameters) +sun.security.provider.certpath.ssl.SSLServerCertStore.engineGetCertificates(java.security.cert.CertSelector) +sun.security.timestamp.HttpTimestamper.generateTimestamp(sun.security.timestamp.TSRequest) +sun.security.tools.KeyStoreUtil.getPassWithModifier(java.lang.String, java.lang.String, java.util.ResourceBundle, java.text.Collator) +sun.security.tools.keytool.Main.loadCRLs(java.lang.String) +sun.tools.jstat.Arguments.optionsSources() +com.sun.tools.javap.ClassWriter.write(com.sun.tools.classfile.ClassFile) +com.sun.tools.jdeps.JdepsConfiguration.toModule(java.lang.module.ModuleReference) +java.awt.Desktop.mail(java.net.URI) +java.nio.file.FileSystems.newFileSystem(java.net.URI, java.util.Map, java.lang.ClassLoader) +java.nio.file.Path.of(java.net.URI) +jdk.internal.net.http.HttpRequestImpl.<init>(java.net.http.HttpRequest, java.net.ProxySelector) +jdk.internal.net.http.HttpRequestImpl.<init>(jdk.internal.net.http.HttpRequestBuilderImpl) +sun.jvmstat.monitor.VmIdentifier.getScheme() +sun.security.timestamp.HttpTimestamper.<init>(java.net.URI) +sun.security.x509.URIName.getScheme() +sun.jvmstat.monitor.HostIdentifier.getFragment() +sun.jvmstat.monitor.VmIdentifier.getFragment() +javax.tools.SimpleJavaFileObject.isNameCompatible(java.lang.String, javax.tools.JavaFileObject$Kind) +javax.tools.SimpleJavaFileObject.getName() +sun.jvmstat.monitor.HostIdentifier.getPath() +sun.jvmstat.monitor.VmIdentifier.getPath() +java.net.URI.compareTo(java.lang.Object) +java.net.URI.normalize() +java.net.URI.relativize(java.net.URI) +java.net.URI.resolve(java.net.URI) +com.sun.tools.jdeps.Archive.isSameLocation(com.sun.tools.jdeps.Archive, com.sun.tools.jdeps.Archive) +java.net.http.HttpRequest.equals(java.lang.Object) +java.security.cert.URICertStoreParameters.equals(java.lang.Object) +javax.print.attribute.URISyntax.equals(java.lang.Object) +sun.jvmstat.monitor.HostIdentifier.equals(java.lang.Object) +sun.jvmstat.monitor.VmIdentifier.equals(java.lang.Object) +sun.security.x509.URIName.equals(java.lang.Object) +javax.xml.parsers.DocumentBuilder.parse(java.io.File) +javax.xml.parsers.SAXParser.parse(java.io.File, org.xml.sax.helpers.DefaultHandler) +javax.xml.parsers.SAXParser.parse(java.io.File, org.xml.sax.HandlerBase) +javax.xml.transform.stream.StreamResult.setSystemId(java.io.File) +javax.xml.transform.stream.StreamResult.<init>(java.io.File) +javax.xml.transform.stream.StreamSource.setSystemId(java.io.File) +javax.xml.transform.stream.StreamSource.<init>(java.io.File) +jdk.internal.util.xml.SAXParser.parse(java.io.File, jdk.internal.org.xml.sax.helpers.DefaultHandler) +jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree.A(java.net.URI, jdk.javadoc.internal.doclets.toolkit.Content) +sun.security.x509.URIName.encode(sun.security.util.DerOutputStream) +java.net.http.HttpRequest.hashCode() +java.security.cert.URICertStoreParameters.hashCode() +javax.print.attribute.URISyntax.hashCode() +sun.jvmstat.monitor.HostIdentifier.hashCode() +sun.jvmstat.monitor.VmIdentifier.hashCode() +sun.security.x509.URIName.hashCode() +sun.jvmstat.monitor.VmIdentifier.getAuthority() +java.io.File.toURI() +java.net.URI.<init>(java.lang.String, java.lang.String, java.lang.String, java.lang.String) +sun.jvmstat.monitor.HostIdentifier.<init>(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) +com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getOutputHandler(javax.xml.transform.Result) +java.awt.Desktop.mail() +java.net.URI.create(java.lang.String) +java.net.URL.toURI() +jdk.internal.shellsupport.doc.JavadocFormatter.formatJavadoc(java.lang.String, java.lang.String) +org.jcp.xml.dsig.internal.dom.DOMReference.<init>(java.lang.String, java.lang.String, javax.xml.crypto.dsig.DigestMethod, java.util.List, javax.xml.crypto.Data, java.util.List, java.lang.String, [B, java.security.Provider) +org.jcp.xml.dsig.internal.dom.DOMRetrievalMethod.<init>(java.lang.String, java.lang.String, java.util.List) +org.jcp.xml.dsig.internal.dom.Policy.restrictAlg(java.lang.String) +sun.jvmstat.monitor.HostIdentifier.<init>(sun.jvmstat.monitor.VmIdentifier) +sun.print.Win32PrintService.getDefaultAttributeValue(java.lang.Class) +sun.print.Win32PrintService.getSupportedAttributeValues(java.lang.Class, javax.print.DocFlavor, javax.print.attribute.AttributeSet) +java.net.URLConnection.guessContentTypeFromName(java.lang.String) +sun.nio.fs.AbstractFileTypeDetector.probeContentType(java.nio.file.Path) +java.net.UnixDomainSocketAddress.toString() +java.net.UnixDomainSocketAddress.equals(java.lang.Object) +java.net.UnixDomainSocketAddress.getPath() +java.net.UnixDomainSocketAddress.hashCode() +java.net.UnixDomainSocketAddress.of(java.lang.String) +java.net.UnixDomainSocketAddress.of(java.nio.file.Path) +java.net.Authenticator.requestPasswordAuthentication(java.lang.String, java.net.InetAddress, int, java.lang.String, java.lang.String, java.lang.String, java.net.URL, java.net.Authenticator$RequestorType) +java.net.Authenticator.requestPasswordAuthentication(java.net.InetAddress, int, java.lang.String, java.lang.String, java.lang.String) +java.net.Authenticator.requestPasswordAuthenticationInstance(java.lang.String, java.net.InetAddress, int, java.lang.String, java.lang.String, java.lang.String, java.net.URL, java.net.Authenticator$RequestorType) +java.net.Authenticator.requestPasswordAuthentication(java.lang.String, java.net.InetAddress, int, java.lang.String, java.lang.String, java.lang.String) +java.net.Authenticator.requestPasswordAuthentication(java.net.Authenticator, java.lang.String, java.net.InetAddress, int, java.lang.String, java.lang.String, java.lang.String, java.net.URL, java.net.Authenticator$RequestorType) +java.net.Authenticator.setDefault(java.net.Authenticator) +java.net.Authenticator.getDefault() +jdk.internal.loader.URLClassPath.<init>([Ljava.net.URL;, java.net.URLStreamHandlerFactory, java.security.AccessControlContext) +java.net.URLConnection.getInputStream() +java.net.URLConnection.getOutputStream() +java.net.NetworkInterface.isPointToPoint() +java.net.NetworkInterface.getMTU() +java.net.NetworkInterface.getIndex() +java.net.NetworkInterface.isUp() +java.net.NetworkInterface.getHardwareAddress() +java.net.NetworkInterface.isLoopback() +java.net.NetworkInterface.supportsMulticast() +java.net.NetworkInterface.toString() +java.net.NetworkInterface.getDisplayName() +java.net.NetworkInterface.isVirtual() +java.net.NetworkInterface.getName() +java.net.NetworkInterface.hashCode() +java.net.NetworkInterface.getParent() +java.net.NetworkInterface.subInterfaces() +java.net.NetworkInterface.getSubInterfaces() +java.net.NetworkInterface.getInetAddresses() +java.net.NetworkInterface.getByName(java.lang.String) +java.net.NetworkInterface.inetAddresses() +java.net.NetworkInterface.getByIndex(int) +java.net.SocketPermission.newPermissionCollection() +java.net.PasswordAuthentication.getPassword() +java.net.PasswordAuthentication.<init>(java.lang.String, [C) +java.net.PasswordAuthentication.getUserName() +java.net.URL.getPath() +java.net.URL.<init>(java.lang.String, java.lang.String, int, java.lang.String, java.net.URLStreamHandler) +java.net.URL.setURLStreamHandlerFactory(java.net.URLStreamHandlerFactory) +java.net.URL.getProtocol() +java.net.URL.getHost() +java.net.URL.getQuery() +java.net.URL.getPort() +java.net.URL.getAuthority() +java.net.URL.getRef() +java.net.URL.getFile() +java.net.URL.getUserInfo() +com.sun.org.apache.xerces.internal.impl.XMLEntityManager.createOutputStream(java.lang.String) +com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl.writeToURI(org.w3c.dom.Node, java.lang.String) +com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl.write(org.w3c.dom.Node, org.w3c.dom.ls.LSOutput) +jdk.xml.internal.SecuritySupport.checkAccess(java.lang.String, java.lang.String, java.lang.String) +sun.net.www.ParseUtil.toURI(java.net.URL) +sun.net.www.http.HttpClient.getURLFile() +sun.net.www.protocol.file.FileURLConnection.getPermission() +sun.net.www.protocol.ftp.FtpURLConnection.getOutputStream() +sun.net.www.protocol.ftp.FtpURLConnection.getInputStream() +sun.net.www.protocol.http.AuthenticationInfo.<init>(char, sun.net.www.protocol.http.AuthScheme, java.net.URL, java.lang.String) +sun.net.www.protocol.mailto.MailToURLConnection.getOutputStream() +com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(java.net.URL, java.lang.String) +com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(java.net.URL) +com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(boolean, java.lang.String, com.sun.org.apache.xerces.internal.xni.parser.XMLInputSource, boolean, boolean) +java.awt.SplashScreen.getImageURL() +java.rmi.server.RMIClassLoader.loadClass(java.net.URL, java.lang.String) +java.security.AccessControlContext.checkPermission(java.security.Permission) +javax.management.loading.MLet.getMBeansFromURL(java.net.URL) +javax.management.loading.MLet.getMBeansFromURL(java.lang.String) +javax.sql.rowset.serial.SerialDatalink.getDatalink() +javax.swing.text.html.HTMLDocument.processHTMLFrameHyperlinkEvent(javax.swing.text.html.HTMLFrameHyperlinkEvent) +jdk.internal.loader.BuiltinClassLoader.findResources(java.lang.String) +jdk.internal.loader.BuiltinClassLoader.findResource(java.lang.String) +jdk.internal.loader.Loader.findResource(java.lang.String) +jdk.xml.internal.SecuritySupport.getClassSource(java.lang.Class) +sun.net.util.URLUtil.getConnectPermission(java.net.URL) +sun.net.www.http.HttpCapture.getCapture(java.net.URL) +sun.net.www.protocol.http.ntlm.NTLMAuthentication.isTrustedSite(java.net.URL) +javax.swing.JEditorPane.setPage(java.net.URL) +sun.net.www.protocol.file.Handler.openConnection(java.net.URL, java.net.Proxy) +java.security.CodeSource.hashCode() +javax.sql.rowset.serial.SerialDatalink.hashCode() +javax.sql.rowset.serial.SerialDatalink.equals(java.lang.Object) +java.beans.Beans.instantiate(java.lang.ClassLoader, java.lang.String, java.beans.beancontext.BeanContext, java.beans.AppletInitializer) +java.net.URL.toString() +javax.swing.ImageIcon.<init>(java.net.URL) +javax.xml.validation.SchemaFactory.newSchema(java.net.URL) +sun.net.util.IPAddressUtil.checkAuthority(java.net.URL) +sun.net.util.IPAddressUtil.checkExternalForm(java.net.URL) +com.sun.media.sound.DLSSoundbank.<init>(java.net.URL) +com.sun.media.sound.JavaSoundAudioClip.create(java.net.URL) +com.sun.media.sound.SF2Soundbank.<init>(java.net.URL) +com.sun.media.sound.StandardMidiFileReader.getMidiFileFormat(java.net.URL) +com.sun.media.sound.StandardMidiFileReader.getSequence(java.net.URL) +java.lang.Class.getResourceAsStream(java.lang.String) +java.lang.ClassLoader.getSystemResourceAsStream(java.lang.String) +java.lang.ClassLoader.getResourceAsStream(java.lang.String) +java.lang.Module.getResourceAsStream(java.lang.String) +javax.imageio.ImageIO.read(java.net.URL) +javax.swing.plaf.synth.SynthLookAndFeel.load(java.net.URL) +javax.swing.text.html.StyleSheet.importStyleSheet(java.net.URL) +jdk.internal.loader.BuiltinClassLoader.findResourceAsStream(java.lang.String, java.lang.String) +sun.jvmstat.perfdata.monitor.AliasFileParser.parse(java.util.Map) +sun.print.Win32PrintJob.print(javax.print.Doc, javax.print.attribute.PrintRequestAttributeSet) +sun.security.util.PolicyUtil.getKeyStore(java.net.URL, java.lang.String, java.lang.String, java.lang.String, java.lang.String, sun.security.util.Debug) +sun.security.util.PolicyUtil.getInputStream(java.net.URL) +sun.tools.jstat.OptionLister.print(java.io.PrintStream) +java.beans.SimpleBeanInfo.loadImage(java.lang.String) +java.awt.SplashScreen.setImageURL(java.net.URL) +java.net.URL.getContent([Ljava.lang.Class;) +java.net.URL.openStream() +java.net.URL.getContent() +sun.net.www.protocol.http.HttpURLConnection.openConnectionCheckRedirects(java.net.URLConnection) +java.net.URI.toURL() +java.net.URLConnection.setDefaultUseCaches(java.lang.String, boolean) +java.net.URLConnection.getDefaultUseCaches(java.lang.String) +javax.management.loading.MLetContent.<init>(java.net.URL, java.util.Map, java.util.List, java.util.List) +jdk.internal.loader.FileURLMapper.getPath() +sun.net.util.URLUtil.urlNoFragString(java.net.URL) +sun.net.www.URLConnection.canCache() +sun.net.www.URLConnection.getContentType() +sun.awt.image.URLImageSource.<init>(java.net.URL) +sun.net.www.protocol.mailto.Handler.parseURL(java.net.URL, java.lang.String, int, int) +java.net.URL.<init>(java.net.URL, java.lang.String) +java.io.File.toURL() +sun.net.www.ParseUtil.fileToEncodedURL(java.io.File) +java.net.URL.<init>(java.lang.String, java.lang.String, java.lang.String) +java.net.URL.<init>(java.lang.String, java.lang.String, int, java.lang.String) +java.applet.Applet.getImage(java.net.URL, java.lang.String) +java.applet.Applet.getAudioClip(java.net.URL, java.lang.String) +java.net.URL.<init>(java.lang.String) +javax.swing.JEditorPane$JEditorPaneAccessibleHypertextSupport$HTMLLink.getAccessibleActionObject(int) +javax.swing.text.html.ImageView.getImageURL() +javax.swing.JEditorPane.setPage(java.lang.String) +jdk.javadoc.internal.doclets.toolkit.util.Extern.isUrl(java.lang.String) +java.net.HttpRetryException.responseCode() +java.net.HttpRetryException.<init>(java.lang.String, int, java.lang.String) +java.net.HttpRetryException.<init>(java.lang.String, int) +java.net.HttpRetryException.getLocation() +java.net.URLConnection.getFileNameMap() +java.net.HttpURLConnection.setRequestMethod(java.lang.String) +java.net.URLPermission.getActions() +java.net.URLPermission.<init>(java.lang.String, java.lang.String) +java.net.URLPermission.<init>(java.lang.String) +com.sun.jmx.remote.protocol.rmi.ClientProvider.newJMXConnector(javax.management.remote.JMXServiceURL, java.util.Map) +com.sun.jmx.remote.protocol.rmi.ServerProvider.newJMXConnectorServer(javax.management.remote.JMXServiceURL, java.util.Map, javax.management.MBeanServer) +com.sun.jndi.dns.DnsUrl.fromList(java.lang.String) +com.sun.jndi.toolkit.url.UrlUtil.decode(java.lang.String) +javax.management.remote.JMXConnectorFactory.newJMXConnector(javax.management.remote.JMXServiceURL, java.util.Map) +javax.management.remote.JMXConnectorServerFactory.newJMXConnectorServer(javax.management.remote.JMXServiceURL, java.util.Map, javax.management.MBeanServer) +javax.management.remote.JMXServiceURL.<init>(java.lang.String) +javax.management.remote.rmi.RMIConnectorServer.<init>(javax.management.remote.JMXServiceURL, java.util.Map, javax.management.remote.rmi.RMIServerImpl, javax.management.MBeanServer) +java.net.URLConnection.getContent([Ljava.lang.Class;) +java.net.ContentHandler.getContent(java.net.URLConnection, [Ljava.lang.Class;) +java.net.URLConnection.getContent() +sun.awt.www.content.audio.aiff.<init>() +sun.awt.www.content.audio.basic.<init>() +sun.awt.www.content.audio.wav.<init>() +sun.awt.www.content.audio.x_aiff.<init>() +sun.awt.www.content.audio.x_wav.<init>() +sun.awt.www.content.image.gif.<init>() +sun.awt.www.content.image.jpeg.<init>() +sun.awt.www.content.image.png.<init>() +sun.awt.www.content.image.x_xbitmap.<init>() +sun.awt.www.content.image.x_xpixmap.<init>() +sun.net.www.content.text.plain.<init>() +sun.nio.ch.DatagramSocketAdaptor.getReceiveBufferSize() +sun.nio.ch.DatagramSocketAdaptor.setReceiveBufferSize(int) +sun.nio.ch.DatagramSocketAdaptor.setSendBufferSize(int) +sun.nio.ch.DatagramSocketAdaptor.getSendBufferSize() +sun.nio.ch.DatagramSocketAdaptor.setNetworkInterface(java.net.NetworkInterface) +sun.nio.ch.DatagramSocketAdaptor.getTimeToLive() +sun.nio.ch.DatagramSocketAdaptor.setTimeToLive(int) +sun.nio.ch.DatagramSocketAdaptor.getReuseAddress() +sun.nio.ch.DatagramSocketAdaptor.setReuseAddress(boolean) +sun.nio.ch.DatagramSocketAdaptor.getTrafficClass() +sun.nio.ch.DatagramSocketAdaptor.setTrafficClass(int) +sun.nio.ch.DatagramSocketAdaptor.getBroadcast() +sun.nio.ch.DatagramSocketAdaptor.setBroadcast(boolean) +sun.nio.ch.DatagramSocketAdaptor.setLoopbackMode(boolean) +sun.nio.ch.DatagramSocketAdaptor.getLoopbackMode() +jdk.internal.net.http.ResponseTimerEvent.handle() +jdk.internal.net.http.common.Utils.toConnectException(java.lang.Throwable) +java.net.Inet4Address.getHostAddress() +java.net.Inet4Address.isLoopbackAddress() +java.net.Inet4Address.isMCGlobal() +java.net.CookieManager.setCookiePolicy(java.net.CookiePolicy) +java.net.CookieManager.getCookieStore() +java.net.CookieManager.<init>() +java.net.HttpURLConnection.setFollowRedirects(boolean) +java.net.HttpURLConnection.getFollowRedirects() +java.net.HttpURLConnection.setInstanceFollowRedirects(boolean) +java.net.HttpURLConnection.getInstanceFollowRedirects() +java.net.HttpURLConnection.getRequestMethod() +java.net.HttpURLConnection.getResponseMessage() +java.net.HttpURLConnection.getResponseCode() +java.net.HttpURLConnection.setFixedLengthStreamingMode(long) +java.net.HttpURLConnection.setFixedLengthStreamingMode(int) +java.net.HttpURLConnection.setChunkedStreamingMode(int) +sun.net.www.protocol.http.HttpURLConnection.streaming() +sun.net.www.protocol.http.HttpURLConnection.getErrorStream() +sun.net.www.protocol.http.HttpURLConnection.disconnect() +sun.net.www.http.HttpClient.parseHTTP(sun.net.www.MessageHeader, sun.net.www.protocol.http.HttpURLConnection) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getRequestMethod() +sun.net.www.protocol.https.HttpsURLConnectionImpl.getPermission() +sun.net.www.protocol.https.HttpsURLConnectionImpl.setInstanceFollowRedirects(boolean) +sun.net.www.protocol.http.HttpURLConnection.setRequestMethod(java.lang.String) +sun.net.www.protocol.https.HttpsURLConnectionImpl.setFixedLengthStreamingMode(long) +sun.net.www.protocol.https.HttpsURLConnectionImpl.setFixedLengthStreamingMode(int) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseMessage() +sun.net.www.protocol.https.HttpsURLConnectionImpl.getInstanceFollowRedirects() +sun.net.www.protocol.https.HttpsURLConnectionImpl.setChunkedStreamingMode(int) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getHeaderFieldDate(java.lang.String, long) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode() +java.net.Socket.close() +java.net.Socket.<init>() +java.net.Socket.isBound() +java.net.Socket.isClosed() +java.net.Socket.isInputShutdown() +java.net.Socket.isConnected() +java.net.Socket.isOutputShutdown() +java.net.Socket.supportedOptions() +jdk.jshell.execution.RemoteExecutionControl.main([Ljava.lang.String;) +sun.net.NetworkClient.openServer(java.lang.String, int) +sun.net.ftp.impl.FtpClient.putFileStream(java.lang.String, boolean) +sun.net.ftp.impl.FtpClient.appendFile(java.lang.String, java.io.InputStream) +sun.net.ftp.impl.FtpClient.reInit() +sun.net.ftp.impl.FtpClient.endSecureSession() +sun.net.ftp.impl.FtpClient.putFile(java.lang.String, java.io.InputStream, boolean) +sun.net.www.http.HttpClient.openServer(java.lang.String, int) +sun.rmi.transport.tcp.TCPConnection.getOutputStream() +java.net.Socket.getLocalPort() +jdk.net.Sockets.getOption(java.net.Socket, java.net.SocketOption) +sun.net.ftp.impl.FtpClient.getServerAddress() +jdk.net.Sockets.setOption(java.net.Socket, java.net.SocketOption, java.lang.Object) +java.net.Socket.connect(java.net.SocketAddress) +java.net.Socket.getPort() +java.net.Socket.toString() +java.net.Socket.getInetAddress() +sun.net.ftp.impl.FtpClient.getFile(java.lang.String, java.io.OutputStream) +sun.net.ftp.impl.FtpClient.list(java.lang.String) +sun.net.ftp.impl.FtpClient.listFiles(java.lang.String) +sun.net.ftp.impl.FtpClient.getFileStream(java.lang.String) +sun.net.ftp.impl.FtpClient.nameList(java.lang.String) +sun.rmi.transport.tcp.TCPConnection.getInputStream() +sun.net.NetworkClient.closeServer() +sun.net.www.http.HttpClient.closeServer() +sun.rmi.transport.tcp.TCPConnection.close() +com.sun.jndi.ldap.ext.StartTlsResponseImpl.close() +sun.net.NetworkClient.setReadTimeout(int) +sun.rmi.transport.tcp.TCPDirectSocketFactory.createSocket(java.lang.String, int) +java.net.SocketImpl.toString() +sun.nio.ch.NioSocketImpl.<init>(boolean) +java.net.URLClassLoader.newInstance([Ljava.net.URL;) +java.net.ProxySelector.getDefault() +java.net.ProxySelector.setDefault(java.net.ProxySelector) +sun.net.spi.DefaultProxySelector.<init>() +java.net.URISyntaxException.getIndex() +java.net.URISyntaxException.getMessage() +java.net.URISyntaxException.<init>(java.lang.String, java.lang.String, int) +java.net.URISyntaxException.getInput() +java.net.URISyntaxException.<init>(java.lang.String, java.lang.String) +java.net.URLConnection.setFileNameMap(java.net.FileNameMap) +java.net.URLConnection.setDefaultAllowUserInteraction(boolean) +java.net.URLConnection.getDefaultAllowUserInteraction() +java.net.URLConnection.setDefaultUseCaches(boolean) +java.net.URLConnection.getDefaultUseCaches() +java.net.URLConnection.setReadTimeout(int) +java.net.URLConnection.getReadTimeout() +java.net.URLConnection.getRequestProperties() +java.net.URLConnection.addRequestProperty(java.lang.String, java.lang.String) +java.net.URLConnection.getRequestProperty(java.lang.String) +java.net.URLConnection.setRequestProperty(java.lang.String, java.lang.String) +java.net.URLConnection.getAllowUserInteraction() +java.net.URLConnection.setAllowUserInteraction(boolean) +java.net.URLConnection.setContentHandlerFactory(java.net.ContentHandlerFactory) +java.net.URLConnection.getIfModifiedSince() +java.net.URLConnection.setIfModifiedSince(long) +sun.net.www.protocol.http.HttpURLConnection.setRequestProperty(java.lang.String, java.lang.String) +sun.net.www.protocol.http.HttpURLConnection.getRequestProperties() +sun.net.www.protocol.http.HttpURLConnection.addRequestProperty(java.lang.String, java.lang.String) +sun.net.www.protocol.http.HttpURLConnection.setAuthenticator(java.net.Authenticator) +sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.setConnected(boolean) +sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.isConnected() +sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect() +sun.net.www.protocol.file.FileURLConnection.connect() +sun.net.www.protocol.jrt.JavaRuntimeURLConnection.connect() +sun.net.www.URLConnection.setRequestProperty(java.lang.String, java.lang.String) +sun.net.www.URLConnection.addRequestProperty(java.lang.String, java.lang.String) +sun.net.www.URLConnection.getRequestProperties() +sun.net.www.URLConnection.getRequestProperty(java.lang.String) +java.net.URLConnection.toString() +java.net.URLConnection.getURL() +sun.net.www.protocol.http.HttpURLConnection.getInputStream() +sun.net.www.protocol.http.HttpURLConnection.getOutputStream() +sun.net.www.URLConnection.close() +java.net.URLConnection.getConnectTimeout() +java.net.URLConnection.setConnectTimeout(int) +java.net.URLConnection.getUseCaches() +java.net.URLConnection.setUseCaches(boolean) +java.net.URLConnection.setDoInput(boolean) +java.net.URLConnection.getDoInput() +java.net.URLConnection.getDoOutput() +java.net.URLConnection.setDoOutput(boolean) +sun.net.www.protocol.https.HttpsURLConnectionImpl.setDefaultUseCaches(boolean) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getIfModifiedSince() +sun.net.www.protocol.https.HttpsURLConnectionImpl.setDoInput(boolean) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getAllowUserInteraction() +java.net.URLConnection.getContentLength() +sun.net.www.protocol.https.HttpsURLConnectionImpl.getContentLengthLong() +java.net.URLConnection.getHeaderFieldInt(java.lang.String, int) +java.net.URLConnection.getContentType() +java.net.URLConnection.getHeaderFieldDate(java.lang.String, long) +java.net.URLConnection.getHeaderFieldLong(java.lang.String, long) +java.net.URLConnection.getContentEncoding() +java.net.HttpURLConnection.getHeaderFieldDate(java.lang.String, long) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getDefaultUseCaches() +sun.net.www.protocol.https.HttpsURLConnectionImpl.toString() +sun.net.www.protocol.https.HttpsURLConnectionImpl.getHeaderFieldInt(java.lang.String, int) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getContent([Ljava.lang.Class;) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getDate() +sun.net.www.protocol.https.HttpsURLConnectionImpl.getUseCaches() +sun.net.www.protocol.https.HttpsURLConnectionImpl.setUseCaches(boolean) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getContentType() +sun.net.www.protocol.https.HttpsURLConnectionImpl.getDoOutput() +sun.awt.image.URLImageSource.<init>(java.net.URLConnection) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getURL() +java.net.URLConnection.getDate() +java.net.URLConnection.getExpiration() +java.net.URLConnection.getLastModified() +sun.net.www.protocol.https.HttpsURLConnectionImpl.getExpiration() +com.sun.media.sound.JavaSoundAudioClip.create(java.net.URLConnection) +sun.net.www.content.text.plain.getContent(java.net.URLConnection) +sun.net.www.URLConnection.getHeaderField(java.lang.String) +sun.net.www.URLConnection.getHeaderFields() +sun.net.www.URLConnection.getHeaderFieldKey(int) +sun.net.www.URLConnection.getContentLength() +sun.net.www.URLConnection.getHeaderField(int) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getLastModified() +java.net.URLConnection.guessContentTypeFromStream(java.io.InputStream) +sun.net.www.protocol.file.FileURLConnection.getInputStream() +sun.net.www.protocol.https.HttpsURLConnectionImpl.setIfModifiedSince(long) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getDoInput() +sun.net.www.protocol.https.HttpsURLConnectionImpl.getContent() +sun.net.www.protocol.https.HttpsURLConnectionImpl.setDoOutput(boolean) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getContentLength() +java.net.URLConnection.getContentLengthLong() +sun.net.www.protocol.https.HttpsURLConnectionImpl.getHeaderFieldLong(java.lang.String, long) +sun.net.www.protocol.https.HttpsURLConnectionImpl.setAllowUserInteraction(boolean) +sun.net.www.protocol.https.HttpsURLConnectionImpl.getContentEncoding() +sun.net.www.URLConnection.<init>(java.net.URL) +java.net.HttpCookie.getDomain() +java.net.HttpCookie.setDomain(java.lang.String) +java.net.HttpCookie.hashCode() +java.net.HttpCookie.isHttpOnly() +java.net.HttpCookie.setHttpOnly(boolean) +java.net.HttpCookie.hasExpired() +java.net.HttpCookie.getPath() +java.net.HttpCookie.setPath(java.lang.String) +java.net.HttpCookie.setValue(java.lang.String) +java.net.HttpCookie.getValue() +java.net.HttpCookie.getMaxAge() +java.net.HttpCookie.setMaxAge(long) +java.net.HttpCookie.setPortlist(java.lang.String) +java.net.HttpCookie.getPortlist() +java.net.HttpCookie.getSecure() +java.net.HttpCookie.setSecure(boolean) +java.net.HttpCookie.getName() +java.net.HttpCookie.setVersion(int) +java.net.HttpCookie.getVersion() +java.net.HttpCookie.getDiscard() +java.net.HttpCookie.setDiscard(boolean) +java.net.HttpCookie.getComment() +java.net.HttpCookie.setComment(java.lang.String) +java.net.HttpCookie.getCommentURL() +java.net.HttpCookie.setCommentURL(java.lang.String) +java.net.HttpCookie.parse(java.lang.String) +java.net.HttpCookie.equals(java.lang.Object) +java.net.HttpCookie.toString() +java.net.HttpCookie.<init>(java.lang.String, java.lang.String) +jdk.internal.net.http.websocket.OpeningHandshake.<init>(jdk.internal.net.http.websocket.BuilderImpl) +java.net.http.HttpClient$Version.values() +java.net.http.HttpRequest.newBuilder(java.net.http.HttpRequest, java.util.function.BiPredicate) +java.net.http.HttpRequest$Builder.HEAD() +java.net.http.HttpResponse$BodyHandlers.fromLineSubscriber(java.util.concurrent.Flow$Subscriber) +java.net.http.HttpResponse$BodyHandlers.ofLines() +java.net.http.HttpResponse$BodyHandlers.ofString() +java.net.http.HttpResponse$BodyHandlers.fromLineSubscriber(java.util.concurrent.Flow$Subscriber, java.util.function.Function, java.lang.String) +jdk.internal.net.http.ResponseBodyHandlers$FileDownloadBodyHandler.apply(java.net.http.HttpResponse$ResponseInfo) +java.net.http.HttpResponse$BodyHandlers.ofPublisher() +java.net.http.HttpResponse$BodyHandlers.replacing(java.lang.Object) +java.net.http.HttpResponse$BodyHandlers.ofByteArrayConsumer(java.util.function.Consumer) +java.net.http.HttpResponse$BodySubscribers.fromLineSubscriber(java.util.concurrent.Flow$Subscriber) +java.net.http.HttpResponse$BodyHandlers.ofInputStream() +java.net.http.HttpResponse$BodySubscribers.ofFile(java.nio.file.Path) +java.net.http.HttpResponse$BodyHandlers.ofString(java.nio.charset.Charset) +java.net.http.HttpResponse$BodyHandlers.discarding() +java.net.http.HttpResponse$BodyHandlers.buffering(java.net.http.HttpResponse$BodyHandler, int) +java.net.http.HttpResponse$BodyHandlers.fromSubscriber(java.util.concurrent.Flow$Subscriber) +java.net.http.HttpResponse$BodyHandlers.fromSubscriber(java.util.concurrent.Flow$Subscriber, java.util.function.Function) +java.net.http.HttpResponse$BodyHandlers.ofByteArray() +jdk.internal.net.http.BufferingSubscriber.getBody() +jdk.internal.net.http.ResponseSubscribers.getBodyAsync(java.util.concurrent.Executor, java.net.http.HttpResponse$BodySubscriber, java.util.concurrent.CompletableFuture, java.util.function.Consumer) +jdk.internal.net.http.ResponseSubscribers.getBodyAsync(java.util.concurrent.Executor, java.net.http.HttpResponse$BodySubscriber) +jdk.internal.net.http.ResponseSubscribers$MappingSubscriber.getBody() +jdk.internal.net.http.common.HttpBodySubscriberWrapper.getBody() +java.net.http.HttpConnectTimeoutException.<init>(java.lang.String) +java.net.http.HttpResponse$BodyHandlers.ofFile(java.nio.file.Path) +jdk.internal.net.http.websocket.OpeningHandshake.send() +java.net.http.HttpClient$Redirect.values() +java.net.http.HttpClient.newHttpClient() +java.net.http.WebSocketHandshakeException.getResponse() +java.net.http.WebSocketHandshakeException.<init>(java.net.http.HttpResponse) +java.net.http.WebSocketHandshakeException.initCause(java.lang.Throwable) +java.net.http.WebSocket$Listener.onBinary(java.net.http.WebSocket, java.nio.ByteBuffer, boolean) +java.net.http.WebSocket$Listener.onOpen(java.net.http.WebSocket) +java.net.http.WebSocket$Listener.onText(java.net.http.WebSocket, java.lang.CharSequence, boolean) +java.net.http.WebSocket$Listener.onPing(java.net.http.WebSocket, java.nio.ByteBuffer) +java.net.http.WebSocket$Listener.onPong(java.net.http.WebSocket, java.nio.ByteBuffer) +java.net.http.HttpHeaders.map() +java.net.http.HttpHeaders.of(java.util.Map, java.util.function.BiPredicate) +java.net.http.HttpHeaders.hashCode() +java.net.http.HttpHeaders.firstValue(java.lang.String) +java.net.http.HttpHeaders.firstValueAsLong(java.lang.String) +java.net.http.HttpHeaders.equals(java.lang.Object) +java.net.http.HttpHeaders.allValues(java.lang.String) +java.net.http.HttpHeaders.toString() +jdk.internal.net.http.common.Log.dumpHeaders(java.lang.StringBuilder, java.lang.String, java.net.http.HttpHeaders) +jdk.internal.net.http.common.Utils.charsetFrom(java.net.http.HttpHeaders) +jdk.internal.net.http.common.HttpHeadersBuilder.build() +java.net.http.HttpClient.shutdownNow() +java.net.http.HttpClient.close() +jdk.internal.net.http.common.Utils.CONTEXT_RESTRICTED(java.net.http.HttpClient) +jdk.internal.net.http.HttpClientFacade.close() +java.net.http.HttpRequest$BodyPublishers.ofString(java.lang.String) +javax.net.ServerSocketFactory.getDefault() +javax.net.SocketFactory.getDefault() +javax.rmi.ssl.SslRMIServerSocketFactory.<init>(javax.net.ssl.SSLContext, [Ljava.lang.String;, [Ljava.lang.String;, boolean) +javax.rmi.ssl.SslRMIClientSocketFactory.createSocket(java.lang.String, int) +javax.net.ssl.SSLSocketFactory.<init>() +javax.net.ssl.SSLSessionBindingEvent.getName() +javax.net.ssl.SSLSessionBindingEvent.<init>(javax.net.ssl.SSLSession, java.lang.String) +javax.net.ssl.SSLEngineResult$HandshakeStatus.values() +javax.net.ssl.SSLContext.createSSLEngine(java.lang.String, int) +javax.net.ssl.SSLContext.getSupportedSSLParameters() +javax.net.ssl.SSLContext.getServerSocketFactory() +javax.net.ssl.SSLContext.createSSLEngine() +javax.net.ssl.SSLContext.getSocketFactory() +javax.net.ssl.SSLContext.getDefaultSSLParameters() +javax.net.ssl.SSLContext.getServerSessionContext() +javax.net.ssl.SSLContext.init([Ljavax.net.ssl.KeyManager;, [Ljavax.net.ssl.TrustManager;, java.security.SecureRandom) +javax.net.ssl.SSLContext.getClientSessionContext() +com.sun.jndi.ldap.ext.StartTlsResponseImpl.negotiate(javax.net.ssl.SSLSocketFactory) +javax.net.ssl.SNIHostName.createSNIMatcher(java.lang.String) +javax.net.ssl.KeyStoreBuilderParameters.getParameters() +javax.net.ssl.KeyStoreBuilderParameters.<init>(java.security.KeyStore$Builder) +javax.net.ssl.KeyStoreBuilderParameters.<init>(java.util.List) +javax.net.ssl.SSLServerSocketFactory.getDefault() +javax.net.ssl.SSLEngineResult$Status.values() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getLocalSupportedSignatureAlgorithms() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getRequestedServerNames() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getStatusResponses() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getPeerSupportedSignatureAlgorithms() +javax.net.ssl.SSLServerSocket.setSSLParameters(javax.net.ssl.SSLParameters) +javax.net.ssl.SSLServerSocket.getSSLParameters() +javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(javax.net.ssl.HostnameVerifier) +javax.net.ssl.SSLContext.setDefault(javax.net.ssl.SSLContext) +javax.net.ssl.SSLHandshakeException.<init>(java.lang.String) +javax.net.ssl.SSLKeyException.<init>(java.lang.String) +javax.net.ssl.SSLPeerUnverifiedException.<init>(java.lang.String) +javax.net.ssl.SSLProtocolException.<init>(java.lang.String) +javax.net.ssl.SSLHandshakeException.<init>(java.lang.String, java.lang.Throwable) +javax.net.ssl.SSLKeyException.<init>(java.lang.String, java.lang.Throwable) +javax.net.ssl.SSLPeerUnverifiedException.<init>(java.lang.String, java.lang.Throwable) +javax.net.ssl.SSLProtocolException.<init>(java.lang.String, java.lang.Throwable) +javax.net.ssl.SNIMatcher.getType() +javax.net.ssl.SSLParameters.setSNIMatchers(java.util.Collection) +javax.net.ssl.CertPathTrustManagerParameters.getParameters() +javax.net.ssl.CertPathTrustManagerParameters.<init>(java.security.cert.CertPathParameters) +javax.net.ssl.SSLParameters.setSignatureSchemes([Ljava.lang.String;) +javax.net.ssl.SSLParameters.getSignatureSchemes() +javax.net.ssl.SSLParameters.<init>() +javax.net.ssl.SSLParameters.<init>([Ljava.lang.String;) +javax.net.ssl.SSLParameters.<init>([Ljava.lang.String;, [Ljava.lang.String;) +javax.net.ssl.SSLParameters.getApplicationProtocols() +javax.net.ssl.SSLParameters.setApplicationProtocols([Ljava.lang.String;) +javax.net.ssl.SSLParameters.getSNIMatchers() +javax.net.ssl.SSLParameters.getNeedClientAuth() +javax.net.ssl.SSLParameters.setNeedClientAuth(boolean) +javax.net.ssl.SSLParameters.setWantClientAuth(boolean) +javax.net.ssl.SSLParameters.getEndpointIdentificationAlgorithm() +javax.net.ssl.SSLParameters.setEndpointIdentificationAlgorithm(java.lang.String) +javax.net.ssl.SSLParameters.getAlgorithmConstraints() +javax.net.ssl.SSLParameters.setAlgorithmConstraints(java.security.AlgorithmConstraints) +javax.net.ssl.SSLParameters.getServerNames() +javax.net.ssl.SSLParameters.setServerNames(java.util.List) +javax.net.ssl.SSLParameters.setEnableRetransmissions(boolean) +javax.net.ssl.SSLParameters.getEnableRetransmissions() +javax.net.ssl.SSLParameters.setUseCipherSuitesOrder(boolean) +javax.net.ssl.SSLParameters.getUseCipherSuitesOrder() +javax.net.ssl.SSLParameters.setCipherSuites([Ljava.lang.String;) +javax.net.ssl.SSLParameters.getCipherSuites() +javax.net.ssl.SSLParameters.getMaximumPacketSize() +javax.net.ssl.SSLParameters.setMaximumPacketSize(int) +javax.net.ssl.SSLParameters.getWantClientAuth() +javax.net.ssl.SSLParameters.getNamedGroups() +javax.net.ssl.SSLParameters.setNamedGroups([Ljava.lang.String;) +javax.net.ssl.SSLParameters.getProtocols() +javax.net.ssl.SSLParameters.setProtocols([Ljava.lang.String;) +jdk.internal.net.http.common.Log.logParams(javax.net.ssl.SSLParameters) +jdk.internal.net.http.common.Utils.copySSLParameters(javax.net.ssl.SSLParameters) +javax.net.ssl.SSLEngine.setSSLParameters(javax.net.ssl.SSLParameters) +javax.net.ssl.SSLSocket.setSSLParameters(javax.net.ssl.SSLParameters) +javax.net.ssl.SSLEngine.getSSLParameters() +javax.net.ssl.SSLSocket.getSSLParameters() +javax.net.ssl.TrustManagerFactory.init(javax.net.ssl.ManagerFactoryParameters) +javax.net.ssl.TrustManagerFactory.init(java.security.KeyStore) +javax.net.ssl.TrustManagerFactory.getTrustManagers() +sun.security.ssl.SSLServerSocketFactoryImpl.<init>() +javax.net.ssl.KeyManagerFactory.getAlgorithm() +javax.net.ssl.KeyManagerFactory.init(java.security.KeyStore, [C) +javax.net.ssl.KeyManagerFactory.init(javax.net.ssl.ManagerFactoryParameters) +javax.net.ssl.KeyManagerFactory.getKeyManagers() +javax.net.ssl.KeyManagerFactory.getProvider() +javax.net.ssl.KeyManagerFactory.getInstance(java.lang.String, java.lang.String) +javax.net.ssl.KeyManagerFactory.getInstance(java.lang.String) +javax.net.ssl.KeyManagerFactory.getInstance(java.lang.String, java.security.Provider) +javax.net.ssl.SSLSocketFactory.getDefault() +javax.net.ssl.SSLEngineResult.bytesConsumed() +javax.net.ssl.SSLEngineResult.toString() +javax.net.ssl.SSLEngineResult.<init>(javax.net.ssl.SSLEngineResult$Status, javax.net.ssl.SSLEngineResult$HandshakeStatus, int, int, long) +javax.net.ssl.SSLEngineResult.sequenceNumber() +javax.net.ssl.SSLEngineResult.getStatus() +javax.net.ssl.SSLEngineResult.bytesProduced() +javax.net.ssl.SSLEngineResult.getHandshakeStatus() +javax.net.ssl.SSLEngineResult.<init>(javax.net.ssl.SSLEngineResult$Status, javax.net.ssl.SSLEngineResult$HandshakeStatus, int, int) +javax.net.ssl.SNIServerName.hashCode() +javax.net.ssl.SNIServerName.getEncoded() +javax.net.ssl.SNIServerName.equals(java.lang.Object) +javax.net.ssl.SNIServerName.toString() +javax.net.ssl.SNIServerName.getType() +javax.net.ssl.SSLContext.getDefault() +javax.net.ssl.SSLContext.getProvider() +javax.net.ssl.SSLContext.getProtocol() +com.sun.net.httpserver.HttpsConfigurator.configure(com.sun.net.httpserver.HttpsParameters) +javax.rmi.ssl.SslRMIServerSocketFactory.createServerSocket(int) +javax.net.ssl.SSLContext.getInstance(java.lang.String) +javax.net.ssl.SSLContext.getInstance(java.lang.String, java.security.Provider) +javax.net.ssl.SSLContext.getInstance(java.lang.String, java.lang.String) +com.sun.jndi.ldap.Connection.setHandshakeCompletedListener(javax.net.ssl.SSLSocket) +javax.net.ssl.HandshakeCompletedEvent.getPeerCertificates() +javax.net.ssl.HandshakeCompletedEvent.getPeerCertificateChain() +javax.net.ssl.HandshakeCompletedEvent.getPeerPrincipal() +javax.net.ssl.HandshakeCompletedEvent.getLocalCertificates() +javax.net.ssl.HandshakeCompletedEvent.getCipherSuite() +javax.net.ssl.HandshakeCompletedEvent.getLocalPrincipal() +javax.net.ssl.HandshakeCompletedEvent.getSession() +javax.net.ssl.HandshakeCompletedEvent.<init>(javax.net.ssl.SSLSocket, javax.net.ssl.SSLSession) +javax.net.ssl.HttpsURLConnection.getSSLSocketFactory() +javax.net.ssl.HttpsURLConnection.setSSLSocketFactory(javax.net.ssl.SSLSocketFactory) +javax.net.ssl.HttpsURLConnection.getDefaultHostnameVerifier() +javax.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory() +javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(javax.net.ssl.SSLSocketFactory) +javax.net.ssl.HttpsURLConnection.setHostnameVerifier(javax.net.ssl.HostnameVerifier) +javax.net.ssl.HttpsURLConnection.getHostnameVerifier() +javax.net.ssl.HttpsURLConnection.getLocalPrincipal() +javax.net.ssl.HttpsURLConnection.getPeerPrincipal() +javax.net.ssl.SSLEngine.getPeerHost() +javax.net.ssl.SSLEngine.getPeerPort() +javax.net.ssl.SSLEngine.unwrap(java.nio.ByteBuffer, java.nio.ByteBuffer) +javax.net.ssl.SSLEngine.unwrap(java.nio.ByteBuffer, [Ljava.nio.ByteBuffer;) +javax.net.ssl.SSLEngine.wrap(java.nio.ByteBuffer, java.nio.ByteBuffer) +javax.net.ssl.SSLEngine.wrap([Ljava.nio.ByteBuffer;, java.nio.ByteBuffer) +jdk.internal.net.http.common.SSLFlowDelegate.monitor() +javax.net.ssl.SNIHostName.equals(java.lang.Object) +javax.net.ssl.SNIHostName.toString() +javax.net.ssl.SNIHostName.hashCode() +javax.net.ssl.SNIHostName.getAsciiName() +sun.security.ssl.SSLSocketFactoryImpl.<init>() +jdk.internal.net.http.common.ImmutableSSLSession.getLocalPrincipal() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getLocalPrincipal() +jdk.internal.net.http.common.ImmutableSSLSession.getId() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getId() +jdk.internal.net.http.common.ImmutableSSLSession.getLastAccessedTime() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getLastAccessedTime() +jdk.internal.net.http.common.ImmutableSSLSession.getPeerPrincipal() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getPeerPrincipal() +jdk.internal.net.http.common.ImmutableSSLSession.getSessionContext() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getSessionContext() +jdk.internal.net.http.common.ImmutableSSLSession.getCreationTime() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getCreationTime() +jdk.internal.net.http.common.ImmutableSSLSession.getPeerHost() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getPeerHost() +jdk.internal.net.http.common.ImmutableSSLSession.isValid() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.isValid() +jdk.internal.net.http.common.ImmutableSSLSession.getCipherSuite() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getCipherSuite() +jdk.internal.net.http.common.ImmutableSSLSession.getProtocol() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getProtocol() +jdk.internal.net.http.common.ImmutableSSLSession.getLocalCertificates() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getLocalCertificates() +jdk.internal.net.http.common.ImmutableSSLSession.getPeerPort() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getPeerPort() +jdk.internal.net.http.common.ImmutableSSLSession.getApplicationBufferSize() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getApplicationBufferSize() +jdk.internal.net.http.common.ImmutableSSLSession.getValue(java.lang.String) +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getValue(java.lang.String) +jdk.internal.net.http.common.ImmutableSSLSession.getPacketBufferSize() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getPacketBufferSize() +jdk.internal.net.http.common.ImmutableSSLSession.getPeerCertificates() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getPeerCertificates() +jdk.internal.net.http.common.ImmutableSSLSession.getValueNames() +jdk.internal.net.http.common.ImmutableExtendedSSLSession.getValueNames() +javax.net.ssl.TrustManagerFactory.getAlgorithm() +javax.net.ssl.TrustManagerFactory.getProvider() +javax.net.ssl.TrustManagerFactory.getInstance(java.lang.String) +javax.net.ssl.TrustManagerFactory.getInstance(java.lang.String, java.security.Provider) +javax.net.ssl.TrustManagerFactory.getInstance(java.lang.String, java.lang.String) +com.sun.net.httpserver.HttpServer.create(java.net.InetSocketAddress, int, java.lang.String, com.sun.net.httpserver.HttpHandler, [Lcom.sun.net.httpserver.Filter;) +com.sun.net.httpserver.HttpsServer.create(java.net.InetSocketAddress, int, java.lang.String, com.sun.net.httpserver.HttpHandler, [Lcom.sun.net.httpserver.Filter;) +com.sun.net.httpserver.Authenticator$Failure.<init>(int) +com.sun.net.httpserver.Authenticator$Retry.<init>(int) +com.sun.net.httpserver.Authenticator$Success.<init>(com.sun.net.httpserver.HttpPrincipal) +com.sun.net.httpserver.Filter.afterHandler(java.lang.String, java.util.function.Consumer) +com.sun.net.httpserver.Headers.get(java.lang.Object) +com.sun.net.httpserver.Headers.hashCode() +com.sun.net.httpserver.Headers.clear() +com.sun.net.httpserver.Headers.containsKey(java.lang.Object) +com.sun.net.httpserver.Headers.values() +com.sun.net.httpserver.Headers.containsValue(java.lang.Object) +com.sun.net.httpserver.Headers.getFirst(java.lang.String) +com.sun.net.httpserver.Headers.keySet() +com.sun.net.httpserver.Headers.put(java.lang.String, java.util.List) +com.sun.net.httpserver.Headers.isEmpty() +com.sun.net.httpserver.Headers.remove(java.lang.Object) +com.sun.net.httpserver.Headers.toString() +com.sun.net.httpserver.Headers.entrySet() +com.sun.net.httpserver.Headers.add(java.lang.String, java.lang.String) +com.sun.net.httpserver.Headers.size() +com.sun.net.httpserver.Headers.equals(java.lang.Object) +com.sun.net.httpserver.Headers.<init>(java.util.Map) +com.sun.net.httpserver.Headers.<init>() +com.sun.net.httpserver.HttpHandlers.of(int, com.sun.net.httpserver.Headers, java.lang.String) +sun.net.httpserver.UnmodifiableHeaders.get(java.lang.Object) +sun.net.httpserver.UnmodifiableHeaders.hashCode() +com.sun.net.httpserver.Request.with(java.lang.String, java.util.List) +sun.net.httpserver.UnmodifiableHeaders.containsKey(java.lang.Object) +sun.net.httpserver.UnmodifiableHeaders.containsValue(java.lang.Object) +com.sun.net.httpserver.BasicAuthenticator.authenticate(com.sun.net.httpserver.HttpExchange) +sun.net.httpserver.UnmodifiableHeaders.getFirst(java.lang.String) +com.sun.net.httpserver.Headers.set(java.lang.String, java.lang.String) +com.sun.net.httpserver.Headers.put(java.lang.Object, java.lang.Object) +sun.net.httpserver.UnmodifiableHeaders.<init>(com.sun.net.httpserver.Headers) +sun.net.httpserver.UnmodifiableHeaders.isEmpty() +com.sun.net.httpserver.Headers.of([Ljava.lang.String;) +sun.net.httpserver.UnmodifiableHeaders.size() +sun.net.httpserver.UnmodifiableHeaders.equals(java.lang.Object) +com.sun.net.httpserver.Headers.of(java.util.Map) +com.sun.net.httpserver.Headers.replaceAll(java.util.function.BiFunction) +com.sun.net.httpserver.Headers.putAll(java.util.Map) +com.sun.net.httpserver.Authenticator$Retry.getResponseCode() +sun.net.httpserver.AuthFilter.doFilter(com.sun.net.httpserver.HttpExchange, com.sun.net.httpserver.Filter$Chain) +com.sun.net.httpserver.HttpsConfigurator.getSSLContext() +com.sun.net.httpserver.HttpsConfigurator.<init>(javax.net.ssl.SSLContext) +com.sun.net.httpserver.Filter$Chain.doFilter(com.sun.net.httpserver.HttpExchange) +com.sun.net.httpserver.HttpHandlers.handleOrElse(java.util.function.Predicate, com.sun.net.httpserver.HttpHandler, com.sun.net.httpserver.HttpHandler) +com.sun.net.httpserver.SimpleFileServer.createFileServer(java.net.InetSocketAddress, java.nio.file.Path, com.sun.net.httpserver.SimpleFileServer$OutputLevel) +com.sun.net.httpserver.SimpleFileServer.createFileHandler(java.nio.file.Path) +sun.net.httpserver.simpleserver.FileServerHandler.create(java.nio.file.Path, java.util.function.UnaryOperator) +com.sun.net.httpserver.Filter.beforeHandler(java.lang.String, java.util.function.Consumer) +sun.net.httpserver.DelegatingHttpExchange.getResponseBody() +sun.net.httpserver.DelegatingHttpExchange.getAttribute(java.lang.String) +sun.net.httpserver.DelegatingHttpExchange.getHttpContext() +sun.net.httpserver.AuthFilter.consumeInput(com.sun.net.httpserver.HttpExchange) +sun.net.httpserver.DelegatingHttpExchange.getRequestBody() +sun.net.httpserver.DelegatingHttpExchange.getProtocol() +sun.net.httpserver.simpleserver.FileServerHandler.handle(com.sun.net.httpserver.HttpExchange) +sun.net.httpserver.DelegatingHttpExchange.getResponseCode() +sun.net.httpserver.DelegatingHttpExchange.getRemoteAddress() +sun.net.httpserver.DelegatingHttpExchange.setAttribute(java.lang.String, java.lang.Object) +sun.net.httpserver.DelegatingHttpExchange.getPrincipal() +sun.net.httpserver.DelegatingHttpExchange.close() +sun.net.httpserver.DelegatingHttpExchange.getResponseHeaders() +sun.net.httpserver.DelegatingHttpExchange.sendResponseHeaders(int, long) +sun.net.httpserver.DelegatingHttpExchange.setStreams(java.io.InputStream, java.io.OutputStream) +sun.net.httpserver.DelegatingHttpExchange.getLocalAddress() +sun.net.httpserver.DelegatingHttpExchange.<init>(com.sun.net.httpserver.HttpExchange) +com.sun.net.httpserver.HttpServer.create() +com.sun.net.httpserver.Filter.adaptRequest(java.lang.String, java.util.function.UnaryOperator) +com.sun.net.httpserver.Filter$Chain.<init>(java.util.List, com.sun.net.httpserver.HttpHandler) +com.sun.net.httpserver.Authenticator$Success.getPrincipal() +com.sun.net.httpserver.Authenticator$Failure.getResponseCode() +sun.net.httpserver.simpleserver.OutputFilter.doFilter(com.sun.net.httpserver.HttpExchange, com.sun.net.httpserver.Filter$Chain) +sun.net.httpserver.simpleserver.OutputFilter.description() +sun.net.httpserver.AuthFilter.<init>(com.sun.net.httpserver.Authenticator) +com.sun.net.httpserver.BasicAuthenticator.getRealm() +com.sun.net.httpserver.BasicAuthenticator.<init>(java.lang.String, java.nio.charset.Charset) +com.sun.net.httpserver.BasicAuthenticator.<init>(java.lang.String) +com.sun.net.httpserver.HttpsParameters.setCipherSuites([Ljava.lang.String;) +com.sun.net.httpserver.HttpsParameters.getCipherSuites() +com.sun.net.httpserver.HttpsParameters.setProtocols([Ljava.lang.String;) +com.sun.net.httpserver.HttpsParameters.getProtocols() +com.sun.net.httpserver.HttpsParameters.getWantClientAuth() +com.sun.net.httpserver.HttpsParameters.setWantClientAuth(boolean) +com.sun.net.httpserver.HttpsParameters.getNeedClientAuth() +com.sun.net.httpserver.HttpsParameters.setNeedClientAuth(boolean) +com.sun.net.httpserver.HttpPrincipal.equals(java.lang.Object) +com.sun.net.httpserver.HttpPrincipal.getName() +com.sun.net.httpserver.HttpPrincipal.hashCode() +com.sun.net.httpserver.HttpPrincipal.getUsername() +com.sun.net.httpserver.HttpPrincipal.<init>(java.lang.String, java.lang.String) +com.sun.net.httpserver.HttpPrincipal.getRealm() +com.sun.net.httpserver.HttpPrincipal.toString() +com.sun.net.httpserver.HttpsServer.create() +sun.net.httpserver.simpleserver.OutputFilter.create(java.io.OutputStream, com.sun.net.httpserver.SimpleFileServer$OutputLevel) +com.sun.net.httpserver.SimpleFileServer$OutputLevel.values() +sun.net.httpserver.Utils.isQuotedStringContent(java.lang.String) +sun.net.httpserver.Utils.isValidName(java.lang.String) +sun.net.httpserver.HttpServerImpl.getAddress() +sun.net.httpserver.HttpServerImpl.bind(java.net.InetSocketAddress, int) +sun.net.httpserver.HttpServerImpl.stop(int) +sun.net.httpserver.HttpServerImpl.removeContext(com.sun.net.httpserver.HttpContext) +sun.net.httpserver.HttpServerImpl.start() +sun.net.httpserver.HttpServerImpl.createContext(java.lang.String, com.sun.net.httpserver.HttpHandler) +sun.net.httpserver.HttpServerImpl.createContext(java.lang.String) +sun.net.httpserver.HttpServerImpl.getExecutor() +sun.net.httpserver.HttpServerImpl.removeContext(java.lang.String) +sun.net.httpserver.HttpServerImpl.setExecutor(java.util.concurrent.Executor) +sun.net.httpserver.DefaultHttpServerProvider.createHttpServer(java.net.InetSocketAddress, int) +sun.net.httpserver.HttpsServerImpl.bind(java.net.InetSocketAddress, int) +sun.net.httpserver.HttpsServerImpl.getExecutor() +sun.net.httpserver.HttpsServerImpl.stop(int) +sun.net.httpserver.HttpsServerImpl.setExecutor(java.util.concurrent.Executor) +sun.net.httpserver.HttpsServerImpl.removeContext(com.sun.net.httpserver.HttpContext) +sun.net.httpserver.HttpsServerImpl.getAddress() +sun.net.httpserver.HttpsServerImpl.createContext(java.lang.String) +sun.net.httpserver.HttpsServerImpl.start() +sun.net.httpserver.HttpsServerImpl.getHttpsConfigurator() +sun.net.httpserver.HttpsServerImpl.setHttpsConfigurator(com.sun.net.httpserver.HttpsConfigurator) +sun.net.httpserver.HttpsServerImpl.removeContext(java.lang.String) +sun.net.httpserver.HttpsServerImpl.createContext(java.lang.String, com.sun.net.httpserver.HttpHandler) +sun.net.httpserver.AuthFilter.setAuthenticator(com.sun.net.httpserver.Authenticator) +sun.net.httpserver.HttpConnection$State.values() +sun.net.httpserver.DefaultHttpServerProvider.createHttpsServer(java.net.InetSocketAddress, int) +sun.net.httpserver.UnmodifiableHeaders.values() +sun.net.httpserver.UnmodifiableHeaders.entrySet() +sun.net.httpserver.UnmodifiableHeaders.keySet() +sun.net.httpserver.UnmodifiableHeaders.remove(java.lang.Object) +sun.net.httpserver.UnmodifiableHeaders.put(java.lang.Object, java.lang.Object) +sun.net.httpserver.UnmodifiableHeaders.replace(java.lang.Object, java.lang.Object) +sun.net.httpserver.UnmodifiableHeaders.replace(java.lang.Object, java.lang.Object, java.lang.Object) \ No newline at end of file diff --git a/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/reflection-methods.txt b/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/reflection-methods.txt index a496edb8..2cbb0495 100644 --- a/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/reflection-methods.txt +++ b/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/reflection-methods.txt @@ -1,4 +1,196 @@ sun.reflect.misc java.lang.reflect java.lang.invoke -java.lang.Class.forName \ No newline at end of file +jdk.internal.reflect.ReflectionFactory.newConstructorAccessor(java.lang.reflect.Constructor) +java.lang.reflect.Method.invoke(java.lang.Object, [Ljava.lang.Object;) +jdk.internal.reflect.ReflectionFactory.newFieldAccessor(java.lang.reflect.Field, boolean) +java.lang.reflect.Field.getBoolean(java.lang.Object) +java.lang.reflect.Field.setShort(java.lang.Object, short) +java.lang.reflect.Field.get(java.lang.Object) +java.lang.reflect.Field.getChar(java.lang.Object) +java.lang.reflect.Field.setBoolean(java.lang.Object, boolean) +java.lang.reflect.Field.setInt(java.lang.Object, int) +java.lang.reflect.Field.getLong(java.lang.Object) +java.lang.reflect.Field.set(java.lang.Object, java.lang.Object) +java.lang.reflect.Field.setByte(java.lang.Object, byte) +java.lang.reflect.Field.getFloat(java.lang.Object) +java.lang.reflect.Field.getInt(java.lang.Object) +java.lang.reflect.Field.getShort(java.lang.Object) +java.lang.reflect.Field.setFloat(java.lang.Object, float) +java.lang.reflect.Field.getByte(java.lang.Object) +java.lang.reflect.Field.setChar(java.lang.Object, char) +java.lang.reflect.Field.setLong(java.lang.Object, long) +java.lang.reflect.Field.setDouble(java.lang.Object, double) +java.lang.reflect.Field.getDouble(java.lang.Object) +jdk.internal.reflect.ReflectionFactory.newMethodAccessor(java.lang.reflect.Method, boolean) +jdk.internal.reflect.Reflection.filterFields(java.lang.Class, [Ljava.lang.reflect.Field;) +jdk.internal.reflect.Reflection.registerFieldsToFilter(java.lang.Class, java.util.Set) +jdk.internal.reflect.Reflection.filterMethods(java.lang.Class, [Ljava.lang.reflect.Method;) +jdk.internal.reflect.Reflection.registerMethodsToFilter(java.lang.Class, java.util.Set) +jdk.internal.reflect.Reflection.verifyMemberAccess(java.lang.Class, java.lang.Class, java.lang.Class, int) +jdk.internal.reflect.Reflection.ensureMemberAccess(java.lang.Class, java.lang.Class, java.lang.Class, int) +jdk.internal.reflect.Reflection.newIllegalAccessException(java.lang.Class, java.lang.Class, java.lang.Class, int) +sun.invoke.util.VerifyAccess.isMemberAccessible(java.lang.Class, java.lang.Class, int, java.lang.Class, java.lang.Class, int) +jdk.internal.reflect.Reflection.verifyPublicMemberAccess(java.lang.Class, int) +java.lang.ModuleLayer$Controller.enableNativeAccess(java.lang.Module) +java.lang.foreign.SymbolLookup.libraryLookup(java.nio.file.Path, java.lang.foreign.Arena) +java.lang.foreign.SymbolLookup.libraryLookup(java.lang.String, java.lang.foreign.Arena) +jdk.internal.foreign.AbstractMemorySegmentImpl.reinterpretInternal(java.lang.Class, long, java.lang.foreign.MemorySegment$Scope, java.util.function.Consumer) +jdk.internal.foreign.abi.AbstractLinker.downcallHandle(java.lang.foreign.MemorySegment, java.lang.foreign.FunctionDescriptor, [Ljava.lang.foreign.Linker$Option;) +jdk.internal.foreign.abi.AbstractLinker.upcallStub(java.lang.invoke.MethodHandle, java.lang.foreign.FunctionDescriptor, java.lang.foreign.Arena, [Ljava.lang.foreign.Linker$Option;) +jdk.internal.foreign.abi.AbstractLinker.downcallHandle(java.lang.foreign.FunctionDescriptor, [Ljava.lang.foreign.Linker$Option;) +jdk.internal.foreign.layout.ValueLayouts$OfAddressImpl.withTargetLayout(java.lang.foreign.MemoryLayout) +java.io.ObjectStreamClass.forClass() +java.io.ObjectStreamField.getType() +java.lang.Class.getNestMembers() +java.lang.Class.newInstance() +java.lang.Class.getDeclaredFields() +java.lang.Class.getField(java.lang.String) +java.lang.Class.getConstructors() +java.lang.Class.getResourceAsStream(java.lang.String) +java.lang.Class.getDeclaredConstructors() +java.lang.Class.getMethod(java.lang.String, [Ljava.lang.Class;) +java.lang.Class.getDeclaredClasses() +java.lang.Class.getClassLoader() +java.lang.Class.getDeclaredMethods() +java.lang.Class.forName(java.lang.String) +java.lang.Class.getMethods() +java.lang.Class.getNestHost() +java.lang.Class.getEnclosingMethod() +java.lang.Class.forName(java.lang.Module, java.lang.String) +java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) +java.lang.Class.getEnclosingClass() +java.lang.Class.getFields() +java.lang.Class.getDeclaredMethod(java.lang.String, [Ljava.lang.Class;) +java.lang.Class.getDeclaredConstructor([Ljava.lang.Class;) +java.lang.Class.getEnclosingConstructor() +java.lang.Class.getConstructor([Ljava.lang.Class;) +java.lang.Class.getResource(java.lang.String) +java.lang.Class.getRecordComponents() +java.lang.Class.getPermittedSubclasses() +java.lang.Class.getDeclaredField(java.lang.String) +java.lang.Class.getClasses() +java.lang.Class.getDeclaringClass() +java.lang.ClassLoader.getParent() +java.lang.ClassLoader.getSystemClassLoader() +java.lang.ClassLoader.getPlatformClassLoader() +java.lang.Module.addReads(java.lang.Module) +java.lang.Module.getResourceAsStream(java.lang.String) +java.lang.Module.addExports(java.lang.String, java.lang.Module) +java.lang.Module.addOpens(java.lang.String, java.lang.Module) +java.lang.Module.addUses(java.lang.Class) +java.lang.Package.getPackages() +java.lang.Package.getPackage(java.lang.String) +java.lang.Runtime.loadLibrary(java.lang.String) +java.lang.Runtime.load(java.lang.String) +java.lang.System.getLogger(java.lang.String) +java.lang.System.getLogger(java.lang.String, java.util.ResourceBundle) +java.lang.System.setSecurityManager(java.lang.SecurityManager) +java.lang.System.loadLibrary(java.lang.String) +java.lang.System.load(java.lang.String) +java.lang.Thread.getContextClassLoader() +java.lang.foreign.SymbolLookup.loaderLookup() +java.lang.invoke.MethodHandleProxies.asInterfaceInstance(java.lang.Class, java.lang.invoke.MethodHandle) +java.lang.invoke.MethodHandles.lookup() +java.lang.reflect.AccessibleObject.canAccess(java.lang.Object) +java.lang.reflect.AccessibleObject.trySetAccessible() +java.lang.reflect.AccessibleObject.setAccessible([Ljava.lang.reflect.AccessibleObject;, boolean) +java.lang.reflect.Constructor.newInstance([Ljava.lang.Object;) +java.lang.reflect.Constructor.setAccessible(boolean) +java.lang.reflect.Field.setAccessible(boolean) +java.lang.reflect.InvocationHandler.invokeDefault(java.lang.Object, java.lang.reflect.Method, [Ljava.lang.Object;) +java.lang.reflect.Method.setAccessible(boolean) +java.lang.reflect.Proxy.getProxyClass(java.lang.ClassLoader, [Ljava.lang.Class;) +java.lang.reflect.Proxy.newProxyInstance(java.lang.ClassLoader, [Ljava.lang.Class;, java.lang.reflect.InvocationHandler) +java.lang.reflect.Proxy.getInvocationHandler(java.lang.Object) +java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) +java.security.AccessController.doPrivileged(java.security.PrivilegedAction, java.security.AccessControlContext) +java.security.AccessController.doPrivileged(java.security.PrivilegedAction) +java.security.AccessController.doPrivilegedWithCombiner(java.security.PrivilegedExceptionAction, java.security.AccessControlContext, [Ljava.security.Permission;) +java.security.AccessController.doPrivilegedWithCombiner(java.security.PrivilegedAction, java.security.AccessControlContext, [Ljava.security.Permission;) +java.security.AccessController.doPrivilegedWithCombiner(java.security.PrivilegedAction) +java.security.AccessController.doPrivileged(java.security.PrivilegedAction, java.security.AccessControlContext, [Ljava.security.Permission;) +java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction) +java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext, [Ljava.security.Permission;) +java.security.AccessController.doPrivilegedWithCombiner(java.security.PrivilegedExceptionAction) +java.sql.DriverManager.deregisterDriver(java.sql.Driver) +java.sql.DriverManager.getConnection(java.lang.String, java.lang.String, java.lang.String) +java.sql.DriverManager.drivers() +java.sql.DriverManager.getDriver(java.lang.String) +java.sql.DriverManager.getConnection(java.lang.String, java.util.Properties) +java.sql.DriverManager.getConnection(java.lang.String) +java.sql.DriverManager.getDrivers() +java.util.ResourceBundle.getBundle(java.lang.String) +java.util.ResourceBundle.getBundle(java.lang.String, java.lang.Module) +java.util.ResourceBundle.getBundle(java.lang.String, java.util.Locale) +java.util.ResourceBundle.getBundle(java.lang.String, java.util.Locale, java.util.ResourceBundle$Control) +java.util.ResourceBundle.getBundle(java.lang.String, java.util.ResourceBundle$Control) +java.util.ResourceBundle.getBundle(java.lang.String, java.util.Locale, java.lang.Module) +java.util.ResourceBundle.getBundle(java.lang.String, java.util.Locale, java.lang.ClassLoader) +java.util.ResourceBundle.clearCache() +java.util.ResourceBundle.getBundle(java.lang.String, java.util.Locale, java.lang.ClassLoader, java.util.ResourceBundle$Control) +java.util.ServiceLoader.load(java.lang.ModuleLayer, java.lang.Class) +java.util.ServiceLoader.load(java.lang.Class, java.lang.ClassLoader) +java.util.ServiceLoader.load(java.lang.Class) +java.util.ServiceLoader.loadInstalled(java.lang.Class) +java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater(java.lang.Class, java.lang.String) +java.util.concurrent.atomic.AtomicLongFieldUpdater.newUpdater(java.lang.Class, java.lang.String) +java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(java.lang.Class, java.lang.Class, java.lang.String) +java.util.logging.Logger.getAnonymousLogger(java.lang.String) +java.util.logging.Logger.getLogger(java.lang.String) +java.util.logging.Logger.getLogger(java.lang.String, java.lang.String) +javax.sql.rowset.serial.SerialJavaObject.getFields() +jdk.internal.foreign.AbstractMemorySegmentImpl.reinterpret(long, java.lang.foreign.Arena, java.util.function.Consumer) +jdk.internal.foreign.AbstractMemorySegmentImpl.reinterpret(long) +jdk.internal.foreign.AbstractMemorySegmentImpl.reinterpret(java.lang.foreign.Arena, java.util.function.Consumer) +sun.misc.Unsafe.getUnsafe() +sun.reflect.misc.ReflectUtil.ensureMemberAccess(java.lang.Class, java.lang.Class, java.lang.Object, int) +jdk.internal.reflect.ConstantPool$Tag.values() +jdk.internal.reflect.ConstantPool.getTagAt(int) +jdk.internal.reflect.ReflectionFactory$GetReflectionFactoryAction.run() +jdk.internal.reflect.ConstantPool.getMethodAt(int) +jdk.internal.reflect.ConstantPool.getMemberRefInfoAt(int) +jdk.internal.reflect.ConstantPool.getFieldAt(int) +jdk.internal.reflect.ConstantPool.getMethodAtIfLoaded(int) +jdk.internal.reflect.ConstantPool.getStringAt(int) +jdk.internal.reflect.ConstantPool.getFieldAtIfLoaded(int) +jdk.internal.reflect.ConstantPool.getClassRefIndexAt(int) +jdk.internal.reflect.ConstantPool.getLongAt(int) +jdk.internal.reflect.ConstantPool.getNameAndTypeRefIndexAt(int) +jdk.internal.reflect.ConstantPool.getFloatAt(int) +jdk.internal.reflect.ConstantPool.getUTF8At(int) +jdk.internal.reflect.ConstantPool.getSize() +jdk.internal.reflect.ConstantPool.getClassAt(int) +jdk.internal.reflect.ConstantPool.getIntAt(int) +jdk.internal.reflect.ConstantPool.getDoubleAt(int) +jdk.internal.reflect.ConstantPool.getNameAndTypeRefInfoAt(int) +jdk.internal.reflect.ConstantPool.getClassAtIfLoaded(int) +jdk.internal.reflect.ReflectionFactory.copyConstructor(java.lang.reflect.Constructor) +jdk.internal.reflect.ReflectionFactory.newConstructor(java.lang.Class, [Ljava.lang.Class;, [Ljava.lang.Class;, int, int, java.lang.String, [B, [B) +jdk.internal.reflect.ReflectionFactory.copyField(java.lang.reflect.Field) +jdk.internal.reflect.ReflectionFactory.getExecutableTypeAnnotationBytes(java.lang.reflect.Executable) +jdk.internal.reflect.ReflectionFactory.copyMethod(java.lang.reflect.Method) +jdk.internal.reflect.ReflectionFactory.getConstructorAccessor(java.lang.reflect.Constructor) +jdk.internal.reflect.ReflectionFactory.leafCopyMethod(java.lang.reflect.Method) +jdk.internal.reflect.ReflectionFactory.newInstance(java.lang.reflect.Constructor, [Ljava.lang.Object;, java.lang.Class) +jdk.internal.reflect.ReflectionFactory.setConstructorAccessor(java.lang.reflect.Constructor, jdk.internal.reflect.ConstructorAccessor) +jdk.internal.reflect.ReflectionFactory.getExecutableSharedParameterTypes(java.lang.reflect.Executable) +jdk.internal.reflect.ReflectionFactory.hasStaticInitializerForSerialization(java.lang.Class) +jdk.internal.reflect.ReflectionFactory.getReflectionFactory() +sun.reflect.ReflectionFactory.readResolveForSerialization(java.lang.Class) +jdk.internal.reflect.ReflectionFactory.newConstructorForSerialization(java.lang.Class) +jdk.internal.reflect.ReflectionFactory.newConstructorForSerialization(java.lang.Class, java.lang.reflect.Constructor) +sun.reflect.ReflectionFactory.readObjectForSerialization(java.lang.Class) +jdk.internal.reflect.ReflectionFactory.readResolveForSerialization(java.lang.Class) +jdk.internal.reflect.ReflectionFactory.writeReplaceForSerialization(java.lang.Class) +sun.reflect.ReflectionFactory.readObjectNoDataForSerialization(java.lang.Class) +sun.reflect.ReflectionFactory.writeReplaceForSerialization(java.lang.Class) +sun.reflect.ReflectionFactory.newConstructorForSerialization(java.lang.Class, java.lang.reflect.Constructor) +sun.reflect.ReflectionFactory.newConstructorForExternalization(java.lang.Class) +jdk.internal.reflect.ReflectionFactory.readObjectForSerialization(java.lang.Class) +jdk.internal.reflect.ReflectionFactory.readObjectNoDataForSerialization(java.lang.Class) +jdk.internal.reflect.ReflectionFactory.writeObjectForSerialization(java.lang.Class) +sun.reflect.ReflectionFactory.newOptionalDataExceptionForSerialization(boolean) +sun.reflect.ReflectionFactory.writeObjectForSerialization(java.lang.Class) +sun.reflect.ReflectionFactory.newConstructorForSerialization(java.lang.Class) +sun.reflect.ReflectionFactory.hasStaticInitializerForSerialization(java.lang.Class) \ No newline at end of file diff --git a/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/thread-creation-methods.txt b/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/thread-creation-methods.txt index e61fe70a..748365e7 100644 --- a/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/thread-creation-methods.txt +++ b/src/main/resources/de/tum/cit/ase/ares/api/templates/architecture/java/archunit/methods/thread-creation-methods.txt @@ -1,3 +1,331 @@ -java.lang.Thread.start -java.lang.Thread.run -java.lang.Thread.unstarted \ No newline at end of file +java.lang.Thread.isInterrupted() +java.lang.Thread.interrupt() +java.lang.Thread.setName(java.lang.String) +java.lang.Thread.getName() +java.lang.Thread.setDefaultUncaughtExceptionHandler(java.lang.Thread$UncaughtExceptionHandler) +java.lang.Thread.getDefaultUncaughtExceptionHandler() +java.lang.Thread.getStackTrace() +java.lang.Thread.getUncaughtExceptionHandler() +java.lang.Thread.threadId() +java.lang.Thread.getContextClassLoader() +java.lang.Thread.setContextClassLoader(java.lang.ClassLoader) +java.lang.Thread.start() +java.lang.Thread.isDaemon() +java.lang.Thread.getThreadGroup() +java.lang.Thread.getPriority() +java.lang.Thread.run() +java.lang.Thread.sleep(java.time.Duration) +java.lang.Thread.sleep(long) +java.lang.Thread.sleep(long, int) +java.lang.Thread.yield() +com.sun.java.accessibility.internal.AccessBridge.<init>() +com.sun.jmx.remote.internal.ClientCommunicatorAdmin.<init>(long) +com.sun.jmx.remote.internal.ServerCommunicatorAdmin.<init>(long) +com.sun.media.sound.SoftAudioPusher.start() +com.sun.org.apache.xml.internal.utils.ThreadControllerWrapper$ThreadController.run(java.lang.Runnable, int) +java.awt.image.renderable.RenderableImageProducer.startProduction(java.awt.image.ImageConsumer) +java.lang.Thread.startVirtualThread(java.lang.Runnable) +javax.swing.JTable.print(javax.swing.JTable$PrintMode, java.text.MessageFormat, java.text.MessageFormat, boolean, javax.print.attribute.PrintRequestAttributeSet, boolean, javax.print.PrintService) +javax.swing.text.JTextComponent.print(java.text.MessageFormat, java.text.MessageFormat, boolean, javax.print.PrintService, javax.print.attribute.PrintRequestAttributeSet, boolean) +javax.swing.text.LayoutQueue.addTask(java.lang.Runnable) +jdk.internal.jshell.tool.StopDetectingInputStream.setInputStream(java.io.InputStream) +jdk.internal.org.jline.terminal.impl.AbstractWindowsTerminal.resume() +jdk.internal.org.jline.terminal.impl.ExternalTerminal.resume() +jdk.internal.org.jline.terminal.impl.PosixPtyTerminal.resume() +jdk.internal.ref.CleanerImpl.start(java.lang.ref.Cleaner, java.util.concurrent.ThreadFactory) +jdk.jfr.internal.consumer.AbstractEventStream.startAsync(long) +jdk.jpackage.internal.IOUtils.getProcessOutput(java.util.List, [Ljava.lang.String;) +org.graalvm.compiler.hotspot.debug.BenchmarkCounters.initialize(jdk.vm.ci.hotspot.HotSpotJVMCIRuntime, org.graalvm.compiler.options.OptionValues) +sun.awt.im.InputMethodManager.getInstance() +sun.awt.windows.WToolkit.<init>() +sun.jvm.hotspot.utilities.StreamMonitor.<init>(java.io.InputStream, java.lang.String, boolean) +sun.jvm.hotspot.utilities.WorkerThread.<init>() +sun.management.jdp.JdpController.startDiscoveryService(java.net.InetAddress, int, java.lang.String, java.lang.String) +sun.print.PrintServiceLookupProvider.<init>() +java.util.Timer.<init>(java.lang.String, boolean) +sun.tools.jconsole.CreateMBeanDialog.actionPerformed(java.awt.event.ActionEvent) +sun.jvm.hotspot.debugger.bsd.BsdDebuggerLocal.<init>(sun.jvm.hotspot.debugger.MachineDescription, boolean) +sun.tools.jconsole.Tab.workerAdd(java.lang.Runnable) +sun.tools.jconsole.VMPanel.connect() +jdk.jshell.execution.Util.forwardExecutionControlAndIO(jdk.jshell.spi.ExecutionControl, java.io.InputStream, java.io.OutputStream, java.util.Map, java.util.Map) +jdk.jshell.execution.Util.remoteInputOutput(java.io.InputStream, java.io.OutputStream, java.util.Map, java.util.Map, java.util.function.BiFunction) +sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.<init>(sun.jvm.hotspot.debugger.MachineDescription, boolean) +org.graalvm.collections.LockFreePrefixTree$ObjectPoolingAllocator.<init>(int) +com.sun.java.accessibility.util.EventQueueMonitor.<init>() +java.util.concurrent.TimeUnit.timedJoin(java.lang.Thread, long) +com.sun.org.apache.xerces.internal.parsers.DOMParserImpl.parseURI(java.lang.String) +com.sun.org.apache.xerces.internal.parsers.DOMParserImpl.parse(org.w3c.dom.ls.LSInput) +java.awt.Robot.delay(int) +java.net.Socket.connect(java.net.SocketAddress, int) +javax.swing.filechooser.FileSystemView.getFiles(java.io.File, boolean) +sun.awt.image.InputStreamImageSource.doFetch() +sun.net.www.http.HttpClient.parseHTTP(sun.net.www.MessageHeader, sun.net.www.protocol.http.HttpURLConnection) +sun.nio.ch.DatagramSocketAdaptor.receive(java.net.DatagramPacket) +java.lang.Thread.getState() +java.lang.Thread.join(java.time.Duration) +com.sun.media.sound.RIFFReader.readFully([B, int, int) +com.sun.media.sound.RIFFReader.skip(long) +com.sun.media.sound.SoftMixingClip.open(javax.sound.sampled.AudioInputStream) +com.sun.tools.example.debug.tty.TTY.exceptionEvent(com.sun.jdi.event.ExceptionEvent) +com.sun.tools.example.debug.tty.TTY.methodExitEvent(com.sun.jdi.event.MethodExitEvent) +com.sun.tools.example.debug.tty.TTY.methodEntryEvent(com.sun.jdi.event.MethodEntryEvent) +com.sun.tools.example.debug.tty.TTY.breakpointEvent(com.sun.jdi.event.BreakpointEvent) +com.sun.tools.example.debug.tty.TTY.fieldWatchEvent(com.sun.jdi.event.WatchpointEvent) +com.sun.tools.example.debug.tty.TTY.stepEvent(com.sun.jdi.event.StepEvent) +com.sun.tools.example.debug.tty.TTY.vmInterrupted() +com.sun.tools.example.debug.tty.TTY.vmStartEvent(com.sun.jdi.event.VMStartEvent) +java.util.concurrent.FutureTask.state() +jdk.internal.vm.ThreadContainers.container(java.lang.Thread) +java.lang.Thread.setUncaughtExceptionHandler(java.lang.Thread$UncaughtExceptionHandler) +java.lang.Thread.setPriority(int) +java.lang.Thread.setDaemon(boolean) +java.util.concurrent.locks.AbstractQueuedLongSynchronizer$ConditionObject.awaitUninterruptibly() +java.util.concurrent.locks.AbstractQueuedLongSynchronizer$ConditionObject.await() +java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitUninterruptibly() +java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() +java.awt.EventQueue.<init>() +java.lang.SecurityManager.getThreadGroup() +java.lang.SecurityManager.checkAccess(java.lang.Thread) +java.lang.Thread.activeCount() +java.lang.Thread.enumerate([Ljava.lang.Thread;) +java.lang.Thread.toString() +java.lang.ThreadGroup.list() +java.lang.ThreadGroup.interrupt() +java.lang.ThreadGroup.activeCount() +java.lang.ThreadGroup.enumerate([Ljava.lang.Thread;, boolean) +java.lang.ThreadGroup.<init>(java.lang.String) +sun.awt.AppContext.dispose() +sun.awt.SunToolkit.createNewAppContext() +sun.awt.util.ThreadGroupUtils.getRootThreadGroup() +sun.java2d.marlin.MarlinUtils.getRootThreadGroup() +org.graalvm.compiler.nodes.OptimizationLogImpl.emit(java.util.function.Function) +org.graalvm.compiler.serviceprovider.GraalServices.getThreadId(java.lang.Thread) +com.sun.tools.example.debug.tty.TTY.<init>() +sun.awt.windows.WToolkit.run() +org.graalvm.compiler.core.CompilerThread.<init>(java.lang.Runnable, java.lang.String) +sun.tools.jconsole.Worker.<init>(java.lang.String) +com.sun.media.sound.SoftMixingSourceDataLine.drain() +com.sun.media.sound.SoftMixingSourceDataLine.write([B, int, int) +java.lang.Process.waitFor(long, java.util.concurrent.TimeUnit) +java.rmi.server.UID.<init>() +javax.swing.AbstractButton.doClick(int) +jdk.internal.net.http.common.SSLFlowDelegate$Monitor.run() +jdk.jfr.internal.Utils.takeNap(long) +jdk.jfr.snippets.Snippets.main([Ljava.lang.String;) +org.graalvm.compiler.core.CompilationWatchDog.run() +sun.net.www.http.KeepAliveCache.run() +sun.rmi.registry.RegistryImpl.main([Ljava.lang.String;) +sun.tools.jstat.JStatLogger.logSamples(sun.tools.jstat.OutputFormatter, int, int, int, java.io.PrintStream) +java.util.concurrent.TimeUnit.sleep(long) +com.sun.beans.finder.ClassFinder.findClass(java.lang.String) +com.sun.jmx.remote.internal.ClientNotifForwarder.postReconnection([Lcom.sun.jmx.remote.internal.ClientListenerInfo;) +com.sun.jmx.remote.util.EnvHelp.resolveClientClassLoader(java.util.Map) +com.sun.jmx.remote.util.EnvHelp.resolveServerClassLoader(java.util.Map, javax.management.MBeanServer) +com.sun.management.ThreadMXBean.getCurrentThreadAllocatedBytes() +com.sun.media.sound.SoftMixingMixer.open(javax.sound.sampled.SourceDataLine) +com.sun.media.sound.SoftMixingMixerProvider.getMixer(javax.sound.sampled.Mixer$Info) +com.sun.org.apache.xerces.internal.parsers.DOMParserImpl.abort() +com.sun.org.apache.xml.internal.security.Init.getResource(java.lang.String, java.lang.Class) +com.sun.org.apache.xml.internal.utils.SafeThread.run() +java.awt.Container.print(java.awt.Graphics) +java.awt.Container.paint(java.awt.Graphics) +java.awt.Window.applyResourceBundle(java.lang.String) +java.io.PipedInputStream.read() +java.io.PipedReader.read() +java.io.PrintStream.format(java.lang.String, [Ljava.lang.Object;) +java.io.PrintStream.format(java.util.Locale, java.lang.String, [Ljava.lang.Object;) +java.io.PrintStream.write(int) +java.io.PrintStream.write([B, int, int) +java.lang.Object.wait(long) +java.lang.ProcessBuilder.startPipeline(java.util.List) +java.lang.Thread.interrupted() +java.lang.ThreadLocal.set(java.lang.Object) +java.lang.ThreadLocal.remove() +java.lang.ThreadLocal.get() +java.lang.foreign.Arena.ofConfined() +java.lang.invoke.MethodHandleProxies.asInterfaceInstance(java.lang.Class, java.lang.invoke.MethodHandle) +java.net.http.HttpClient.close() +java.rmi.server.LogStream.write(int) +java.util.ServiceLoader.load(java.lang.Class) +java.util.concurrent.CountedCompleter.helpComplete(int) +java.util.concurrent.DelayQueue.poll(long, java.util.concurrent.TimeUnit) +java.util.concurrent.DelayQueue.take() +java.util.concurrent.ExecutorService.close() +java.util.concurrent.ForkJoinPool.managedBlock(java.util.concurrent.ForkJoinPool$ManagedBlocker) +java.util.concurrent.ForkJoinPool.close() +java.util.concurrent.ForkJoinTask.inForkJoinPool() +java.util.concurrent.ForkJoinTask.fork() +java.util.concurrent.ForkJoinTask.getPool() +java.util.concurrent.ForkJoinTask.tryUnfork() +java.util.concurrent.ForkJoinTask.getQueuedTaskCount() +java.util.concurrent.Future.state() +java.util.concurrent.Future.resultNow() +java.util.concurrent.Future.exceptionNow() +java.util.concurrent.FutureTask.run() +java.util.concurrent.StructuredTaskScope.fork(java.util.concurrent.Callable) +java.util.concurrent.SubmissionPublisher.subscribe(java.util.concurrent.Flow$Subscriber) +java.util.concurrent.ThreadLocalRandom.current() +java.util.concurrent.locks.AbstractQueuedLongSynchronizer.hasQueuedPredecessors() +java.util.concurrent.locks.AbstractQueuedLongSynchronizer$ConditionObject.awaitUntil(java.util.Date) +java.util.concurrent.locks.AbstractQueuedLongSynchronizer$ConditionObject.await(long, java.util.concurrent.TimeUnit) +java.util.concurrent.locks.AbstractQueuedLongSynchronizer$ConditionObject.awaitNanos(long) +java.util.concurrent.locks.AbstractQueuedSynchronizer.hasQueuedPredecessors() +java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) +java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(long, java.util.concurrent.TimeUnit) +java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitUntil(java.util.Date) +java.util.concurrent.locks.LockSupport.parkUntil(java.lang.Object, long) +java.util.concurrent.locks.LockSupport.park() +java.util.concurrent.locks.LockSupport.parkNanos(java.lang.Object, long) +java.util.concurrent.locks.LockSupport.parkNanos(long) +java.util.concurrent.locks.LockSupport.setCurrentBlocker(java.lang.Object) +java.util.concurrent.locks.LockSupport.parkUntil(long) +java.util.concurrent.locks.LockSupport.park(java.lang.Object) +java.util.logging.LogManager.readConfiguration() +java.util.logging.LogRecord.<init>(java.util.logging.Level, java.lang.String) +javax.imageio.spi.IIORegistry.registerApplicationClasspathSpis() +javax.naming.spi.NamingManager.getInitialContext(java.util.Hashtable) +javax.print.SimpleDoc.<init>(java.lang.Object, javax.print.DocFlavor, javax.print.attribute.DocAttributeSet) +javax.script.ScriptEngineManager.<init>() +javax.sql.rowset.spi.SyncFactory.getInstance(java.lang.String) +javax.swing.JEditorPane.registerEditorKitForContentType(java.lang.String, java.lang.String) +javax.swing.text.AbstractDocument.readLock() +javax.swing.text.AbstractDocument.readUnlock() +jdk.internal.foreign.MemorySessionImpl.checkValidStateRaw() +jdk.internal.loader.Resource.getBytes() +jdk.internal.misc.InnocuousThread.run() +jdk.internal.misc.ThreadFlock.close() +jdk.internal.misc.ThreadFlock.wakeup() +jdk.internal.misc.ThreadTracker.begin() +jdk.internal.misc.ThreadTracker.tryBegin() +jdk.internal.misc.ThreadTracker.end(java.lang.Object) +jdk.internal.org.jline.reader.impl.LineReaderImpl.readLine(java.lang.String, java.lang.String, jdk.internal.org.jline.reader.MaskingCallback, java.lang.String) +jdk.internal.org.jline.terminal.spi.TerminalProvider.load(java.lang.String) +jdk.internal.ref.CleanerImpl.run() +jdk.internal.vm.ScopedValueContainer.latest(java.lang.Class) +jdk.internal.vm.StackableScope.push() +jdk.internal.vm.StackableScope.popForcefully() +jdk.internal.vm.StackableScope.tryPop() +jdk.internal.vm.StackableScope.popAll() +jdk.jfr.internal.management.StreamBarrier.check() +jdk.vm.ci.hotspot.HotSpotJVMCIRuntime.attachCurrentThread(boolean, [J) +jdk.vm.ci.hotspot.HotSpotStackFrameReference.materializeVirtualObjects(boolean) +jdk.vm.ci.hotspot.HotSpotStackIntrospection.canMaterializeVirtualObjects() +jdk.xml.internal.SecuritySupport.getClassLoader() +jdk.xml.internal.SecuritySupport.getContextClassLoader() +org.graalvm.compiler.core.CompilationWatchDog.watch(org.graalvm.compiler.core.common.CompilationIdentifier, org.graalvm.compiler.options.OptionValues, boolean, org.graalvm.compiler.core.CompilationWatchDog$EventHandler) +org.graalvm.compiler.debug.TTY$Filter.remove() +org.graalvm.compiler.debug.TTY$Filter.<init>(org.graalvm.compiler.debug.LogStream) +org.graalvm.compiler.debug.TTY$Filter.<init>() +org.graalvm.compiler.serviceprovider.GraalServices.getCurrentThreadId() +org.graalvm.nativeimage.hosted.RuntimeClassInitialization.initializeAtRunTime([Ljava.lang.Class;) +org.graalvm.nativeimage.hosted.RuntimeClassInitialization.initializeAtBuildTime([Ljava.lang.String;) +org.graalvm.nativeimage.hosted.RuntimeClassInitialization.initializeAtBuildTime([Ljava.lang.Class;) +org.graalvm.nativeimage.hosted.RuntimeClassInitialization.initializeAtRunTime([Ljava.lang.String;) +sun.awt.AWTAutoShutdown.run() +sun.awt.Mutex.lock() +sun.awt.Mutex.unlock() +sun.awt.dnd.SunDropTargetContextPeer.getTransferData(java.awt.datatransfer.DataFlavor) +sun.awt.image.ImageDecoder.<init>(sun.awt.image.InputStreamImageSource, java.io.InputStream) +sun.awt.image.ImageRepresentation.reconstruct(int) +sun.awt.shell.ShellFolder.invoke(java.util.concurrent.Callable, java.lang.Class) +sun.java2d.d3d.D3DRenderQueue.isRenderQueueThread() +sun.java2d.opengl.OGLRenderQueue.isQueueFlusherThread() +sun.jvm.hotspot.utilities.ProcImageClassLoader.<init>() +sun.management.ThreadImpl.getCurrentThreadUserTime() +sun.management.ThreadImpl.getCurrentThreadCpuTime() +sun.nio.ch.NativeThread.current() +sun.nio.ch.SelChImpl.park(int, long) +sun.rmi.registry.RegistryImpl.createRegistry(int) +sun.rmi.transport.Target.<init>(java.rmi.Remote, sun.rmi.server.Dispatcher, java.rmi.Remote, java.rmi.server.ObjID, boolean) +sun.rmi.transport.Transport.serviceCall(java.rmi.server.RemoteCall) +sun.swing.DefaultLookup.setDefaultLookup(sun.swing.DefaultLookup) +sun.swing.DefaultLookup.get(javax.swing.JComponent, javax.swing.plaf.ComponentUI, java.lang.String) +sun.tools.jconsole.VMPanel.getProxyClient() +java.io.PipedReader.ready() +java.io.PipedReader.read([C, int, int) +java.lang.Thread.join(long, int) +java.lang.Thread.join(long) +sun.net.www.http.KeepAliveCache.put(java.net.URL, java.lang.Object, sun.net.www.http.HttpClient) +sun.print.PrintJob2D.end() +java.util.concurrent.Exchanger.exchange(java.lang.Object) +java.util.concurrent.Exchanger.exchange(java.lang.Object, long, java.util.concurrent.TimeUnit) +java.util.concurrent.ForkJoinTask.get(long, java.util.concurrent.TimeUnit) +java.util.concurrent.ForkJoinTask.quietlyJoin(long, java.util.concurrent.TimeUnit) +java.util.concurrent.ForkJoinTask.get() +java.util.concurrent.LinkedTransferQueue.tryTransfer(java.lang.Object, long, java.util.concurrent.TimeUnit) +java.util.concurrent.LinkedTransferQueue.take() +java.util.concurrent.LinkedTransferQueue.transfer(java.lang.Object) +java.util.concurrent.LinkedTransferQueue.poll(long, java.util.concurrent.TimeUnit) +java.util.concurrent.SynchronousQueue.take() +java.util.concurrent.SynchronousQueue.offer(java.lang.Object, long, java.util.concurrent.TimeUnit) +java.util.concurrent.SynchronousQueue.put(java.lang.Object) +java.util.concurrent.SynchronousQueue.poll(long, java.util.concurrent.TimeUnit) +java.util.concurrent.locks.AbstractQueuedLongSynchronizer.tryAcquireSharedNanos(long, long) +java.util.concurrent.locks.AbstractQueuedLongSynchronizer.tryAcquireNanos(long, long) +java.util.concurrent.locks.AbstractQueuedLongSynchronizer.acquireInterruptibly(long) +java.util.concurrent.locks.AbstractQueuedLongSynchronizer.acquireSharedInterruptibly(long) +java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireNanos(int, long) +java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(int) +java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(int, long) +java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(int) +java.util.concurrent.locks.StampedLock.tryWriteLock(long, java.util.concurrent.TimeUnit) +java.util.concurrent.locks.StampedLock.readLockInterruptibly() +java.util.concurrent.locks.StampedLock.tryReadLock(long, java.util.concurrent.TimeUnit) +java.util.concurrent.locks.StampedLock.writeLockInterruptibly() +jdk.internal.misc.ThreadFlock.awaitAll() +jdk.internal.misc.ThreadFlock.awaitAll(java.time.Duration) +jdk.internal.org.jline.utils.NonBlockingInputStreamImpl.read(long, boolean) +java.lang.Thread.isAlive() +java.lang.ThreadGroup.uncaughtException(java.lang.Thread, java.lang.Throwable) +java.lang.ThreadGroup.setMaxPriority(int) +jdk.jfr.internal.PlatformRecorder.newTemporaryRecording() +jdk.jfr.internal.PlatformRecording.newSnapshotClone(java.lang.String, java.lang.Boolean) +java.lang.Thread.getAllStackTraces() +java.util.concurrent.Executors.newVirtualThreadPerTaskExecutor() +java.util.concurrent.StructuredTaskScope.<init>() +java.util.concurrent.StructuredTaskScope$ShutdownOnFailure.<init>() +java.util.concurrent.StructuredTaskScope$ShutdownOnSuccess.<init>() +java.lang.Thread.getId() +java.security.AccessControlContext.checkPermission(java.security.Permission) +java.security.AccessController.checkPermission(java.security.Permission) +sun.font.SunFontManager.loadFontFiles() +jdk.jfr.internal.SecuritySupport.setDaemonThread(java.lang.Thread, boolean) +sun.awt.windows.WToolkit.displayChanged() +sun.rmi.runtime.NewThreadAction.run() +java.lang.Thread.<init>(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String, long, boolean) +java.lang.Thread.<init>(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String) +java.lang.Thread.<init>(java.lang.ThreadGroup, java.lang.String) +java.lang.Thread.<init>(java.lang.String) +java.lang.Thread.<init>(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String, long) +java.lang.Thread.<init>(java.lang.Runnable, java.lang.String) +java.lang.Thread.join() +com.sun.media.sound.SoftAudioPusher.stop() +com.sun.org.apache.xml.internal.utils.ThreadControllerWrapper$ThreadController.waitThread(java.lang.Thread, java.lang.Runnable) +jdk.internal.org.jline.terminal.impl.AbstractWindowsTerminal.pause(boolean) +jdk.internal.org.jline.terminal.impl.ExternalTerminal.pause(boolean) +jdk.internal.org.jline.terminal.impl.PosixPtyTerminal.pause(boolean) +org.graalvm.collections.LockFreePrefixTree$ObjectPoolingAllocator.shutdown() +org.graalvm.compiler.core.CompilerThread.run() +java.util.concurrent.locks.LockSupport.unpark(java.lang.Thread) +jdk.internal.vm.SharedThreadContainer.onStart(java.lang.Thread) +jdk.internal.vm.SharedThreadContainer.onExit(java.lang.Thread) +java.util.concurrent.FutureTask.cancel(boolean) +javax.swing.plaf.basic.BasicDirectoryModel.invalidateFileCache() +javax.swing.plaf.basic.BasicDirectoryModel.validateFileCache() +jdk.jshell.execution.LocalExecutionControl.stop() +java.util.concurrent.locks.ReentrantLock.toString() +java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.toString() +org.graalvm.compiler.core.CompilationWatchDog.toString() +com.sun.imageio.stream.StreamCloser.addToQueue(com.sun.imageio.stream.StreamCloser$CloseAction) +jdk.internal.misc.InnocuousThread.setContextClassLoader(java.lang.ClassLoader) +sun.font.SunFontManager.createFont2D(java.io.File, int, boolean, boolean, sun.font.CreatedFontTracker) +sun.java2d.d3d.D3DScreenUpdateManager.<init>() +sun.java2d.loops.GraphicsPrimitive$TraceReporter.setShutdownHook() +com.sun.org.apache.xml.internal.utils.SafeThread.<init>(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String) +java.lang.Thread.<init>(java.lang.Runnable) +java.lang.Thread.<init>(java.lang.ThreadGroup, java.lang.Runnable) +java.lang.Thread.<init>() +sun.jvm.hotspot.HotSpotAgent.<init>() +org.graalvm.compiler.core.GraalServiceThread.<init>(java.lang.String, java.lang.Runnable) +jdk.jfr.internal.SecuritySupport.createThreadWitNoPermissions(java.lang.String, java.lang.Runnable) +jdk.internal.vm.SharedThreadContainer.threads() \ No newline at end of file diff --git a/src/test/java/de/tum/cit/ase/ares/integration/FileSystemAccessTest.java b/src/test/java/de/tum/cit/ase/ares/integration/FileSystemAccessTest.java index 3dd259c1..c6b84a1d 100644 --- a/src/test/java/de/tum/cit/ase/ares/integration/FileSystemAccessTest.java +++ b/src/test/java/de/tum/cit/ase/ares/integration/FileSystemAccessTest.java @@ -6,12 +6,14 @@ import de.tum.cit.ase.ares.api.Policy; import de.tum.cit.ase.ares.api.jupiter.PublicTest; import de.tum.cit.ase.ares.integration.testuser.subject.fileSystem.FileSystemAccessPenguin; +import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.Nested; import org.junit.platform.testkit.engine.Events; import de.tum.cit.ase.ares.integration.testuser.FileSystemAccessUser; import de.tum.cit.ase.ares.testutilities.*; +import java.awt.*; import java.io.IOException; @UserBased(FileSystemAccessUser.class) @@ -119,72 +121,8 @@ void test_weAccessPath() { void test_accessFileSystem() { tests.assertThatEvents().haveExactly(1, testFailedWith("accessFileSystem", SecurityException.class, """ - Ares Security Error (Reason: Student-Code; Stage: Execution): Illegal Statement found: Architecture Violation [Priority: MEDIUM] - Rule 'no classes should transitively depend on classes that accesses file system' was violated (65 times): - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:84) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:84) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:182) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:182) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:101) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:101) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:198) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:198) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:270) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:270) - Method calls method in (FileSystemAccessPenguin.java:270) accesses in (FileSystemAccessPenguin.java:270) - Method calls method in (FileSystemAccessPenguin.java:125) accesses in (FileSystemAccessPenguin.java:125) - Method calls method in (FileSystemAccessPenguin.java:126) accesses in (FileSystemAccessPenguin.java:126) - Method calls method in (FileSystemAccessPenguin.java:230) accesses in (FileSystemAccessPenguin.java:230) - Method calls method in (FileSystemAccessPenguin.java:231) accesses in (FileSystemAccessPenguin.java:231) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:259) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:259) - Method calls method in (FileSystemAccessPenguin.java:260) accesses in (FileSystemAccessPenguin.java:260) - Method calls method in (FileSystemAccessPenguin.java:261) accesses in (FileSystemAccessPenguin.java:261) - Method calls method in (FileSystemAccessPenguin.java:262) accesses in (FileSystemAccessPenguin.java:262) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:246) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:246) - Method calls method in (FileSystemAccessPenguin.java:248) accesses in (FileSystemAccessPenguin.java:248) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:69) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:69) - Method calls method in (FileSystemAccessPenguin.java:69) accesses in (FileSystemAccessPenguin.java:69) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:164) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:164) - Method calls method in (FileSystemAccessPenguin.java:164) accesses in (FileSystemAccessPenguin.java:164) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:51) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:51) - Method calls method in (FileSystemAccessPenguin.java:52) accesses in (FileSystemAccessPenguin.java:52) - Method calls method in (FileSystemAccessPenguin.java:53) accesses in (FileSystemAccessPenguin.java:53) - Method calls method in (FileSystemAccessPenguin.java:54) accesses in (FileSystemAccessPenguin.java:54) - Method calls method in (FileSystemAccessPenguin.java:55) accesses in (FileSystemAccessPenguin.java:55) - Method calls method in (FileSystemAccessPenguin.java:56) accesses in (FileSystemAccessPenguin.java:56) - Method calls method in (FileSystemAccessPenguin.java:57) accesses in (FileSystemAccessPenguin.java:57) - Method calls method in (FileSystemAccessPenguin.java:58) accesses in (FileSystemAccessPenguin.java:58) - Method calls method in (FileSystemAccessPenguin.java:59) accesses in (FileSystemAccessPenguin.java:59) - Method calls method in (FileSystemAccessPenguin.java:60) accesses in (FileSystemAccessPenguin.java:60) - Method calls method in (FileSystemAccessPenguin.java:61) accesses in (FileSystemAccessPenguin.java:61) - Method calls method in (FileSystemAccessPenguin.java:62) accesses in (FileSystemAccessPenguin.java:62) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:76) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:76) - Method calls method in (FileSystemAccessPenguin.java:77) accesses in (FileSystemAccessPenguin.java:77) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:152) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:152) - Method calls method in (FileSystemAccessPenguin.java:153) accesses in (FileSystemAccessPenguin.java:153) - Method calls method in (FileSystemAccessPenguin.java:154) accesses in (FileSystemAccessPenguin.java:154) - Method calls method in (FileSystemAccessPenguin.java:155) accesses in (FileSystemAccessPenguin.java:155) - Method calls method in (FileSystemAccessPenguin.java:156) accesses in (FileSystemAccessPenguin.java:156) - Method calls method in (FileSystemAccessPenguin.java:157) accesses in (FileSystemAccessPenguin.java:157) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:171) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:171) - Method calls method in (FileSystemAccessPenguin.java:173) accesses in (FileSystemAccessPenguin.java:173) - Method calls method in (FileSystemAccessPenguin.java:175) accesses in (FileSystemAccessPenguin.java:175) - Method calls method in (FileSystemAccessPenguin.java:174) accesses in (FileSystemAccessPenguin.java:174) - Method calls method in (FileSystemAccessPenguin.java:172) accesses in (FileSystemAccessPenguin.java:172) - Method calls method in (FileSystemAccessPenguin.java:281) accesses in (FileSystemAccessPenguin.java:281) - Method calls method in (FileSystemAccessPenguin.java:133) accesses in (FileSystemAccessPenguin.java:133) - Method calls method in (FileSystemAccessPenguin.java:239) accesses in (FileSystemAccessPenguin.java:239) - Method calls method in (FileSystemAccessPenguin.java:238) accesses in (FileSystemAccessPenguin.java:238) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:117) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:117) - Method calls constructor ()> in (FileSystemAccessPenguin.java:297) accesses ()> in (FileSystemAccessPenguin.java:297) - Method calls method in (FileSystemAccessPenguin.java:298) accesses in (FileSystemAccessPenguin.java:298) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:109) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:109) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:214) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:214) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:206) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:206) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:222) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:222) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:190) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:190) - Method calls constructor (java.lang.String, java.lang.String)> in (FileSystemAccessPenguin.java:43) accesses (java.lang.String, java.lang.String)> in (FileSystemAccessPenguin.java:43) - Method calls method in (FileSystemAccessPenguin.java:44) accesses in (FileSystemAccessPenguin.java:44) - Method calls constructor (java.lang.String, java.lang.String)> in (FileSystemAccessPenguin.java:144) accesses (java.lang.String, java.lang.String)> in (FileSystemAccessPenguin.java:144) - Method calls method in (FileSystemAccessPenguin.java:145) accesses in (FileSystemAccessPenguin.java:145) - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:93) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:93) - Method calls constructor (java.io.InputStream)> in (FileSystemAccessPenguin.java:93) accesses (java.io.InputStream)> in (FileSystemAccessPenguin.java:93) - Method calls method in (FileSystemAccessPenguin.java:27) accesses in (FileSystemAccessPenguin.java:27) - Method calls method in (FileSystemAccessPenguin.java:303) transitively accesses by [de.tum.cit.ase.ares.integration.testuser.subject.fileSystem.FileSystemAccessPenguin.accessPathThroughThirdPartyPackage()->de.tum.cit.ase.ares.integration.testuser.subject.thirdpartypackage.ThirdPartyPackagePenguin.accessFileSystem()] in (FileSystemAccessPenguin.java:303)""")); + \n - Ares Security Error (Reason: Student-Code; Stage: Execution): + - Method calls constructor (java.lang.String)> in (FileSystemAccessPenguin.java:84) accesses (java.lang.String)> in (FileSystemAccessPenguin.java:84)""")); } // @@ -865,6 +803,7 @@ void test_accessFileSystemViaFileExecuteInstrumentation() { @Policy(value = "src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedAspectJExecute.yaml", withinPath = "test-classes/de/tum/cit/ase/ares/integration/testuser/subject/student") void test_accessFileSystemViaDesktopAspectJ() throws IOException { try { + Assumptions.assumeFalse(GraphicsEnvironment.isHeadless(), "Skipping test in headless environment"); FileSystemAccessPenguin.accessFileSystemViaDesktop(); fail(errorMessage); } catch (SecurityException e) { @@ -877,6 +816,7 @@ void test_accessFileSystemViaDesktopAspectJ() throws IOException { @Policy(value = "src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationExecute.yaml", withinPath = "test-classes/de/tum/cit/ase/ares/integration/testuser/subject/student") void test_accessFileSystemViaDesktopInstrumentation() throws IOException { try { + Assumptions.assumeFalse(GraphicsEnvironment.isHeadless(), "Skipping test in headless environment"); FileSystemAccessPenguin.accessFileSystemViaDesktop(); fail(errorMessage); } catch (SecurityException e) { @@ -962,6 +902,7 @@ void test_accessFileSystemViaJFileChooserAspectJ() throws IOException { @Policy(value = "src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationDelete.yaml", withinPath = "test-classes/de/tum/cit/ase/ares/integration/testuser/subject/student") void test_accessFileSystemViaJFileChooserInstrumentation() { try { + Assumptions.assumeFalse(GraphicsEnvironment.isHeadless(), "Skipping test in headless environment"); FileSystemAccessPenguin.accessFileSystemViaJFileChooser(); fail(errorMessage); } catch (SecurityException e) { diff --git a/src/test/java/de/tum/cit/ase/ares/integration/LocaleTest.java b/src/test/java/de/tum/cit/ase/ares/integration/LocaleTest.java index ce757b78..95e7bf04 100644 --- a/src/test/java/de/tum/cit/ase/ares/integration/LocaleTest.java +++ b/src/test/java/de/tum/cit/ase/ares/integration/LocaleTest.java @@ -1,6 +1,7 @@ package de.tum.cit.ase.ares.integration; import static de.tum.cit.ase.ares.testutilities.CustomConditions.finishedSuccessfully; +import static org.assertj.core.api.Assertions.assertThat; import org.junit.platform.testkit.engine.Events; @@ -8,6 +9,12 @@ import de.tum.cit.ase.ares.integration.testuser.LocaleUser.*; import de.tum.cit.ase.ares.testutilities.*; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; +import java.util.Set; + @UserBased({ LocaleUser.class, LocaleEn.class, LocaleUnsupported.class }) class LocaleTest { @@ -20,6 +27,9 @@ class LocaleTest { private final String testUnknownFormatted = "testUnknownFormatted"; private final String testUnknownNormal = "testUnknownNormal"; + private static final String ENGLISH_FILE_PATH = "src/main/resources/de/tum/cit/ase/ares/api/localization/messages.properties"; // Replace with actual path + private static final String GERMAN_FILE_PATH = "src/main/resources/de/tum/cit/ase/ares/api/localization/messages_de.properties"; // Replace with actual path + @TestTest void test_testLocaleEn() { tests.assertThatEvents().haveExactly(1, finishedSuccessfully(testLocaleEn)); @@ -44,4 +54,21 @@ void test_testUnknownFormatted() { void test_testUnknownNormal() { tests.assertThatEvents().haveExactly(1, finishedSuccessfully(testUnknownNormal)); } + + @TestTest + public void testTranslationsCompleteness() throws IOException { + Set englishKeys = loadPropertiesKeys(ENGLISH_FILE_PATH); + Set germanKeys = loadPropertiesKeys(GERMAN_FILE_PATH); + + assertThat(germanKeys).containsAll(englishKeys); + } + + private Set loadPropertiesKeys(String filePath) throws IOException { + Properties properties = new Properties(); + try (InputStream input = new FileInputStream(filePath)) { + properties.load(input); + } + return properties.stringPropertyNames(); + } + } diff --git a/src/test/java/de/tum/cit/ase/ares/integration/testuser/FileSystemAccessUser.java b/src/test/java/de/tum/cit/ase/ares/integration/testuser/FileSystemAccessUser.java index b3898721..8d8709c7 100644 --- a/src/test/java/de/tum/cit/ase/ares/integration/testuser/FileSystemAccessUser.java +++ b/src/test/java/de/tum/cit/ase/ares/integration/testuser/FileSystemAccessUser.java @@ -36,7 +36,6 @@ void accessPathAllowed() throws IOException { PathAccessPenguin.accessPath(Path.of("pom.xml")); }*/ - // TODO this test should fail with the given agent SecurityException currently not working @PublicTest @Policy(value = "src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentation.yaml", withinPath = "test-classes/de/tum/cit/ase/ares/integration/testuser/subject/pathaccess") public void accessPathNormalInstrumentation() throws IOException { diff --git a/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationDelete.yaml b/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationDelete.yaml index 3ce5459c..90d3a599 100644 --- a/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationDelete.yaml +++ b/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationDelete.yaml @@ -14,6 +14,7 @@ regardingTheSupervisedCode: - "de.tum.cit.ase.ares.api.architecture.java.archunit.postcompile.TransitivelyAccessesMethodsCondition" - "de.tum.cit.ase.ares.api.architecture.java.archunit.JavaArchUnitSecurityTestCase" - "de.tum.cit.ase.ares.testutilities.TestUserExtension" + - "de.tum.cit.ase.ares.api.localization.Messages" theFollowingResourceAccessesArePermitted: regardingFileSystemInteractions: - readAllFiles: false diff --git a/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationExecute.yaml b/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationExecute.yaml index 637511ca..36ea4a90 100644 --- a/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationExecute.yaml +++ b/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationExecute.yaml @@ -14,6 +14,7 @@ regardingTheSupervisedCode: - "de.tum.cit.ase.ares.api.architecture.java.archunit.postcompile.TransitivelyAccessesMethodsCondition" - "de.tum.cit.ase.ares.api.architecture.java.archunit.JavaArchUnitSecurityTestCase" - "de.tum.cit.ase.ares.testutilities.TestUserExtension" + - "de.tum.cit.ase.ares.api.localization.Messages" theFollowingResourceAccessesArePermitted: regardingFileSystemInteractions: - readAllFiles: false diff --git a/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationRead.yaml b/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationRead.yaml index 495777b4..e9785c82 100644 --- a/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationRead.yaml +++ b/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationRead.yaml @@ -14,6 +14,7 @@ regardingTheSupervisedCode: - "de.tum.cit.ase.ares.api.architecture.java.archunit.postcompile.TransitivelyAccessesMethodsCondition" - "de.tum.cit.ase.ares.api.architecture.java.archunit.JavaArchUnitSecurityTestCase" - "de.tum.cit.ase.ares.testutilities.TestUserExtension" + - "de.tum.cit.ase.ares.api.localization.Messages" theFollowingResourceAccessesArePermitted: regardingFileSystemInteractions: - readAllFiles: true diff --git a/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationWrite.yaml b/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationWrite.yaml index 83dd726c..50e89547 100644 --- a/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationWrite.yaml +++ b/src/test/resources/de/tum/cit/ase/ares/integration/testuser/securitypolicies/OnePathAllowedInstrumentationWrite.yaml @@ -14,6 +14,7 @@ regardingTheSupervisedCode: - "de.tum.cit.ase.ares.api.architecture.java.archunit.postcompile.TransitivelyAccessesMethodsCondition" - "de.tum.cit.ase.ares.api.architecture.java.archunit.JavaArchUnitSecurityTestCase" - "de.tum.cit.ase.ares.testutilities.TestUserExtension" + - "de.tum.cit.ase.ares.api.localization.Messages" theFollowingResourceAccessesArePermitted: regardingFileSystemInteractions: - readAllFiles: false