Skip to content

Commit c4fb3dc

Browse files
Remove duplicated and obsolete interceptor documentation
1 parent 87893ab commit c4fb3dc

File tree

1 file changed

+2
-106
lines changed

1 file changed

+2
-106
lines changed

doc/reference/modules/manipulating_data.xml

+2-106
Original file line numberDiff line numberDiff line change
@@ -1186,113 +1186,9 @@ finally
11861186
The <literal>IInterceptor</literal> interface provides callbacks from the session to the
11871187
application allowing the application to inspect and / or manipulate properties of a
11881188
persistent object before it is saved, updated, deleted or loaded. One
1189-
possible use for this is to track auditing information. For example, the following
1190-
<literal>IInterceptor</literal> automatically sets the <literal>CreateTimestamp</literal>
1191-
when an <literal>IAuditable</literal> is created and updates the
1192-
<literal>LastUpdateTimestamp</literal> property when an <literal>IAuditable</literal> is
1193-
updated.
1189+
possible use for this is to track auditing information. See
1190+
<xref linkend="objectstate-interceptors"/> for more information.
11941191
</para>
1195-
1196-
<programlisting><![CDATA[using System;
1197-
using NHibernate.Type;
1198-
1199-
namespace NHibernate.Test
1200-
{
1201-
[Serializable]
1202-
public class AuditInterceptor : IInterceptor
1203-
{
1204-
1205-
private int updates;
1206-
private int creates;
1207-
1208-
public void OnDelete(object entity,
1209-
object id,
1210-
object[] state,
1211-
string[] propertyNames,
1212-
IType[] types)
1213-
{
1214-
// do nothing
1215-
}
1216-
1217-
public boolean OnFlushDirty(object entity,
1218-
object id,
1219-
object[] currentState,
1220-
object[] previousState,
1221-
string[] propertyNames,
1222-
IType[] types) {
1223-
1224-
if ( entity is IAuditable )
1225-
{
1226-
updates++;
1227-
for ( int i=0; i < propertyNames.Length; i++ )
1228-
{
1229-
if ( "LastUpdateTimestamp" == propertyNames[i] )
1230-
{
1231-
currentState[i] = DateTime.Now;
1232-
return true;
1233-
}
1234-
}
1235-
}
1236-
return false;
1237-
}
1238-
1239-
public boolean OnLoad(object entity,
1240-
object id,
1241-
object[] state,
1242-
string[] propertyNames,
1243-
IType[] types)
1244-
{
1245-
return false;
1246-
}
1247-
1248-
public boolean OnSave(object entity,
1249-
object id,
1250-
object[] state,
1251-
string[] propertyNames,
1252-
IType[] types)
1253-
{
1254-
if ( entity is IAuditable )
1255-
{
1256-
creates++;
1257-
for ( int i=0; i<propertyNames.Length; i++ )
1258-
{
1259-
if ( "CreateTimestamp" == propertyNames[i] )
1260-
{
1261-
state[i] = DateTime.Now;
1262-
return true;
1263-
}
1264-
}
1265-
}
1266-
return false;
1267-
}
1268-
1269-
public void PostFlush(ICollection entities)
1270-
{
1271-
Console.Out.WriteLine("Creations: {0}, Updates: {1}", creates, updates);
1272-
}
1273-
1274-
public void PreFlush(ICollection entities) {
1275-
updates=0;
1276-
creates=0;
1277-
}
1278-
1279-
......
1280-
......
1281-
}
1282-
}]]></programlisting>
1283-
1284-
<para>
1285-
The interceptor would be specified when a session is created.
1286-
</para>
1287-
1288-
<programlisting><![CDATA[ISession session = sf.OpenSession( new AuditInterceptor() );]]></programlisting>
1289-
1290-
<para>
1291-
You may also set an interceptor on a global level, using the <literal>Configuration</literal>:
1292-
</para>
1293-
1294-
<programlisting><![CDATA[new Configuration().SetInterceptor( new AuditInterceptor() );]]></programlisting>
1295-
12961192
</sect1>
12971193

12981194
<sect1 id="manipulatingdata-metadata">

0 commit comments

Comments
 (0)