summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/lookup/ldap/LDAPAgentPath.java
blob: bae2d4f91dca91769072f0d7b69f898735b5bc55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
 * LDAPAgentPath.java
 *
 * Copyright (c) 2013, The CRISTAL Consortium. All rights reserved.
 *
 * CRISTAL kernel is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public 
 * License along with this library. If not, see:
 * http://www.gnu.org/licenses/
 */

package com.c2kernel.lookup.ldap;

import java.security.NoSuchAlgorithmException;

import com.c2kernel.common.ObjectCannotBeUpdated;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.EntityPath;
import com.c2kernel.lookup.InvalidAgentPathException;
import com.c2kernel.lookup.InvalidEntityPathException;
import com.c2kernel.process.Gateway;
import com.novell.ldap.LDAPAttribute;
import com.novell.ldap.LDAPAttributeSet;

public class LDAPAgentPath extends AgentPath {

	/**
	 * @param syskey
	 * @param agentName
	 * @throws InvalidAgentPathException
	 * @throws InvalidEntityPathException
	 */
	public LDAPAgentPath(int syskey, String agentName)
			throws InvalidAgentPathException, InvalidEntityPathException {
		super(syskey, agentName);
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param syskey
	 * @throws InvalidEntityPathException
	 */
	public LDAPAgentPath(int syskey) throws InvalidEntityPathException {
		super(syskey);
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param entity
	 */
	public LDAPAgentPath(EntityPath entity) {
		super(entity);
		// TODO Auto-generated constructor stub
	}
    @Override
	public LDAPAttributeSet createAttributeSet() throws ObjectCannotBeUpdated
    {
        LDAPAttributeSet attrs = new LDAPAttributeSet();
        attrs.add(new LDAPAttribute("objectclass","cristalagent"));
        attrs.add(new LDAPAttribute("intsyskey",Integer.toString(mSysKey)));
        attrs.add(new LDAPAttribute("cn", getPath()[getPath().length-1]));
        if (mIOR != null)
            attrs.add(new LDAPAttribute("ior", Gateway.getORB().object_to_string(mIOR)));

        if (mAgentName!=null && mAgentName.length()>0)
            attrs.add(new LDAPAttribute("uid",mAgentName));
        else
            throw new ObjectCannotBeUpdated("Cannot create agent. No userId specified", "");

        if (mPassword!=null && mPassword.length()>0)
            try {
                attrs.add(new LDAPAttribute("userPassword",AgentPath.generateUserPassword(mPassword, "SHA")));
            } catch (NoSuchAlgorithmException ex) {
                throw new ObjectCannotBeUpdated("Cryptographic libraries for password hashing not found.", "");
            }
        else
            throw new ObjectCannotBeUpdated("Cannot create agent. No password given", "");

        return attrs;
    }
}