317 lines
14 KiB
HTML
317 lines
14 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<!--NewPage-->
|
|
<HTML>
|
|
<HEAD>
|
|
<!-- Generated by javadoc (build 1.5.0) on Thu May 15 17:17:33 EDT 2008 -->
|
|
<TITLE>
|
|
PersistentProxy (Oracle - Berkeley DB Java API)
|
|
</TITLE>
|
|
|
|
<META NAME="keywords" CONTENT="com.sleepycat.persist.model.PersistentProxy interface">
|
|
|
|
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../style.css" TITLE="Style">
|
|
|
|
<SCRIPT type="text/javascript">
|
|
function windowTitle()
|
|
{
|
|
parent.document.title="PersistentProxy (Oracle - Berkeley DB Java API)";
|
|
}
|
|
</SCRIPT>
|
|
<NOSCRIPT>
|
|
</NOSCRIPT>
|
|
|
|
</HEAD>
|
|
|
|
<BODY BGCOLOR="white" onload="windowTitle();">
|
|
|
|
|
|
<!-- ========= START OF TOP NAVBAR ======= -->
|
|
<A NAME="navbar_top"><!-- --></A>
|
|
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
|
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
|
<TR>
|
|
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
|
<A NAME="navbar_top_firstrow"><!-- --></A>
|
|
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
|
<TR ALIGN="center" VALIGN="top">
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/PersistentProxy.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
|
</TR>
|
|
</TABLE>
|
|
</TD>
|
|
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
|
<b>Berkeley DB</b><br><font size="-1"> version 4.7.25</font></EM>
|
|
</TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
|
<A HREF="../../../../com/sleepycat/persist/model/Persistent.html" title="annotation in com.sleepycat.persist.model"><B>PREV CLASS</B></A>
|
|
<A HREF="../../../../com/sleepycat/persist/model/PrimaryKey.html" title="annotation in com.sleepycat.persist.model"><B>NEXT CLASS</B></A></FONT></TD>
|
|
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
|
<A HREF="../../../../index.html?com/sleepycat/persist/model/PersistentProxy.html" target="_top"><B>FRAMES</B></A>
|
|
<A HREF="PersistentProxy.html" target="_top"><B>NO FRAMES</B></A>
|
|
<SCRIPT type="text/javascript">
|
|
<!--
|
|
if(window==top) {
|
|
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
|
}
|
|
//-->
|
|
</SCRIPT>
|
|
<NOSCRIPT>
|
|
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
|
</NOSCRIPT>
|
|
|
|
|
|
</FONT></TD>
|
|
</TR>
|
|
<TR>
|
|
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
|
SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
|
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
|
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
<A NAME="skip-navbar_top"></A>
|
|
<!-- ========= END OF TOP NAVBAR ========= -->
|
|
|
|
<HR>
|
|
<!-- ======== START OF CLASS DATA ======== -->
|
|
<H2>
|
|
<FONT SIZE="-1">
|
|
com.sleepycat.persist.model</FONT>
|
|
<BR>
|
|
Interface PersistentProxy<T></H2>
|
|
<HR>
|
|
<DL>
|
|
<DT><PRE>public interface <B>PersistentProxy<T></B></DL>
|
|
</PRE>
|
|
|
|
<P>
|
|
Implemented by a proxy class to represent the persistent state of a
|
|
(non-persistent) proxied class. Normally classes that are outside the scope
|
|
of the developer's control must be proxied since they cannot be annotated,
|
|
and because it is desirable to insulate the stored format from changes to
|
|
the instance fields of the proxied class. This is useful for classes in the
|
|
standard Java libraries, for example.
|
|
|
|
<p><code>PersistentProxy</code> objects are not required to be thread-safe. A
|
|
single thread will create and call the methods of a given <code>PersistentProxy</code> object.</p>
|
|
|
|
<p>There are three requirements for a proxy class:</p>
|
|
<ol>
|
|
<li>It must implement the <code>PersistentProxy</code> interface.</li>
|
|
<li>It must be specified as a persistent proxy class in the entity model.
|
|
When using the <A HREF="../../../../com/sleepycat/persist/model/AnnotationModel.html" title="class in com.sleepycat.persist.model"><CODE>AnnotationModel</CODE></A>, a proxy class is indicated by the
|
|
<A HREF="../../../../com/sleepycat/persist/model/Persistent.html" title="annotation in com.sleepycat.persist.model"><CODE>Persistent</CODE></A> annotation with the <A HREF="../../../../com/sleepycat/persist/model/Persistent.html#proxyFor()"><CODE>Persistent.proxyFor()</CODE></A>
|
|
property.</li>
|
|
<li>It must be explicitly registered by calling <A HREF="../../../../com/sleepycat/persist/model/EntityModel.html#registerClass(java.lang.Class)"><CODE>EntityModel.registerClass(java.lang.Class)</CODE></A> before opening the store.</li>
|
|
</ol>
|
|
|
|
<p>In order to serialize an instance of the proxied class before it is
|
|
stored, an instance of the proxy class is created. The proxied instance is
|
|
then passed to the proxy's <A HREF="../../../../com/sleepycat/persist/model/PersistentProxy.html#initializeProxy(T)"><CODE>initializeProxy</CODE></A> method.
|
|
When this method returns, the proxy instance contains the state of the
|
|
proxied instance. The proxy instance is then serialized and stored in the
|
|
same way as for any persistent object.</p>
|
|
|
|
<p>When an instance of the proxy object is deserialized after it is
|
|
retrieved from storage, its <A HREF="../../../../com/sleepycat/persist/model/PersistentProxy.html#convertProxy()"><CODE>convertProxy()</CODE></A> method is called. The
|
|
instance of the proxied class returned by this method is then returned as a
|
|
field in the persistent instance.</p>
|
|
|
|
<p>For example:</p>
|
|
<pre class="code">
|
|
import java.util.Locale;
|
|
|
|
@Persistent(proxyFor=Locale.class)
|
|
class LocaleProxy implements PersistentProxy<Locale> {
|
|
|
|
String language;
|
|
String country;
|
|
String variant;
|
|
|
|
private LocaleProxy() {}
|
|
|
|
public void initializeProxy(Locale object) {
|
|
language = object.getLanguage();
|
|
country = object.getCountry();
|
|
variant = object.getVariant();
|
|
}
|
|
|
|
public Locale convertProxy() {
|
|
return new Locale(language, country, variant);
|
|
}
|
|
}</pre>
|
|
|
|
<p>The above definition allows the <code>Locale</code> class to be used in any
|
|
persistent class, for example:</p>
|
|
<pre class="code">
|
|
@Persistent
|
|
class LocalizedText {
|
|
String text;
|
|
Locale locale;
|
|
}</pre>
|
|
|
|
<p>A proxy for proxied class P does not handle instances of subclasses of P.
|
|
To proxy subclasses of P, a separate proxy class is needed.</p>
|
|
|
|
<p>Several <a href="Entity.html#proxyTypes">built in proxy types</a>
|
|
are used implicitly. An application defined proxy will be used instead of a
|
|
built-in proxy, if both exist for the same proxied class.</p>
|
|
|
|
<p>With respect to class evolution, a proxy instance is no different than
|
|
any other persistent instance. When using a <A HREF="../../../../com/sleepycat/persist/raw/RawStore.html" title="class in com.sleepycat.persist.raw"><CODE>RawStore</CODE></A> or <A HREF="../../../../com/sleepycat/persist/evolve/Converter.html" title="class in com.sleepycat.persist.evolve"><CODE>Converter</CODE></A>, only the raw data of the proxy instance will be visible. Raw
|
|
data for the proxied instance never exists.</p>
|
|
|
|
<p>Currently a proxied object may not contain a reference to itself. For
|
|
simple proxied objects such as the Locale class shown above, this naturally
|
|
won't occur. But for proxied objects that are containers -- the built-in
|
|
Collection and Map classes for example -- this can occur if the container is
|
|
added as an element of itself. This should be avoided. If an attempt to
|
|
store such an object is made, an <code>IllegalArgumentException</code> will be
|
|
thrown.</p>
|
|
<P>
|
|
|
|
<P>
|
|
<HR>
|
|
|
|
<P>
|
|
|
|
<!-- ========== METHOD SUMMARY =========== -->
|
|
|
|
<A NAME="method_summary"><!-- --></A>
|
|
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
|
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
|
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
|
<B>Method Summary</B></FONT></TH>
|
|
</TR>
|
|
<TR BGCOLOR="white" CLASS="TableRowColor">
|
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
|
<CODE> <A HREF="../../../../com/sleepycat/persist/model/PersistentProxy.html" title="type parameter in PersistentProxy">T</A></CODE></FONT></TD>
|
|
<TD><CODE><B><A HREF="../../../../com/sleepycat/persist/model/PersistentProxy.html#convertProxy()">convertProxy</A></B>()</CODE>
|
|
|
|
<BR>
|
|
Returns a new proxied class instance to which the state of this proxy
|
|
instance has been copied.</TD>
|
|
</TR>
|
|
<TR BGCOLOR="white" CLASS="TableRowColor">
|
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
|
<CODE> void</CODE></FONT></TD>
|
|
<TD><CODE><B><A HREF="../../../../com/sleepycat/persist/model/PersistentProxy.html#initializeProxy(T)">initializeProxy</A></B>(<A HREF="../../../../com/sleepycat/persist/model/PersistentProxy.html" title="type parameter in PersistentProxy">T</A> object)</CODE>
|
|
|
|
<BR>
|
|
Copies the state of a given proxied class instance to this proxy
|
|
instance.</TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<P>
|
|
|
|
<!-- ============ METHOD DETAIL ========== -->
|
|
|
|
<A NAME="method_detail"><!-- --></A>
|
|
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
|
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
|
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
|
<B>Method Detail</B></FONT></TH>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<A NAME="initializeProxy(java.lang.Object)"><!-- --></A><A NAME="initializeProxy(T)"><!-- --></A><H3>
|
|
initializeProxy</H3>
|
|
<PRE>
|
|
void <B>initializeProxy</B>(<A HREF="../../../../com/sleepycat/persist/model/PersistentProxy.html" title="type parameter in PersistentProxy">T</A> object)</PRE>
|
|
<DL>
|
|
<DD>Copies the state of a given proxied class instance to this proxy
|
|
instance.
|
|
<P>
|
|
<DD><DL>
|
|
</DL>
|
|
</DD>
|
|
</DL>
|
|
<HR>
|
|
|
|
<A NAME="convertProxy()"><!-- --></A><H3>
|
|
convertProxy</H3>
|
|
<PRE>
|
|
<A HREF="../../../../com/sleepycat/persist/model/PersistentProxy.html" title="type parameter in PersistentProxy">T</A> <B>convertProxy</B>()</PRE>
|
|
<DL>
|
|
<DD>Returns a new proxied class instance to which the state of this proxy
|
|
instance has been copied.
|
|
<P>
|
|
<DD><DL>
|
|
</DL>
|
|
</DD>
|
|
</DL>
|
|
<!-- ========= END OF CLASS DATA ========= -->
|
|
<HR>
|
|
|
|
|
|
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
|
<A NAME="navbar_bottom"><!-- --></A>
|
|
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
|
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
|
<TR>
|
|
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
|
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
|
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
|
<TR ALIGN="center" VALIGN="top">
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/PersistentProxy.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
|
</TR>
|
|
</TABLE>
|
|
</TD>
|
|
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
|
<b>Berkeley DB</b><br><font size="-1"> version 4.7.25</font></EM>
|
|
</TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
|
<A HREF="../../../../com/sleepycat/persist/model/Persistent.html" title="annotation in com.sleepycat.persist.model"><B>PREV CLASS</B></A>
|
|
<A HREF="../../../../com/sleepycat/persist/model/PrimaryKey.html" title="annotation in com.sleepycat.persist.model"><B>NEXT CLASS</B></A></FONT></TD>
|
|
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
|
<A HREF="../../../../index.html?com/sleepycat/persist/model/PersistentProxy.html" target="_top"><B>FRAMES</B></A>
|
|
<A HREF="PersistentProxy.html" target="_top"><B>NO FRAMES</B></A>
|
|
<SCRIPT type="text/javascript">
|
|
<!--
|
|
if(window==top) {
|
|
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
|
}
|
|
//-->
|
|
</SCRIPT>
|
|
<NOSCRIPT>
|
|
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
|
</NOSCRIPT>
|
|
|
|
|
|
</FONT></TD>
|
|
</TR>
|
|
<TR>
|
|
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
|
SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
|
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
|
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
<A NAME="skip-navbar_bottom"></A>
|
|
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
|
|
|
<HR>
|
|
<font size=1>Copyright (c) 1996,2008 Oracle. All rights reserved.</font>
|
|
</BODY>
|
|
</HTML>
|