diff --git a/src/org/ntlab/pushPullRefactoring/PushPullProcessor.java b/src/org/ntlab/pushPullRefactoring/PushPullProcessor.java index de1af18..9591284 100644 --- a/src/org/ntlab/pushPullRefactoring/PushPullProcessor.java +++ b/src/org/ntlab/pushPullRefactoring/PushPullProcessor.java @@ -30,8 +30,12 @@ import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.ASTParser; import org.eclipse.jdt.core.dom.ASTVisitor; +import org.eclipse.jdt.core.dom.Annotation; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.FieldDeclaration; +import org.eclipse.jdt.core.dom.MarkerAnnotation; +import org.eclipse.jdt.core.dom.NormalAnnotation; +import org.eclipse.jdt.core.dom.SingleMemberAnnotation; import org.eclipse.jdt.core.dom.VariableDeclaration; import org.eclipse.jdt.core.dom.VariableDeclarationFragment; import org.eclipse.jdt.core.search.IJavaSearchConstants; @@ -112,7 +116,7 @@ DynamicValidationRefactoringChange result = new DynamicValidationRefactoringChange(descriptor, PushPullRefactoring.NAME); ICompilationUnit[] icus = new ICompilationUnit[1]; //createPushPullChanges(); - FieldDeclaration fieldDec = searchFieldDeclaration("State"); + FieldDeclaration fieldDec = searchFieldDeclaration(descriptor.getDistinationClass(),"PullReference"); // ASTParser parser = ASTParser.newParser(AST.JLS4); // parser.setKind(ASTParser.K_COMPILATION_UNIT); // parser.setResolveBindings(true); @@ -197,24 +201,41 @@ }); return result[0]; } - private FieldDeclaration searchFieldDeclaration(String annotationName,String... value) { + /** + * �N���X�t�@�C����Ώۂ�,�A�m�e�[�V�������ƒl����,���ꂪ�t�^����Ă���t�B�[���h��Ԃ����\�b�h. + * �A�m�e�[�V�����̒l�����������Ɋ܂߂鏈���͖����� + * @param cu �Ώۂ̃N���X�t�@�C�� + * @param annotationName �A�m�e�[�V������ + * @param value �A�m�e�[�V�����̒l + * @return �A�m�e�[�V�������t�^���ꂽ�t�B�[���h�̐錾�� + */ + private FieldDeclaration searchFieldDeclaration(CompilationUnit cu, String annotationName,String... value) { FieldDeclaration[] result = new FieldDeclaration[1]; - final String a = "@"+annotationName; - - descriptor.getDistinationClass().accept(new ASTVisitor() { + + cu.accept(new ASTVisitor() { @Override public boolean visit(FieldDeclaration node) { var modifiers = node.modifiers(); for(var annotation : modifiers) { - String annoName = annotation.toString(); - if(a.equals(annoName)) { - var r = node; - // result[0] = (SourceField)node; - List fragments = node.fragments(); - VariableDeclarationFragment fragment = fragments.get(0); - //IJavaElement fieldElement = fragment.resolveBinding().getJavaElement(); - node.delete(); - System.out.println("Deleted"); + //annotation���A�m�e�[�V��������Ȃ���,���̃��[�v�� + if(!(annotation instanceof Annotation))continue; + String annoName = ((Annotation)annotation).getTypeName().toString(); + if(annotationName.equals(annoName)) { + + //annotation���l�̖����A�m�e�[�V�����������ꍇ + if(annotation instanceof SingleMemberAnnotation) { + result[0] = node; + } + + //annotation���l��1�‚̃A�m�e�[�V�����������ꍇ + if(annotation instanceof MarkerAnnotation) { + + } + //annotation���l�𕡐����ƒA�m�e�[�V�����������ꍇ + if(annotation instanceof NormalAnnotation) { + + } + } } return super.visit(node);