blob: a1e9a42cec7282a26e726c43a41e97d70cbfc736 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2011 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0, which accompanies this distribution
* and is available at http://www.eclipse.org/legal/epl-v10.html.
*
* Contributors:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.jpa.eclipselink.core.context;
import org.eclipse.jpt.jpa.core.context.JpaContextNode;
/**
* EclipseLink caching
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
* stability. It is available at this early stage to solicit feedback from
* pioneering adopters on the understanding that any code that uses this API
* will almost certainly be broken (repeatedly) as the API evolves.
*
* @version 3.1
* @since 2.1
*/
// TODO bjv EclipseLinkCachingPolicy
public interface EclipseLinkCaching
extends JpaContextNode
{
// ********** type **********
/**
* This is the combination of defaultType and specifiedType.
* If getSpecifiedType() returns null, then return getDefaultType()
*/
EclipseLinkCacheType getType();
EclipseLinkCacheType getSpecifiedType();
void setSpecifiedType(EclipseLinkCacheType type);
String SPECIFIED_TYPE_PROPERTY = "specifiedType"; //$NON-NLS-1$
EclipseLinkCacheType getDefaultType();
String DEFAULT_TYPE_PROPERTY = "defaultType"; //$NON-NLS-1$
EclipseLinkCacheType DEFAULT_TYPE = EclipseLinkCacheType.SOFT_WEAK;
// ********** size **********
/**
* This is the combination of defaultSize and specifiedSize.
* If getSpecifiedSize() returns null, then return getDefaultSize()
*/
int getSize();
Integer getSpecifiedSize();
void setSpecifiedSize(Integer size);
String SPECIFIED_SIZE_PROPERTY = "specifiedSize"; //$NON-NLS-1$
int getDefaultSize();
String DEFAULT_SIZE_PROPERTY = "defaultSize"; //$NON-NLS-1$
int DEFAULT_SIZE = 100;
// ********** shared **********
/**
* This is the combination of defaultShared and specifiedShared.
* If getSpecifiedShared() returns null, then return isDefaultShared()
*/
boolean isShared();
Boolean getSpecifiedShared();
/**
* Specifying <em>shared</em> <code>false</code> will return the following
* caching settings to their defaults:<ul>
* <li>type
* <li>size
* <li>always refresh
* <li>refresh only if newer
* <li>disable hits
* <li>coordination type
* </ul>
* Additionally, the following settings will be cleared:<ul>
* <li>expiry
* <li>expiry time of day
* </ul>
* These settings do not apply to an unchared cache.
*/
void setSpecifiedShared(Boolean shared);
String SPECIFIED_SHARED_PROPERTY = "specifiedShared"; //$NON-NLS-1$
boolean isDefaultShared();
String DEFAULT_SHARED_PROPERTY = "defaultShared"; //$NON-NLS-1$
boolean DEFAULT_SHARED = true;
// ********** always refresh **********
/**
* This is the combination of defaultAlwaysRefresh and specifiedAlwaysRefresh.
* If getSpecifiedAlwaysRefresh() returns null, then return isDefaultAlwaysRefresh()
*/
boolean isAlwaysRefresh();
Boolean getSpecifiedAlwaysRefresh();
void setSpecifiedAlwaysRefresh(Boolean alwaysRefresh);
String SPECIFIED_ALWAYS_REFRESH_PROPERTY = "specifiedAlwaysRefresh"; //$NON-NLS-1$
boolean isDefaultAlwaysRefresh();
String DEFAULT_ALWAYS_REFRESH_PROPERTY = "defaultAlwaysRefresh"; //$NON-NLS-1$
boolean DEFAULT_ALWAYS_REFRESH = false;
// ********** refresh only if newer **********
/**
* This is the combination of defaultRefreshOnlyIfNewer and specifiedRefreshOnlyIfNewer.
* If getSpecifiedRefreshOnlyIfNewer() returns null, then return isDefaultRefreshOnlyIfNewer()
*/
boolean isRefreshOnlyIfNewer();
Boolean getSpecifiedRefreshOnlyIfNewer();
void setSpecifiedRefreshOnlyIfNewer(Boolean refreshOnlyIfNewer);
String SPECIFIED_REFRESH_ONLY_IF_NEWER_PROPERTY = "specifiedRefreshOnlyIfNewer"; //$NON-NLS-1$
boolean isDefaultRefreshOnlyIfNewer();
String DEFAULT_REFRESH_ONLY_IF_NEWER_PROPERTY = "defaultRefreshOnlyIfNewer"; //$NON-NLS-1$
boolean DEFAULT_REFRESH_ONLY_IF_NEWER = false;
// ********** disable hits **********
/**
* This is the combination of defaultDisableHits and specifiedDisableHits.
* If getSpecifiedDisableHits() returns null, then return getDefaultDisableHits()
*/
boolean isDisableHits();
Boolean getSpecifiedDisableHits();
void setSpecifiedDisableHits(Boolean disableHits);
String SPECIFIED_DISABLE_HITS_PROPERTY = "specifiedDisableHits"; //$NON-NLS-1$
boolean isDefaultDisableHits();
String DEFAULT_DISABLE_HITS_PROPERTY = "defaultDisableHits"; //$NON-NLS-1$
boolean DEFAULT_DISABLE_HITS = false;
// ********** coordination type **********
/**
* This is the combination of defaultCoordinationType and specifiedCoordinationType.
* If getSpecifiedCoordinationType() returns null, then return getDefaultCoordinationType()
*/
EclipseLinkCacheCoordinationType getCoordinationType();
EclipseLinkCacheCoordinationType getSpecifiedCoordinationType();
void setSpecifiedCoordinationType(EclipseLinkCacheCoordinationType coordinationType);
String SPECIFIED_COORDINATION_TYPE_PROPERTY = "specifiedCoordinationType"; //$NON-NLS-1$
EclipseLinkCacheCoordinationType getDefaultCoordinationType();
String DEFAULT_COORDINATION_TYPE_PROPERTY = "defaultCoordinationType"; //$NON-NLS-1$
EclipseLinkCacheCoordinationType DEFAULT_COORDINATION_TYPE = EclipseLinkCacheCoordinationType.SEND_OBJECT_CHANGES;
// ********** expiry **********
/**
* corresponds to the Cache expiry element. If this returns
* a non-null value then getExpiryTimeOfDay will return null.
* It is not valid to specify both
*/
Integer getExpiry();
/**
* Setting this to a non-null value will set timeOfDayExpiry to null
*/
void setExpiry(Integer expiry);
String EXPIRY_PROPERTY = "expiry"; //$NON-NLS-1$
// ********** expiry time of day **********
/**
* corresponds to the Cache expiryTimeOfDay annotation or xml element.
* If this returns a non-null value then getExpiry will return null.
* It is not valid to specify both.
*/
EclipseLinkTimeOfDay getExpiryTimeOfDay();
String EXPIRY_TIME_OF_DAY_PROPERTY = "expiryTimeOfDay"; //$NON-NLS-1$
/**
* Add Cache expiryTimeOfDay annotation or xml element, this will set
* Expiry to null as it is not valid to set both expiry and timeOfDayExpiry
*/
EclipseLinkTimeOfDay addExpiryTimeOfDay();
/**
* Removes the Cache expiryTimeOfDay annotation/xml element
*/
void removeExpiryTimeOfDay();
// ********** existence type **********
// TODO bjv rename existenceCheckingPolicy
/**
* This is the combination of defaultExistenceType and specifiedExistenceType.
* If getSpecifiedExistenceType() returns null, then return getDefaultExistenceType()
*/
EclipseLinkExistenceType getExistenceType();
EclipseLinkExistenceType getSpecifiedExistenceType();
void setSpecifiedExistenceType(EclipseLinkExistenceType type);
String SPECIFIED_EXISTENCE_TYPE_PROPERTY = "specifiedExistenceType"; //$NON-NLS-1$
EclipseLinkExistenceType getDefaultExistenceType();
String DEFAULT_EXISTENCE_TYPE_PROPERTY = "defaultExistenceType"; //$NON-NLS-1$
EclipseLinkExistenceType DEFAULT_EXISTENCE_TYPE = EclipseLinkExistenceType.CHECK_DATABASE;
// ********** isolation added in EclipseLink 2.2 **********
/**
* This is the combination of defaultIsolation and specifiedIsolation.
* If getSpecifiedIsolation() returns null, then return getDefaultIsolation()
*/
EclipseLinkCacheIsolationType2_2 getIsolation();
EclipseLinkCacheIsolationType2_2 getSpecifiedIsolation();
void setSpecifiedIsolation(EclipseLinkCacheIsolationType2_2 isolation);
String SPECIFIED_ISOLATION_PROPERTY = "specifiedIsolation"; //$NON-NLS-1$
EclipseLinkCacheIsolationType2_2 getDefaultIsolation();
String DEFAULT_ISOLATION_PROPERTY = "defaultIsolation"; //$NON-NLS-1$
EclipseLinkCacheIsolationType2_2 DEFAULT_ISOLATION = EclipseLinkCacheIsolationType2_2.SHARED;
}