⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 namingcontextimpl.java

📁 java1.6众多例子参考
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
    }   /**   * Resolve a name in this NamingContext and return the object reference   * bound to the name. If the name contains multiple (n) components,   * the first component will be resolved in this NamingContext and the   * remaining components resolved in the resulting NamingContext, provided   * that the NamingContext bound to the first component of the name was   * bound with bind_context().   * @param n a sequence of NameComponents which is the name to be resolved.   * @return the object reference bound under the supplied name.   * @exception org.omg.CosNaming.NamingContextPackage.NotFound A name with multiple   * components was supplied, but the first component could not be   * resolved.   * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Could not proceed   * in resolving the n-1 components of the supplied name.   * @exception org.omg.CosNaming.NamingContextPackage.InvalidName The supplied name   * is invalid (i.e., has length less than 1).   * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.   * @see doResolve   */   public  org.omg.CORBA.Object resolve(NameComponent[] n)        throws org.omg.CosNaming.NamingContextPackage.NotFound,               org.omg.CosNaming.NamingContextPackage.CannotProceed,               org.omg.CosNaming.NamingContextPackage.InvalidName    {        if (debug)            dprint("resolve " + nameToString(n));        // doResolve actually resolves        NamingContextDataStore impl = (NamingContextDataStore)this;        return doResolve(impl,n);    }   /**   * Remove a binding from this NamingContext. If the name contains   * multiple (n) components, the first n-1 components will be resolved   * from this NamingContext and the final component unbound in   * the resulting NamingContext.   * @param n a sequence of NameComponents which is the name to be unbound.   * @exception org.omg.CosNaming.NamingContextPackage.NotFound A name with multiple   * components was supplied, but the first component could not be   * resolved.   * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Could not proceed   * in resolving the n-1 components of the supplied name.   * @exception org.omg.CosNaming.NamingContextPackage.InvalidName The supplied name   * is invalid (i.e., has length less than 1).   * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.   * @see doUnbind   */   public  void unbind(NameComponent[] n)        throws org.omg.CosNaming.NamingContextPackage.NotFound,               org.omg.CosNaming.NamingContextPackage.CannotProceed,               org.omg.CosNaming.NamingContextPackage.InvalidName    {        if (debug)            dprint("unbind " + nameToString(n));        // doUnbind actually unbinds        NamingContextDataStore impl = (NamingContextDataStore)this;        doUnbind(impl,n);    }   /**   * List the contents of this NamingContest. A sequence of bindings   * is returned (a BindingList) containing up to the number of requested   * bindings, and a BindingIterator object reference is returned for   * iterating over the remaining bindings.   * @param how_many The number of requested bindings in the BindingList.   * @param bl The BindingList as an out parameter.   * @param bi The BindingIterator as an out parameter.   * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.   * @see BindingListHolder   * @see BindingIteratorImpl   */    public  void list(int how_many, BindingListHolder bl, BindingIteratorHolder bi)    {        if (debug)            dprint("list(" + how_many + ")");        // List actually generates the list        NamingContextDataStore impl = (NamingContextDataStore)this;        synchronized (impl) {            impl.List(how_many,bl,bi);        }        if (debug && bl.value != null)            dprint("list(" + how_many + ") -> bindings[" + bl.value.length +                   "] + iterator: " + bi.value);    }   /**   * Create a NamingContext object and return its object reference.   * @return an object reference for a new NamingContext object implemented   * by this Name Server.   * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.   */    public synchronized NamingContext new_context()    {        // Create actually creates a new naming context        if (debug)            dprint("new_context()");        NamingContextDataStore impl = (NamingContextDataStore)this;        synchronized (impl) {            return impl.NewContext();        }    }   /**   * Create a new NamingContext, bind it in this Naming Context and return   * its object reference. This is equivalent to using new_context() followed   * by bind_context() with the supplied name and the object reference for   * the newly created NamingContext.   * @param n a sequence of NameComponents which is the name to be unbound.   * @return an object reference for a new NamingContext object implemented   * by this Name Server, bound to the supplied name.   * @exception org.omg.CosNaming.NamingContextPackage.AlreadyBound An object is   * already bound under the supplied name.   * @exception org.omg.CosNaming.NamingContextPackage.NotFound A name with multiple   * components was supplied, but the first component could not be   * resolved.   * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Could not proceed   * in resolving the n-1 components of the supplied name.   * @exception org.omg.CosNaming.NamingContextPackage.InvalidName The supplied name   * is invalid (i.e., has length less than 1).   * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.   * @see new_context   * @see bind_context   */    public  NamingContext bind_new_context(NameComponent[] n)        throws org.omg.CosNaming.NamingContextPackage.NotFound,               org.omg.CosNaming.NamingContextPackage.AlreadyBound,               org.omg.CosNaming.NamingContextPackage.CannotProceed,               org.omg.CosNaming.NamingContextPackage.InvalidName    {        NamingContext nc = null;        NamingContext rnc = null;        try {            if (debug)                dprint("bind_new_context " + nameToString(n));            // The obvious solution:            nc = this.new_context();            this.bind_context(n,nc);            rnc = nc;            nc = null;        } finally {            try {                if(nc != null)                    nc.destroy();            } catch (org.omg.CosNaming.NamingContextPackage.NotEmpty e) {            }        }        return rnc;    }    /**   * Destroy this NamingContext object. If this NamingContext contains   * no bindings, the NamingContext is deleted.   * @exception org.omg.CosNaming.NamingContextPackage.NotEmpty This NamingContext   * is not empty (i.e., contains bindings).   * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.   */    public  void destroy()        throws org.omg.CosNaming.NamingContextPackage.NotEmpty    {        if (debug)            dprint("destroy ");        NamingContextDataStore impl = (NamingContextDataStore)this;        synchronized (impl) {            if (impl.IsEmpty() == true)                // The context is empty so it can be destroyed                impl.Destroy();            else                // This context is not empty!                throw new org.omg.CosNaming.NamingContextPackage.NotEmpty();        }    }      /**   * Implements all four flavors of binding. It uses Resolve() to   * check if a binding already exists (for bind and bind_context), and   * unbind() to ensure that a binding does not already exist.   * If the length of the name is 1, then Bind() is called with   * the name and the object to bind. Otherwise, the first component   * of the name is resolved in this NamingContext and the appropriate   * form of bind passed to the resulting NamingContext.   * This method is static for maximal reuse - even for extended naming   * context implementations where the recursive semantics still apply.   * @param impl an implementation of NamingContextDataStore   * @param n a sequence of NameComponents which is the name under which   * the object will be bound.   * @param obj the object reference to be bound.   * @param rebind Replace an existing binding or not.   * @param bt Type of binding (as object or as context).   * @exception org.omg.CosNaming.NamingContextPackage.NotFound A name with multiple   * components was supplied, but the first component could not be   * resolved.   * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Could not proceed   * in resolving the first component of the supplied name.   * @exception org.omg.CosNaming.NamingContextPackage.InvalidName The supplied name   * is invalid (i.e., has length less than 1).   * @exception org.omg.CosNaming.NamingContextPackage.AlreadyBound An object is   * already bound under the supplied name.   * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.   * @see resolve   * @see unbind   * @see bind   * @see bind_context   * @see rebind   * @see rebind_context   */    private void doBind(NamingContextDataStore impl,                              NameComponent[] n,                              org.omg.CORBA.Object obj,                              boolean rebind,                              org.omg.CosNaming.BindingType bt)        throws org.omg.CosNaming.NamingContextPackage.NotFound,               org.omg.CosNaming.NamingContextPackage.CannotProceed,               org.omg.CosNaming.NamingContextPackage.InvalidName,               org.omg.CosNaming.NamingContextPackage.AlreadyBound    {        // Valid name?        if (n.length < 1)            throw new org.omg.CosNaming.NamingContextPackage.InvalidName();    // At bottom level?        if (n.length == 1) {            // The identifier must be set            if( (n[0].id.length() == 0) && (n[0].kind.length() == 0) )                 throw new org.omg.CosNaming.NamingContextPackage.InvalidName();            // Ensure synchronization of backend            synchronized (impl) {                // Yes: bind object in this context under the name                BindingTypeHolder bth = new BindingTypeHolder();                if (rebind) {                    org.omg.CORBA.Object objRef = impl.Resolve( n[0], bth );                    if( objRef != null ) {                        // Refer Naming Service Doc:00-11-01 section 2.2.3.4                        // If there is an object already bound with the name                        // and the binding type is not ncontext a NotFound                        // Exception with a reason of not a context has to be                        // raised.                        // Fix for bug Id: 4384628                        if ( bth.value.value() == BindingType.nobject.value() ) {                            if ( bt.value() == BindingType.ncontext.value() ) {                                throw new NotFound(NotFoundReason.not_context, n);                            }                        } else {                            // Previously a Context was bound and now trying to                            // bind Object. It is invalid.                            if ( bt.value() == BindingType.nobject.value() ) {                                throw new NotFound(NotFoundReason.not_object, n);                            }                        }                        impl.Unbind(n[0]);                    }                } else {                    if (impl.Resolve(n[0],bth) != null)                        throw new org.omg.CosNaming.NamingContextPackage.AlreadyBound();                }                // Now there are no other bindings under this name                impl.Bind(n[0],obj,bt);            }        } else {            // No: bind in a different context            NamingContext context = resolveFirstAsContext(impl,n);            // Compute tail            NameComponent[] tail = new NameComponent[n.length - 1];            System.arraycopy(n,1,tail,0,n.length-1);                  // How should we propagate the bind            switch (bt.value()) {            case BindingType._nobject:                {                    // Bind as object                    if (rebind)                        context.rebind(tail,obj);                    else                        context.bind(tail,obj);                }                break;            case BindingType._ncontext:                {                    // Narrow to a naming context using Java casts. It must work.                    NamingContext objContext = (NamingContext)obj;                    // Bind as context                    if (rebind)                        context.rebind_context(tail,objContext);                    else                        context.bind_context(tail,objContext);                }                break;            default:                // This should not happen		throw updateWrapper.namingCtxBadBindingtype() ;            }        }    }   /**   * Implements resolving names in this NamingContext. The first component   * of the supplied name is resolved in this NamingContext by calling   * Resolve(). If there are no more components in the name, the   * resulting object reference is returned. Otherwise, the resulting object   * reference must have been bound as a context and be narrowable to   * a NamingContext. If this is the case, the remaining   * components of the name is resolved in the resulting NamingContext.   * This method is static for maximal reuse - even for extended naming   * context implementations where the recursive semantics still apply.   * @param impl an implementation of NamingContextDataStore   * @param n a sequence of NameComponents which is the name to be resolved.   * @return the object reference bound under the supplied name.   * @exception org.omg.CosNaming.NamingContextPackage.NotFound A name with multiple   * components was supplied, but the first component could not be   * resolved.   * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Could not proceed   * in resolving the first component of the supplied name.   * @exception org.omg.CosNaming.NamingContextPackage.InvalidName The supplied name   * is invalid (i.e., has length less than 1).   * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.   * @see resolve   */    public static org.omg.CORBA.Object doResolve(NamingContextDataStore impl,                                                 NameComponent[] n)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -