View Javadoc

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   * @author g_pearson
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  				// Save the LDAP server's response, if it's there...
60  				response.errorStr = t.getMessage();
61  			} else {
62  				// ... or save Java's error message.
63  				response.errorStr = e.getExplanation();
64  			}
65  			// TODO: find out which errors should result in a retry. 
66  			response.retry       = false;
67  			response.successfull = false;
68  			return response;
69  		} finally {
70  			context.close();			
71  		}				
72  	}
73  }