Example usage for org.eclipse.jdt.internal.core.util Messages savedState_jobName

List of usage examples for org.eclipse.jdt.internal.core.util Messages savedState_jobName

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.core.util Messages savedState_jobName.

Prototype

String savedState_jobName

To view the source code for org.eclipse.jdt.internal.core.util Messages savedState_jobName.

Click Source Link

Usage

From source file:org.eclipse.jdt.internal.core.JavaModelManager.java

License:Open Source License

public void startup() throws CoreException {
    try {//from   w w w.  j a  va  2s .  c  o  m
        configurePluginDebugOptions();

        // initialize Java model cache
        this.cache = new JavaModelCache();

        // request state folder creation (workaround 19885)
        JavaCore.getPlugin().getStateLocation();

        // Initialize eclipse preferences
        initializePreferences();

        // Listen to preference changes
        this.propertyListener = new IEclipsePreferences.IPreferenceChangeListener() {
            public void preferenceChange(PreferenceChangeEvent event) {
                JavaModelManager.this.optionsCache = null;
            }
        };
        InstanceScope.INSTANCE.getNode(JavaCore.PLUGIN_ID).addPreferenceChangeListener(this.propertyListener);

        // listen for encoding changes (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=255501 )
        this.resourcesPropertyListener = new IEclipsePreferences.IPreferenceChangeListener() {
            public void preferenceChange(PreferenceChangeEvent event) {
                if (ResourcesPlugin.PREF_ENCODING.equals(event.getKey())) {
                    JavaModelManager.this.optionsCache = null;
                }
            }
        };
        String resourcesPluginId = ResourcesPlugin.getPlugin().getBundle().getSymbolicName();
        InstanceScope.INSTANCE.getNode(resourcesPluginId)
                .addPreferenceChangeListener(this.resourcesPropertyListener);

        // Listen to content-type changes
        Platform.getContentTypeManager().addContentTypeChangeListener(this);

        // retrieve variable values
        long start = -1;
        if (VERBOSE)
            start = System.currentTimeMillis();
        loadVariablesAndContainers();
        if (VERBOSE)
            traceVariableAndContainers("Loaded", start); //$NON-NLS-1$

        // listen for resource changes
        this.deltaState.initializeRootsWithPreviousSession();
        final IWorkspace workspace = ResourcesPlugin.getWorkspace();
        workspace.addResourceChangeListener(this.deltaState,
                /* update spec in JavaCore#addPreProcessingResourceChangedListener(...) if adding more event types */
                IResourceChangeEvent.PRE_BUILD | IResourceChangeEvent.POST_BUILD
                        | IResourceChangeEvent.POST_CHANGE | IResourceChangeEvent.PRE_DELETE
                        | IResourceChangeEvent.PRE_CLOSE | IResourceChangeEvent.PRE_REFRESH);

        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(Messages.savedState_jobName) {
            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.PLUGIN_ID,
                                    JavaModelManager.this);
                            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
                                JavaModelManager.this.deltaState
                                        .getDeltaProcessor().overridenEventType = IResourceChangeEvent.POST_CHANGE;
                                savedState.processResourceChangeEvents(JavaModelManager.this.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) {
        shutdown();
        throw e;
    }
}