|
Eclipse JDT 2.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Common protocol for Java elements that support working copies.
A working copy of a Java element acts just like a regular element (handle), except it is not attached to an underlying resource. A working copy is not visible to the rest of the Java model. Changes in a working copy's buffer are not realized in a resource. To bring the Java model up-to-date with a working copy's contents, an explicit commit must be performed on the working copy. Other operations performed on a working copy update the contents of the working copy's buffer but do not commit the contents of the working copy.
Note: The contents of a working copy is determined when a working
copy is created, based on the current content of the element the working
copy is created from. If a working copy is an IOpenable
and is explicitly
closed, the working copy's buffer will be thrown away. However, clients should not
explicitly open and close working copies.
The client that creates a working copy is responsible for
destroying the working copy. The Java model will never automatically
destroy or close a working copy. (Note that destroying a working copy
does not commit it to the model, it only frees up the memory occupied by
the element). After a working copy is destroyed, the working copy cannot
be accessed again. Non-handle methods will throw a
JavaModelException
indicating the Java element does not exist.
A working copy cannot be created from another working copy.
Calling getWorkingCopy
on a working copy returns the receiver.
This interface is not intended to be implemented by clients.
Method Summary | |
void |
commit(boolean force,
IProgressMonitor monitor)
Commits the contents of this working copy to its original element and underlying resource, bringing the Java model up-to-date with the current contents of the working copy. |
void |
destroy()
Destroys this working copy, closing its buffer and discarding its structure. |
IJavaElement[] |
findElements(IJavaElement element)
Finds the elements in this compilation unit that correspond to the given element. |
IType |
findPrimaryType()
Finds the primary type of this compilation unit (i.e. the type with the same name as the compilation unit), or null if no such a type exists. |
IJavaElement |
findSharedWorkingCopy(IBufferFactory bufferFactory)
Finds the shared working copy for this element, given a IBuffer factory. |
IJavaElement |
getOriginal(IJavaElement workingCopyElement)
Returns the original element the specified working copy element was created from, or null if this is not a working copy element. |
IJavaElement |
getOriginalElement()
Returns the original element this working copy was created from, or null if this is not a working copy. |
IJavaElement |
getSharedWorkingCopy(IProgressMonitor monitor,
IBufferFactory factory,
IProblemRequestor problemRequestor)
Returns a shared working copy on this element using the given factory to create the buffer, or this element if this element is already a working copy. |
IJavaElement |
getWorkingCopy()
Returns a new working copy of this element if this element is not a working copy, or this element if this element is already a working copy. |
IJavaElement |
getWorkingCopy(IProgressMonitor monitor,
IBufferFactory factory,
IProblemRequestor problemRequestor)
Returns a new working copy of this element using the given factory to create the buffer, or this element if this element is already a working copy. |
boolean |
isBasedOn(IResource resource)
Returns whether this working copy's original element's content has not changed since the inception of this working copy. |
boolean |
isWorkingCopy()
Returns whether this element is a working copy. |
IMarker[] |
reconcile()
Reconciles the contents of this working copy. |
void |
reconcile(boolean forceProblemDetection,
IProgressMonitor monitor)
Reconciles the contents of this working copy. |
void |
restore()
Restores the contents of this working copy to the current contents of this working copy's original element. |
Method Detail |
public void commit(boolean force, IProgressMonitor monitor) throws JavaModelException
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 force
parameter effects the resolution of
such a conflict:
true
- 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 resourcefalse
- in this case a JavaModelException
is thrown
force
- a flag to handle the cases when the contents of the original resource have changed
since this working copy was createdmonitor
- the given progress monitor
JavaModelException
- if this working copy could not commit. Reasons include:
CoreException
occurred while updating an underlying resource
public void destroy()
IJavaModelException
s. Has
no effect if this element is not a working copy.
If this working copy is shared, it is destroyed only when the number of calls to
destroy()
is the same as the number of calls to
getSharedWorkingCopy(IProgressMonitor, IBufferFactory)
.
A REMOVED IJavaElementDelta is then reported on this working copy.
public IJavaElement findSharedWorkingCopy(IBufferFactory bufferFactory)
IBuffer
factory.
If no working copy has been created for this element associated with this
buffer factory, returns null
.
Users of this method must not destroy the resulting working copy.
bufferFactory
- the given IBuffer
factory
null
if noneIBufferFactory
public IJavaElement getOriginal(IJavaElement workingCopyElement)
null
if this is not a working copy element. This is a handle
only method, the returned element may or may not exist.
null
if this is not a working copy elementpublic IJavaElement getOriginalElement()
null
if this is not a working copy.
null
if this is not a working copypublic IJavaElement[] findElements(IJavaElement element)
null
if no such java elements can be found
or if the given element is not included in a compilation unit.
element
- the given element
public IType findPrimaryType()
null
if no such a type exists.
null
if no such a type existspublic IJavaElement getSharedWorkingCopy(IProgressMonitor monitor, IBufferFactory factory, IProblemRequestor problemRequestor) throws JavaModelException
Object#equals
).
The life time of a shared working copy is as follows:
getSharedWorkingCopy(...)
creates a new working copy for this
elementdestroy()
decrements the internal counter.Note that the buffer factory will be used for the life time of this working copy, i.e. if the working copy is closed then reopened, this factory will be used. The buffer will be automatically initialized with the original's compilation unit content upon creation.
When the shared working copy instance is created, an ADDED IJavaElementDelta is reported on this working copy.
monitor
- a progress monitor used to report progress while opening this compilation unit
or null
if no progress should be reportedfactory
- the factory that creates a buffer that is used to get the content of the working copy
or null
if the internal factory should be usedproblemRequestor
- a requestor which will get notified of problems detected during
reconciling as they are discovered. The requestor can be set to null
indicating
that the client is not interested in problems.
JavaModelException
- if the contents of this element can
not be determined. Reasons include:
IBufferFactory
,
IProblemRequestor
public IJavaElement getWorkingCopy() throws JavaModelException
#getSharedWorkingCopy
should be used instead.
JavaModelException
- if the contents of this element can
not be determined. Reasons include:
public IJavaElement getWorkingCopy(IProgressMonitor monitor, IBufferFactory factory, IProblemRequestor problemRequestor) throws JavaModelException
#getSharedWorkingCopy
should be used instead.
monitor
- a progress monitor used to report progress while opening this compilation unit
or null
if no progress should be reportedfactory
- the factory that creates a buffer that is used to get the content of the working copy
or null
if the internal factory should be usedproblemRequestor
- a requestor which will get notified of problems detected during
reconciling as they are discovered. The requestor can be set to null
indicating
that the client is not interested in problems.
JavaModelException
- if the contents of this element can
not be determined. Reasons include:
public boolean isBasedOn(IResource resource)
public boolean isWorkingCopy()
public IMarker[] reconcile() throws JavaModelException
If the working copy hasn't changed, then no problem will be detected,
this is equivalent to IWorkingCopy#reconcile(false, null)
.
Compilation problems found in the new contents are notified through the
IProblemRequestor
interface which was passed at
creation, and no longer as transient markers. Therefore this API will
return null
.
Note: It has been assumed that added inner types should not generate change deltas. The implementation has been modified to reflect this assumption.
null
JavaModelException
- if the contents of the original element
cannot be accessed. Reasons include:
public void reconcile(boolean forceProblemDetection, IProgressMonitor monitor) throws JavaModelException
The boolean argument allows to force problem detection even if the working copy is already consistent.
Compilation problems found in the new contents are notified through the
IProblemRequestor
interface which was passed at
creation, and no longer as transient markers. Therefore this API answers
nothing.
Note: It has been assumed that added inner types should not generate change deltas. The implementation has been modified to reflect this assumption.
forceProblemDetection
- boolean indicating whether problem should be recomputed
even if the source hasn't changed.monitor
- a progress monitor
JavaModelException
- if the contents of the original element
cannot be accessed. Reasons include:
public void restore() throws JavaModelException
Note: This is the inverse of committing the content of the
working copy to the original element with commit(boolean, IProgressMonitor)
.
JavaModelException
- if the contents of the original element
cannot be accessed. Reasons include:
|
Eclipse JDT 2.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |