public RepositoryItem buildItem(Session session, String key) throws RepositoryException {
String[] snippets = key.split(":");
String publicationId = snippets[0];
String areaName = snippets[1];
SiteTree tree;
SharedItemStore store = null;
try {
DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
Publication publication = factory.getPublication(publicationId);
Area area = publication.getArea(areaName);
store = (SharedItemStore) this.manager.lookup(SharedItemStore.ROLE);
Session storeSession = store.getSession();
if (session.isModifiable() || session == storeSession) {
tree = new SiteTreeImpl(this.manager, area, getLogger());
} else {
tree = new DelegatingSiteTree(this.manager, area, this, storeSession, key);
}