public org.omg.CORBA.Object resolve(NameComponent[] nc) throws NotFound, CannotProceed, InvalidName { if (this.destroyed) throw new CannotProceed(); if (nc == null || nc.length == 0) throw new InvalidName(); Name n = new Name(nc[0]); if (nc.length > 1) { org.omg.CORBA.Object next_context = (org.omg.CORBA.Object) this.contexts.get(n); if ((next_context == null) || (isDead(next_context))) throw new NotFound(NotFoundReason.missing_node, nc); NameComponent[] nc_prime = new NameComponent[nc.length - 1]; System.arraycopy(nc, 1, nc_prime, 0, nc_prime.length); // try first to call the context implementation object directly. String contextOID = this.getObjectOID(next_context); JBossNamingContext jbossContext = (contextOID == null ? null : contextImpls.get(contextOID)); if (jbossContext != null) return jbossContext.resolve(nc_prime); else return NamingContextExtHelper.narrow(next_context).resolve(nc_prime); } else { org.omg.CORBA.Object result = (org.omg.CORBA.Object) this.contexts.get(n); if (result == null) result = (org.omg.CORBA.Object) this.names.get(n); if (result == null) throw new NotFound(NotFoundReason.missing_node, n.components()); if (!noPing && isDead(result)) throw new NotFound(NotFoundReason.missing_node, n.components()); return result; } }
public NamingContext new_context() { try { // create and initialize a new context. JBossNamingContext newContextImpl = new JBossNamingContext(); newContextImpl.init(this.poa, this.doPurge, this.noPing); // create the oid for the new context and activate it with the naming service POA. String oid = new String(this.poa.servant_to_id(this)) + "/ctx" + (++this.childCount); this.poa.activate_object_with_id(oid.getBytes(), newContextImpl); // add the newly-created context to the cache. contextImpls.put(oid, newContextImpl); return NamingContextExtHelper.narrow( this.poa.create_reference_with_id( oid.getBytes(), "IDL:omg.org/CosNaming/NamingContextExt:1.0")); } catch (Exception e) { log.error("Cannot create CORBA naming context", e); return null; } }
public void bind(NameComponent[] nc, org.omg.CORBA.Object obj) throws NotFound, CannotProceed, InvalidName, AlreadyBound { if (this.destroyed) throw new CannotProceed(); if (nc == null || nc.length == 0) throw new InvalidName(); if (obj == null) throw new org.omg.CORBA.BAD_PARAM(); Name n = new Name(nc); Name ctx = n.ctxName(); NameComponent nb = n.baseNameComponent(); if (ctx == null) { if (this.names.containsKey(n)) { // if the name is still in use, try to ping the object org.omg.CORBA.Object ref = (org.omg.CORBA.Object) this.names.get(n); if (isDead(ref)) { rebind(n.components(), obj); return; } throw new AlreadyBound(); } else if (this.contexts.containsKey(n)) { // if the name is still in use, try to ping the object org.omg.CORBA.Object ref = (org.omg.CORBA.Object) this.contexts.get(n); if (isDead(ref)) unbind(n.components()); throw new AlreadyBound(); } if ((this.names.put(n, obj)) != null) throw new CannotProceed(_this(), n.components()); log.debugf("Bound name: " + n.toString()); } else { NameComponent[] ncx = new NameComponent[] {nb}; org.omg.CORBA.Object context = this.resolve(ctx.components()); // try first to call the context implementation object directly. String contextOID = this.getObjectOID(context); JBossNamingContext jbossContext = (contextOID == null ? null : contextImpls.get(contextOID)); if (jbossContext != null) jbossContext.bind(ncx, obj); else NamingContextExtHelper.narrow(context).bind(ncx, obj); } }
public void rebind_context(NameComponent[] nc, NamingContext obj) throws NotFound, CannotProceed, InvalidName { if (this.destroyed) throw new CannotProceed(); if (nc == null || nc.length == 0) throw new InvalidName(); if (obj == null) throw new org.omg.CORBA.BAD_PARAM(); Name n = new Name(nc); Name ctx = n.ctxName(); NameComponent nb = n.baseNameComponent(); if (ctx == null) { // the name is bound, but it is bound to an object - the client should have been using // rebind(). if (this.names.containsKey(n)) throw new NotFound(NotFoundReason.not_context, new NameComponent[] {nb}); // try to remove an existing context binding. org.omg.CORBA.Object ref = (org.omg.CORBA.Object) this.contexts.remove(n); if (ref != null) { ref._release(); // remove the old context from the implementation cache. String oid = this.getObjectOID(ref); if (oid != null) contextImpls.remove(oid); } this.contexts.put(n, obj); log.debugf("Re-Bound context: " + n.baseNameComponent().id); } else { // rebind in the correct context NameComponent[] ncx = new NameComponent[] {nb}; org.omg.CORBA.Object context = this.resolve(ctx.components()); // try first to call the context implementation object directly. String contextOID = this.getObjectOID(context); JBossNamingContext jbossContext = (contextOID == null ? null : contextImpls.get(contextOID)); if (jbossContext != null) jbossContext.rebind_context(ncx, obj); else NamingContextExtHelper.narrow(context).rebind_context(ncx, obj); } }
public void unbind(NameComponent[] nc) throws NotFound, CannotProceed, InvalidName { if (this.destroyed) throw new CannotProceed(); if (nc == null || nc.length == 0) throw new InvalidName(); Name n = new Name(nc); Name ctx = n.ctxName(); NameComponent nb = n.baseNameComponent(); if (ctx == null) { if (this.names.containsKey(n)) { org.omg.CORBA.Object ref = (org.omg.CORBA.Object) this.names.remove(n); ref._release(); log.debugf("Unbound: " + n.toString()); } else if (this.contexts.containsKey(n)) { org.omg.CORBA.Object ref = (org.omg.CORBA.Object) this.contexts.remove(n); ref._release(); // remove the context from the implementation cache. String oid = this.getObjectOID(ref); if (oid != null) contextImpls.remove(oid); log.debugf("Unbound: " + n.toString()); } else { if (log.isEnabled(Level.WARN)) log.warnf("Unbind failed for " + n.toString()); throw new NotFound(NotFoundReason.not_context, n.components()); } } else { NameComponent[] ncx = new NameComponent[] {nb}; org.omg.CORBA.Object context = this.resolve(ctx.components()); // try first to call the context implementation object directly. String contextOID = this.getObjectOID(context); JBossNamingContext jbossContext = (contextOID == null ? null : contextImpls.get(contextOID)); if (jbossContext != null) jbossContext.unbind(ncx); else NamingContextExtHelper.narrow(context).unbind(ncx); } }