blob: 7c483d173e6eff2e0ab40d9a274ecf4f047f33e3 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.openjpa.enhance;
import java.io.IOException;
import java.io.ObjectOutput;
/**
* Internal state manager for managed instances.
*/
public interface StateManager {
// DO NOT ADD ADDITIONAL DEPENDENCIES TO THIS CLASS
int SET_USER = 0;
int SET_REMOTE = 1;
int SET_ATTACH = 2;
/**
* Persistence context.
*/
Object getGenericContext();
/**
* Return the persistence-capable primary key object by extracting the
* identity value of the related instance stored in the given field from
* the given object id.
*/
Object getPCPrimaryKey(Object oid, int field);
/**
* Change state manager.
*/
StateManager replaceStateManager(StateManager sm);
/**
* Returns the optimistic version for this instance.
*/
Object getVersion();
/**
* Whether the instance has been modified in this transaction.
*/
boolean isDirty();
/**
* Whether the instance is transactional.
*/
boolean isTransactional();
/**
* Whether the instance is persistent.
*/
boolean isPersistent();
/**
* Whether the instance is newly-persisted in this transaction.
*/
boolean isNew();
/**
* Whether the instance is deleted in this transaction.
*/
boolean isDeleted();
/**
* Whether the instance is detached (i.e. this manager is a detached
* state manager)
*/
boolean isDetached();
/**
* Make named field dirty.
*/
void dirty(String field);
/**
* Return the object id, assigning it if necessary.
*/
Object fetchObjectId();
/**
* Callback to prepare instance for serialization.
*
* @return true to null detached state after serialize
*/
boolean serializing();
/**
* Write detached state object and detached state manager to the
* given stream.
*
* @return true if managed fields also written to stream
*/
boolean writeDetached(ObjectOutput out)
throws IOException;
/**
* Proxy the given detached field after deserialization.
*/
void proxyDetachedDeserialized(int idx);
/**
* Field access callback.
*/
void accessingField(int idx);
/**
* Setting state callback.
*/
void settingBooleanField(PersistenceCapable pc, int idx,
boolean cur, boolean next, int set);
/**
* Setting state callback.
*/
void settingCharField(PersistenceCapable pc, int idx, char cur,
char next, int set);
/**
* Setting state callback.
*/
void settingByteField(PersistenceCapable pc, int idx, byte cur,
byte next, int set);
/**
* Setting state callback.
*/
void settingShortField(PersistenceCapable pc, int idx, short cur,
short next, int set);
/**
* Setting state callback.
*/
void settingIntField(PersistenceCapable pc, int idx, int cur,
int next, int set);
/**
* Setting state callback.
*/
void settingLongField(PersistenceCapable pc, int idx, long cur,
long next, int set);
/**
* Setting state callback.
*/
void settingFloatField(PersistenceCapable pc, int idx, float cur,
float next, int set);
/**
* Setting state callback.
*/
void settingDoubleField(PersistenceCapable pc, int idx, double cur,
double next, int set);
/**
* Setting state callback.
*/
void settingStringField(PersistenceCapable pc, int idx, String cur,
String next, int set);
/**
* Setting state callback.
*/
void settingObjectField(PersistenceCapable pc, int idx, Object cur,
Object next, int set);
/**
* Provide state callback.
*/
void providedBooleanField(PersistenceCapable pc, int idx,
boolean cur);
/**
* Provide state callback.
*/
void providedCharField(PersistenceCapable pc, int idx, char cur);
/**
* Provide state callback.
*/
void providedByteField(PersistenceCapable pc, int idx, byte cur);
/**
* Provide state callback.
*/
void providedShortField(PersistenceCapable pc, int idx, short cur);
/**
* Provide state callback.
*/
void providedIntField(PersistenceCapable pc, int idx, int cur);
/**
* Provide state callback.
*/
void providedLongField(PersistenceCapable pc, int idx, long cur);
/**
* Provide state callback.
*/
void providedFloatField(PersistenceCapable pc, int idx, float cur);
/**
* Provide state callback.
*/
void providedDoubleField(PersistenceCapable pc, int idx,
double cur);
/**
* Provide state callback.
*/
void providedStringField(PersistenceCapable pc, int idx,
String cur);
/**
* Provide state callback.
*/
void providedObjectField(PersistenceCapable pc, int idx,
Object cur);
/**
* Replace state callback.
*/
boolean replaceBooleanField(PersistenceCapable pc, int idx);
/**
* Replace state callback.
*/
char replaceCharField(PersistenceCapable pc, int idx);
/**
* Replace state callback.
*/
byte replaceByteField(PersistenceCapable pc, int idx);
/**
* Replace state callback.
*/
short replaceShortField(PersistenceCapable pc, int idx);
/**
* Replace state callback.
*/
int replaceIntField(PersistenceCapable pc, int idx);
/**
* Replace state callback.
*/
long replaceLongField(PersistenceCapable pc, int idx);
/**
* Replace state callback.
*/
float replaceFloatField(PersistenceCapable pc, int idx);
/**
* Replace state callback.
*/
double replaceDoubleField(PersistenceCapable pc, int idx);
/**
* Replace state callback.
*/
String replaceStringField(PersistenceCapable pc, int idx);
/**
* Replace state callback.
*/
Object replaceObjectField (PersistenceCapable pc, int idx);
}