1 package net.sf.provisioner.requests;
2
3 import javax.naming.NamingException;
4 import javax.naming.directory.DirContext;
5
6 import net.sf.provisioner.config.ConfigRequest;
7 import net.sf.provisioner.config.LDAPNetworkElement;
8 import net.sf.provisioner.responses.Response;
9 import net.sf.provisioner.utils.LDAPUtils;
10
11 import org.jdom.Document;
12
13
14
15
16
17
18 public class LDAPCreateRequest extends LDAPRequest {
19
20 public LDAPCreateRequest(ConfigRequest request, Document opParameters) {
21 super(request,opParameters);
22 }
23
24 @Override
25 public Response sendRequest() throws Exception {
26 DirContext context = ((LDAPNetworkElement) this.ne).findRootContext();
27
28 try {
29 if (logger.isTraceEnabled()) {
30 logger.trace(
31 String.format(
32 "sending LDAP create request with objectClass: %s, and params: %s",
33 objectClass, params
34 )
35 );
36 logger.trace("baseDN: " + this.getDistinguishedName());
37 }
38
39 context.createSubcontext(
40 this.getDistinguishedName(),
41 LDAPUtils.buildAttrs(
42 this.objectClass.toArray(new String[0]),
43 params
44 )
45 );
46 Response response = new Response();
47 response.result =
48 response.errorStr = "Created attribute " + getDistinguishedName();
49 response.retry = false;
50 response.successfull = true;
51 return response;
52
53 } catch (NamingException e) {
54 Response response = new Response();
55 response.result = "Failed to create attribute.";
56
57 Throwable t = e.getRootCause();
58 if (t != null) {
59
60 response.errorStr = t.getMessage();
61 } else {
62
63 response.errorStr = e.getExplanation();
64 }
65
66 response.retry = false;
67 response.successfull = false;
68 return response;
69 } finally {
70 context.close();
71 }
72 }
73 }