/*
* Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* bstefanescu
*
* $Id$
*/
package org.eclipse.ecr.core.api.repository;
import java.io.Serializable;
import java.security.Principal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.ecr.core.api.CoreInstance;
import org.eclipse.ecr.core.api.CoreSession;
import org.eclipse.ecr.core.api.NuxeoPrincipal;
import org.eclipse.ecr.core.api.impl.UserPrincipal;
import org.eclipse.ecr.runtime.api.Framework;
/**
* @author <a href="mailto:bs@nuxeo.com">Bogdan Stefanescu</a>
*/
public class LocalRepositoryInstanceHandler extends RepositoryInstanceHandler {
private static final long serialVersionUID = 1L;
protected final Principal principal;
public LocalRepositoryInstanceHandler(Repository repository,
NuxeoPrincipal principal) {
super(repository);
this.principal = principal;
}
public LocalRepositoryInstanceHandler(Repository repository, String username) {
this(repository, new UserPrincipal(username, new ArrayList<String>(),
false, false));
}
@Override
protected void open(Repository repository) throws Exception {
session = Framework.getLocalService(CoreSession.class);
String repositoryUri = repository.getRepositoryUri();
if (repositoryUri == null) {
repositoryUri = repository.getName();
}
Map<String, Serializable> ctx = new HashMap<String, Serializable>();
ctx.put("principal", (NuxeoPrincipal) principal);
String sid = session.connect(repositoryUri, ctx);
// register session on local JVM so it can be used later by doc models
CoreInstance.getInstance().registerSession(sid, proxy);
}
}