diff options
Diffstat (limited to 'java/java/client/test/src/org/apache/qpid/test/unit/jndi/referenceabletest/Unbind.java')
-rw-r--r-- | java/java/client/test/src/org/apache/qpid/test/unit/jndi/referenceabletest/Unbind.java | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/java/java/client/test/src/org/apache/qpid/test/unit/jndi/referenceabletest/Unbind.java b/java/java/client/test/src/org/apache/qpid/test/unit/jndi/referenceabletest/Unbind.java new file mode 100644 index 0000000000..869bc55d8f --- /dev/null +++ b/java/java/client/test/src/org/apache/qpid/test/unit/jndi/referenceabletest/Unbind.java @@ -0,0 +1,173 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.test.unit.jndi.referenceabletest; + +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NameNotFoundException; +import javax.naming.NamingException; +import javax.jms.Connection; +import javax.jms.JMSException; +import java.io.File; +import java.util.Hashtable; + +/** + * Usage: To run these you need to have the sun JNDI SPI for the FileSystem. + * This can be downloaded from sun here: + * http://java.sun.com/products/jndi/downloads/index.html + * Click : Download JNDI 1.2.1 & More button + * Download: File System Service Provider, 1.2 Beta 3 + * and add the two jars in the lib dir to your class path. + * <p/> + * Also you need to create the directory /temp/qpid-jndi-test + */ +class Unbind +{ + public static final String DEFAULT_PROVIDER_FILE_PATH = System.getProperty("java.io.tmpdir") + "/JNDITest" + System.currentTimeMillis(); + public static final String DEFAULT_PROVIDER_URL = "file://" + DEFAULT_PROVIDER_FILE_PATH; + public String PROVIDER_URL = DEFAULT_PROVIDER_URL; + + boolean _unbound = false; + + public Unbind() + { + this(false, DEFAULT_PROVIDER_URL); + } + + public Unbind(Boolean output) + { + this(output, DEFAULT_PROVIDER_URL); + } + + public Unbind(String provider) + { + this(false, provider); + } + + public Unbind(boolean output, String providerURL) + { + PROVIDER_URL = providerURL; + // Set up the environment for creating the initial context + Hashtable env = new Hashtable(11); + env.put(Context.INITIAL_CONTEXT_FACTORY, + "com.sun.jndi.fscontext.RefFSContextFactory"); + env.put(Context.PROVIDER_URL, PROVIDER_URL); + + File file = new File(PROVIDER_URL.substring(PROVIDER_URL.indexOf("://") + 3)); + + if (file.exists() && !file.isDirectory()) + { + System.out.println("Couldn't make directory file already exists"); + return; + } + else + { + if (!file.exists()) + { + if (!file.mkdirs()) + { + System.out.println("Couldn't make directory"); + return; + } + } + } + + try + { + // Create the initial context + Context ctx = new InitialContext(env); + + // Remove the binding + ctx.unbind("ConnectionFactory"); + ctx.unbind("Connection"); + ctx.unbind("Topic"); + + // Check that it is gone + Object obj = null; + try + { + obj = ctx.lookup("ConnectionFactory"); + } + catch (NameNotFoundException ne) + { + if (output) + { + System.out.println("unbind ConnectionFactory successful"); + } + try + { + obj = ctx.lookup("Connection"); + try + { + ((Connection) obj).close(); + } + catch (JMSException e) + { + //ignore just need to close + } + } + catch (NameNotFoundException ne2) + { + if (output) + { + System.out.println("unbind Connection successful"); + } + + try + { + obj = ctx.lookup("Topic"); + } + catch (NameNotFoundException ne3) + { + if (output) + { + System.out.println("unbind Topic successful"); + } + _unbound = true; + } + } + } + + //System.out.println("unbind failed; object still there: " + obj); + + // Close the context when we're done + + ctx.close(); + + } + catch (NamingException e) + { + System.out.println("Operation failed: " + e); + } + } + + public boolean unbound() + { + return _unbound; + } + + public static void main(String[] args) + { + + new Unbind(true); + } +} + |