All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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