private void buildInterfaceMap(JarArchiveComparator.ArchiveType archiveType, Map<String, CtClass> map, CtClass ctInterface) throws NotFoundException { Optional<CtClass> loadedInterfaceOptional = this.jarArchiveComparator.loadClass(archiveType, ctInterface.getName()); if (loadedInterfaceOptional.isPresent()) { CtClass loadedInterface = loadedInterfaceOptional.get(); CtClass[] loadedInterfaceInterfaces = loadedInterface.getInterfaces(); for (CtClass additionalInterface : loadedInterfaceInterfaces) { map.put(additionalInterface.getName(), additionalInterface); buildInterfaceMap(archiveType, map, additionalInterface); } } }
private void buildInterfaceMap(JarArchiveComparator.ArchiveType archiveType, Map<String, CtClass> map, CtClass ctInterface) throws NotFoundException { Optional<CtClass> loadedInterfaceOptional = this.jarArchiveComparator.loadClass(archiveType, ctInterface.getName()); if (loadedInterfaceOptional.isPresent()) { CtClass loadedInterface = loadedInterfaceOptional.get(); CtClass[] loadedInterfaceInterfaces = loadedInterface.getInterfaces(); for (CtClass additionalInterface : loadedInterfaceInterfaces) { map.put(additionalInterface.getName(), additionalInterface); buildInterfaceMap(archiveType, map, additionalInterface); } } }
private List<JApiException> computeExceptionChanges(Optional<? extends CtBehavior> oldMethodOptional, Optional<? extends CtBehavior> newMethodOptional) { List<JApiException> exceptionList = new ArrayList<>(); if (oldMethodOptional.isPresent() && newMethodOptional.isPresent()) { List<String> oldExceptions = extractExceptions(oldMethodOptional); List<String> newExceptions = extractExceptions(newMethodOptional); for (String oldException : oldExceptions) { if (newExceptions.contains(oldException)) { exceptionList.add(new JApiException(jarArchiveComparator, oldException, jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, oldException), JApiChangeStatus.UNCHANGED)); newExceptions.remove(oldException); } else { exceptionList.add(new JApiException(jarArchiveComparator, oldException, jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.OLD, oldException), JApiChangeStatus.REMOVED)); } } for (String newException : newExceptions) { exceptionList.add(new JApiException(jarArchiveComparator, newException, jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, newException), JApiChangeStatus.NEW)); } } else if (oldMethodOptional.isPresent()) { List<String> exceptions = extractExceptions(oldMethodOptional); for (String exception : exceptions) { exceptionList.add(new JApiException(jarArchiveComparator, exception, jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.OLD, exception), JApiChangeStatus.REMOVED)); } } else if (newMethodOptional.isPresent()) { List<String> exceptions = extractExceptions(newMethodOptional); for (String exception : exceptions) { exceptionList.add(new JApiException(jarArchiveComparator, exception, jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, exception), JApiChangeStatus.NEW)); } } return exceptionList; }
private List<JApiException> computeExceptionChanges(Optional<? extends CtBehavior> oldMethodOptional, Optional<? extends CtBehavior> newMethodOptional) { List<JApiException> exceptionList = new ArrayList<>(); if (oldMethodOptional.isPresent() && newMethodOptional.isPresent()) { List<String> oldExceptions = extractExceptions(oldMethodOptional); List<String> newExceptions = extractExceptions(newMethodOptional); for (String oldException : oldExceptions) { if (newExceptions.contains(oldException)) { exceptionList.add(new JApiException(jarArchiveComparator, oldException, jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, oldException), JApiChangeStatus.UNCHANGED)); newExceptions.remove(oldException); } else { exceptionList.add(new JApiException(jarArchiveComparator, oldException, jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.OLD, oldException), JApiChangeStatus.REMOVED)); } } for (String newException : newExceptions) { exceptionList.add(new JApiException(jarArchiveComparator, newException, jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, newException), JApiChangeStatus.NEW)); } } else if (oldMethodOptional.isPresent()) { List<String> exceptions = extractExceptions(oldMethodOptional); for (String exception : exceptions) { exceptionList.add(new JApiException(jarArchiveComparator, exception, jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.OLD, exception), JApiChangeStatus.REMOVED)); } } else if (newMethodOptional.isPresent()) { List<String> exceptions = extractExceptions(newMethodOptional); for (String exception : exceptions) { exceptionList.add(new JApiException(jarArchiveComparator, exception, jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, exception), JApiChangeStatus.NEW)); } } return exceptionList; }
private boolean isCheckedException(Optional<CtClass> ctClassOptional, JarArchiveComparator jarArchiveComparator) throws OutOfMemoryError { boolean checkedException = false; if (ctClassOptional.isPresent()) { boolean subClassOfException = false; CtClass ctClass = ctClassOptional.get(); Optional<CtClass> exceptionOptional = jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, Exception.class.getName()); if (exceptionOptional.isPresent()) { if (ctClass.subclassOf(exceptionOptional.get())) { subClassOfException = true; } } if (subClassOfException) { Optional<CtClass> runtimeExceptionOptional = jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, RuntimeException.class.getName()); if (runtimeExceptionOptional.isPresent()) { if (!ctClass.subclassOf(runtimeExceptionOptional.get())) { checkedException = true; } } } } return checkedException; }
private boolean isCheckedException(Optional<CtClass> ctClassOptional, JarArchiveComparator jarArchiveComparator) throws OutOfMemoryError { boolean checkedException = false; if (ctClassOptional.isPresent()) { boolean subClassOfException = false; CtClass ctClass = ctClassOptional.get(); Optional<CtClass> exceptionOptional = jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, Exception.class.getName()); if (exceptionOptional.isPresent()) { if (ctClass.subclassOf(exceptionOptional.get())) { subClassOfException = true; } } if (subClassOfException) { Optional<CtClass> runtimeExceptionOptional = jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, RuntimeException.class.getName()); if (runtimeExceptionOptional.isPresent()) { if (!ctClass.subclassOf(runtimeExceptionOptional.get())) { checkedException = true; } } } } return checkedException; }
private boolean breakBuildIfCausedByExclusion(JApiMethod jApiMethod) { if (!breakBuildIfCausedByExclusion) { JApiReturnType returnType = jApiMethod.getReturnType(); String oldType = returnType.getOldReturnType(); try { Optional<CtClass> ctClassOptional = jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.OLD, oldType); if (ctClassOptional.isPresent()) { if (classExcluded(ctClassOptional.get())) { return false; } } } catch (Exception e) { warn("Failed to load class " + oldType + ": " + e.getMessage(), e); } String newType = returnType.getNewReturnType(); try { Optional<CtClass> ctClassOptional = jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, newType); if (ctClassOptional.isPresent()) { if (classExcluded(ctClassOptional.get())) { return false; } } } catch (Exception e) { warn("Failed to load class " + newType + ": " + e.getMessage(), e); } } return true; }
private boolean breakBuildIfCausedByExclusion(JApiMethod jApiMethod) { if (!breakBuildIfCausedByExclusion) { JApiReturnType returnType = jApiMethod.getReturnType(); String oldType = returnType.getOldReturnType(); try { Optional<CtClass> ctClassOptional = jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.OLD, oldType); if (ctClassOptional.isPresent()) { if (classExcluded(ctClassOptional.get())) { return false; } } } catch (Exception e) { warn("Failed to load class " + oldType + ": " + e.getMessage(), e); } String newType = returnType.getNewReturnType(); try { Optional<CtClass> ctClassOptional = jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, newType); if (ctClassOptional.isPresent()) { if (classExcluded(ctClassOptional.get())) { return false; } } } catch (Exception e) { warn("Failed to load class " + newType + ": " + e.getMessage(), e); } } return true; }
String oldType = oldTypeOptional.get(); try { Optional<CtClass> ctClassOptional = jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.OLD, oldType); if (ctClassOptional.isPresent()) { if (classExcluded(ctClassOptional.get())) { String newType = newTypeOptional.get(); try { Optional<CtClass> ctClassOptional = jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, newType); if (ctClassOptional.isPresent()) { if (classExcluded(ctClassOptional.get())) {
String oldType = oldTypeOptional.get(); try { Optional<CtClass> ctClassOptional = jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.OLD, oldType); if (ctClassOptional.isPresent()) { if (classExcluded(ctClassOptional.get())) { String newType = newTypeOptional.get(); try { Optional<CtClass> ctClassOptional = jarArchiveComparator.loadClass(JarArchiveComparator.ArchiveType.NEW, newType); if (ctClassOptional.isPresent()) { if (classExcluded(ctClassOptional.get())) {