]> git.uio.no Git - ifi-stolz-refaktor.git/blob - case-study/refaktor-before/src/no/uio/ifi/refaktor/analyze/checkers/InstantiationOfNonStaticInnerClassChecker.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / refaktor-before / src / no / uio / ifi / refaktor / analyze / checkers / InstantiationOfNonStaticInnerClassChecker.java
1 package no.uio.ifi.refaktor.analyze.checkers;
2
3 import no.uio.ifi.refaktor.analyze.CollectorManager;
4 import no.uio.ifi.refaktor.analyze.collectors.PropertyCollector;
5 import no.uio.ifi.refaktor.analyze.exceptions.IllegalExpressionFoundException;
6 import no.uio.ifi.refaktor.analyze.exceptions.IllegalStatementFoundException;
7 import no.uio.ifi.refaktor.textselection.CompilationUnitTextSelection;
8
9 import org.eclipse.jdt.core.dom.ClassInstanceCreation;
10 import org.eclipse.jdt.core.dom.ITypeBinding;
11 import org.eclipse.jdt.core.dom.Modifier;
12
13 // TODO: file bug report
14 class InstantiationOfNonStaticInnerClassChecker extends PropertyCollector implements Checker {
15
16         public InstantiationOfNonStaticInnerClassChecker(CompilationUnitTextSelection selection) {
17                 super(selection);
18         }
19         
20         @Override
21         public boolean visit(ClassInstanceCreation node) {
22                 if (!nodeInSelection(node))
23                         return false;
24                 
25                 if (typeIsNonStaticInnerClass(node))
26                         throw new IllegalExpressionFoundException(node);
27                 
28                 return true;
29         }
30
31         private boolean typeIsNonStaticInnerClass(ClassInstanceCreation node) {
32                 ITypeBinding typeBinding = node.getType().resolveBinding();
33                 assert typeBinding != null;
34                 return typeBinding.isMember() && !Modifier.isStatic(typeBinding.getModifiers());
35         }
36
37         @Override
38         public void check() throws IllegalStatementFoundException, IllegalExpressionFoundException {
39                 CollectorManager.collectProperties(selection, this);
40         }
41
42         @Override
43         public void clearData() {
44         }
45
46 }