use of javax.naming.Name in project hibernate-orm by hibernate.
the class JndiServiceImpl method addListener.
@Override
public void addListener(String jndiName, NamespaceChangeListener listener) {
final InitialContext initialContext = buildInitialContext();
final Name name = parseName(jndiName, initialContext);
try {
((EventContext) initialContext).addNamingListener(name, EventContext.OBJECT_SCOPE, listener);
} catch (Exception e) {
throw new JndiException("Unable to bind listener to namespace [" + name + "]", e);
} finally {
cleanUp(initialContext);
}
}
use of javax.naming.Name in project hibernate-orm by hibernate.
the class JndiServiceImpl method locate.
@Override
public Object locate(String jndiName) {
final InitialContext initialContext = buildInitialContext();
final Name name = parseName(jndiName, initialContext);
try {
return initialContext.lookup(name);
} catch (NamingException e) {
throw new JndiException("Unable to lookup JNDI name [" + jndiName + "]", e);
} finally {
cleanUp(initialContext);
}
}
use of javax.naming.Name in project hibernate-orm by hibernate.
the class JndiServiceImpl method unbind.
@Override
public void unbind(String jndiName) {
final InitialContext initialContext = buildInitialContext();
final Name name = parseName(jndiName, initialContext);
try {
initialContext.unbind(name);
} catch (Exception e) {
throw new JndiException("Error performing unbind [" + name + "]", e);
} finally {
cleanUp(initialContext);
}
}
use of javax.naming.Name in project ACS by ACS-Community.
the class ManagerImpl method bind.
/**
* Bind object to remote directory.
*
* Use INS syntax specified in the INS specification.
* In short, the syntax is that components are left-to-right slash ('/') separated and case-sensitive.
* The id and kind of each component are separated by the period character ('.').
*
* @param remoteDirectory remote directory context to be used.
* @param name name of the object, code non-<code>null</code>
* @param object object to be binded
*/
private void bind(Context remoteDirectory, String name, String type, Object object) {
assert (name != null);
// do not bind interdomain names
if (name.startsWith(CURL_URI_SCHEMA))
return;
if (remoteDirectory != null) {
try {
// hierarchical name check
int pos = name.indexOf('/');
if (pos != -1) {
if (pos == 0 || pos == name.length())
throw new IllegalArgumentException("Invalid hierarchical name '" + name + "'.");
String parent = name.substring(0, pos);
String child = name.substring(pos + 1);
// lookup for subcontext, if not found create one
Context parentContext = null;
try {
parentContext = (Context) remoteDirectory.lookup(parent);
} catch (NameNotFoundException nnfe) {
// noop
}
if (parentContext == null) {
parentContext = remoteDirectory.createSubcontext(parent);
/// @todo temp. commented out
//generateHiearchyContexts(remoteDirectory, parent, parentContext);
}
// delegate
bind(parentContext, child, type, object);
return;
}
NameParser parser = remoteDirectory.getNameParser("");
Name n;
if (type != null)
n = parser.parse(name + "." + type);
else
n = parser.parse(name);
// special case
if (name.endsWith(".D")) {
remoteDirectory.rebind(n, object);
/// @todo temp. commented out
//generateHiearchyContexts(remoteDirectory, name, (Context)remoteDirectory.lookup(name));
} else
remoteDirectory.bind(n, object);
} catch (NameAlreadyBoundException nabe) {
rebind(remoteDirectory, name, type, object);
} catch (NamingException ne) {
CoreException ce = new CoreException("Failed to bind name '" + name + "' to the remote directory.", ne);
logger.log(Level.FINE, ce.getMessage(), ce);
}
}
}
use of javax.naming.Name in project ACS by ACS-Community.
the class ManagerImpl method lookup.
/**
* Lookups for an object in remote directory.
*
* Use INS syntax specified in the INS specification.
* In short, the syntax is that components are left-to-right slash ('/') separated and case-sensitive.
* The id and kind of each component are separated by the period character ('.').
*
* @param remoteDirectory remote directory context to be used.
* @param name name of the object, code non-<code>null</code>
* @param type type of the object
* @return object object found in the remote directory, <code>null<code> if nout found
*/
private Object lookup(Context remoteDirectory, String name, String type) {
assert (name != null);
// do not look for interdomain names
if (name.startsWith(CURL_URI_SCHEMA))
return null;
Object resolved = null;
if (remoteDirectory != null) {
try {
NameParser parser = remoteDirectory.getNameParser("");
Name n;
if (type != null)
n = parser.parse(name + "." + type);
else
n = parser.parse(name);
resolved = remoteDirectory.lookup(n);
} catch (NamingException ne) {
CoreException ce = new CoreException("Failed to lookup name '" + name + "' in the remote directory.", ne);
logger.log(Level.FINE, ce.getMessage(), ce);
}
}
return resolved;
}
Aggregations