wt.sandbox
Class SandboxConfigSpec

java.lang.Object
  extended bywt.sandbox.SandboxConfigSpec
All Implemented Interfaces:
ConfigSpec, Evolvable, Externalizable, Serializable

public class SandboxConfigSpec
extends Object
implements ConfigSpec, Evolvable, Externalizable

A ConfigSpec implementation with the essentially the following logic. [The implementation is more complex than this and leverages various constraints placed on sandbox baselines and versions.]



Supported API: false

Extendable: false

See Also:
Serialized Form

Field Summary
private static String CLASSNAME
           
private  ObjectReference epmCheckpointRef
           
static long EXTERNALIZATION_VERSION_UID
           
private  boolean includePersonalCheckouts
           
protected static long OLD_FORMAT_VERSION_UID
           
private  WTPrincipalReference principal
           
private static String RESOURCE
           
private  WTContainerRef sandboxContainer
           
(package private) static long serialVersionUID
           
private  ConfigSpec userConfigSpec
           
private  boolean useSandboxBaseline
           
 
Constructor Summary
SandboxConfigSpec()
          Default constructor.
 
Method Summary
private  QuerySpec appendSandboxConfigSpecCriteria(QuerySpec querySpec, String subSelectAliasPrefix, boolean appendAndWhenPrevConditions, boolean simplifyCriteria, boolean cloneQuerySpec)
           
 QuerySpec appendSearchCriteria(QuerySpec querySpec)
          Appends to the supplied QuerySpec additional search criteria to reduce the resulting iterations to only those that will be considered by this ConfigSpec.
private  QuerySpec appendUserAndSandboxConfigSpecCriteria(QuerySpec querySpec)
           
private  void epmCheckpointRefValidate(ObjectReference a_EpmCheckpointRef)
           
 ObjectReference getEpmCheckpointRef()
          Gets the value of the attribute: epmCheckpointRef; If this attribute is non-null and includePersonalCheckouts is true, then the config spec will use the it as a filter to determine whether to return the personal checkout working copy or the original for each master.
 WTPrincipalReference getPrincipal()
          Gets the value of the attribute: principal; A reference to the principal for whom the configuration is to be evaluated.
private  WTPrincipalReference getPrincipal(boolean useSessionUserOnNull)
           
 WTContainerRef getSandboxContainer()
          Gets the value of the attribute: sandboxContainer; A reference to the sandbox container.
 ConfigSpec getUserConfigSpec()
          Gets the value of the attribute: userConfigSpec; A ConfigSpec via which iterations will be selected when neither the sandbox nor its baseline contains an appropriate iteration.
 boolean isIncludePersonalCheckouts()
          Gets the value of the attribute: includePersonalCheckouts; Whether the results should include iterations checked out (i.e., WIP working copies) to 'principal' or not.
 boolean isUseSandboxBaseline()
          Gets the value of the attribute: useSandboxBaseline; Whether the sandbox container's baseline should be considered or not.
static SandboxConfigSpec newSandboxConfigSpec(WTContainerRef sandboxContainer)
          Creates a SandboxConfigSpec setting 'useSandboxBaseline' as true, 'includePersonalCheckouts' as false, and 'principal' and 'userConfigSpec' as null.
static SandboxConfigSpec newSandboxConfigSpec(WTContainerRef sandboxContainer, boolean useSandboxBaseline, boolean includePersonalCheckouts, WTPrincipalReference principal)
          Creates a SandboxConfigSpec leaving 'userConfigSpec' unspecified/null.
static SandboxConfigSpec newSandboxConfigSpec(WTContainerRef sandboxContainer, boolean useSandboxBaseline, boolean includePersonalCheckouts, WTPrincipalReference principal, ConfigSpec userConfigSpec)
          A ConfigSpec via which iterations will be selected when neither the sandbox nor its baseline contains an appropriate iteration.
private  void principalValidate(WTPrincipalReference a_Principal)
           
 QueryResult process(QueryResult results)
          Process the QueryResult of iterations, returning only those that "match" according to the algorithm.
private  QueryResult processMixedConfigSpecResults(QueryResult results)
           
 void readExternal(ObjectInput input)
          Reads the non-transient fields of this class from an external source.
private  boolean readOldVersion(ObjectInput input, long readSerialVersionUID, boolean passThrough, boolean superDone)
          Reads the non-transient fields of this class from an external source, which is not the current version.
protected  boolean readVersion(SandboxConfigSpec thisObject, ObjectInput input, long readSerialVersionUID, boolean passThrough, boolean superDone)
          Reads the non-transient fields of this class from an external source.
