Example usage for org.eclipse.jdt.core IBuffer getOwner

List of usage examples for org.eclipse.jdt.core IBuffer getOwner

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IBuffer getOwner.

Prototype

public IOpenable getOwner();

Source Link

Document

Returns the Java openable element owning of this buffer.

Usage

From source file:com.codenvy.ide.ext.java.server.internal.core.BufferCache.java

License:Open Source License

/**
 * Returns true if the buffer is successfully closed and
 * removed from the cache, otherwise false.
 *
 * <p>NOTE: this triggers an external removal of this buffer
 * by closing the buffer.//  w ww  .j  a  v  a  2  s.  c o  m
 */
protected boolean close(LRUCacheEntry entry) {
    IBuffer buffer = (IBuffer) entry.value;

    // prevent buffer that have unsaved changes or working copy buffer to be removed
    // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=39311
    if (!((Openable) buffer.getOwner()).canBufferBeRemovedFromCache(buffer)) {
        return false;
    } else {
        ArrayList buffers = (ArrayList) this.buffersToClose.get();
        if (buffers == null) {
            buffers = new ArrayList();
            this.buffersToClose.set(buffers);
        }
        buffers.add(buffer);
        return true;
    }
}

From source file:com.codenvy.ide.ext.java.server.internal.core.BufferManager.java

License:Open Source License

/**
 * Adds a buffer to the table of open buffers.
 *//*w  w  w  .j  av  a  2s . co m*/
protected void addBuffer(IBuffer buffer) {
    if (VERBOSE) {
        String owner = ((Openable) buffer.getOwner()).toStringWithAncestors();
        System.out.println("Adding buffer for " + owner); //$NON-NLS-1$
    }
    synchronized (this.openBuffers) {
        this.openBuffers.put(buffer.getOwner(), buffer);
    }
    // close buffers that were removed from the cache if space was needed
    this.openBuffers.closeBuffers();
    if (VERBOSE) {
        System.out.println("-> Buffer cache filling ratio = "
                + NumberFormat.getInstance().format(this.openBuffers.fillingRatio()) + "%"); //$NON-NLS-1$//$NON-NLS-2$
    }
}

From source file:com.codenvy.ide.ext.java.server.internal.core.BufferManager.java

License:Open Source License

/**
 * Removes a buffer from the table of open buffers.
 *///from w  w w  .  ja v  a  2s.  c om
protected void removeBuffer(IBuffer buffer) {
    if (VERBOSE) {
        String owner = ((Openable) buffer.getOwner()).toStringWithAncestors();
        System.out.println("Removing buffer for " + owner); //$NON-NLS-1$
    }
    synchronized (this.openBuffers) {
        this.openBuffers.remove(buffer.getOwner());
    }
    // close buffers that were removed from the cache (should be only one)
    this.openBuffers.closeBuffers();
    if (VERBOSE) {
        System.out.println("-> Buffer cache filling ratio = " //$NON-NLS-1$
                + NumberFormat.getInstance().format(this.openBuffers.fillingRatio()) + "%"); //$NON-NLS-1$
    }
}

From source file:org.eclipse.che.jdt.internal.core.Openable.java

License:Open Source License

/**
 * @see IOpenable/*from   w  w  w .  java  2s .c  om*/
 */
public boolean hasUnsavedChanges() throws JavaModelException {

    if (isReadOnly() || !isOpen()) {
        return false;
    }
    IBuffer buf = getBuffer();
    if (buf != null && buf.hasUnsavedChanges()) {
        return true;
    }
    // for package fragments, package fragment roots, and projects must check open buffers
    // to see if they have an child with unsaved changes
    int elementType = getElementType();
    if (elementType == PACKAGE_FRAGMENT || elementType == PACKAGE_FRAGMENT_ROOT || elementType == JAVA_PROJECT
            || elementType == JAVA_MODEL) { // fix for 1FWNMHH
        Enumeration openBuffers = getBufferManager().getOpenBuffers();
        while (openBuffers.hasMoreElements()) {
            IBuffer buffer = (IBuffer) openBuffers.nextElement();
            if (buffer.hasUnsavedChanges()) {
                IJavaElement owner = (IJavaElement) buffer.getOwner();
                if (isAncestorOf(owner)) {
                    return true;
                }
            }
        }
    }

    return false;
}