|
What this is
Other links
The source codepackage org.netbeans.modules.java.bridge; /* * 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-2000 Sun * Microsystems, Inc. All Rights Reserved. */ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.lang.ref.*; import java.util.*; import javax.jmi.reflect.InvalidObjectException; import org.netbeans.api.java.classpath.ClassPath; import org.netbeans.modules.javacore.internalapi.JMIElementCookie; import org.openide.src.*; import org.netbeans.api.mdr.events.*; import org.netbeans.jmi.javamodel.CallableFeature; import org.netbeans.jmi.javamodel.Field; import org.netbeans.modules.java.JavaDataObject; import org.openide.nodes.Node; import org.netbeans.jmi.javamodel.Resource; import org.netbeans.jmi.javamodel.JavaPackage; import org.netbeans.jmi.javamodel.JavaPackageClass; import org.netbeans.jmi.javamodel.JavaModelPackage; import org.netbeans.jmi.javamodel.JavaClass; import org.netbeans.jmi.javamodel.Method; import org.netbeans.jmi.javamodel.Parameter; import org.netbeans.jmi.javamodel.ParameterizedType; import org.netbeans.modules.javacore.internalapi.JavaMetamodel; import org.netbeans.modules.javacore.jmiimpl.javamodel.ResourceImpl; import org.netbeans.spi.java.classpath.support.ClassPathSupport; import org.openide.filesystems.FileObject; public class SourceElementImpl extends ElementImpl implements SourceElement.Impl, ElementOrder, PropertyChangeListener { private transient FeaturesCollection members; transient TopClassesCollection topClasses; transient ImportsCollection imports; private ElementImpl.ElementListener classesListener, sourceListener, importsListener; private IdentContextSupport identSupp; private transient Resource resource; private transient JavaDataObject javaObject; private static final long serialVersionUID = 8506642610861188475L; // init ..................................................................... public SourceElementImpl(DefaultLangModel model, Resource resource, JavaDataObject jdo) { super(model, resource); this.resource = resource; javaObject = jdo; identSupp = new IdentContextSupport(11); members = new FeaturesCollection (this); topClasses = new TopClassesCollection (members, resource, this); imports = new ImportsCollection (members, (Resource) resource); } public void connectListener () { sourceListener = new SourceListener (this); sourceListener.connect (); classesListener = new TopClassesCollection.TopClassesListener (this); classesListener.connect (); org.netbeans.modules.javacore.jmiimpl.javamodel.ResourceImpl resImpl = (org.netbeans.modules.javacore.jmiimpl.javamodel.ResourceImpl) resource; if (resImpl.importsInited()) { importsListener = new ImportsCollection.ImportsListener (this); importsListener.connect (); } else { resImpl.addImportsListener(this); } } boolean isResourceValid() { try { resource.refImmediateComposite(); return true; } catch (InvalidObjectException e) { } return false; } // a hack - listens on imports initialization fired by ResourceImpl public void propertyChange (PropertyChangeEvent event) { importsListener = new ImportsCollection.ImportsListener (this); importsListener.connect (); } protected void notifyElementCreated() { // do nothing -- override ElementImpl's behaviour. } protected void createFromModel(Element model) throws SourceException { } public Element[] getElements() { return getClasses(); } public Identifier getPackage() { repository.beginTrans(false); try { setClassPath(); String javaPackage = resource.getPackageName(); return javaPackage != null ? Identifier.create(javaPackage) : null; } catch (InvalidObjectException e) { return null; } finally { repository.endTrans(false); } } public Import[] getImports() { return imports.getImports (); } public ImportElement[] getImportElements() { return (ImportElement[]) imports.getElements (); } public ClassElement getClass(Identifier id) { return topClasses.getClass (id); } public ClassElement[] getClasses() { return topClasses.getClasses(); } public ClassElement[] getAllClasses() { ClassElement[] tops = getClasses(); Collection list = new LinkedList(); for (int i = 0; i < tops.length; i++) { addAllClasses(tops[i], list); } return (ClassElement[])list.toArray(new ClassElement [0]); } private void addAllClasses(ClassElement c, Collection col) { col.add(c); ClassElement[] inner = c.getClasses(); for (int i = 0; i < inner.length; i++) addAllClasses(inner[i], col); } // Setters/changers /////////////////////////////////////////////////////////////////////////////////// public void setPackage(Identifier packageID) throws SourceException { checkWritable(); checkDocument(); boolean failed = true; repository.beginTrans (true); try { setClassPath(); Identifier old = getPackage (); if (old == packageID || (old != null && packageID != null && old.getSourceName().equals(packageID.getSourceName()))) { failed = false; checkIsValid (); return; } PropertyChangeEvent evt; JavaPackageClass pkgProxy = ((JavaModelPackage)resource.refImmediatePackage()).getJavaPackage(); String packId=packageID!=null?packageID.getFullName():""; JavaClass defClasses[]; int i; evt = new PropertyChangeEvent(getEventSource(), PROP_PACKAGE, old, packageID); checkVetoablePropertyChange(evt); resource.setPackageName(packId); /* List defClassesList = new LinkedList(); Iterator iter = resource.getClassifiers().iterator (); while(iter.hasNext()) { Object obj = iter.next(); if (obj instanceof JavaClass) { defClassesList.add(obj); } } JavaClass[] defClasses=new JavaClass[defClassesList.size()]; defClassesList.toArray(defClasses); for (i=0;i |
... 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.