private  void sandboxContainerValidate(WTContainerRef a_SandboxContainer)
           
 void setEpmCheckpointRef(ObjectReference a_EpmCheckpointRef)
          Sets the value of the attribute: epmCheckpointRef; If this attribute is non-null and includePersonalCheckouts is true, then the config spec will use the it as a filter to determine whether to return the personal checkout working copy or the original for each master.
 void setIncludePersonalCheckouts(boolean a_IncludePersonalCheckouts)
          Sets the value of the attribute: includePersonalCheckouts; Whether the results should include iterations checked out (i.e., WIP working copies) to 'principal' or not.
 void setPrincipal(WTPrincipalReference a_Principal)
          Sets the value of the attribute: principal; A reference to the principal for whom the configuration is to be evaluated.
 void setSandboxContainer(WTContainerRef a_SandboxContainer)
          Sets the value of the attribute: sandboxContainer; A reference to the sandbox container.
 void setUserConfigSpec(ConfigSpec a_UserConfigSpec)
          Sets the value of the attribute: userConfigSpec; A ConfigSpec via which iterations will be selected when neither the sandbox nor its baseline contains an appropriate iteration.
 void setUseSandboxBaseline(boolean a_UseSandboxBaseline)
          Sets the value of the attribute: useSandboxBaseline; Whether the sandbox container's baseline should be considered or not.
 void writeExternal(ObjectOutput output)
          Writes the non-transient fields of this class to an external source.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

RESOURCE

private static final String RESOURCE
See Also:
Constant Field Values

CLASSNAME

private static final String CLASSNAME

sandboxContainer

private WTContainerRef sandboxContainer

useSandboxBaseline

private boolean useSandboxBaseline

includePersonalCheckouts

private boolean includePersonalCheckouts

principal

private WTPrincipalReference principal

userConfigSpec

private ConfigSpec userConfigSpec

epmCheckpointRef

private ObjectReference epmCheckpointRef

serialVersionUID

static final long serialVersionUID
See Also:
Constant Field Values

EXTERNALIZATION_VERSION_UID

public static final long EXTERNALIZATION_VERSION_UID
See Also:
Constant Field Values

OLD_FORMAT_VERSION_UID

protected static final long OLD_FORMAT_VERSION_UID
See Also:
Constant Field Values
Constructor Detail

SandboxConfigSpec

public SandboxConfigSpec()
Default constructor. Leaves all attributes unspecified.

Supported API: false

Method Detail

writeExternal

public void writeExternal(ObjectOutput output)
                   throws IOException
Writes the non-transient fields of this class to an external source.

Supported API: false

Specified by:
writeExternal in interface Externalizable
Parameters:
output -
Throws:
IOException

readExternal

public void readExternal(ObjectInput input)
                  throws IOException,
                         ClassNotFoundException
Reads the non-transient fields of this class from an external source.

Supported API: false

Specified by:
readExternal in interface Externalizable
Parameters:
input -
Throws:
IOException
ClassNotFoundException

readVersion

protected boolean readVersion(SandboxConfigSpec thisObject,
                              ObjectInput input,
                              long readSerialVersionUID,
                              boolean passThrough,
                              boolean superDone)
                       throws IOException,
                              ClassNotFoundException
Reads the non-transient fields of this class from an external source.

Supported API: false

Parameters:
thisObject -
input -
readSerialVersionUID -
passThrough -
superDone -
Returns:
boolean
Throws:
IOException
ClassNotFoundException

readOldVersion

private boolean readOldVersion(ObjectInput input,
                               long readSerialVersionUID,
                               boolean passThrough,
                               boolean superDone)
                        throws IOException,
                               ClassNotFoundException
Reads the non-transient fields of this class from an external source, which is not the current version.

Parameters:
input -
readSerialVersionUID -
passThrough -
superDone -
Returns:
boolean
Throws:
IOException
ClassNotFoundException

getSandboxContainer

public WTContainerRef getSandboxContainer()
Gets the value of the attribute: sandboxContainer; A reference to the sandbox container.

Supported API: false

Returns:
WTContainerRef

setSandboxContainer

public void setSandboxContainer(WTContainerRef a_SandboxContainer)
                         throws WTPropertyVetoException
Sets the value of the attribute: sandboxContainer; A reference to the sandbox container.

Supported API: false

Parameters:
a_SandboxContainer -
Throws:
WTPropertyVetoException

sandboxContainerValidate

private void sandboxContainerValidate(WTContainerRef a_SandboxContainer)
                               throws WTPropertyVetoException
Parameters:
a_SandboxContainer -
Throws:
WTPropertyVetoException

isUseSandboxBaseline

public boolean isUseSandboxBaseline()
Gets the value of the attribute: useSandboxBaseline; Whether the sandbox container's baseline should be considered or not.

Supported API: false

Returns:
boolean

setUseSandboxBaseline

