package org.eclipse.core.internal.filebuffers;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.BadPartitioningException;
import org.eclipse.jface.text.BadPositionCategoryException;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.DocumentRewriteSession;
import org.eclipse.jface.text.DocumentRewriteSessionType;
import org.eclipse.jface.text.IDocumentExtension4;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ISynchronizable;
import org.eclipse.jface.text.ITypedRegion;
import org.eclipse.jface.text.Position;
public class SynchronizableDocument extends Document implements ISynchronizable {
private Object fLockObject;
@Override
public synchronized void setLockObject(Object lockObject) {
fLockObject= lockObject;
}
@Override
public synchronized Object getLockObject() {
return fLockObject;
}
@Deprecated
@Override
public void startSequentialRewrite(boolean normalized) {
Object lockObject= getLockObject();
if (lockObject == null) {
super.startSequentialRewrite(normalized);
return;
}
synchronized (lockObject) {
super.startSequentialRewrite(normalized);
}
}
@Deprecated
@Override
public void stopSequentialRewrite() {
Object lockObject= getLockObject();
if (lockObject == null) {
super.stopSequentialRewrite();
return;
}
synchronized (lockObject) {
super.stopSequentialRewrite();
}
}
@Override
public DocumentRewriteSession startRewriteSession(DocumentRewriteSessionType sessionType) {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.startRewriteSession(sessionType);
}
synchronized (lockObject) {
return super.startRewriteSession(sessionType);
}
}
@Override
public void stopRewriteSession(DocumentRewriteSession session) {
Object lockObject= getLockObject();
if (lockObject == null) {
super.stopRewriteSession(session);
return;
}
synchronized (lockObject) {
super.stopRewriteSession(session);
}
}
@Override
public String get() {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.get();
}
synchronized (lockObject) {
return super.get();
}
}
@Override
public String get(int offset, int length) throws BadLocationException {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.get(offset, length);
}
synchronized (lockObject) {
return super.get(offset, length);
}
}
@Override
public char getChar(int offset) throws BadLocationException {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.getChar(offset);
}
synchronized (lockObject) {
return super.getChar(offset);
}
}
@Override
public long getModificationStamp() {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.getModificationStamp();
}
synchronized (lockObject) {
return super.getModificationStamp();
}
}
@Override
public void replace(int offset, int length, String text) throws BadLocationException {
Object lockObject= getLockObject();
if (lockObject == null) {
super.replace(offset, length, text);
return;
}
synchronized (lockObject) {
super.replace(offset, length, text);
}
}
@Override
public void replace(int offset, int length, String text, long modificationStamp) throws BadLocationException {
Object lockObject= getLockObject();
if (lockObject == null) {
super.replace(offset, length, text, modificationStamp);
return;
}
synchronized (lockObject) {
super.replace(offset, length, text, modificationStamp);
}
}
@Override
public void set(String text) {
Object lockObject= getLockObject();
if (lockObject == null) {
super.set(text);
return;
}
synchronized (lockObject) {
super.set(text);
}
}
@Override
public void set(String text, long modificationStamp) {
Object lockObject= getLockObject();
if (lockObject == null) {
super.set(text, modificationStamp);
return;
}
synchronized (lockObject) {
super.set(text, modificationStamp);
}
}
@Override
public void addPosition(String category, Position position) throws BadLocationException, BadPositionCategoryException {
Object lockObject= getLockObject();
if (lockObject == null) {
super.addPosition(category, position);
return;
}
synchronized (lockObject) {
super.addPosition(category, position);
}
}
@Override
public void removePosition(String category, Position position) throws BadPositionCategoryException {
Object lockObject= getLockObject();
if (lockObject == null) {
super.removePosition(category, position);
return;
}
synchronized (lockObject) {
super.removePosition(category, position);
}
}
@Override
public Position[] getPositions(String category) throws BadPositionCategoryException {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.getPositions(category);
}
synchronized (lockObject) {
return super.getPositions(category);
}
}
@Override
public Position[] getPositions(String category, int offset, int length, boolean canStartBefore, boolean canEndAfter) throws BadPositionCategoryException {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.getPositions(category, offset, length, canStartBefore, canEndAfter);
}
synchronized (lockObject) {
return super.getPositions(category, offset, length, canStartBefore, canEndAfter);
}
}
@Override
public ITypedRegion[] computePartitioning(String partitioning, int offset, int length, boolean includeZeroLengthPartitions) throws BadLocationException, BadPartitioningException {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.computePartitioning(partitioning, offset, length, includeZeroLengthPartitions);
}
synchronized (lockObject) {
return super.computePartitioning(partitioning, offset, length, includeZeroLengthPartitions);
}
}
@Override
public String getLineDelimiter(int line) throws BadLocationException {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.getLineDelimiter(line);
}
synchronized (lockObject) {
return super.getLineDelimiter(line);
}
}
@Override
public String getDefaultLineDelimiter() {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.getDefaultLineDelimiter();
}
synchronized (lockObject) {
return super.getDefaultLineDelimiter();
}
}
@Override
public IRegion getLineInformation(int line) throws BadLocationException {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.getLineInformation(line);
}
synchronized (lockObject) {
return super.getLineInformation(line);
}
}
@Override
public IRegion getLineInformationOfOffset(int offset) throws BadLocationException {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.getLineInformationOfOffset(offset);
}
synchronized (lockObject) {
return super.getLineInformationOfOffset(offset);
}
}
@Override
public int getLineLength(int line) throws BadLocationException {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.getLineLength(line);
}
synchronized (lockObject) {
return super.getLineLength(line);
}
}
@Override
public int getLineOffset(int line) throws BadLocationException {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.getLineOffset(line);
}
synchronized (lockObject) {
return super.getLineOffset(line);
}
}
@Override
public int getLineOfOffset(int pos) throws BadLocationException {
Object lockObject= getLockObject();
if (lockObject == null) {
return super.getLineOfOffset(pos);
}
synchronized (lockObject) {
return super.getLineOfOffset(pos);
}
}
}