/************************************************************************** * DomainPath.java * * $Revision: 1.22 $ * $Date: 2005/10/13 08:15:00 $ * * Copyright (C) 2001 CERN - European Organization for Nuclear Research * All rights reserved. **************************************************************************/ package com.c2kernel.lookup; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.process.Gateway; /** * @version $Revision: 1.22 $ $Date: 2005/10/13 08:15:00 $ * @author $Author: abranson $ **/ public class DomainPath extends Path { private ItemPath target = null; protected static String mTypeRoot; /* Very simple extension to Path. Only copies constructors and defines root */ public DomainPath() { super(Path.UNKNOWN); } public DomainPath(short type) { super(); mType = type; } public DomainPath(String[] path) { super(path, Path.UNKNOWN); } public DomainPath(String path) { super(path, Path.UNKNOWN); } public DomainPath(String path, ItemPath entity) { super(path, Path.UNKNOWN); setEntity(entity); } public DomainPath(DomainPath parent, String child) { super(parent, child); } /* the root of domain paths is /domain * clearly */ @Override public String getRoot() { return "domain"; } public DomainPath getParent() { if (mPath.length == 0) return null; String[] parentPath = new String[mPath.length-1]; System.arraycopy(mPath, 0, parentPath, 0, parentPath.length); return new DomainPath(parentPath); } public void setEntity(ItemPath newTarget) { if (newTarget == null) { // clear target = null; mType = Path.CONTEXT; return; } target = newTarget; mType = Path.ENTITY; } @Override public ItemPath getItemPath() throws ObjectNotFoundException { if (mType == UNKNOWN) { // must decide checkType(); } if (target == null) throw new ObjectNotFoundException("Path "+toString()+" does not resolve to an Item", ""); return target; } @Override public short getType() { if (mType == UNKNOWN) { // must decide checkType(); } return mType; } public void checkType() { try { setEntity(Gateway.getLookup().resolvePath(this)); } catch (InvalidItemPathException ex) { mType = CONTEXT; } catch (ObjectNotFoundException ex) { mType = CONTEXT; } } /** * Retrieves the domkey of the path * @return the last path component; */ public String getName() { return mPath[mPath.length-1]; } }