You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2016/05/01 13:56:07 UTC
svn commit: r1741861 - in
/webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer:
EnforceMojo.java PackageCycleDetector.java ReferenceCollector.java
ReferenceFilter.java
Author: veithen
Date: Sun May 1 11:56:07 2016
New Revision: 1741861
URL: http://svn.apache.org/viewvc?rev=1741861&view=rev
Log:
Factor out the logic that removes ignored class references.
Added:
webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/PackageCycleDetector.java
- copied, changed from r1741860, webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceCollector.java
webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceFilter.java
- copied, changed from r1741860, webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceCollector.java
Modified:
webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/EnforceMojo.java
webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceCollector.java
Modified: webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/EnforceMojo.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/EnforceMojo.java?rev=1741861&r1=1741860&r2=1741861&view=diff
==============================================================================
--- webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/EnforceMojo.java (original)
+++ webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/EnforceMojo.java Sun May 1 11:56:07 2016
@@ -58,7 +58,8 @@ public class EnforceMojo extends Abstrac
ds.setIncludes(new String[] { "**/*.class" });
ds.setBasedir(classesDir);
ds.scan();
- ReferenceCollector referenceCollector = new ReferenceCollector(ignoredClassReferences);
+ PackageCycleDetector packageCycleDetector = new PackageCycleDetector();
+ ReferenceFilter referenceCollector = new ReferenceFilter(new PackageCycleDetector(), ignoredClassReferences);
for (String relativePath : ds.getIncludedFiles()) {
try {
InputStream in = new FileInputStream(new File(classesDir, relativePath));
@@ -71,7 +72,7 @@ public class EnforceMojo extends Abstrac
throw new MojoExecutionException("Failed to read " + relativePath + ": " + ex.getMessage(), ex);
}
}
- Set<Reference<Clazz>> references = referenceCollector.getClassReferencesForPackageCycle();
+ Set<Reference<Clazz>> references = packageCycleDetector.getClassReferencesForPackageCycle();
if (references != null) {
StringBuilder buffer = new StringBuilder("Package cycle detected. Classes involved:");
for (Reference<Clazz> reference : references) {
Copied: webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/PackageCycleDetector.java (from r1741860, webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceCollector.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/PackageCycleDetector.java?p2=webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/PackageCycleDetector.java&p1=webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceCollector.java&r1=1741860&r2=1741861&rev=1741861&view=diff
==============================================================================
--- webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceCollector.java (original)
+++ webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/PackageCycleDetector.java Sun May 1 11:56:07 2016
@@ -30,28 +30,17 @@ import org.jgrapht.alg.StrongConnectivit
import org.jgrapht.graph.DefaultDirectedGraph;
import org.jgrapht.graph.DirectedSubgraph;
-final class ReferenceCollector {
- private final Set<Reference<Clazz>> ignoredClassReferences;
- private final Set<Reference<Clazz>> unusedIgnoredClassReferences;
+final class PackageCycleDetector extends ReferenceCollector {
private final Set<Reference<Package>> packageReferences = new HashSet<>();
private final Map<Reference<Package>,Reference<Clazz>> classReferenceSamples = new HashMap<>();
- ReferenceCollector(Set<Reference<Clazz>> ignoredClassReferences) {
- this.ignoredClassReferences = ignoredClassReferences;
- unusedIgnoredClassReferences = new HashSet<>(ignoredClassReferences);
- }
-
void collectClassReference(Reference<Clazz> classReference) {
- if (ignoredClassReferences.contains(classReference)) {
- unusedIgnoredClassReferences.remove(classReference);
- } else {
- Package fromPackage = classReference.getFrom().getPackage();
- Package toPackage = classReference.getTo().getPackage();
- if (!fromPackage.equals(toPackage)) {
- Reference<Package> packageReference = new Reference<Package>(fromPackage, toPackage);
- if (packageReferences.add(packageReference)) {
- classReferenceSamples.put(packageReference, classReference);
- }
+ Package fromPackage = classReference.getFrom().getPackage();
+ Package toPackage = classReference.getTo().getPackage();
+ if (!fromPackage.equals(toPackage)) {
+ Reference<Package> packageReference = new Reference<Package>(fromPackage, toPackage);
+ if (packageReferences.add(packageReference)) {
+ classReferenceSamples.put(packageReference, classReference);
}
}
}
@@ -80,8 +69,4 @@ final class ReferenceCollector {
}
return null;
}
-
- Set<Reference<Clazz>> getUnusedIgnoredClassReferences() {
- return unusedIgnoredClassReferences;
- }
}
Modified: webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceCollector.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceCollector.java?rev=1741861&r1=1741860&r2=1741861&view=diff
==============================================================================
--- webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceCollector.java (original)
+++ webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceCollector.java Sun May 1 11:56:07 2016
@@ -18,70 +18,6 @@
*/
package org.apache.axiom.buildutils.enforcer;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.jgrapht.DirectedGraph;
-import org.jgrapht.EdgeFactory;
-import org.jgrapht.alg.StrongConnectivityInspector;
-import org.jgrapht.graph.DefaultDirectedGraph;
-import org.jgrapht.graph.DirectedSubgraph;
-
-final class ReferenceCollector {
- private final Set<Reference<Clazz>> ignoredClassReferences;
- private final Set<Reference<Clazz>> unusedIgnoredClassReferences;
- private final Set<Reference<Package>> packageReferences = new HashSet<>();
- private final Map<Reference<Package>,Reference<Clazz>> classReferenceSamples = new HashMap<>();
-
- ReferenceCollector(Set<Reference<Clazz>> ignoredClassReferences) {
- this.ignoredClassReferences = ignoredClassReferences;
- unusedIgnoredClassReferences = new HashSet<>(ignoredClassReferences);
- }
-
- void collectClassReference(Reference<Clazz> classReference) {
- if (ignoredClassReferences.contains(classReference)) {
- unusedIgnoredClassReferences.remove(classReference);
- } else {
- Package fromPackage = classReference.getFrom().getPackage();
- Package toPackage = classReference.getTo().getPackage();
- if (!fromPackage.equals(toPackage)) {
- Reference<Package> packageReference = new Reference<Package>(fromPackage, toPackage);
- if (packageReferences.add(packageReference)) {
- classReferenceSamples.put(packageReference, classReference);
- }
- }
- }
- }
-
- Set<Reference<Clazz>> getClassReferencesForPackageCycle() {
- DirectedGraph<Package,Reference<Package>> graph = new DefaultDirectedGraph<>(new EdgeFactory<Package,Reference<Package>>() {
- @Override
- public Reference<Package> createEdge(Package sourceVertex, Package targetVertex) {
- return new Reference<Package>(sourceVertex, targetVertex);
- }
- });
- for (Reference<Package> reference : packageReferences) {
- graph.addVertex(reference.getFrom());
- graph.addVertex(reference.getTo());
- graph.addEdge(reference.getFrom(), reference.getTo(), reference);
- }
- List<DirectedSubgraph<Package,Reference<Package>>> cycles = new StrongConnectivityInspector<Package,Reference<Package>>(graph).stronglyConnectedSubgraphs();
- for (DirectedSubgraph<Package,Reference<Package>> cycle : cycles) {
- if (cycle.vertexSet().size() > 1) {
- Set<Reference<Clazz>> classReferences = new HashSet<>();
- for (Reference<Package> packageReference : cycle.edgeSet()) {
- classReferences.add(classReferenceSamples.get(packageReference));
- }
- return classReferences;
- }
- }
- return null;
- }
-
- Set<Reference<Clazz>> getUnusedIgnoredClassReferences() {
- return unusedIgnoredClassReferences;
- }
+abstract class ReferenceCollector {
+ abstract void collectClassReference(Reference<Clazz> classReference);
}
Copied: webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceFilter.java (from r1741860, webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceCollector.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceFilter.java?p2=webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceFilter.java&p1=webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceCollector.java&r1=1741860&r2=1741861&rev=1741861&view=diff
==============================================================================
--- webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceCollector.java (original)
+++ webservices/axiom/trunk/buildutils/enforcer-maven-plugin/src/main/java/org/apache/axiom/buildutils/enforcer/ReferenceFilter.java Sun May 1 11:56:07 2016
@@ -18,25 +18,16 @@
*/
package org.apache.axiom.buildutils.enforcer;
-import java.util.HashMap;
import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
import java.util.Set;
-import org.jgrapht.DirectedGraph;
-import org.jgrapht.EdgeFactory;
-import org.jgrapht.alg.StrongConnectivityInspector;
-import org.jgrapht.graph.DefaultDirectedGraph;
-import org.jgrapht.graph.DirectedSubgraph;
-
-final class ReferenceCollector {
+final class ReferenceFilter extends ReferenceCollector {
+ private final ReferenceCollector parent;
private final Set<Reference<Clazz>> ignoredClassReferences;
private final Set<Reference<Clazz>> unusedIgnoredClassReferences;
- private final Set<Reference<Package>> packageReferences = new HashSet<>();
- private final Map<Reference<Package>,Reference<Clazz>> classReferenceSamples = new HashMap<>();
- ReferenceCollector(Set<Reference<Clazz>> ignoredClassReferences) {
+ ReferenceFilter(ReferenceCollector parent, Set<Reference<Clazz>> ignoredClassReferences) {
+ this.parent = parent;
this.ignoredClassReferences = ignoredClassReferences;
unusedIgnoredClassReferences = new HashSet<>(ignoredClassReferences);
}
@@ -45,40 +36,8 @@ final class ReferenceCollector {
if (ignoredClassReferences.contains(classReference)) {
unusedIgnoredClassReferences.remove(classReference);
} else {
- Package fromPackage = classReference.getFrom().getPackage();
- Package toPackage = classReference.getTo().getPackage();
- if (!fromPackage.equals(toPackage)) {
- Reference<Package> packageReference = new Reference<Package>(fromPackage, toPackage);
- if (packageReferences.add(packageReference)) {
- classReferenceSamples.put(packageReference, classReference);
- }
- }
- }
- }
-
- Set<Reference<Clazz>> getClassReferencesForPackageCycle() {
- DirectedGraph<Package,Reference<Package>> graph = new DefaultDirectedGraph<>(new EdgeFactory<Package,Reference<Package>>() {
- @Override
- public Reference<Package> createEdge(Package sourceVertex, Package targetVertex) {
- return new Reference<Package>(sourceVertex, targetVertex);
- }
- });
- for (Reference<Package> reference : packageReferences) {
- graph.addVertex(reference.getFrom());
- graph.addVertex(reference.getTo());
- graph.addEdge(reference.getFrom(), reference.getTo(), reference);
- }
- List<DirectedSubgraph<Package,Reference<Package>>> cycles = new StrongConnectivityInspector<Package,Reference<Package>>(graph).stronglyConnectedSubgraphs();
- for (DirectedSubgraph<Package,Reference<Package>> cycle : cycles) {
- if (cycle.vertexSet().size() > 1) {
- Set<Reference<Clazz>> classReferences = new HashSet<>();
- for (Reference<Package> packageReference : cycle.edgeSet()) {
- classReferences.add(classReferenceSamples.get(packageReference));
- }
- return classReferences;
- }
+ parent.collectClassReference(classReference);
}
- return null;
}
Set<Reference<Clazz>> getUnusedIgnoredClassReferences() {