com.sleepycat.persist.impl.Enhanced Maven / Gradle / Ivy
The newest version!
/*-
* Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
*
* This file was distributed by Oracle as part of a version of Oracle Berkeley
* DB Java Edition made available at:
*
* http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
*
* Please see the LICENSE file included in the top-level directory of the
* appropriate version of Oracle Berkeley DB Java Edition for a copy of the
* license and additional information.
*/
package com.sleepycat.persist.impl;
/**
* Interface implemented by a persistent class via bytecode enhancement.
*
* See {@link Accessor} for method documentation. {@link EnhancedAccessor}
* implements Accessor and forwards all calls to methods in the Enhanced
* class.
*
* Each class that implements this interface (including its subclasses and
* superclasses except for Object) must also implement a static block that
* registers a prototype instance by calling
* EnhancedAccessor.registerPrototype. Other instances are created from the
* protype instance using {@link #bdbNewInstance}.
*
* static { EnhancedAccessor.registerPrototype(new Xxx()); }
*
* An example of the generated code for reading and writing fields is shown
* below.
*
*
* private int f1;
* private String f2;
* private MyClass f3;
*
* public void bdbWriteNonKeyFields(EntityOutput output) {
*
* super.bdbWriteNonKeyFields(output);
*
* output.writeInt(f1);
* output.writeObject(f2, null);
* output.writeObject(f3, null);
* }
*
* public void bdbReadNonKeyFields(EntityInput input,
* int startField,
* int endField,
* int superLevel) {
*
* if (superLevel != 0) {
* super.bdbReadNonKeyFields(input, startField, endField,
* superLevel - 1);
* }
* if (superLevel <= 0) {
* switch (startField) {
* case 0:
* f1 = input.readInt();
* if (endField == 0) break;
* case 1:
* f2 = (String) input.readObject();
* if (endField == 1) break;
* case 2:
* f3 = (MyClass) input.readObject();
* }
* }
* }
*
*
* @author Mark Hayes
*/
public interface Enhanced {
/**
* @see Accessor#newInstance
*/
Object bdbNewInstance();
/**
* @see Accessor#newArray
*/
Object bdbNewArray(int len);
/**
* Calls the super class method if this class does not contain the primary
* key field.
*
* @see Accessor#isPriKeyFieldNullOrZero
*/
boolean bdbIsPriKeyFieldNullOrZero();
/**
* Calls the super class method if this class does not contain the primary
* key field.
*
* @see Accessor#writePriKeyField
*/
void bdbWritePriKeyField(EntityOutput output, Format format)
throws RefreshException;
/**
* Calls the super class method if this class does not contain the primary
* key field.
*
* @see Accessor#readPriKeyField
*/
void bdbReadPriKeyField(EntityInput input, Format format)
throws RefreshException;
/**
* @see Accessor#writeSecKeyFields
*/
void bdbWriteSecKeyFields(EntityOutput output)
throws RefreshException;
/**
* @see Accessor#readSecKeyFields
*/
void bdbReadSecKeyFields(EntityInput input,
int startField,
int endField,
int superLevel)
throws RefreshException;
/**
* @see Accessor#writeNonKeyFields
*/
void bdbWriteNonKeyFields(EntityOutput output)
throws RefreshException;
/**
* @see Accessor#readNonKeyFields
*/
void bdbReadNonKeyFields(EntityInput input,
int startField,
int endField,
int superLevel)
throws RefreshException;
/**
* @see Accessor#writeCompositeKeyFields
*/
void bdbWriteCompositeKeyFields(EntityOutput output, Format[] formats)
throws RefreshException;
/**
* @see Accessor#readCompositeKeyFields
*/
void bdbReadCompositeKeyFields(EntityInput input, Format[] formats)
throws RefreshException;
/**
* @see Accessor#getField
*/
Object bdbGetField(Object o,
int field,
int superLevel,
boolean isSecField);
/**
* @see Accessor#setField
*/
void bdbSetField(Object o,
int field,
int superLevel,
boolean isSecField,
Object value);
/**
* @see Accessor#setPriField
*/
void bdbSetPriField(Object o, Object value);
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy