Skip to content

Commit 88dbdbb

Browse files
committed
update
1 parent 94eeca2 commit 88dbdbb

291 files changed

Lines changed: 1440 additions & 685 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

access/build.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<property name="chapter" value="access"/>
55
<property name="excludedfiles" value=""/>
66
<import file="../Ant-Common.xml"/>
7+
<import file="../Ant-Clean.xml"/>
78

89
<target name="run" description="Compile and run" depends="build">
910
<jrun cls="Cake" />

annotations/ExtractInterface.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//: annotations/ExtractInterface.java
2-
// APT-based annotation processing.
2+
// javac-based annotation processing.
33
package annotations;
44
import java.lang.annotation.*;
55

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
//: annotations/IfaceExtractorProcessor.java
2+
// javac-based annotation processing.
3+
package annotations;
4+
import javax.annotation.processing.*;
5+
import javax.lang.model.SourceVersion;
6+
import javax.lang.model.element.*;
7+
import java.util.*;
8+
import java.io.*;
9+
10+
@SupportedAnnotationTypes(
11+
"annotations.ExtractInterface")
12+
@SupportedSourceVersion(SourceVersion.RELEASE_8)
13+
public class IfaceExtractorProcessor
14+
extends AbstractProcessor {
15+
private ArrayList<Element>
16+
interfaceMethods = new ArrayList<>();
17+
private ProcessingEnvironment processingEnv;
18+
@Override public void
19+
init(ProcessingEnvironment processingEnv) {
20+
this.processingEnv = processingEnv;
21+
}
22+
@Override public boolean
23+
process(Set<? extends TypeElement> annotations,
24+
RoundEnvironment env) {
25+
for(Element elem :
26+
env.getElementsAnnotatedWith(ExtractInterface.class)) {
27+
if(elem.getModifiers().contains(Modifier.PUBLIC) &&
28+
!(elem.getModifiers().contains(Modifier.STATIC)))
29+
interfaceMethods.add(elem);
30+
if(interfaceMethods.size() > 0) {
31+
for(Element el : interfaceMethods)
32+
System.out.println(el.getKind() +
33+
" : " + el.getModifiers() +
34+
" : " + el.getSimpleName() +
35+
" : " + el.asType());
36+
try {
37+
try(Writer writer =
38+
processingEnv.getFiler()
39+
.createSourceFile("Filename.txt")
40+
.openWriter()) {
41+
/* writer.write("package " +
42+
typeDecl.getPackage().getQualifiedName() +";");
43+
writer.write("public interface " +
44+
annot.value() + " {");
45+
for(MethodDeclaration m : interfaceMethods) {
46+
writer.print(" public ");
47+
writer.print(m.getReturnType() + " ");
48+
writer.print(m.getSimpleName() + " (");
49+
int i = 0;
50+
for(ParameterDeclaration parm :
51+
m.getParameters()) {
52+
writer.print(parm.getType() + " " +
53+
parm.getSimpleName());
54+
if(++i < m.getParameters().size())
55+
writer.print(", ");
56+
}
57+
writer.write(");");
58+
}
59+
*/ writer.write("}");
60+
}
61+
} catch(Exception e) {
62+
throw new RuntimeException(e);
63+
}
64+
}
65+
}
66+
return false;
67+
}
68+
} ///:~

annotations/Multiplier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//: annotations/Multiplier.java
2-
// APT-based annotation processing.
2+
// javac-based annotation processing.
33
package annotations;
44

55
@ExtractInterface("IMultiplier")

annotations/build.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
<project default="run">
44
<property name="chapter" value="annotations"/>
5-
<property name="excludedfiles" value="InterfaceExtractorProcessor.java InterfaceExtractorProcessorFactory.java database/TableCreationProcessorFactory.java"/>
5+
<property name="excludedfiles" value=""/>
66
<import file="../Ant-Common.xml"/>
7+
<import file="../Ant-Clean.xml"/>
78

89
<target name="run" description="Compile and run" depends="build">
910
<jrun cls="annotations.AtUnitComposition" dirpath="../annotations" />
@@ -18,6 +19,7 @@
1819
<jrun cls="annotations.StackLStringTest" dirpath="../annotations" />
1920
<jrun cls="UseCaseTracker" />
2021
<jrun cls="annotations.database.TableCreator" dirpath="../annotations/database" arguments="annotations.database.Member" />
22+
<jrun cls="annotations.simplest.SimpleTest" dirpath="../annotations/simplest" />
2123
</target>
2224

2325
</project>

annotations/simplest/Simple.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//: annotations/simplest/Simple.java
2+
// A bare-bones annotation.
3+
package annotations.simplest;
4+
import java.lang.annotation.Retention;
5+
import java.lang.annotation.RetentionPolicy;
6+
import java.lang.annotation.Target;
7+
import java.lang.annotation.ElementType;
8+
9+
@Retention(RetentionPolicy.SOURCE)
10+
@Target({ElementType.TYPE, ElementType.METHOD,
11+
ElementType.CONSTRUCTOR,
12+
ElementType.ANNOTATION_TYPE,
13+
ElementType.PACKAGE, ElementType.FIELD,
14+
ElementType.LOCAL_VARIABLE})
15+
public @interface Simple {
16+
String value() default "-default-";
17+
} ///:~
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//: annotations/simplest/SimpleProcessor.java
2+
// A bare-bones annotation processor.
3+
package annotations.simplest;
4+
import javax.annotation.processing.*;
5+
import javax.lang.model.SourceVersion;
6+
import javax.lang.model.element.*;
7+
import java.util.*;
8+
9+
@SupportedAnnotationTypes(
10+
"annotations.simplest.Simple")
11+
@SupportedSourceVersion(SourceVersion.RELEASE_8)
12+
public class SimpleProcessor
13+
extends AbstractProcessor {
14+
@Override public boolean
15+
process(Set<? extends TypeElement> annotations,
16+
RoundEnvironment env) {
17+
for(TypeElement t : annotations)
18+
System.out.println(t);
19+
for(Element el :
20+
env.getElementsAnnotatedWith(Simple.class)){
21+
System.out.println(el.getKind() +
22+
" : " + el.getModifiers() +
23+
" : " + el.getSimpleName() +
24+
" : " + el.asType());
25+
}
26+
return false;
27+
}
28+
} ///:~
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
//: annotations/simplest/SimpleTest.java
2+
// Test the "Simple" annotation
3+
package annotations.simplest;
4+
5+
@Simple
6+
public class SimpleTest {
7+
@Simple
8+
int i;
9+
@Simple
10+
public SimpleTest() {}
11+
@Simple
12+
public void foo() {
13+
System.out.println("SimpleTest.foo()");
14+
}
15+
@Simple
16+
public static void main(String[] args) {
17+
@Simple
18+
SimpleTest st = new SimpleTest();
19+
st.foo();
20+
}
21+
} ///:~

arrays/build.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<property name="chapter" value="arrays"/>
55
<property name="excludedfiles" value=""/>
66
<import file="../Ant-Common.xml"/>
7+
<import file="../Ant-Clean.xml"/>
78

89
<target name="run" description="Compile and run" depends="build">
910
<jrun cls="AlphabeticSearch" />

assertions/Assert1.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
//: assertions/Assert1.java
22
// Non-informative style of assert
3-
// Compile with: javac -source 1.4 Assert1.java
43
// {JVMArgs: -ea} // Must run with -ea
54
// {ThrowsException}
65

0 commit comments

Comments
 (0)