# org.omg.CosNaming.NamingContextExtPackage

***

**1. Retrieving Context Information**

```java
import org.omg.CosNaming.NamingContextExtPackage.InvalidAddress;

NamingContextExt context = ...;
try {
    String name = context.to_string();
    System.out.println("Context name: " + name);
} catch (InvalidAddress e) {
    System.err.println("Failed to retrieve context name: " + e.getMessage());
}
```

**2. Binding Objects to Names**

```java
import org.omg.CosNaming.NamingContextExtPackage.AddressHelper;

NamingContextExt context = ...;
NameComponent[] name = ...;
Object obj = ...;
context.bind(name, obj);
```

**3. Resolving Names to Objects**

```java
import org.omg.CosNaming.NamingContextExtPackage.AddressHelper;

NamingContextExt context = ...;
NameComponent[] name = ...;
Object obj = context.resolve(name);
```

**4. Searching for Objects**

```java
import org.omg.CosNaming.NamingContextExtPackage.BindingIteratorHolder;
import org.omg.CosNaming.NamingContextExtPackage.BindingList;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;

NamingContextExt context = ...;
String searchPattern = ...;
NameComponent[] bindingName = ...;
BindingIteratorHolder iterator = new BindingIteratorHolder();
BindingList bindings = context.list(bindingName, searchPattern, iterator);
```

**5. Binding Objects with Quality-of-Service (QoS) Policies**

```java
import org.omg.CosNaming.NamingContextExtPackage.AddressHelper;
import org.omg.CosNaming.NamingContextExtPackage.BindingType;
import org.omg.CosNaming.NamingContextExtPackage.ContextProperties;
import org.omg.CosNaming.NamingContextExtPackage.ContextPropertiesHelper;
import org.omg.CosNaming.NamingContextExtPackage.InvalidAddress;
import org.omg.CORBA.Any;

NamingContextExt context = ...;
NameComponent[] name = ...;
Object obj = ...;
BindingType bindingType = BindingType.no_exception;
Any[] properties = ...;
ContextProperties ctxProps = ContextPropertiesHelper.extract(properties);
context.bind_context(name, obj, bindingType, ctxProps);
```

**6. Listing Bound Objects with QoS Policies**

```java
import org.omg.CosNaming.NamingContextExtPackage.BindingIteratorHolder;
import org.omg.CosNaming.NamingContextExtPackage.BindingList;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;

NamingContextExt context = ...;
String searchPattern = ...;
NameComponent[] bindingName = ...;
BindingType bindingType = BindingType.no_exception;
BindingIteratorHolder iterator = new BindingIteratorHolder();
BindingList bindings = context.list_contexts(bindingName, searchPattern, bindingType, iterator);
```

**7. Handling Invalid Addresses**

```java
import org.omg.CosNaming.NamingContextExtPackage.InvalidAddress;

NamingContextExt context = ...;
try {
    context.to_string();
} catch (InvalidAddress e) {
    System.err.println("Invalid address: " + e.getMessage());
}
```

**8. Using a Policy List**

```java
import org.omg.CosNaming.NamingContextExtPackage.InvalidAddress;
import org.omg.CosNaming.NamingContextExtPackage.PolicyList;

NamingContextExt context = ...;
PolicyList[] policies = ...;
try {
    context.to_string(policies);
} catch (InvalidAddress e) {
    System.err.println("Invalid address: " + e.getMessage());
}
```

**9. Creating a Name Component**

```java
import org.omg.CosNaming.NamingContextExtPackage.NameComponent;
import org.omg.CosNaming.NamingContextExtPackage.NameComponentHelper;

String id = "foo";
String kind = "bar";
NameComponent nameComponent = NameComponentHelper.create(id, kind);
```

**10. Creating a Name**

```java
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;

NameComponent[] nameComponents = ...;
Name name = NameHelper.sequence(nameComponents);
```

**11. Converting a Name to a String**

```java
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;

Name name = ...;
String nameString = NameHelper.to_string(name);
```

**12. Converting a String to a Name**

```java
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;

String nameString = ...;
Name name = NameHelper.from_string(nameString);
```

**13. Creating a Binding Iterator**

```java
import org.omg.CosNaming.NamingContextExtPackage.BindingIterator;
import org.omg.CosNaming.NamingContextExtPackage.BindingIteratorHelper;

BindingIterator iterator = BindingIteratorHelper.create();
```

