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 import javax.naming.ldap.LdapName;
28
29 import org.apache.directory.server.core.api.CoreSession;
30 import org.apache.directory.server.core.api.DirectoryService;
31 import org.apache.directory.server.core.jndi.ServerLdapContext;
32 import org.apache.directory.server.dns.DnsException;
33 import org.apache.directory.server.dns.messages.QuestionRecord;
34 import org.apache.directory.server.dns.messages.ResourceRecord;
35 import org.apache.directory.server.dns.messages.ResponseCode;
36 import org.apache.directory.server.dns.store.jndi.operations.GetRecords;
37 import org.apache.directory.server.i18n.I18n;
38 import org.apache.directory.server.protocol.shared.ServiceConfigurationException;
39 import org.slf4j.Logger;
40 import org.slf4j.LoggerFactory;
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 LdapName( searchBaseDn ) );
65 }
66 catch ( Exception e )
67 {
68 throw new ServiceConfigurationException( I18n.err( I18n.ERR_649, searchBaseDn ), e );
69 }
70
71 }
72
73
74 public Set<ResourceRecord> getRecords( QuestionRecord question ) throws DnsException
75 {
76 try
77 {
78
79 return new GetRecords( question ).execute( ctx, null );
80 }
81 catch ( Exception e )
82 {
83 LOG.debug( "Unexpected error retrieving DNS records.", e );
84 throw new DnsException( ResponseCode.SERVER_FAILURE );
85 }
86 }
87
88 }