public void setUseSandboxBaseline(boolean a_UseSandboxBaseline)
                           throws WTPropertyVetoException
Sets the value of the attribute: useSandboxBaseline; Whether the sandbox container's baseline should be considered or not.

Supported API: false

Parameters:
a_UseSandboxBaseline -
Throws:
WTPropertyVetoException

isIncludePersonalCheckouts

public boolean isIncludePersonalCheckouts()
Gets the value of the attribute: includePersonalCheckouts; Whether the results should include iterations checked out (i.e., WIP working copies) to 'principal' or not. [Like all the other attributes of SandboxConfigSpec, this only affects the sandbox portion of the config spec, not userConfigSpec.]

Supported API: false

Returns:
boolean

setIncludePersonalCheckouts

public void setIncludePersonalCheckouts(boolean a_IncludePersonalCheckouts)
                                 throws WTPropertyVetoException
Sets the value of the attribute: includePersonalCheckouts; Whether the results should include iterations checked out (i.e., WIP working copies) to 'principal' or not. [Like all the other attributes of SandboxConfigSpec, this only affects the sandbox portion of the config spec, not userConfigSpec.]

Supported API: false

Parameters:
a_IncludePersonalCheckouts -
Throws:
WTPropertyVetoException

getPrincipal

public WTPrincipalReference getPrincipal()
Gets the value of the attribute: principal; A reference to the principal for whom the configuration is to be evaluated. If this is null, then the current session principal is used at the time of appendSearchCriteria() invocation. This attribute is currently unused when includePersonalCheckouts is false.

Supported API: false

Returns:
WTPrincipalReference

setPrincipal

public void setPrincipal(WTPrincipalReference a_Principal)
                  throws WTPropertyVetoException
Sets the value of the attribute: principal; A reference to the principal for whom the configuration is to be evaluated. If this is null, then the current session principal is used at the time of appendSearchCriteria() invocation. This attribute is currently unused when includePersonalCheckouts is false.

Supported API: false

Parameters:
a_Principal -
Throws:
WTPropertyVetoException

principalValidate

private void principalValidate(WTPrincipalReference a_Principal)
                        throws WTPropertyVetoException
Parameters:
a_Principal -
Throws:
WTPropertyVetoException

getUserConfigSpec

public ConfigSpec getUserConfigSpec()
Gets the value of the attribute: userConfigSpec; A ConfigSpec via which iterations will be selected when neither the sandbox nor its baseline contains an appropriate iteration. This should be unspecified/null except in cases where such a fallback ConfigSpec is desired.

Supported API: false

Returns:
ConfigSpec

setUserConfigSpec

public void setUserConfigSpec(ConfigSpec a_UserConfigSpec)
                       throws WTPropertyVetoException
Sets the value of the attribute: userConfigSpec; A ConfigSpec via which iterations will be selected when neither the sandbox nor its baseline contains an appropriate iteration. This should be unspecified/null except in cases where such a fallback ConfigSpec is desired.

Supported API: false

Parameters:
a_UserConfigSpec -
Throws:
WTPropertyVetoException

getEpmCheckpointRef

public ObjectReference getEpmCheckpointRef()
Gets the value of the attribute: epmCheckpointRef; If this attribute is non-null and includePersonalCheckouts is true, then the config spec will use the it as a filter to determine whether to return the personal checkout working copy or the original for each master. [If includePersonalCheckouts is false, then this attribute has no effect.]

Supported API: false

Returns:
ObjectReference

setEpmCheckpointRef

public void setEpmCheckpointRef(ObjectReference a_EpmCheckpointRef)
                         throws WTPropertyVetoException
Sets the value of the attribute: epmCheckpointRef; If this attribute is non-null and includePersonalCheckouts is true, then the config spec will use the it as a filter to determine whether to return the personal checkout working copy or the original for each master. [If includePersonalCheckouts is false, then this attribute has no effect.]

Supported API: false

Parameters:
a_EpmCheckpointRef -
Throws:
WTPropertyVetoException

epmCheckpointRefValidate

private void epmCheckpointRefValidate(ObjectReference a_EpmCheckpointRef)
                               throws WTPropertyVetoException
Parameters:
a_EpmCheckpointRef -
Throws:
WTPropertyVetoException

newSandboxConfigSpec

public static SandboxConfigSpec newSandboxConfigSpec(WTContainerRef sandboxContainer)
                                              throws WTPropertyVetoException
Creates a SandboxConfigSpec setting 'useSandboxBaseline' as true, 'includePersonalCheckouts' as false, and 'principal' and 'userConfigSpec' as null.

Supported API: false

Parameters:
sandboxContainer - A reference to the sandbox container.
Returns:
SandboxConfigSpec
Throws:
WTPropertyVetoException