**14. Adding a Binding to a Binding List**

```java
import org.omg.CosNaming.NamingContextExtPackage.Binding;
import org.omg.CosNaming.NamingContextExtPackage.BindingIteratorHolder;
import org.omg.CosNaming.NamingContextExtPackage.BindingList;
import org.omg.CosNaming.NamingContextExtPackage.BindingListHelper;

Binding binding = ...;
BindingList bindings = BindingListHelper.create();
bindings.add(binding);
BindingIteratorHolder iterator = new BindingIteratorHolder();
iterator.value = bindings;
```

**15. Creating a Context Properties Object**

```java
import org.omg.CosNaming.NamingContextExtPackage.ContextProperties;
import org.omg.CosNaming.NamingContextExtPackage.ContextPropertiesHelper;

String propertyName1 = "foo";
String propertyValue1 = "bar";
String propertyName2 = "baz";
String propertyValue2 = "quux";
Any propertyValueAny1 = ...;
Any propertyValueAny2 = ...;
ContextProperties ctxProps = ContextPropertiesHelper.create(
    new String[]{propertyName1, propertyName2},
    new Any[]{propertyValueAny1, propertyValueAny2}
);
```

**16. Retrieving a Property Value from a Context Properties Object**

```java
import org.omg.CosNaming.NamingContextExtPackage.ContextProperties;

ContextProperties ctxProps = ...;
String propertyName = "foo";
Any propertyValueAny = ctxProps.get_property(propertyName);
```

**17. Binding an Object to a Context**

```java
import org.omg.CosNaming.NamingContextExtPackage.InvalidAddress;

NamingContextExt context = ...;
NameComponent[] contextName = ...;
NamingContextExt subContext = ...;
context.bind_context(contextName, subContext);
```

**18. Resolving a Context**

```java
import org.omg.CosNaming.NamingContextExtPackage.InvalidAddress;

NamingContextExt context = ...;
NameComponent[] contextName = ...;
NamingContextExt subContext = context.resolve_context(contextName);
```

**19. Unbinding an Object from a Context**

```java
import org.omg.CosNaming.NamingContextExtPackage.InvalidAddress;

NamingContextExt context = ...;
NameComponent[] name = ...;
context.unbind(name);
```

**20. Rebinding an Object**

```java
import org.omg.CosNaming.NamingContextExtPackage.InvalidAddress;

NamingContextExt context = ...;
NameComponent[] name = ...;
Object obj = ...;
context.rebind(name, obj);
```

**21. Listing the Current Context's Bindings**

```java
import org.omg.CosNaming.NamingContextExtPackage.BindingIteratorHolder;
import org.omg.CosNaming.NamingContextExtPackage.BindingList;

NamingContextExt context = ...;
BindingIteratorHolder iterator = new BindingIteratorHolder();
BindingList bindings = context.list(iterator);
```

**22. Listing the Bindings of a Subcontext**

```java
import org.omg.CosNaming.NamingContextExtPackage.BindingIteratorHolder;
import org.omg.CosNaming.NamingContextExtPackage.BindingList;

NamingContextExt context = ...;
NameComponent[] subcontextName = ...;
BindingIteratorHolder iterator = new BindingIteratorHolder();
BindingList bindings = context.list(subcontextName, iterator);
```

**23. Searching for Multiple Bindings**

```java
import org.omg.CosNaming.NamingContextExtPackage.BindingIteratorHolder;
import org.omg.CosNaming.NamingContextExtPackage.BindingList;
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;

NamingContextExt context = ...;
NameComponent[] searchName = ...;
String searchPattern = ...;
BindingIteratorHolder iterator = new BindingIteratorHolder();
BindingList bindings = context.list(searchName, searchPattern, iterator);
```

**24. Handling Context Restrictions**

```java
import org.omg.CosNaming.NamingContextExtPackage.CannotProceed;
import org.omg.CosNaming.NamingContextExtPackage.InvalidName;

NamingContextExt context = ...;
NameComponent[] name = ...;
context.bind(name, obj);
```

**25. Handling Security Violations**

```java
import org.omg.CosNaming.NamingContextExtPackage.InvalidName;
import org.omg.CosNaming.NamingContextExtPackage.NotEmpty;
import org.omg.CosNaming.NamingContextExtPackage.SecurityViolation;

NamingContextExt context = ...;
NameComponent[] name = ...;
context.bind(name, obj);
```

