Objekte, die über die gleiche NotesSession geholt werden, sind in der Tat identisch. Objekte, die über verschiedene NotesSessions geholt werden nicht.
Hier ist der Beweis:
/*
* ExploreNotesObjectSharing.java
*
* Created on 31. Juli 2003, 09:38
*/
package de.aja.db;
import lotus.domino.*;
/**
*
* @author Axel
*/
public class ExploreNotesObjectSharing {
/** Creates a new instance of ExploreNotesObjectSharing */
public ExploreNotesObjectSharing() {
}
public static void main (String [] args) {
NotesThread.sinitThread();
// shared Objects.
try {
// 1. Shared View
Session nSessionShared = NotesFactory.createSessionWithFullAccess("kennwort");
Database nDbShared = nSessionShared.getDatabase ("localhost", "test.nsf");
View nViewShared = nDbShared.getView("V_MP");
Document docSharedA = nViewShared.getFirstDocument();
Document docSharedB = nViewShared.getFirstDocument();
System.out.println("shared view");
System.out.println("docSharedA.equals(docSharedB))"+ docSharedA.equals (docSharedB) );
System.out.println("docSharedA.hashCode()" + docSharedA.hashCode());
System.out.println("docSharedB.hashCode()" + docSharedB.hashCode());
// 2. 1 level up: Shared Database
View nViewSharedB = nDbShared.getView("V_MP");
Document docSharedC = nViewSharedB.getFirstDocument();
System.out.println("shared Database");
System.out.println("docSharedA.equals(docSharedC))"+ docSharedA.equals (docSharedC) );
System.out.println("docSharedA.hashCode()" + docSharedA.hashCode());
System.out.println("docSharedC.hashCode()" + docSharedC.hashCode());
// 3. 1 level up: Shared Session
Database nDbSharedB = nSessionShared.getDatabase ("localhost", "test.nsf");
View nViewSharedC = nDbShared.getView("V_MP");
Document docSharedD = nViewSharedC.getFirstDocument();
System.out.println("shared Session");
System.out.println("docSharedA.equals(docSharedD))"+ docSharedA.equals (docSharedD) );
System.out.println("docSharedA.hashCode()" + docSharedA.hashCode());
System.out.println("docSharedD.hashCode()" + docSharedD.hashCode());
// 4. Share nothing
Session nSessionNonSharedA = NotesFactory.createSessionWithFullAccess("kennwort");
Database nDbNonSharedA = nSessionNonSharedA.getDatabase ("localhost", "test.nsf");
View nViewNonSharedA = nDbNonSharedA.getView("V_MP");
Document docNonSharedA = nViewNonSharedA.getFirstDocument();
Session nSessionNonSharedB = NotesFactory.createSessionWithFullAccess("kennwort");
Database nDbNonSharedB = nSessionNonSharedB.getDatabase ("localhost", "test.nsf");
View nViewNonSharedB = nDbNonSharedB.getView("V_MP");
Document docNonSharedB = nViewNonSharedB.getFirstDocument();
System.out.println("Share nothing");
System.out.println("docNonSharedA.equals(docNonSharedB))"+ docNonSharedA.equals (docNonSharedB) );
System.out.println("docNonSharedA.hashCode()" + docNonSharedA.hashCode());
System.out.println("docNonSharedB.hashCode()" + docNonSharedB.hashCode());
nSessionShared.recycle();
nSessionNonSharedA.recycle();
nSessionNonSharedB.recycle();
} catch (Exception e) {e.printStackTrace(); }
NotesThread.sinitThread();
}
}
output:
shared view
docSharedA.equals(docSharedB))true
docSharedA.hashCode()27379847
docSharedB.hashCode()27379847
shared Database
docSharedA.equals(docSharedC))true
docSharedA.hashCode()27379847
docSharedC.hashCode()27379847
shared Session
docSharedA.equals(docSharedD))true
docSharedA.hashCode()27379847
docSharedD.hashCode()27379847
Share nothing
docNonSharedA.equals(docNonSharedB))false
docNonSharedA.hashCode()7615385
docNonSharedB.hashCode()15184449