/************************************************************************** * EntityPath.java * * $Revision: 1.12 $ * $Date: 2005/10/13 08:15:00 $ * * Copyright (C) 2001 CERN - European Organization for Nuclear Research * All rights reserved. **************************************************************************/ package com.c2kernel.lookup; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.UUID; import org.apache.xerces.impl.dv.util.Base64; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.common.SystemKey; import com.c2kernel.process.Gateway; /** * Extends Path to enforce SystemKey structure and support int form * * @version $Revision: 1.12 $ $Date: 2005/10/13 08:15:00 $ * @author $Author: abranson $ **/ public class AgentPath extends ItemPath { private String mAgentName=null; private String mPassword=null; public AgentPath(SystemKey syskey) throws InvalidAgentPathException, InvalidItemPathException { super(syskey); try { findAgentName(); } catch (ObjectNotFoundException e) { throw new InvalidAgentPathException(); } } protected AgentPath(UUID uuid) throws InvalidAgentPathException, InvalidItemPathException { super(uuid); try { findAgentName(); } catch (ObjectNotFoundException e) { throw new InvalidAgentPathException(); } } public AgentPath(ItemPath itemPath) throws InvalidAgentPathException { super(itemPath.mUUID); try { findAgentName(); } catch (ObjectNotFoundException e) { throw new InvalidAgentPathException(); } } public AgentPath(ItemPath itemPath, String agentName) { super(itemPath.mUUID); mAgentName = agentName; } public AgentPath(String path) throws InvalidItemPathException { super(path); try { findAgentName(); } catch (ObjectNotFoundException e) { throw new InvalidAgentPathException(); } } public void setAgentName(String agentID) { mAgentName = agentID; } public String getAgentName() { if (mAgentName==null) try { findAgentName(); } catch (ObjectNotFoundException e) { return null; } return mAgentName; } private void findAgentName() throws ObjectNotFoundException { mAgentName = Gateway.getLookup().getAgentName(this); } public RolePath[] getRoles() { return Gateway.getLookup().getRoles(this); } public boolean hasRole(RolePath role) { return Gateway.getLookup().hasRole(this, role); } public boolean hasRole(String role) { try { return hasRole(Gateway.getLookup().getRolePath(role)); } catch (ObjectNotFoundException ex) { return false; } } public void setPassword(String passwd) { mPassword = passwd; } public String getPassword() { return mPassword; } @Override public String dump() { return super.dump()+ "\n agentID="+ mAgentName; } public static String generateUserPassword(String pass, String algo) throws NoSuchAlgorithmException { MessageDigest sha = MessageDigest.getInstance(algo); sha.reset(); sha.update(pass.getBytes()); byte hash[] = sha.digest(); StringBuffer digest = new StringBuffer("{").append(algo).append("}"); digest.append(Base64.encode(hash)); return digest.toString(); } public static AgentPath fromUUIDString(String uuid) throws InvalidAgentPathException { try { return new AgentPath(new ItemPath(uuid)); } catch (InvalidItemPathException ex) { throw new InvalidAgentPathException(ex.getMessage()); } } }