1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.server.ldap.replication;
21
22
23 import java.io.ByteArrayInputStream;
24 import java.io.ByteArrayOutputStream;
25 import java.io.IOException;
26 import java.io.ObjectInputStream;
27 import java.io.ObjectOutput;
28 import java.io.ObjectOutputStream;
29
30 import jdbm.helper.Serializer;
31
32 import org.apache.directory.api.ldap.model.entry.DefaultEntry;
33 import org.apache.directory.api.ldap.model.entry.Entry;
34 import org.apache.directory.api.ldap.model.message.controls.ChangeType;
35 import org.apache.directory.api.ldap.model.name.Dn;
36 import org.apache.directory.api.ldap.model.schema.SchemaManager;
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 public class ReplicaEventMessageSerializer implements Serializer
52 {
53
54 private static final long serialVersionUID = 1L;
55
56
57 private transient SchemaManager schemaManager;
58
59
60
61
62
63
64
65 public ReplicaEventMessageSerializer( SchemaManager schemaManager )
66 {
67 this.schemaManager = schemaManager;
68 }
69
70
71
72
73
74 public byte[] serialize( Object object ) throws IOException
75 {
76 ReplicaEventMessagee/directory/server/ldap/replication/ReplicaEventMessage.html#ReplicaEventMessage">ReplicaEventMessage replicaEventMessage = ( ReplicaEventMessage ) object;
77
78 Entry entry = replicaEventMessage.getEntry();
79 ChangeType changeType = replicaEventMessage.getChangeType();
80
81 try ( ByteArrayOutputStream baos = new ByteArrayOutputStream();
82 ObjectOutput out = new ObjectOutputStream( baos ) )
83 {
84
85
86 out.writeByte( changeType.getValue() );
87
88
89 entry.getDn().writeExternal( out );
90
91
92 entry.writeExternal( out );
93
94 out.flush();
95
96 return baos.toByteArray();
97 }
98 }
99
100
101
102
103
104
105
106
107
108 public Object deserialize( byte[] bytes ) throws IOException
109 {
110 ObjectInputStream in = new ObjectInputStream( new ByteArrayInputStream( bytes ) );
111
112 ReplicaEventMessage replicaEventMessage = null;
113
114 try
115 {
116
117 byte type = in.readByte();
118 ChangeType changeType = ChangeType.getChangeType( type );
119
120
121 Dn entryDn = new Dn( schemaManager );
122 entryDn.readExternal( in );
123
124
125 Entry entry = new DefaultEntry( schemaManager );
126 entry.readExternal( in );
127 entry.setDn( entryDn );
128
129
130 replicaEventMessage = new ReplicaEventMessage( changeType, entry );
131 }
132 catch ( ClassNotFoundException cnfe )
133 {
134
135 }
136
137 return replicaEventMessage;
138 }
139 }