**26. Using a Naming Context Ext for CORBA References**

```java
import org.omg.CosNaming.NamingContextExtPackage.InvalidAddress;
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;
import org.omg.PortableInterceptor.ORBInitInfo;
import org.omg.PortableInterceptor.ORBInitializer;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;

public class ContextInterceptorInitializer implements ORBInitializer {
    @Override
    public void pre_init(ORBInitInfo info) {
        // ...
    }

    @Override
    public void post_init(ORBInitInfo info) {
        try {
            POA rootPOA = POAHelper.narrow(info.resolve_initial_references("RootPOA"));
            NamingContextExt context = ...;
            Name name = NameHelper.from_string("MyContext");
            rootPOA.activate_object(context);
            info.add_binding("MyContext", context);
        } catch (InvalidAddress e) {
            // ...
        }
    }
}
```

**27. Using a Naming Context Ext for Persistent Storage**

```java
import org.omg.CosNaming.NamingContextExtPackage.InvalidAddress;
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;

public class PersistentContextImpl extends PersistentContextPOA {
    @Override
    public void bind(Name name, Object obj) {
        // ...
    }

    @Override
    public Object resolve(Name name) {
        // ...
    }

    // ...
}

public class PersistentContextFactory {
    public static PersistentContext create(POA poa, String name) {
        PersistentContextImpl context = new PersistentContextImpl();
        try {
            poa.activate_object(context);
            Name nameObj = NameHelper.from_string(name);
            poa.root_poa().bind(nameObj, context);
            return context;
        } catch (InvalidAddress e) {
            // ...
        }
        return null;
    }
}
```

**28. Using a Naming Context Ext for Dynamic Invocation**

```java
import org.omg.CosNaming.NamingContextExtPackage.InvalidAddress;
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;
import org.omg.PortableInterceptor.ClientRequestInfo;
import org.omg.PortableInterceptor.ClientRequestInterceptor;
import org.omg.PortableInterceptor.ForwardRequest;

public class DynamicInvokerInterceptor implements ClientRequestInterceptor {
    @Override
    public String name() {
        return "DynamicInvokerInterceptor";
    }

    @Override
    public void send_request(ClientRequestInfo ri) {
        Name name = NameHelper.from_string(ri.effective_target().id());
        Object obj = ...;
        if (obj != null) {
            ri.target(new Name[]{name});
            ri.operation(ri.operation().substring(3));
        } else {
            throw new ForwardRequest();
        }
    }

    @Override
    public void receive_request(ClientRequestInfo ri) {
        // ...
    }

    @Override
    public void receive_other(ClientRequestInfo ri) {
        // ...
    }

    @Override
    public void send_poll(ClientRequestInfo ri) {
        // ...
    }

    @Override
    public void receive_reply(ClientRequestInfo ri) {
        // ...
    }
}
```

**29. Using a Naming Context Ext for Distributed Computing**

```java
import org.omg.CosNaming.NamingContextExtPackage.InvalidAddress;
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;

public class RemoteContextImpl extends RemoteContextPOA {
    @Override
    public void bind(Name name, Object obj) {
        // ...
    }

    @Override
    public Object resolve(Name name) {
        // ...
    }

    // ...
}

public class RemoteContextFactory {
    public static RemoteContext create(POA poa, String name) {
        RemoteContextImpl context = new RemoteContextImpl();
        try {
            poa.activate_object(context);
            Name nameObj = NameHelper.from_string(name);
            poa.root_poa().bind(nameObj, context);
            return context;
        } catch (InvalidAddress e) {
            // ...
        }
        return null;
    }
}
```

**30. Handling Naming Exceptions**

```java
import org.omg.CosNaming.NamingContextExtPackage.CannotProceed;
import org.omg.CosNaming.NamingContextExtPackage.InvalidName;

NamingContextExt context = ...;
NameComponent[] name = ...;
try {
    context.bind(name, obj);
} catch (CannotProceed e) {
    // ...
} catch (InvalidName e) {
    // ...
}
```

**31. Customizing Name Components**

```java
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameComponent;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;

NameComponent[] nameComponents = ...;
Name name = NameHelper.sequence(nameComponents);
NameComponent[] newNameComponents = ...;
Name newName = NameHelper.sequence(newNameComponents);
for (NameComponent nameComponent : name) {
    // ...
}
```