newSandboxConfigSpec

public static SandboxConfigSpec newSandboxConfigSpec(WTContainerRef sandboxContainer,
                                                     boolean useSandboxBaseline,
                                                     boolean includePersonalCheckouts,
                                                     WTPrincipalReference principal)
                                              throws WTPropertyVetoException
Creates a SandboxConfigSpec leaving 'userConfigSpec' unspecified/null.

Supported API: false

Parameters:
sandboxContainer - A reference to the sandbox container.
useSandboxBaseline - Whether the sandbox container's baseline should be considered or not.
includePersonalCheckouts - Whether the results should include iterations checked out (i.e., WIP working copies) to 'principal' or not. [Like all the other attributes of SandboxConfigSpec, this only affects the sandbox portion of the config spec, not userConfigSpec.]
principal - A reference to the principal for whom the configuration is to be evaluated. If this is null, then the current session principal is used at the time of appendSearchCriteria() invocation. This attribute is currently unused when includePersonalCheckouts is false.
Returns:
SandboxConfigSpec
Throws:
WTPropertyVetoException

newSandboxConfigSpec

public static SandboxConfigSpec newSandboxConfigSpec(WTContainerRef sandboxContainer,
                                                     boolean useSandboxBaseline,
                                                     boolean includePersonalCheckouts,
                                                     WTPrincipalReference principal,
                                                     ConfigSpec userConfigSpec)
                                              throws WTPropertyVetoException
A ConfigSpec via which iterations will be selected when neither the sandbox nor its baseline contains an appropriate iteration. This should be unspecified/null except in cases where such a fallback ConfigSpec is desired.

Supported API: false

Parameters:
sandboxContainer - A reference to the sandbox container.
useSandboxBaseline - Whether the sandbox container's baseline should be considered or not.
includePersonalCheckouts - Whether the results should include iterations checked out (i.e., WIP working copies) to 'principal' or not. [Like all the other attributes of SandboxConfigSpec, this only affects the sandbox portion of the config spec, not userConfigSpec.]
principal - A reference to the principal for whom the configuration is to be evaluated. If this is null, then the current session principal is used at the time of appendSearchCriteria() invocation. This attribute is currently unused when includePersonalCheckouts is false.
userConfigSpec -
Returns:
SandboxConfigSpec
Throws:
WTPropertyVetoException

appendSearchCriteria

public QuerySpec appendSearchCriteria(QuerySpec querySpec)
                               throws WTException,
                                      QueryException
Appends to the supplied QuerySpec additional search criteria to reduce the resulting iterations to only those that will be considered by this ConfigSpec. Appending additional classes to the QuerySpec is allowed (for join purposes), but those that are marked as selectable will be trimmed by "filteredIterationsOf" prior to it calling the "process" API.

The QueryResult returned should be a copy of the passed in one (taking advantage of side-effects is not encouraged).



Supported API: false

Specified by:
appendSearchCriteria in interface ConfigSpec
Parameters:
querySpec - A QuerySpec with a target class that is Iterated.
Returns:
QuerySpec
Throws:
WTException
QueryException
See Also:
QuerySpec, SearchCondition

process

public QueryResult process(QueryResult results)
                    throws WTException
Process the QueryResult of iterations, returning only those that "match" according to the algorithm.

The QueryResult returned should be a copy of the passed-in QueryResult (side-effects should be avoided).



Supported API: false

Specified by:
process in interface ConfigSpec
Parameters:
results - QueryResult of iterations to filter. Assumed to be the result of a query that included the additional search conditions applied by appendSearchCriteria. Note that after enumerating through the elements of this QueryResult, it should be reset.
Returns:
QueryResult
Throws:
WTException
See Also:
QueryResult, Iterated

appendSandboxConfigSpecCriteria

private QuerySpec appendSandboxConfigSpecCriteria(QuerySpec querySpec,
                                                  String subSelectAliasPrefix,
                                                  boolean appendAndWhenPrevConditions,
                                                  boolean simplifyCriteria,
                                                  boolean cloneQuerySpec)
                                           throws WTException,
                                                  QueryException,
                                                  SandboxException
Throws:
WTException
QueryException
SandboxException

getPrincipal

private WTPrincipalReference getPrincipal(boolean useSessionUserOnNull)
                                   throws WTException
Throws:
WTException

appendUserAndSandboxConfigSpecCriteria

private QuerySpec appendUserAndSandboxConfigSpecCriteria(QuerySpec querySpec)
                                                  throws WTException,
                                                         QueryException
Throws:
WTException
QueryException

processMixedConfigSpecResults

private QueryResult processMixedConfigSpecResults(QueryResult results)
                                           throws WTException
Throws:
WTException