public abstract class SandboxedRepository
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
class |
SandboxedRepository.MainlineCertifier
A proxy that creates and returns a new certified label that represents the
current state of the repository mainline.
|
Modifier | Constructor and Description |
---|---|
protected |
SandboxedRepository()
Constructs an instance of
SandboxedRepository . |
protected |
SandboxedRepository(java.lang.String name)
Constructs an instance of
SandboxedRepository with a name. |
Modifier and Type | Method and Description |
---|---|
java.lang.String |
branch(Sandbox sandbox,
SandboxArchive archive)
Creates the branch from an archive for a given sandbox.
|
abstract java.lang.String |
branch(Sandbox sandbox,
java.lang.String sourceBaseline)
Branches the objects for a sandbox so that future modifications to the
sandbox will not affect the original repository.
|
abstract void |
destroy(Sandbox sandbox)
Destroys a sandbox.
|
boolean |
equals(java.lang.Object o) |
static java.util.List<java.lang.String> |
getAvailableProviders(java.lang.Class referenceClass)
Returns the list of IDs of all available repositories.
|
static java.util.List<java.lang.String> |
getAvailableProviders(java.lang.ClassLoader loader)
Returns the list of IDs of all available repositories.
|
protected java.lang.String |
getBranchId(Sandbox sandbox)
Gets the ID of the branch of this repository for a sandbox.
|
abstract ChangeSet |
getChanges(Sandbox sandbox)
Gets the changes made in a sandbox.
|
java.lang.String |
getId()
Gets the ID of this repository.
|
static SandboxedRepository |
getInstance(java.lang.String reposClassName,
java.lang.Class referenceClass)
Returns a provider of this class.
|
static SandboxedRepository |
getInstance(java.lang.String reposClassName,
java.lang.ClassLoader loader)
Returns a provider of this class.
|
java.util.Date |
getLastUpdateDate(Sandbox sandbox)
Returns the date of the last update to this repository in a sandbox.
|
java.lang.String |
getLastUpdatedBy(Sandbox sandbox)
Returns the user who performed last update to this repository in a sandbox.
|
SandboxedRepository.MainlineCertifier |
getMainlineCertifier()
Returns the proxy that creates and returns a new certified label that
represents the current state of the repository mainline.
|
java.lang.String |
getName()
Gets the name of this repository.
|
SandboxTransaction |
getPendingTransaction(Sandbox sandbox,
java.lang.String transId)
Gets the pending transaction of a sandbox operation.
|
protected SandboxState |
getState(Sandbox sandbox)
Returns the current state of this repository in a sandbox.
|
boolean |
hasChanges(Sandbox sandbox)
Returns
true if there are changes in the sandbox. |
int |
hashCode() |
boolean |
isRefreshNeeded(Sandbox sandbox)
Returns
true if this repository needs to be refreshed because
a new certified label from mainline is available after branching or the
last refresh. |
java.lang.String |
newCertifiedLabel(java.lang.String justification)
Deprecated.
use
getMainlineCertifier() instead. This method is
problematic because it is not possible to check whether or not
a repository supports mainline certification unless after
calling this method. |
void |
prepareForRefresh(Sandbox sandbox,
java.lang.String targetBaseline)
Invoked prior to
refresh . |
java.lang.String |
prePublish(Sandbox sandbox)
Invoked prior to
publish(Sandbox) for the repository to
prepare for the upcoming publishing operation. |
abstract UndoableChanges |
publish(Sandbox sandbox)
Merges changes in a sandbox into the repository mainline.
|
UndoableChanges |
publish(Sandbox sandbox,
SandboxArchive archive)
Merges the contents in a sandbox from an archive into the repository
mainline.
|
java.lang.String[] |
publishCompleted(Sandbox sandbox,
boolean isChanged,
java.lang.String mainlineLabel)
Invoked immediately after the sandbox as a whole is published successfully.
|
abstract UndoableChanges |
refresh(Sandbox sandbox,
java.lang.String targetBaseline)
Merges changes from a repository baseline into the sandbox.
|
java.lang.String[] |
refreshCompleted(Sandbox sandbox,
boolean isChanged,
java.lang.String branchId)
Invoked immediately after the sandbox as a whole is refreshed successfully.
|
void |
setProgress(Sandbox sandbox,
int percentage)
Reports the progress of the current ongoing operation.
|
protected TestResult |
test(Sandbox sandbox,
TestListener listener)
Tests the changes in the current user sandbox.
|
TestResult |
test(TestListener listener)
Tests the changes in the current sandbox.
|
java.lang.String |
toString() |
void |
warn(Sandbox sandbox,
java.lang.String message,
java.lang.Throwable cause)
Sends a warning to the listeners of a sandbox.
|
protected SandboxedRepository()
SandboxedRepository
.protected SandboxedRepository(java.lang.String name)
SandboxedRepository
with a name.name
- the name of the repositoryjava.lang.IllegalArgumentException
- if the given name is nullpublic final java.lang.String getId()
public final java.lang.String getName()
protected final java.lang.String getBranchId(Sandbox sandbox)
sandbox
- the sandboxprotected final SandboxState getState(Sandbox sandbox)
sandbox
- the sandbox that contains the repositorypublic final void setProgress(Sandbox sandbox, int percentage)
sandbox
- the sandboxpercentage
- the progress percentage, which is an integer from 0
(inclusive) to 100 (inclusive). 100 indicates the
operation is done.java.lang.IllegalArgumentException
- if the given sandbox is nullpublic final void warn(Sandbox sandbox, java.lang.String message, java.lang.Throwable cause)
sandbox
- the sandboxmessage
- the warning messagecause
- the cause if anypublic abstract java.lang.String branch(Sandbox sandbox, java.lang.String sourceBaseline) throws SandboxException
sandbox
- the sandboxsourceBaseline
- the baseline which the sandbox is based on. The
baseline is usually the latest certified baselineSandboxException
- if an error occursrefresh(oracle.adf.share.sandbox.Sandbox, String)
public java.lang.String branch(Sandbox sandbox, SandboxArchive archive) throws SandboxException
branch(Sandbox, String)
and
pass in null
as the source baseline label.sandbox
- the sandboxarchive
- the archive that contains the sandbox contentsSandboxException
public java.util.Date getLastUpdateDate(Sandbox sandbox)
sandbox
- the sandbox that contains this repositorynull
if such information is unavailablepublic java.lang.String getLastUpdatedBy(Sandbox sandbox)
sandbox
- the sandbox that contains this repositorynull
if such information is unavailablepublic boolean isRefreshNeeded(Sandbox sandbox)
true
if this repository needs to be refreshed because
a new certified label from mainline is available after branching or the
last refresh. The default implementation checks if the baseline of the
sandbox is the same as the latest baseline on record; if not, returns
true.sandbox
- the sandboxtrue
if this repository needs to be refreshedpublic void prepareForRefresh(Sandbox sandbox, java.lang.String targetBaseline) throws SandboxException
refresh
.sandbox
- the sandbox to be refreshedtargetBaseline
- the target baseline; null
if the target
baseline whould be the tip of the mainlineSandboxException
- if an error occurspublic abstract UndoableChanges refresh(Sandbox sandbox, java.lang.String targetBaseline) throws MergeConflictsException, SandboxException
sandbox
- the sandboxtargetBaseline
- the target baseline; null
if the target
baseline should be the tip of the mainlinenull
if there is no changeMergeConflictsException
- if any conflict occurs during the mergeSandboxException
- if an error occurspublic java.lang.String[] refreshCompleted(Sandbox sandbox, boolean isChanged, java.lang.String branchId)
sandbox
- the sandbox that has just been refreshedisChanged
- true
if this repository has been changed
during the last refresh
callbranchId
- the current branch IDnull
indicates that the branch ID must
remain unchanged.public java.lang.String prePublish(Sandbox sandbox)
publish(Sandbox)
for the repository to
prepare for the upcoming publishing operation. A rollback label may be
returned if the runtime should read from this label instead of the latest
certified label during publishing.sandbox
- the sandbox to be publishednull
if the runtime should continue to read from the
latest certified labelpublic abstract UndoableChanges publish(Sandbox sandbox) throws MergeConflictsException, SandboxException
sandbox
- the sandboxnull
if there is no changeMergeConflictsException
- if any conflict occurs during the mergeSandboxException
- if an error occurspublic UndoableChanges publish(Sandbox sandbox, SandboxArchive archive) throws MergeConflictsException, SandboxException
publish(Sandbox)
.sandbox
- the sandbox that contains the contents from the archivearchive
- the archive that provides the contents of the sandboxnull
if there is no
contentsMergeConflictsException
- if any conflict occurs during the mergeSandboxException
- if an error occurspublic java.lang.String[] publishCompleted(Sandbox sandbox, boolean isChanged, java.lang.String mainlineLabel)
sandbox
- the sandbox that has just been publishedisChanged
- true
if this repository has been changed
during the last publish
callmainlineLabel
- the mainline label returned by the previous
commit()
of publish
if
isChanged
is true
;
otherwise this argument is irrelevant and undefinednull
indicates that the mainline
label must remain unchanged.public abstract ChangeSet getChanges(Sandbox sandbox)
sandbox
- the sandboxnull
if no changes have been made or if
the sandbox has been publishedpublic boolean hasChanges(Sandbox sandbox)
true
if there are changes in the sandbox. By default
this method calls getChanges
and checks if the returned
ChangeSet
is null or empty. It is recommended that
subclasses override this method to improve performance especially if the
implementation of getChanges
does not iterate lazily.sandbox
- the sandbox to be inspectedtrue
if there are changes in the sandboxgetChanges(oracle.adf.share.sandbox.Sandbox)
public abstract void destroy(Sandbox sandbox) throws SandboxException
sandbox
- the sandboxSandboxException
- if an error occurspublic SandboxTransaction getPendingTransaction(Sandbox sandbox, java.lang.String transId)
sandbox
- the sandbox that resulted in the pending transactiontransId
- the transaction IDnull
if such transaction
does not exist@Deprecated public java.lang.String newCertifiedLabel(java.lang.String justification)
getMainlineCertifier()
instead. This method is
problematic because it is not possible to check whether or not
a repository supports mainline certification unless after
calling this method.null
if the baselines of this repository are based on
timestamps.justification
- a very short description explaining why a new
certified label is requested; null
if
such description is unavailablenull
java.lang.UnsupportedOperationException
- if this repository does not
support creation of a new baseline without a sandboxpublic SandboxedRepository.MainlineCertifier getMainlineCertifier()
java.lang.UnsupportedOperationException
- if this repository does not
support creation of a new baseline without a sandboxpublic final TestResult test(TestListener listener)
Sandbox.getUserSandbox()
.listener
- the listener to monitor the test executionjava.lang.IllegalArgumentException
- if the listener is nulljava.lang.IllegalStateException
- if the current user is not associated with
a sandboxjava.lang.UnsupportedOperationException
- if testing is not supportedprotected TestResult test(Sandbox sandbox, TestListener listener)
sandbox
- the current user sandboxlistener
- the listener to monitor the test executionnull
if testing is not supportedpublic java.lang.String toString()
toString
in class java.lang.Object
public static final SandboxedRepository getInstance(java.lang.String reposClassName, java.lang.ClassLoader loader)
reposClassName
- the fully qualified name of the provider classloader
- the class loader to be used to load the repository class,
or null
if the system class loader (or,
failing that, the bootstrap class loader) is to be usedjava.lang.IllegalArgumentException
- if the provider is not found or an
error occurs while loading the providerpublic static final SandboxedRepository getInstance(java.lang.String reposClassName, java.lang.Class referenceClass)
reposClassName
- the fully qualified name of the provider classreferenceClass
- a class whose class loader is the fallback loaderjava.lang.IllegalArgumentException
- if the provider is not found or an
error occurs while loading the providerpublic static final java.util.List<java.lang.String> getAvailableProviders(java.lang.ClassLoader loader)
loader
- the class loader to be used to load the repository class,
or null
if the system class loader (or,
failing that, the bootstrap class loader) is to be usedpublic static final java.util.List<java.lang.String> getAvailableProviders(java.lang.Class referenceClass)
referenceClass
- a class whose class loader is the fallback loaderpublic boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object