Skip to content

Commit a21ba17

Browse files
gaurabdgromani
authored andcommitted
Pull #242: Metadata Integration
1 parent 23b9fd3 commit a21ba17

File tree

10 files changed

+422
-5
lines changed

10 files changed

+422
-5
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@
22
*/target/
33
metadata-gen/
44
net.sf.eclipsecs.core/lib/metadata-gen-1.0-SNAPSHOT.jar
5+
.idea/
6+
*.iml
7+
*.prefs
8+
.checkstyle

net.sf.eclipsecs.checkstyle/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,4 @@
8787
</plugin>
8888
</plugins>
8989
</build>
90-
</project>
90+
</project>

net.sf.eclipsecs.core/.classpath

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,8 @@
44
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
55
<classpathentry kind="src" path="src"/>
66
<classpathentry exported="true" kind="lib" path="lib/dom4j-2.1.3.jar"/>
7+
<classpathentry exported="true" kind="lib" path="lib/metadata-gen-1.0-SNAPSHOT.jar"/>
8+
<classpathentry exported="true" kind="lib" path="lib/reflections-0.9.10.jar"/>
9+
<classpathentry exported="true" kind="lib" path="lib/snakeyaml-1.26.jar"/>
710
<classpathentry kind="output" path="target/classes"/>
811
</classpath>

net.sf.eclipsecs.core/META-INF/MANIFEST.MF

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ Bundle-SymbolicName: net.sf.eclipsecs.core;singleton:=true
55
Bundle-Version: 8.35.0.qualifier
66
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
77
Bundle-ClassPath: .,
8-
lib/dom4j-2.1.3.jar
8+
lib/dom4j-2.1.3.jar,
9+
lib/snakeyaml-1.26.jar,
10+
lib/reflections-0.9.10.jar,
11+
lib/metadata-gen-1.0-SNAPSHOT.jar
912
Bundle-Activator: net.sf.eclipsecs.core.CheckstylePlugin
1013
Bundle-ActivationPolicy: lazy
1114
Bundle-Vendor: Eclipse Checkstyle Project

net.sf.eclipsecs.core/build.properties

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ bin.includes = .,\
77
plugin.xml,\
88
schema/,\
99
core.properties,\
10-
lib/dom4j-2.1.3.jar
10+
lib/dom4j-2.1.3.jar, \
11+
lib/reflections-0.9.10.jar, \
12+
lib/snakeyaml-1.26.jar, \
13+
lib/metadata-gen-1.0-SNAPSHOT.jar
14+
1115
source.. = src/
1216

127 KB
Binary file not shown.
302 KB
Binary file not shown.
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package net.sf.eclipsecs.core.config.meta;
2+
3+
import java.util.Arrays;
4+
import java.util.HashSet;
5+
import java.util.List;
6+
import java.util.Set;
7+
import java.util.function.Function;
8+
import java.util.stream.Collectors;
9+
10+
import com.puppycrawl.tools.checkstyle.PackageNamesLoader;
11+
import com.puppycrawl.tools.checkstyle.PackageObjectFactory;
12+
import com.puppycrawl.tools.checkstyle.api.AbstractCheck;
13+
import com.puppycrawl.tools.checkstyle.api.CheckstyleException;
14+
import com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheck;
15+
import com.puppycrawl.tools.checkstyle.utils.JavadocUtil;
16+
import com.puppycrawl.tools.checkstyle.utils.TokenUtil;
17+
18+
import net.sf.eclipsecs.core.CheckstylePlugin;
19+
20+
public final class CheckUtil {
21+
private CheckUtil() {
22+
}
23+
24+
public static String getModifiableTokens(String checkName) {
25+
final Object checkResult = getCheck(checkName);
26+
String result = null;
27+
if (AbstractJavadocCheck.class.isAssignableFrom(checkResult.getClass())) {
28+
final AbstractJavadocCheck javadocCheck = (AbstractJavadocCheck) checkResult;
29+
final List<Integer> modifiableJavadocTokens = subtractTokens(javadocCheck.getAcceptableJavadocTokens(),
30+
javadocCheck.getRequiredJavadocTokens());
31+
result = getTokens(JavadocUtil::getTokenName, modifiableJavadocTokens);
32+
}
33+
else if (AbstractCheck.class.isAssignableFrom(checkResult.getClass())) {
34+
final AbstractCheck check = (AbstractCheck) checkResult;
35+
final List<Integer> modifiableTokens = subtractTokens(check.getAcceptableTokens(),
36+
check.getRequiredTokens());
37+
result = getTokens(TokenUtil::getTokenName, modifiableTokens);
38+
}
39+
else {
40+
throw new IllegalStateException("Exception caused in CheckUtil.getCheck, "
41+
+ "method executed in wrong context, heirarchy of check class missing");
42+
}
43+
return result;
44+
}
45+
46+
private static AbstractCheck getCheck(String checkName) {
47+
final ClassLoader classLoader = CheckstylePlugin.getDefault()
48+
.getAddonExtensionClassLoader();
49+
try {
50+
final Set<String> packageNames = PackageNamesLoader.getPackageNames(classLoader);
51+
return (AbstractCheck) new PackageObjectFactory(packageNames, classLoader)
52+
.createModule(checkName);
53+
}
54+
catch (CheckstyleException ex) {
55+
throw new IllegalStateException("exception occured during load of " + checkName, ex);
56+
}
57+
}
58+
59+
private static List<Integer> subtractTokens(int[] tokens, int... requiredTokens) {
60+
Set<Integer> requiredTokensSet = new HashSet<>(Arrays.stream(requiredTokens)
61+
.boxed()
62+
.collect(Collectors.toList()));
63+
return Arrays.stream(tokens)
64+
.boxed()
65+
.filter(token -> !requiredTokensSet.contains(token))
66+
.collect(Collectors.toList());
67+
}
68+
69+
private static String getTokens(Function<Integer, String> function, List<Integer> modifiableTokens) {
70+
return modifiableTokens.stream()
71+
.map(tokenInteger -> function.apply(tokenInteger))
72+
.collect(Collectors.joining(","));
73+
}
74+
}
75+

0 commit comments

Comments
 (0)