1 package de.fhdw.wtf.walker.tasks;
2
3 import java.util.HashMap;
4 import java.util.Set;
5
6 import de.fhdw.wtf.common.ast.Attribute;
7 import de.fhdw.wtf.common.ast.Constructor;
8 import de.fhdw.wtf.common.ast.ConstructorOrOperation;
9 import de.fhdw.wtf.common.ast.Group;
10 import de.fhdw.wtf.common.ast.Model;
11 import de.fhdw.wtf.common.ast.Operation;
12 import de.fhdw.wtf.common.ast.type.AtomicType;
13 import de.fhdw.wtf.common.ast.type.ClassType;
14 import de.fhdw.wtf.common.ast.type.CompositeType;
15 import de.fhdw.wtf.common.ast.type.ThrownType;
16 import de.fhdw.wtf.common.ast.type.Type;
17 import de.fhdw.wtf.common.ast.type.TypeProxy;
18 import de.fhdw.wtf.common.ast.visitor.ConstructorOrOperationExceptionVisitor;
19 import de.fhdw.wtf.common.ast.visitor.TypeVisitor;
20 import de.fhdw.wtf.common.exception.walker.TaskException;
21 import de.fhdw.wtf.common.task.TaskExecutor;
22 import de.fhdw.wtf.walker.walker.SimpleWalkerTask;
23
24 public class CovarianceInExceptionInheritanceChecker extends SimpleWalkerTask {
25
26 public CovarianceInExceptionInheritanceChecker(final Model m, final TaskExecutor taskmanager) {
27 super(m, taskmanager);
28 this.helper = new ExceptionInhHelper();
29
30 }
31
32 ExceptionInhHelper helper;
33
34 @Override
35 public void handleClass(final ClassType c) throws TaskException {
36
37
38 }
39
40 @Override
41 public void handleGroup(final Group g) throws TaskException {
42
43
44 }
45
46 @Override
47 public void handleAttribute(final Attribute a, final ClassType owner) throws TaskException {
48
49
50 }
51
52 @Override
53 public void handleConstructorOrOperation(final ConstructorOrOperation coo, final ClassType owner)
54 throws TaskException {
55 coo.accept(new ConstructorOrOperationExceptionVisitor<TaskException>() {
56
57 @Override
58 public void handleOperation(final Operation operation) throws TaskException {
59
60 operation.getReturnType().accept(new TypeVisitor() {
61
62 @Override
63 public void handle(final TypeProxy typeProxy) {
64
65
66 }
67
68 @Override
69 public void handle(final CompositeType compositeType) {
70
71
72 }
73
74 @Override
75 public void handle(final AtomicType atomicType) {
76
77
78 }
79 });
80
81 }
82
83 @Override
84 public void handleConstructor(final Constructor constructor) throws TaskException {
85
86
87 }
88 });
89 }
90
91 @Override
92 public void finalizeTask() throws TaskException {
93
94
95 }
96
97 @Override
98 public void beginTask() throws TaskException {
99
100
101 }
102 }
103
104
105
106
107 class ExceptionInhHelper {
108
109 }
110
111
112
113
114
115 class TypeHelper {
116 HashMap<Type, CooHelper> map;
117 }
118
119
120
121
122
123 class CooHelper {
124 HashMap<ConstructorOrOperation, Set<ThrownType>> map;
125 }