/*******************************************************************************
* Copyright (C) 2007 db4objects Inc. http://www.db4o.com
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the db4o Opensource Compatibility License (dOCL)
* which accompanies this distribution, and is available at
* http://www.db4o.com/about/company/legalpolicies/docl.aspx
*******************************************************************************/
package com.db4o.osgi;
import org.osgi.framework.*;
import com.db4o.*;
import com.db4o.config.*;
import com.db4o.ext.*;
import com.db4o.reflect.jdk.*;
class Db4oServiceImpl implements Db4oService {
private final Bundle _bundle;
public Db4oServiceImpl(Bundle bundle) {
_bundle = bundle;
}
public Configuration newConfiguration() {
Configuration config = Db4o.newConfiguration();
configureReflector(config);
return config;
}
public ObjectContainer openClient(String hostName, int port, String user, String password) throws Db4oException {
return openClient(Db4o.cloneConfiguration(), hostName, port, user, password);
}
public ObjectContainer openClient(Configuration config, String hostName, int port, String user, String password)
throws Db4oException {
return Db4o.openClient(config(config), hostName, port, user, password);
}
public ObjectContainer openFile(String databaseFileName) throws Db4oException {
return openFile(Db4o.cloneConfiguration(), databaseFileName);
}
public ObjectContainer openFile(Configuration config, String databaseFileName) throws Db4oException {
return Db4o.openFile(config(config), databaseFileName);
}
public ObjectServer openServer(String databaseFileName, int port) throws Db4oException {
return openServer(Db4o.cloneConfiguration(), databaseFileName, port);
}
public ObjectServer openServer(Configuration config, String databaseFileName, int port) throws Db4oException {
return Db4o.openServer(config(config), databaseFileName, port);
}
private Configuration config(Configuration config) {
if (config == null) {
config = Db4o.newConfiguration();
}
configureReflector(config);
return config;
}
private void configureReflector(Configuration config) {
config
.reflectWith(new JdkReflector(new OSGiLoader(_bundle, new ClassLoaderJdkLoader(getClass().getClassLoader()))));
}
}