Codebase list javaparser / b668314
New upstream version 3.6.22 Emmanuel Bourg 2 years ago
20 changed file(s) with 123 addition(s) and 41 deletion(s). Raw diff Collapse all Expand all
0 Version 3.6.22
1 ------------------
2 [issues resolved](https://github.com/javaparser/javaparser/milestone/106?closed=1)
3
04 Version 3.6.21
15 ------------------
6 [issues resolved](https://github.com/javaparser/javaparser/milestone/105?closed=1)
7
8 Version 3.6.20
9 ------------------
210 [issues resolved](https://github.com/javaparser/javaparser/milestone/104?closed=1)
311
4 Version 3.6.20
12 Version 3.6.19
513 ------------------
614 [issues resolved](https://github.com/javaparser/javaparser/milestone/103?closed=1)
7
8 Version 3.6.19
9 ------------------
10 [issues resolved](https://github.com/javaparser/javaparser/milestone/102?closed=1)
1115
1216 Version 3.6.18
1317 ------------------
11 <parent>
22 <artifactId>javaparser-parent</artifactId>
33 <groupId>com.github.javaparser</groupId>
4 <version>3.6.21</version>
4 <version>3.6.22</version>
55 </parent>
66 <modelVersion>4.0.0</modelVersion>
77
1515
1616 /**
1717 * Outputs a JSON file containing the AST meant for inspecting it.
18 *
19 * @deprecated this class was mostly used for serialization purposes.
20 * Use JavaParserJsonSerializer in the javaparser-core-serialization module for that.
1821 */
22 @Deprecated
1923 public class JsonPrinter {
2024 private final boolean outputNodeType;
2125
22 <parent>
33 <artifactId>javaparser-parent</artifactId>
44 <groupId>com.github.javaparser</groupId>
5 <version>3.6.21</version>
5 <version>3.6.22</version>
66 </parent>
77 <modelVersion>4.0.0</modelVersion>
88
22 <parent>
33 <artifactId>javaparser-parent</artifactId>
44 <groupId>com.github.javaparser</groupId>
5 <version>3.6.21</version>
5 <version>3.6.22</version>
66 </parent>
77 <modelVersion>4.0.0</modelVersion>
88
11 <parent>
22 <artifactId>javaparser-parent</artifactId>
33 <groupId>com.github.javaparser</groupId>
4 <version>3.6.21</version>
4 <version>3.6.22</version>
55 </parent>
66 <modelVersion>4.0.0</modelVersion>
77
11 <parent>
22 <artifactId>javaparser-parent</artifactId>
33 <groupId>com.github.javaparser</groupId>
4 <version>3.6.21</version>
4 <version>3.6.22</version>
55 </parent>
66 <modelVersion>4.0.0</modelVersion>
77
22 <parent>
33 <artifactId>javaparser-parent</artifactId>
44 <groupId>com.github.javaparser</groupId>
5 <version>3.6.21</version>
5 <version>3.6.22</version>
66 </parent>
77 <modelVersion>4.0.0</modelVersion>
88
8888 visible = ((HasAccessSpecifier) resolvedReferenceTypeDeclaration).accessSpecifier() != AccessSpecifier.PRIVATE;
8989 }
9090 }
91 if (internalTypeDeclaration.getName().equals(name) && visible) {
92 return internalTypeDeclaration;
91 if (internalTypeDeclaration.getName().equals(name)) {
92 if (visible) {
93 return internalTypeDeclaration;
94 } else {
95 return null;
96 }
9397 }
9498 }
9599 // check recursively the ancestors of this ancestor
112116 // We want to avoid infinite recursion in case of Object having Object as ancestor
113117 if (!Object.class.getCanonicalName().equals(typeDeclaration.getQualifiedName())) {
114118 for (ResolvedReferenceType ancestor : typeDeclaration.getAncestors(true)) {
115 // Avoid recursion on self
119 // Avoid recursion on self
116120 if (typeDeclaration != ancestor.getTypeDeclaration()) {
117121 candidateMethods.addAll(ancestor.getAllMethodsVisibleToInheritors()
118122 .stream()
126130 if (res.isSolved()) {
127131 candidateMethods.add(res.getCorrespondingDeclaration());
128132 }
129 }
133 }
130134 }
131135 }
132136 // We want to avoid infinite recursion when a class is using its own method
11
22 import com.github.javaparser.ast.body.AnnotationDeclaration;
33 import com.github.javaparser.ast.body.AnnotationMemberDeclaration;
4 import com.github.javaparser.ast.expr.AnnotationExpr;
45 import com.github.javaparser.resolution.declarations.*;
56 import com.github.javaparser.resolution.types.ResolvedReferenceType;
67 import com.github.javaparser.resolution.types.ResolvedType;
5556 }
5657
5758 @Override
58 public boolean hasDirectlyAnnotation(String qualifiedName) {
59 // TODO #1839
60 throw new UnsupportedOperationException();
59 public boolean hasDirectlyAnnotation(String canonicalName) {
60 return AstResolutionUtils.hasDirectlyAnnotation(wrappedNode, typeSolver, canonicalName);
6161 }
6262
6363 @Override
2121 import com.github.javaparser.symbolsolver.logic.AbstractTypeDeclaration;
2222 import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
2323 import javassist.CtClass;
24 import javassist.bytecode.AnnotationsAttribute;
25 import javassist.bytecode.annotation.Annotation;
2426
2527 import java.util.Collections;
2628 import java.util.List;
4143 @Override
4244 public String toString() {
4345 return getClass().getSimpleName() + "{" +
44 "ctClass=" + ctClass.getName() +
45 ", typeSolver=" + typeSolver +
46 '}';
46 "ctClass=" + ctClass.getName() +
47 ", typeSolver=" + typeSolver +
48 '}';
4749 }
4850
4951 public JavassistAnnotationDeclaration(CtClass ctClass, TypeSolver typeSolver) {
6365 @Override
6466 public String getClassName() {
6567 String qualifiedName = getQualifiedName();
66 if(qualifiedName.contains(".")) {
68 if (qualifiedName.contains(".")) {
6769 return qualifiedName.substring(qualifiedName.lastIndexOf(".") + 1, qualifiedName.length());
6870 } else {
6971 return qualifiedName;
105107
106108 @Override
107109 public boolean hasDirectlyAnnotation(String canonicalName) {
108 // TODO #1839
109 throw new UnsupportedOperationException();
110 return ctClass.hasAnnotation(canonicalName);
110111 }
111112
112113 @Override
134135 @Override
135136 public List<ResolvedAnnotationMemberDeclaration> getAnnotationMembers() {
136137 return Stream.of(ctClass.getDeclaredMethods())
137 .map(m -> new JavassistAnnotationMemberDeclaration(m, typeSolver))
138 .collect(Collectors.toList());
138 .map(m -> new JavassistAnnotationMemberDeclaration(m, typeSolver))
139 .collect(Collectors.toList());
139140 }
140141 }
1515
1616 package com.github.javaparser.symbolsolver.reflectionmodel;
1717
18 import com.github.javaparser.ast.expr.AnnotationExpr;
1819 import com.github.javaparser.resolution.declarations.*;
1920 import com.github.javaparser.resolution.types.ResolvedReferenceType;
2021 import com.github.javaparser.resolution.types.ResolvedType;
2122 import com.github.javaparser.symbolsolver.logic.AbstractTypeDeclaration;
2223 import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
2324
25 import java.lang.annotation.Annotation;
2426 import java.util.Collections;
2527 import java.util.List;
2628 import java.util.Optional;
116118 }
117119
118120 @Override
119 public boolean hasDirectlyAnnotation(String qualifiedName) {
120 // TODO #1839
121 throw new UnsupportedOperationException();
121 public boolean hasDirectlyAnnotation(String canonicalName) {
122 return reflectionClassAdapter.hasDirectlyAnnotation(canonicalName);
122123 }
123124
124125 @Override
22 <parent>
33 <artifactId>javaparser-parent</artifactId>
44 <groupId>com.github.javaparser</groupId>
5 <version>3.6.21</version>
5 <version>3.6.22</version>
66 </parent>
77 <modelVersion>4.0.0</modelVersion>
88
22 <parent>
33 <artifactId>javaparser-parent</artifactId>
44 <groupId>com.github.javaparser</groupId>
5 <version>3.6.21</version>
5 <version>3.6.22</version>
66 </parent>
77 <modelVersion>4.0.0</modelVersion>
88
22 <parent>
33 <artifactId>javaparser-parent</artifactId>
44 <groupId>com.github.javaparser</groupId>
5 <version>3.6.21</version>
5 <version>3.6.22</version>
66 </parent>
77 <modelVersion>4.0.0</modelVersion>
88
33 import com.github.javaparser.ast.CompilationUnit;
44 import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
55 import com.github.javaparser.ast.body.MethodDeclaration;
6 import com.github.javaparser.ast.expr.AnnotationExpr;
67 import com.github.javaparser.ast.expr.MarkerAnnotationExpr;
78 import com.github.javaparser.ast.expr.NormalAnnotationExpr;
89 import com.github.javaparser.ast.expr.SingleMemberAnnotationExpr;
910 import com.github.javaparser.resolution.declarations.ResolvedAnnotationDeclaration;
1011 import com.github.javaparser.symbolsolver.JavaSymbolSolver;
1112 import com.github.javaparser.symbolsolver.javaparser.Navigator;
13 import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserAnnotationDeclaration;
14 import com.github.javaparser.symbolsolver.javassistmodel.JavassistAnnotationDeclaration;
15 import com.github.javaparser.symbolsolver.reflectionmodel.ReflectionAnnotationDeclaration;
1216 import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver;
1317 import com.github.javaparser.symbolsolver.resolution.typesolvers.JarTypeSolver;
1418 import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver;
1923 import java.io.IOException;
2024
2125 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertFalse;
27 import static org.junit.Assert.assertTrue;
2228
2329 /**
2430 * Tests resolution of annotation expressions.
177183 assertEquals("org.junit", resolved.getPackageName());
178184 assertEquals("Test", resolved.getName());
179185 }
186
187 @Test
188 public void solveJavaParserMetaAnnotations() {
189 // parse compilation unit and get annotation expression
190 CompilationUnit cu = parseSample("Annotations");
191 ClassOrInterfaceDeclaration clazz = Navigator.demandClass(cu, "CA");
192 AnnotationExpr annotationExpr = clazz.getAnnotation(0);
193
194 // resolve annotation expression @MyAnnotation
195 JavaParserAnnotationDeclaration resolved = (JavaParserAnnotationDeclaration) annotationExpr.resolve();
196
197 // check that the annotation @MyAnnotation has the annotations @Target and @Retention, but not @Documented
198 assertEquals("foo.bar.MyAnnotation", resolved.getQualifiedName());
199 assertTrue(resolved.hasDirectlyAnnotation("java.lang.annotation.Target"));
200 assertTrue(resolved.hasDirectlyAnnotation("java.lang.annotation.Retention"));
201 assertFalse(resolved.hasDirectlyAnnotation("java.lang.annotation.Documented"));
202 }
203
204 @Test
205 public void solveReflectionMetaAnnotations() {
206 // parse compilation unit and get annotation expression
207 CompilationUnit cu = parseSample("Annotations");
208 ClassOrInterfaceDeclaration clazz = Navigator.demandClass(cu, "CA");
209 MethodDeclaration method = Navigator.demandMethod(clazz, "equals");
210 MarkerAnnotationExpr annotationExpr = (MarkerAnnotationExpr) method.getAnnotation(0);
211
212 // resolve annotation expression @Override
213 ReflectionAnnotationDeclaration resolved = (ReflectionAnnotationDeclaration) annotationExpr.resolve();
214
215 // check that the annotation @Override has the annotations @Target and @Retention, but not @Documented
216 assertEquals("java.lang.Override", resolved.getQualifiedName());
217 assertTrue(resolved.hasDirectlyAnnotation("java.lang.annotation.Target"));
218 assertTrue(resolved.hasDirectlyAnnotation("java.lang.annotation.Retention"));
219 assertFalse(resolved.hasDirectlyAnnotation("java.lang.annotation.Documented"));
220 }
221
222 @Test
223 public void solveJavassistMetaAnnotation() throws IOException {
224 // parse compilation unit and get annotation expression
225 CompilationUnit cu = parseSample("Annotations");
226 ClassOrInterfaceDeclaration clazz = Navigator.demandClass(cu, "CD");
227 MethodDeclaration method = Navigator.demandMethod(clazz, "testSomethingElse");
228 AnnotationExpr annotationExpr = method.getAnnotation(0);
229
230 // resolve annotation expression @Test
231 JavassistAnnotationDeclaration resolved = (JavassistAnnotationDeclaration) annotationExpr.resolve();
232
233 // check that the annotation @Test has the annotations @Target and @Retention, but not @Documented
234 assertEquals("org.junit.Test", resolved.getQualifiedName());
235 assertTrue(resolved.hasDirectlyAnnotation("java.lang.annotation.Target"));
236 assertTrue(resolved.hasDirectlyAnnotation("java.lang.annotation.Retention"));
237 assertFalse(resolved.hasDirectlyAnnotation("java.lang.annotation.Documented"));
238 }
180239 }
00 package foo.bar;
11
2 import java.lang.annotation.*;
23 import org.junit.*;
34
5 @Target(ElementType.TYPE)
6 @Retention(RetentionPolicy.RUNTIME)
47 public @interface MyAnnotation {
58 }
69
99 }
1010 }
1111
12 class ParentClass {
12 class ParentClass extends SuperParentClass {
1313 private class ResolveMe {
1414 public String s = "incorrect";
1515 }
16 }
17
18 class SuperParentClass {
19 public class ResolveMe {
20 public String s = "also incorrect";
21 }
1622 }
1414 <groupId>com.github.javaparser</groupId>
1515 <artifactId>javaparser-parent</artifactId>
1616 <packaging>pom</packaging>
17 <version>3.6.21</version>
17 <version>3.6.22</version>
1818
1919 <name>javaparser-parent</name>
2020 <url>https://github.com/javaparser</url>
134134 <connection>scm:git:git://github.com/javaparser/javaparser.git</connection>
135135 <developerConnection>scm:git:git@github.com:javaparser/javaparser.git</developerConnection>
136136 <url>https://github.com/javaparser/javaparser.git</url>
137 <tag>javaparser-parent-3.6.21</tag>
137 <tag>javaparser-parent-3.6.22</tag>
138138 </scm>
139139
140140 <issueManagement>
2727 <dependency>
2828 <groupId>com.github.javaparser</groupId>
2929 <artifactId>javaparser-symbol-solver-core</artifactId>
30 <version>3.6.21</version>
30 <version>3.6.22</version>
3131 </dependency>
3232 ```
3333
3434 **Gradle**:
3535
3636 ```
37 compile 'com.github.javaparser:javaparser-symbol-solver-core:3.6.21'
37 compile 'com.github.javaparser:javaparser-symbol-solver-core:3.6.22'
3838 ```
3939
4040 Since Version 3.5.10, the JavaParser project includes the JavaSymbolSolver.
4949 <dependency>
5050 <groupId>com.github.javaparser</groupId>
5151 <artifactId>javaparser-core</artifactId>
52 <version>3.6.21</version>
52 <version>3.6.22</version>
5353 </dependency>
5454 ```
5555
5656 **Gradle**:
5757
5858 ```
59 compile 'com.github.javaparser:javaparser-core:3.6.21'
59 compile 'com.github.javaparser:javaparser-core:3.6.22'
6060 ```
6161
6262 Since version 3.6.17 the AST can be serialized to JSON.
6868 <dependency>
6969 <groupId>com.github.javaparser</groupId>
7070 <artifactId>javaparser-core-serialization</artifactId>
71 <version>3.6.21</version>
71 <version>3.6.22</version>
7272 </dependency>
7373 ```
7474
7575 **Gradle**:
7676
7777 ```
78 compile 'com.github.javaparser:javaparser-core-serialization:3.6.21'
78 compile 'com.github.javaparser:javaparser-core-serialization:3.6.22'
7979 ```
8080
8181 ## How To Compile Sources