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.handlers.request;
21
22
23 import org.apache.directory.api.ldap.model.message.CompareRequest;
24 import org.apache.directory.api.ldap.model.message.CompareResponse;
25 import org.apache.directory.api.ldap.model.message.LdapResult;
26 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
27 import org.apache.directory.server.ldap.LdapSession;
28 import org.apache.directory.server.ldap.handlers.LdapRequestHandler;
29
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32
33
34
35
36
37
38
39 public class CompareRequestHandler extends LdapRequestHandler<CompareRequest>
40 {
41 private static final Logger LOG = LoggerFactory.getLogger( CompareRequestHandler.class );
42
43
44
45
46 public void handle( LdapSession session, CompareRequest compareRequest )
47 {
48 LOG.debug( "Handling compare request while ignoring referrals: {}", compareRequest );
49
50 CompareResponse compareResponse = ( CompareResponse ) compareRequest.getResultResponse();
51
52 LdapResult result = compareRequest.getResultResponse().getLdapResult();
53
54 try
55 {
56 if ( session.getCoreSession().compare( compareRequest ) )
57 {
58 result.setResultCode( ResultCodeEnum.COMPARE_TRUE );
59 }
60 else
61 {
62 result.setResultCode( ResultCodeEnum.COMPARE_FALSE );
63 }
64
65 result.setMatchedDn( compareRequest.getName() );
66 session.getIoSession().write( compareResponse );
67 }
68 catch ( Exception e )
69 {
70 handleException( session, compareRequest, compareResponse, e );
71 }
72 }
73 }