**32. Creating a Name Component Sequence**

```java
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameComponent;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;

NameComponent[] nameComponents = ...;
Name name = NameHelper.sequence(nameComponents);
```

**33. Converting a Name to a String Sequence**

```java
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;

Name name = ...;
String[] nameStringSequence = NameHelper.id_sequence(name);
```

**34. Converting a Name Sequence to a String Sequence**

```java
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;

Name[] names = ...;
String[][] nameStringSequences = NameHelper.id_sequences(names);
```

**35. Creating a Name**

```java
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;

String id = "foo";
String kind = "bar";
Name name = NameHelper.create(id, kind);
```

**36. Creating a Name Component**

```java
import org.omg.CosNaming.NamingContextExtPackage.NameComponent;
import org.omg.CosNaming.NamingContextExtPackage.NameComponentHelper;

String id = "foo";
String kind = "bar";
NameComponent nameComponent = NameComponentHelper.create(id, kind);
```

**37. Binding an Object**

```java
import org.omg.CosNaming.NamingContextExtPackage.Binding;
import org.omg.CosNaming.NamingContextExtPackage.BindingList;
import org.omg.CosNaming.NamingContextExtPackage.BindingListHelper;

Name name = ...;
Object obj = ...;
Binding binding = new Binding();
binding.binding_type = BindingType.no_exception;
binding.binding_name = name;
binding.binding_obj = obj;
BindingList bindings = BindingListHelper.create();
bindings.add(binding);
```

**38. Resolving an Object**

```java
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.BindingList;
import org.omg.CosNaming.NamingContextExtPackage.BindingListHelper;

Name name = ...;
BindingList bindings = BindingListHelper.create();
Object obj = ...;
for (Binding binding : bindings) {
    if (binding.binding_name.equals(name)) {
        obj = binding.binding_obj;
        break;
    }
}
```

**39. Listing Bindings**

```java
import org.omg.CosNaming.NamingContextExtPackage.BindingIterator;
import org.omg.CosNaming.NamingContextExtPackage.BindingIteratorHolder;
import org.omg.CosNaming.NamingContextExtPackage.BindingList;

BindingIteratorHolder iterator = new BindingIteratorHolder();
BindingList bindings = ...;
for (Binding binding : bindings) {
    // ...
}
```

**40. Searching for Bindings**

```java
import org.omg.CosNaming.NamingContextExtPackage.BindingIterator;
import org.omg.CosNaming.NamingContextExtPackage.BindingIteratorHolder;
import org.omg.CosNaming.NamingContextExtPackage.BindingList;

BindingIteratorHolder iterator = new BindingIteratorHolder();
BindingList bindings = ...;
String searchPattern = ...;
for (Binding binding : bindings) {
    if (binding.binding_name.matches(searchPattern)) {
        // ...
    }
}
```

**41. Using a Naming Context Ext for Namespace Management**

```java
import org.omg.CosNaming.NamingContextExtPackage.InvalidAddress;
import org.omg.CosNaming.NamingContextExtPackage.Name;
import org.omg.CosNaming.NamingContextExtPackage.NameHelper;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;
import org.omg.PortableServer.RootPOA;

public class NamespaceManagerImpl extends NamespaceManagerPOA {
    private POA poa;
    private NamingContextExt masterContext;
    private NamingContextExt[] subContexts;

    public NamespaceManagerImpl(POA poa) {
        this.poa = poa;
        this.masterContext = ...;
        this.subContexts = ...;
    }

    @Override
    public Name[] list_contexts(Name name, String searchPattern) {
        // ...
    }

    @Override
    public NamingContextExt resolve_context(Name name) {
        // ...
    }

    @Override
    public BindingIterator list_contexts(BindingIteratorHolder bih) {
        // ...
    }

    @Override
    public BindingIterator resolve_context(String name) {
        // ...
    }

    @Override
    public void bind_context(Name name, NamingContextExt context) {
        // ...
    }

    @Override
    public void rebind_context(Name name, NamingContextExt context) {
        // ...
    }

    @Override
    public void unbind_context(Name name) {
        // ...
    }

    @Override
    public void create_context(Name name) {
        // ...
    }

    @Override
    public void destroy_context(Name name) {
        // ...
    }

    // ...
}
```

**42. Using a Naming Context Ext for Dynamic Object Management**
