use of com.orientechnologies.orient.core.exception.OConfigurationException in project orientdb by orientechnologies.
the class OServer method getStoragePath.
public String getStoragePath(final String iName) {
if (iName == null)
throw new IllegalArgumentException("Storage path is null");
final String name = iName.indexOf(':') > -1 ? iName.substring(iName.indexOf(':') + 1) : iName;
final String dbName = Orient.isRegisterDatabaseByPath() ? getDatabaseDirectory() + name : name;
final String dbPath = Orient.isRegisterDatabaseByPath() ? dbName : getDatabaseDirectory() + name;
if (dbPath.contains(".."))
throw new IllegalArgumentException("Storage path is invalid because it contains '..'");
if (dbPath.contains("*"))
throw new IllegalArgumentException("Storage path is invalid because of the wildcard '*'");
if (dbPath.startsWith("/")) {
if (!dbPath.startsWith(getDatabaseDirectory()))
throw new IllegalArgumentException("Storage path is invalid because it points to an absolute directory");
}
final OStorage stg = Orient.instance().getStorage(dbName);
if (stg != null)
// ALREADY OPEN
return stg.getURL();
// SEARCH IN CONFIGURED PATHS
final OServerConfiguration configuration = serverCfg.getConfiguration();
String dbURL = configuration.getStoragePath(name);
if (dbURL == null) {
// SEARCH IN DEFAULT DATABASE DIRECTORY
if (new File(OIOUtils.getPathFromDatabaseName(dbPath) + "/database.ocf").exists())
dbURL = "plocal:" + dbPath;
else
throw new OConfigurationException("Database '" + name + "' is not configured on server (home=" + getDatabaseDirectory() + ")");
}
return dbURL;
}
use of com.orientechnologies.orient.core.exception.OConfigurationException in project orientdb by orientechnologies.
the class OObjectSerializerHelper method invokeCallback.
public static void invokeCallback(final Object iPojo, final ODocument iDocument, final Class<?> iAnnotation) {
final Method m = callbacks.get(iPojo.getClass().getSimpleName() + "." + iAnnotation.getSimpleName());
if (m != null)
try {
if (m.getParameterTypes().length > 0)
m.invoke(iPojo, iDocument);
else
m.invoke(iPojo);
} catch (Exception e) {
throw OException.wrapException(new OConfigurationException("Error on executing user callback '" + m.getName() + "' annotated with '" + iAnnotation.getSimpleName() + "'"), e);
}
}
use of com.orientechnologies.orient.core.exception.OConfigurationException in project orientdb by orientechnologies.
the class OObjectSerializerHelper method getObjectID.
public static ORecordId getObjectID(final ODatabasePojoAbstract<?> iDb, final Object iPojo) {
getClassFields(iPojo.getClass());
final Field idField = fieldIds.get(iPojo.getClass());
if (idField != null) {
final Object id = getFieldValue(iPojo, idField.getName());
if (id != null) {
// FOUND
if (id instanceof ORecordId) {
return (ORecordId) id;
} else if (id instanceof Number) {
// TREATS AS CLUSTER POSITION
final OClass cls = iDb.getMetadata().getSchema().getClass(iPojo.getClass());
if (cls == null)
throw new OConfigurationException("Class " + iPojo.getClass() + " is not managed by current database");
return new ORecordId(cls.getDefaultClusterId(), ((Number) id).longValue());
} else if (id instanceof String)
return new ORecordId((String) id);
}
}
return null;
}
use of com.orientechnologies.orient.core.exception.OConfigurationException in project orientdb by orientechnologies.
the class OServer method activate.
@SuppressWarnings("unchecked")
public OServer activate() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
try {
serverSecurity = new ODefaultServerSecurity(this, serverCfg);
Orient.instance().setSecurity(serverSecurity);
// Checks to see if the OrientDB System Database exists and creates it if not.
// Make sure this happens after setSecurityFactory() is called.
initSystemDatabase();
for (OServerLifecycleListener l : lifecycleListeners) l.onBeforeActivate();
final OServerConfiguration configuration = serverCfg.getConfiguration();
tokenHandler = new OTokenHandlerImpl(this);
if (configuration.network != null) {
// REGISTER/CREATE SOCKET FACTORIES
if (configuration.network.sockets != null) {
for (OServerSocketFactoryConfiguration f : configuration.network.sockets) {
Class<? extends OServerSocketFactory> fClass = (Class<? extends OServerSocketFactory>) loadClass(f.implementation);
OServerSocketFactory factory = fClass.newInstance();
try {
factory.config(f.name, f.parameters);
networkSocketFactories.put(f.name, factory);
} catch (OConfigurationException e) {
OLogManager.instance().error(this, "Error creating socket factory", e);
}
}
}
// REGISTER PROTOCOLS
for (OServerNetworkProtocolConfiguration p : configuration.network.protocols) networkProtocols.put(p.name, (Class<? extends ONetworkProtocol>) loadClass(p.implementation));
// STARTUP LISTENERS
for (OServerNetworkListenerConfiguration l : configuration.network.listeners) networkListeners.add(new OServerNetworkListener(this, networkSocketFactories.get(l.socket), l.ipAddress, l.portRange, l.protocol, networkProtocols.get(l.protocol), l.parameters, l.commands));
} else
OLogManager.instance().warn(this, "Network configuration was not found");
try {
loadStorages();
loadUsers();
loadDatabases();
} catch (IOException e) {
final String message = "Error on reading server configuration";
OLogManager.instance().error(this, message, e);
throw OException.wrapException(new OConfigurationException(message), e);
}
registerPlugins();
for (OServerLifecycleListener l : lifecycleListeners) l.onAfterActivate();
running = true;
String httpAddress = "localhost:2480";
for (OServerNetworkListener listener : getNetworkListeners()) {
if (listener.getProtocolType().getName().equals(ONetworkProtocolHttpDb.class.getName()))
httpAddress = listener.getListeningAddress(true);
}
OLogManager.instance().info(this, "OrientDB Studio available at $ANSI{blue http://%s/studio/index.html}", httpAddress);
OLogManager.instance().info(this, "$ANSI{green:italic OrientDB Server is active} v" + OConstants.getVersion() + ".");
} catch (ClassNotFoundException e) {
running = false;
throw e;
} catch (InstantiationException e) {
running = false;
throw e;
} catch (IllegalAccessException e) {
running = false;
throw e;
} catch (RuntimeException e) {
running = false;
throw e;
} finally {
startupLatch.countDown();
}
return this;
}
use of com.orientechnologies.orient.core.exception.OConfigurationException in project orientdb by orientechnologies.
the class ODistributedConfiguration method getDataCenterServers.
/**
* Returns the list of servers in a data center.
*
* @param dataCenter
* Data center name
* @throws OConfigurationException
* if the list of servers is not found in data center configuration
*/
public List<String> getDataCenterServers(final String dataCenter) {
synchronized (configuration) {
final ODocument dc = getDataCenterConfiguration(dataCenter);
final List<String> servers = dc.field(SERVERS);
if (servers == null || servers.isEmpty())
throw new OConfigurationException("Data center '" + dataCenter + "' does not contain any server in distributed database configuration");
return new ArrayList<String>(servers);
}
}
Aggregations