From: Klaus H. <kha...@us...> - 2004-05-30 10:28:11
|
Update of /cvsroot/phpeclipse/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25294/src/net/sourceforge/phpdt/core Modified Files: ICompilationUnit.java IJavaModelStatusConstants.java JavaCore.java IJavaElementDelta.java IOpenable.java IJavaElement.java Added Files: WorkingCopyOwner.java Log Message: 3m9 compatible; removed xerces dependency first version for code folding (only methods;must enable preferences) Index: IJavaElement.java =================================================================== RCS file: /cvsroot/phpeclipse/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/IJavaElement.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** IJavaElement.java 22 Dec 2003 14:12:29 -0000 1.5 --- IJavaElement.java 30 May 2004 10:27:18 -0000 1.6 *************** *** 14,17 **** --- 14,18 ---- import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IPath; + import org.eclipse.core.runtime.jobs.ISchedulingRule; /** *************** *** 246,250 **** */ IPath getPath(); ! /** * Returns the innermost resource enclosing this element. --- 247,262 ---- */ IPath getPath(); ! /** ! * Returns the primary element (whose compilation unit is the primary compilation unit) ! * this working copy element was created from, or this element if it is a descendant of a ! * primary compilation unit or if it is not a descendant of a working copy (e.g. it is a ! * binary member). ! * The returned element may or may not exist. ! * ! * @return the primary element this working copy element was created from, or this ! * element. ! * @since 3.0 ! */ ! IJavaElement getPrimaryElement(); /** * Returns the innermost resource enclosing this element. *************** *** 261,265 **** */ IResource getResource(); ! /** * Returns the smallest underlying resource that contains --- 273,284 ---- */ IResource getResource(); ! /** ! * Returns the scheduling rule associated with this Java element. ! * This is a handle-only method. ! * ! * @return the scheduling rule associated with this Java element ! * @since 3.0 ! */ ! ISchedulingRule getSchedulingRule(); /** * Returns the smallest underlying resource that contains Index: IJavaModelStatusConstants.java =================================================================== RCS file: /cvsroot/phpeclipse/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/IJavaModelStatusConstants.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** IJavaModelStatusConstants.java 9 Aug 2003 17:32:27 -0000 1.3 --- IJavaModelStatusConstants.java 30 May 2004 10:27:17 -0000 1.4 *************** *** 281,283 **** --- 281,289 ---- */ public static final int DISABLED_CP_MULTIPLE_OUTPUT_LOCATIONS = 1003; + + /** + * Status constant indicating that a compiler failure occurred. + * @since 3.0 + */ + public static final int COMPILER_FAILURE = 1005; } Index: JavaCore.java =================================================================== RCS file: /cvsroot/phpeclipse/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/JavaCore.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** JavaCore.java 22 May 2004 15:26:43 -0000 1.6 --- JavaCore.java 30 May 2004 10:27:17 -0000 1.7 *************** *** 27,30 **** --- 27,31 ---- import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceChangeEvent; + import org.eclipse.core.resources.ISavedState; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IWorkspaceRoot; *************** *** 35,40 **** --- 36,46 ---- import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; + import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Plugin; import org.eclipse.core.runtime.Preferences; + import org.eclipse.core.runtime.Status; + import org.eclipse.core.runtime.jobs.Job; + import net.sourceforge.phpdt.internal.core.util.Util; + import org.osgi.framework.BundleContext; public class JavaCore { *************** *** 3614,3618 **** // // retrieve variable values // JavaCore.getPlugin().getPluginPreferences().addPropertyChangeListener(new JavaModelManager.PluginPreferencesListener()); ! //// TODO khartlage temp-del //// manager.loadVariablesAndContainers(); // --- 3620,3624 ---- // // retrieve variable values // JavaCore.getPlugin().getPluginPreferences().addPropertyChangeListener(new JavaModelManager.PluginPreferencesListener()); ! //// TODO : jsurfer temp-del //// manager.loadVariablesAndContainers(); // *************** *** 3779,3781 **** --- 3785,3876 ---- // } //} + /* (non-Javadoc) + * Startup the JavaCore plug-in. + * <p> + * Registers the JavaModelManager as a resource changed listener and save participant. + * Starts the background indexing, and restore saved classpath variable values. + * <p> + * @throws Exception + * @see org.eclipse.core.runtime.Plugin#start(BundleContext) + */ + public static void start(final Plugin plugin, BundleContext context) throws Exception { + // super.start(context); + + final JavaModelManager manager = JavaModelManager.getJavaModelManager(); + try { + manager.configurePluginDebugOptions(); + + // request state folder creation (workaround 19885) + JavaCore.getPlugin().getStateLocation(); + + // retrieve variable values + JavaCore.getPlugin().getPluginPreferences().addPropertyChangeListener(new JavaModelManager.PluginPreferencesListener()); + // manager.loadVariablesAndContainers(); + + final IWorkspace workspace = ResourcesPlugin.getWorkspace(); + workspace.addResourceChangeListener( + manager.deltaState, + IResourceChangeEvent.PRE_BUILD + | IResourceChangeEvent.POST_BUILD + | IResourceChangeEvent.POST_CHANGE + | IResourceChangeEvent.PRE_DELETE + | IResourceChangeEvent.PRE_CLOSE); + + // startIndexing(); + + // process deltas since last activated in indexer thread so that indexes are up-to-date. + // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=38658 + Job processSavedState = new Job(Util.bind("savedState.jobName")) { //$NON-NLS-1$ + protected IStatus run(IProgressMonitor monitor) { + try { + // add save participant and process delta atomically + // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=59937 + workspace.run( + new IWorkspaceRunnable() { + public void run(IProgressMonitor progress) throws CoreException { + // ISavedState savedState = workspace.addSaveParticipant(JavaCore.this, manager); + ISavedState savedState = workspace.addSaveParticipant(plugin, manager); + if (savedState != null) { + // the event type coming from the saved state is always POST_AUTO_BUILD + // force it to be POST_CHANGE so that the delta processor can handle it + manager.deltaState.getDeltaProcessor().overridenEventType = IResourceChangeEvent.POST_CHANGE; + savedState.processResourceChangeEvents(manager.deltaState); + } + } + }, + monitor); + } catch (CoreException e) { + return e.getStatus(); + } + return Status.OK_STATUS; + } + }; + processSavedState.setSystem(true); + processSavedState.setPriority(Job.SHORT); // process asap + processSavedState.schedule(); + } catch (RuntimeException e) { + manager.shutdown(); + throw e; + } + } + /* (non-Javadoc) + * Shutdown the JavaCore plug-in. + * <p> + * De-registers the JavaModelManager as a resource changed listener and save participant. + * <p> + * @see org.eclipse.core.runtime.Plugin#stop(BundleContext) + */ + public static void stop(Plugin plugin, BundleContext context) throws Exception { + try { + plugin.savePluginPreferences(); + IWorkspace workspace = ResourcesPlugin.getWorkspace(); + workspace.removeResourceChangeListener(JavaModelManager.getJavaModelManager().deltaState); + workspace.removeSaveParticipant(plugin); + + JavaModelManager.getJavaModelManager().shutdown(); + } finally { + // ensure we call super.stop as the last thing + // super.stop(context); + } + } } \ No newline at end of file --- NEW FILE: WorkingCopyOwner.java --- /******************************************************************************* * Copyright (c) 2000, 2004 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package net.sourceforge.phpdt.core; import net.sourceforge.phpdt.internal.core.BufferManager; import net.sourceforge.phpdt.internal.core.DefaultWorkingCopyOwner; /** * The owner of an <code>ICompilationUnit</code> handle in working copy mode. * An owner is used to identify a working copy and to create its buffer. * <p> * Clients should subclass this class to instantiate a working copy owner that is specific to their need and that * they can pass in to various APIs (e.g. <code>IType.resolveType(String, WorkingCopyOwner)</code>. * Clients can also override the default implementation of <code>createBuffer(ICompilationUnit)</code>. * </p><p> * Note: even though this class has no abstract method, which means that it provides functional default behvior, * it is still an abstract class, as clients are intended to own their owner implementation. * </p> * @see ICompilationUnit#becomeWorkingCopy(IProblemRequestor, org.eclipse.core.runtime.IProgressMonitor) * @see ICompilationUnit#discardWorkingCopy() * @see ICompilationUnit#getWorkingCopy(org.eclipse.core.runtime.IProgressMonitor) * @since 3.0 */ public abstract class WorkingCopyOwner { /** * Sets the buffer provider of the primary working copy owner. Note that even if the * buffer provider is a working copy owner, only its <code>createBuffer(ICompilationUnit)</code> * method is used by the primary working copy owner. It doesn't replace the internal primary * working owner. * <p> * This method is for internal use by the jdt-related plug-ins. * Clients outside of the jdt should not reference this method. * </p> * * @param primaryBufferProvider the primary buffer provider */ public static void setPrimaryBufferProvider(WorkingCopyOwner primaryBufferProvider) { DefaultWorkingCopyOwner.PRIMARY.primaryBufferProvider = primaryBufferProvider; } /** * Creates a buffer for the given working copy. * The new buffer will be initialized with the contents of the underlying file * if and only if it was not already initialized by the compilation owner (a buffer is * uninitialized if its content is <code>null</code>). * <p> * Note: This buffer will be associated to the working copy for its entire life-cycle. Another * working copy on same unit but owned by a different owner would not share the same buffer * unless its owner decided to implement such a sharing behaviour. * </p> * * @param workingCopy the working copy of the buffer * @return IBuffer the created buffer for the given working copy * @see IBuffer */ public IBuffer createBuffer(ICompilationUnit workingCopy) { return BufferManager.getDefaultBufferManager().createBuffer(workingCopy); } } Index: IOpenable.java =================================================================== RCS file: /cvsroot/phpeclipse/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/IOpenable.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** IOpenable.java 22 Dec 2003 14:12:29 -0000 1.5 --- IOpenable.java 30 May 2004 10:27:18 -0000 1.6 *************** *** 12,15 **** --- 12,16 ---- import org.eclipse.core.runtime.IProgressMonitor; + import net.sourceforge.phpdt.core.JavaModelException; *************** *** 108,111 **** --- 109,128 ---- boolean isOpen(); /** + * Opens this element and all parent elements that are not already open. + * For compilation units, a buffer is opened on the contents of the underlying resource. + * + * <p>Note: although <code>open</code> is exposed in the API, clients are + * not expected to open and close elements - the Java model does this automatically + * as elements are accessed. + * + * @param progress the given progress monitor + * @exception JavaModelException if an error occurs accessing the contents + * of its underlying resource. Reasons include: + * <ul> + * <li>This Java element does not exist (ELEMENT_DOES_NOT_EXIST)</li> + * </ul> + */ + public void open(IProgressMonitor progress) throws JavaModelException; + /** * Makes this element consistent with its underlying resource or buffer * by updating the element's structure and properties as necessary. *************** *** 135,139 **** * </ul> */ ! public void open(IProgressMonitor progress) throws JavaModelException; /** * Saves any changes in this element's buffer to its underlying resource --- 152,156 ---- * </ul> */ ! //public void open(IProgressMonitor progress) throws JavaModelException; /** * Saves any changes in this element's buffer to its underlying resource *************** *** 167,169 **** --- 184,187 ---- */ public void save(IProgressMonitor progress, boolean force) throws JavaModelException; + } Index: IJavaElementDelta.java =================================================================== RCS file: /cvsroot/phpeclipse/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/IJavaElementDelta.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** IJavaElementDelta.java 11 Oct 2003 12:45:27 -0000 1.1 --- IJavaElementDelta.java 30 May 2004 10:27:18 -0000 1.2 *************** *** 238,242 **** */ public int F_ARCHIVE_CONTENT_CHANGED = 0x8000; ! /** * Returns deltas for the children that have been added. --- 238,249 ---- */ public int F_ARCHIVE_CONTENT_CHANGED = 0x8000; ! /** ! * Change flag indicating that a compilation unit has become a primary working copy, or that a ! * primary working copy has reverted to a compilation unit. ! * This flag is only valid if the element is an <code>ICompilationUnit</code>. ! * ! * @since 3.0 ! */ ! public int F_PRIMARY_WORKING_COPY = 0x10000; /** * Returns deltas for the children that have been added. Index: ICompilationUnit.java =================================================================== RCS file: /cvsroot/phpeclipse/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/ICompilationUnit.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ICompilationUnit.java 22 Dec 2003 14:12:29 -0000 1.4 --- ICompilationUnit.java 30 May 2004 10:27:17 -0000 1.5 *************** *** 11,14 **** --- 11,18 ---- package net.sourceforge.phpdt.core; + import org.eclipse.core.runtime.IProgressMonitor; + import net.sourceforge.phpdt.core.IProblemRequestor; + import net.sourceforge.phpdt.core.JavaModelException; + *************** *** 28,31 **** --- 32,117 ---- public interface ICompilationUnit extends IJavaElement, ISourceReference, IParent, IOpenable, IWorkingCopy, ISourceManipulation { //extends IJavaElement, ISourceReference, IParent, IOpenable, IWorkingCopy, ISourceManipulation, ICodeAssist { + + /** + * Constant indicating that a reconcile operation should not return an AST. + * @since 3.0 + */ + public static final int NO_AST = 0; + + /** + * Changes this compilation unit handle into a working copy. A new <code>IBuffer</code> is + * created using this compilation unit handle's owner. Uses the primary owner is none was + * specified when this compilation unit handle was created. + * <p> + * When switching to working copy mode, problems are reported to given + * <code>IProblemRequestor</code>. + * </p> + * <p> + * Once in working copy mode, changes to this compilation unit or its children are done in memory. + * Only the new buffer is affected. Using <code>commitWorkingCopy(boolean, IProgressMonitor)</code> + * will bring the underlying resource in sync with this compilation unit. + * </p> + * <p> + * If this compilation unit was already in working copy mode, an internal counter is incremented and no + * other action is taken on this compilation unit. To bring this compilation unit back into the original mode + * (where it reflects the underlying resource), <code>discardWorkingCopy</code> must be call as many + * times as <code>becomeWorkingCopy</code>. + * </p> + * + * @param problemRequestor a requestor which will get notified of problems detected during + * reconciling as they are discovered. The requestor can be set to <code>null</code> indicating + * that the client is not interested in problems. + * @param monitor a progress monitor used to report progress while opening this compilation unit + * or <code>null</code> if no progress should be reported + * @throws JavaModelException if this compilation unit could not become a working copy. + * @see #discardWorkingCopy() + * @since 3.0 + */ + void becomeWorkingCopy(IProblemRequestor problemRequestor, IProgressMonitor monitor) throws JavaModelException; + /** + * Commits the contents of this working copy to its underlying resource. + * + * <p>It is possible that the contents of the original resource have changed + * since this working copy was created, in which case there is an update conflict. + * The value of the <code>force</code> parameter effects the resolution of + * such a conflict:<ul> + * <li> <code>true</code> - in this case the contents of this working copy are applied to + * the underlying resource even though this working copy was created before + * a subsequent change in the resource</li> + * <li> <code>false</code> - in this case a <code>JavaModelException</code> is thrown</li> + * </ul> + * <p> + * Since 2.1, a working copy can be created on a not-yet existing compilation + * unit. In particular, such a working copy can then be committed in order to create + * the corresponding compilation unit. + * </p> + * @param force a flag to handle the cases when the contents of the original resource have changed + * since this working copy was created + * @param monitor the given progress monitor + * @throws JavaModelException if this working copy could not commit. Reasons include: + * <ul> + * <li> A <code>CoreException</code> occurred while updating an underlying resource + * <li> This element is not a working copy (INVALID_ELEMENT_TYPES) + * <li> A update conflict (described above) (UPDATE_CONFLICT) + * </ul> + * @since 3.0 + */ + void commitWorkingCopy(boolean force, IProgressMonitor monitor) throws JavaModelException; + /** + * Changes this compilation unit in working copy mode back to its original mode. + * <p> + * This has no effect if this compilation unit was not in working copy mode. + * </p> + * <p> + * If <code>becomeWorkingCopy</code> was called several times on this + * compilation unit, <code>discardWorkingCopy</code> must be called as + * many times before it switches back to the original mode. + * </p> + * + * @throws JavaModelException if this working copy could not return in its original mode. + * @see #becomeWorkingCopy(IProblemRequestor, IProgressMonitor) + * @since 3.0 + */ + void discardWorkingCopy() throws JavaModelException; /** * Creates and returns an import declaration in this compilation unit *************** *** 189,192 **** --- 275,291 ---- //IPackageDeclaration[] getPackageDeclarations() throws JavaModelException; /** + * Returns the primary compilation unit (whose owner is the primary owner) + * this working copy was created from, or this compilation unit if this a primary + * compilation unit. + * <p> + * Note that the returned primary compilation unit can be in working copy mode. + * </p> + * + * @return the primary compilation unit this working copy was created from, + * or this compilation unit if it is primary + * @since 3.0 + */ + ICompilationUnit getPrimary(); + /** * Returns the top-level type declared in this compilation unit with the given simple type name. * The type name has to be a valid compilation unit name. |