Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
Billlynch committed Apr 29, 2024
1 parent 8a10b71 commit ac02dc8
Showing 1 changed file with 31 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class IncompatibleErrorOutput extends OutputGenerator<Void> {

Expand Down Expand Up @@ -104,26 +106,26 @@ public Void generate() {
final SemanticVersion.ChangeType changeType = changeTypeOptional.get();

SemverOut semverOut = new SemverOut(options, jApiClasses, (change, semanticVersionLevel) -> {
switch(semanticVersionLevel) {
case MAJOR:
if (changeType.ordinal() > SemanticVersion.ChangeType.MAJOR.ordinal()) {
warn("Incompatibility detected: Requires semantic version level " + semanticVersionLevel + ": " + change);
}
break;
case MINOR:
if (changeType.ordinal() > SemanticVersion.ChangeType.MINOR.ordinal()) {
warn("Incompatibility detected: Requires semantic version level " + semanticVersionLevel + ": " + change);
}
break;
case PATCH:
if (changeType.ordinal() > SemanticVersion.ChangeType.PATCH.ordinal()) {
warn("Incompatibility detected: Requires semantic version level " + semanticVersionLevel + ": " + change);
}
break;
default:
// Ignore
}
});
switch (semanticVersionLevel) {
case MAJOR:
if (changeType.ordinal() > SemanticVersion.ChangeType.MAJOR.ordinal()) {
warn("Incompatibility detected: Requires semantic version level " + semanticVersionLevel + ": " + change);
}
break;
case MINOR:
if (changeType.ordinal() > SemanticVersion.ChangeType.MINOR.ordinal()) {
warn("Incompatibility detected: Requires semantic version level " + semanticVersionLevel + ": " + change);
}
break;
case PATCH:
if (changeType.ordinal() > SemanticVersion.ChangeType.PATCH.ordinal()) {
warn("Incompatibility detected: Requires semantic version level " + semanticVersionLevel + ": " + change);
}
break;
default:
// Ignore
}
});

String semver = semverOut.generate();
if (changeType == SemanticVersion.ChangeType.MINOR && semver.equals(SemverOut.SEMVER_MAJOR)) {
Expand Down Expand Up @@ -213,7 +215,13 @@ public void visit(Iterator<JApiClass> iterator, JApiClass jApiClass) {

@Override
public void visit(Iterator<JApiMethod> iterator, JApiMethod jApiMethod) {
for (JApiCompatibilityChange change : jApiMethod.getCompatibilityChanges()) {
final List<JApiCompatibilityChange> changes = Stream.concat(
jApiMethod.getCompatibilityChanges().stream(),
jApiMethod.getReturnType().getCompatibilityChanges().stream()
)
.collect(Collectors.toList());

for (JApiCompatibilityChange change : changes) {
if (!change.isBinaryCompatible() || !change.isSourceCompatible()) {
if (!change.isBinaryCompatible() && breakBuildIfCausedByExclusion(jApiMethod)) {
breakBuildResult.binaryIncompatibleChanges = true;
Expand All @@ -229,23 +237,6 @@ public void visit(Iterator<JApiMethod> iterator, JApiMethod jApiMethod) {
.append(")").append(":").append(change.getType().name());
}
}

for (JApiCompatibilityChange change : jApiMethod.getReturnType().getCompatibilityChanges()) {
if (!change.isBinaryCompatible() || !change.isSourceCompatible()) {
if (!change.isBinaryCompatible() && options.isErrorOnBinaryIncompatibility()) {
breakBuildResult.binaryIncompatibleChanges = true;
}
if (!change.isSourceCompatible() && options.isErrorOnSourceIncompatibility()) {
breakBuildResult.sourceIncompatibleChanges = true;
}
if (sb.length() > 1) {
sb.append(',');
}
sb.append(jApiMethod.getjApiClass().getFullyQualifiedName()).append(".")
.append(jApiMethod.getName()).append("(").append(methodParameterToList(jApiMethod))
.append(")").append(":").append(change.getType().name());
}
}
}

private boolean breakBuildIfCausedByExclusion(JApiMethod jApiMethod) {
Expand Down Expand Up @@ -320,7 +311,7 @@ public void visit(Iterator<JApiImplementedInterface> iterator, JApiImplementedIn
private boolean breakBuildIfCausedByExclusion(JApiImplementedInterface jApiImplementedInterface) {
if (!breakBuildIfCausedByExclusion) {
CtClass ctClass = jApiImplementedInterface.getCtClass();
return !classExcluded(ctClass);
return !classExcluded(ctClass);
}
return true;
}
Expand Down Expand Up @@ -415,7 +406,7 @@ private boolean breakBuildIfCausedByExclusion(JApiSuperclass jApiSuperclass) {
Optional<CtClass> newSuperclassOptional = jApiSuperclass.getNewSuperclass();
if (newSuperclassOptional.isPresent()) {
CtClass ctClass = newSuperclassOptional.get();
return !classExcluded(ctClass);
return !classExcluded(ctClass);
}
}
return true;
Expand Down

0 comments on commit ac02dc8

Please sign in to comment.