submarine.core
Interface Archivable
- All Known Implementing Classes:
- EAISystem.ErrorObject, ArchivableFile, ArchivableInputStream
- public interface Archivable
Une classe qui implémente cette interface devient archivable
lorsqu'elle est manipulée comme message par EAISystem.
Quand utiliser :
Pour enregister dans un flux un objet Archivable
Quand implémenter :
Pour que l'objet destiné à être un message d'entrée ou de sortie
d'un Channel puisse être archivée par le EAISystem
Comment EAISystem l'utilise :
File f = new File(archivePath, Channel);
if( !f.isDirectory() ) f.mkdirs();
f = new File(f, ctx.docId+ext);
bos = new BufferedOutputStream(new FileOutputStream(f));
if( message instanceof Archivable ) {
((Archivable)message).archive(bos);
} else if( message instanceof Document ) {
Tools.archiveXML(bos, (Document)message);
} else if( message instanceof byte[] ) {
bos.write((byte[])message);
} else if( message instanceof String ) {
OutputStreamWriter p = new OutputStreamWriter(bos,encoding);
p.write((String)message);
p.flush();
} else if( message instanceof Serializable ) {
ObjectOutputStream p = new ObjectOutputStream(bos);
p.writeObject(message);
bos=p;
} else {
OutputStreamWriter p = new OutputStreamWriter(bos,encoding);
p.write("class:"+message.getClass().getName()+"
instance:"+message.toString());
p.flush();
System.err.println("Cannot archive "+f.getAbsolutePath()+" :"+message);
}
Method Summary |
void |
archive(java.io.OutputStream out)
Procède à l'archivage de l'objet dans le flux.
|
archive
public void archive(java.io.OutputStream out)
throws java.lang.Exception
- Procède à l'archivage de l'objet dans le flux.
Le programme appelant doit fournir un flux valide et doit se charger de flusher
et fermer le flux.
Ces actions ne sont pas du resort de cette implémentation.
- Parameters:
out
- Le flux dans lequel l'objet doit s'écrire.- Throws:
java.lang.Exception
- - See Also:
OutputStream