1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.directory.server.dns.store.jndi;
22
23
24 import java.util.Set;
25
26 import javax.naming.directory.DirContext;
27
28 import org.apache.directory.server.core.CoreSession;
29 import org.apache.directory.server.core.DirectoryService;
30 import org.apache.directory.server.core.jndi.ServerLdapContext;
31 import org.apache.directory.server.dns.DnsException;
32 import org.apache.directory.server.dns.messages.QuestionRecord;
33 import org.apache.directory.server.dns.messages.ResourceRecord;
34 import org.apache.directory.server.dns.messages.ResponseCode;
35 import org.apache.directory.server.dns.store.jndi.operations.GetRecords;
36 import org.apache.directory.server.protocol.shared.ServiceConfigurationException;
37 import org.apache.directory.shared.ldap.name.LdapDN;
38 import org.slf4j.Logger;
39 import org.slf4j.LoggerFactory;
40
41
42
43
44
45
46
47
48
49 public class SingleBaseSearch implements SearchStrategy
50 {
51
52
53
54 private static final Logger LOG = LoggerFactory.getLogger( SingleBaseSearch.class );
55
56 private final DirContext ctx;
57
58
59 SingleBaseSearch( String searchBaseDn, DirectoryService directoryService )
60 {
61 try
62 {
63 CoreSession session = directoryService.getSession();
64 ctx = new ServerLdapContext( directoryService, session, new LdapDN( searchBaseDn ) );
65 } catch ( Exception e )
66 {
67 throw new ServiceConfigurationException( "Can't get context at" + searchBaseDn, e );
68 }
69
70 }
71
72
73 public Set<ResourceRecord> getRecords( QuestionRecord question ) throws DnsException
74 {
75 try
76 {
77
78 return new GetRecords( question ).execute( ctx, null );
79 }
80 catch ( Exception e )
81 {
82 LOG.debug( "Unexpected error retrieving DNS records.", e );
83 throw new DnsException( ResponseCode.SERVER_FAILURE );
84 }
85 }
86
87
88 }