|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.refactoring.api; import java.util.Collection; import java.util.Iterator; import javax.jmi.reflect.RefObject; import org.netbeans.jmi.javamodel.*; import org.netbeans.modules.javacore.JMManager; import org.netbeans.modules.javacore.internalapi.JavaMetamodel; import org.netbeans.modules.javacore.internalapi.ProgressListener; import org.netbeans.modules.javacore.jmiimpl.javamodel.MethodImpl; import org.netbeans.modules.javacore.jmiimpl.javamodel.ResourceImpl; import org.netbeans.modules.refactoring.NbAbstractRefactoring; import org.netbeans.modules.refactoring.WhereUsedElement; import org.openide.util.NbBundle; /** * * @author Martin Matula */ public class WhereUsedQuery extends NbAbstractRefactoring implements ProgressListener { private RefObject jmiObject; private boolean donePreCheck = false; private boolean baseClass; private boolean overriders; private boolean subclasses; private boolean directOnly; private boolean findUsages=true; /** Creates a new instance of WhereUsedQuery */ public WhereUsedQuery(RefObject jmiObject) { this.jmiObject = jmiObject; } public Problem preCheck() { if (!((jmiObject instanceof Feature) || (jmiObject instanceof Variable) || (jmiObject instanceof JavaPackage) || (jmiObject instanceof TypeParameter)) ) { return new Problem(true, NbBundle.getMessage(WhereUsedQuery.class, "ERR_WhereUsedWrongType")); } donePreCheck = true; return null; } public Problem prepare(Collection elements) { if (!donePreCheck) { Problem result = preCheck(); if (result != null) { return result; } } JavaMetamodel.getManager().getProgressSupport().addProgressListener(this); fireProgressListenerStart(PREPARE, 8); try { long startT = 0, finishT; if (JMManager.PERF_DEBUG) { startT = System.currentTimeMillis(); } if (jmiObject instanceof Method) referencesIterator = ((Method) jmiObject).findDependencies(findUsages, false, overriders).iterator(); else { if (jmiObject instanceof JavaClass && (subclasses || directOnly)) { referencesIterator = ((JavaClass) jmiObject).findSubTypes(!directOnly).iterator(); } else { referencesIterator = ((NamedElement) jmiObject).getReferences().iterator(); } } while (referencesIterator.hasNext()) { Element element = (Element) referencesIterator.next(); if ((element.getResource().getStatus() & ResourceImpl.IS_FROM_CLASSFILE) == 0) { if (cancelRequest) { //cancel return null; } elements.add(new WhereUsedElement(jmiObject, element)); } } if (JMManager.PERF_DEBUG) { finishT = System.currentTimeMillis(); long deltaT = finishT - startT; System.out.print("PERF: Collecting usages of '"); //NOI18N if (jmiObject instanceof NamedElement) { System.out.print(((NamedElement) jmiObject).getName()); } else { System.out.print("unknown"); //NOI18N } System.out.println("' takes " + deltaT + " ms."); //NOI18N } return null; } finally { referencesIterator = null; JavaMetamodel.getManager().getProgressSupport().removeProgressListener(this); fireProgressListenerStop(); } } public Problem checkParametersForMethod(boolean baseClass, boolean overriders, boolean usages) { if (!(usages || overriders)) { return new Problem(true, NbBundle.getMessage(WhereUsedQuery.class, "MSG_NothingToFind")); } else return null; } public Problem setParametersForMethod(boolean baseClass, boolean overriders, boolean usages) { this.baseClass = baseClass; this.overriders = overriders; this.findUsages = usages; if (baseClass) { Collection c = ((MethodImpl) jmiObject).getOverridenMethods(); if (!c.isEmpty()) { jmiObject = (Method) c.iterator().next(); } } return null; } public Problem checkParametersForClass(boolean subclasses, boolean transitively) { return null; } public Problem setParametersForClass(boolean subclasses, boolean directOnly) { this.subclasses = subclasses; this.directOnly = directOnly; return null; } public void start(org.netbeans.modules.javacore.internalapi.ProgressEvent event) { fireProgressListenerStart(event.getOperationType(), event.getCount()); } public void step(org.netbeans.modules.javacore.internalapi.ProgressEvent event) { fireProgressListenerStep(); } public void stop(org.netbeans.modules.javacore.internalapi.ProgressEvent event) { fireProgressListenerStop(); } public void setClassPath() { NbAbstractRefactoring.setClassPath((Element) jmiObject); } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.