You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by ti...@apache.org on 2023/06/29 14:07:46 UTC
[db-jdo] 01/01: Dummy JNDI
This is an automated email from the ASF dual-hosted git repository.
tilmannz pushed a commit to branch jdo-827-jndi-support
in repository https://gitbox.apache.org/repos/asf/db-jdo.git
commit 78899db401aca044c47d641bff3cbfadc330b65e
Author: Tilmann <zo...@gmx.de>
AuthorDate: Thu Jun 29 16:07:32 2023 +0200
Dummy JNDI
---
.../org/apache/jdo/tck/util/jndi/DummyContext.java | 173 +++++++++++++++++++++
.../jdo/tck/util/jndi/DummyContextFactory.java | 54 +++++++
tck/src/main/resources/conf/jndi.properties | 10 +-
3 files changed, 236 insertions(+), 1 deletion(-)
diff --git a/tck/src/main/java/org/apache/jdo/tck/util/jndi/DummyContext.java b/tck/src/main/java/org/apache/jdo/tck/util/jndi/DummyContext.java
new file mode 100644
index 00000000..aa3ed611
--- /dev/null
+++ b/tck/src/main/java/org/apache/jdo/tck/util/jndi/DummyContext.java
@@ -0,0 +1,173 @@
+package org.apache.jdo.tck.util.jndi;
+
+import javax.naming.*;
+import java.util.Hashtable;
+
+public class DummyContext implements Context {
+ private Hashtable<String, Object> map;
+
+ public DummyContext(Hashtable<String, Object> environment) {
+ map = environment;
+ }
+
+ @Override
+ public Object lookup(Name name) throws NamingException {
+ throw new UnsupportedOperationException("lookup(name):" + name.toString());
+ }
+
+ @Override
+ public Object lookup(String name) throws NamingException {
+ // lookup: java:comp/BeanManager
+ if (!map.containsKey(name)) {
+ throw new NamingException("lookup: " + name);
+ }
+ return map.get(name);
+ }
+
+ @Override
+ public void bind(Name name, Object obj) throws NamingException {
+ throw new UnsupportedOperationException("bind(name):" + name.toString());
+ }
+
+ @Override
+ public void bind(String name, Object obj) throws NamingException {
+ if (map.containsKey(name)) {
+ throw new IllegalStateException("bind: " + name);
+ }
+ map.put(name, obj);
+ }
+
+ @Override
+ public void rebind(Name name, Object obj) throws NamingException {
+ throw new UnsupportedOperationException("rebind(name):" + name.toString());
+
+ }
+
+ @Override
+ public void rebind(String name, Object obj) throws NamingException {
+ if (!map.containsKey(name)) {
+ throw new IllegalStateException("rebind: " + name);
+ }
+ map.put(name, obj);
+ }
+
+ @Override
+ public void unbind(Name name) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+ }
+
+ @Override
+ public void unbind(String name) throws NamingException {
+ // unbind: C:\work\github\db-jdo\tck\target\classes\pmf.ser
+ map.remove(name);
+ }
+
+ @Override
+ public void rename(Name oldName, Name newName) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + oldName.toString());
+
+ }
+
+ @Override
+ public void rename(String oldName, String newName) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + oldName.toString());
+
+ }
+
+ @Override
+ public NamingEnumeration<NameClassPair> list(Name name) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+ }
+
+ @Override
+ public NamingEnumeration<NameClassPair> list(String name) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+ }
+
+ @Override
+ public NamingEnumeration<Binding> listBindings(Name name) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+ }
+
+ @Override
+ public NamingEnumeration<Binding> listBindings(String name) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+ }
+
+ @Override
+ public void destroySubcontext(Name name) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+
+ }
+
+ @Override
+ public void destroySubcontext(String name) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+
+ }
+
+ @Override
+ public Context createSubcontext(Name name) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+ }
+
+ @Override
+ public Context createSubcontext(String name) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+ }
+
+ @Override
+ public Object lookupLink(Name name) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+ }
+
+ @Override
+ public Object lookupLink(String name) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+ }
+
+ @Override
+ public NameParser getNameParser(Name name) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+ }
+
+ @Override
+ public NameParser getNameParser(String name) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+ }
+
+ @Override
+ public Name composeName(Name name, Name prefix) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+ }
+
+ @Override
+ public String composeName(String name, String prefix) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + name.toString());
+ }
+
+ @Override
+ public Object addToEnvironment(String propName, Object propVal) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + propName.toString());
+ }
+
+ @Override
+ public Object removeFromEnvironment(String propName) throws NamingException {
+ throw new UnsupportedOperationException("unbind(name):" + propName.toString());
+ }
+
+ @Override
+ public Hashtable<?, ?> getEnvironment() throws NamingException {
+ throw new UnsupportedOperationException("getEnvironment()");
+ }
+
+ @Override
+ public void close() throws NamingException {
+
+ }
+
+ @Override
+ public String getNameInNamespace() throws NamingException {
+ throw new UnsupportedOperationException("getNameInNamespace()");
+ }
+}
diff --git a/tck/src/main/java/org/apache/jdo/tck/util/jndi/DummyContextFactory.java b/tck/src/main/java/org/apache/jdo/tck/util/jndi/DummyContextFactory.java
new file mode 100644
index 00000000..8512e9d5
--- /dev/null
+++ b/tck/src/main/java/org/apache/jdo/tck/util/jndi/DummyContextFactory.java
@@ -0,0 +1,54 @@
+package org.apache.jdo.tck.util.jndi;
+
+import javax.naming.Context;
+import javax.naming.NamingException;
+import javax.naming.spi.InitialContextFactory;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Properties;
+
+public class DummyContextFactory implements InitialContextFactory {
+
+ @Override
+ public Context getInitialContext(Hashtable<?, ?> environment) throws NamingException {
+ // jndiName: C:\work\github\db-jdo\tck\target\classes\pmf.ser
+ // e: java.naming.factory.initial -> org.apache.jdo.tck.util.jndi.DummyContextFactory
+ StringBuffer sb = new StringBuffer();
+ sb.append("GET_INITIAL_CONTEXT ############################################\n");
+ for (Map.Entry e : environment.entrySet()) {
+ sb.append("e: " + e.getKey() + " -> " + e.getValue() + "\n");
+ }
+ //if (true) throw new UnsupportedOperationException("GIC: " + sb.toString());
+ return new DummyContext((Hashtable<String, Object>) environment);
+ }
+
+ private Properties loadProperties(String fileName) {
+ if (fileName == null) {
+ fileName = System.getProperty("user.home") + "/.jdo/PMFProperties.properties";
+ }
+ Properties props = new Properties();
+ InputStream propStream = null;
+ try {
+ propStream = new FileInputStream(fileName);
+ } catch (IOException ex) {
+ System.out.println("Could not open properties file \"" + fileName + "\"");
+ System.out.println(
+ "Please specify a system property PMFProperties "
+ + "with the PMF properties file name as value "
+ + "(defaults to {user.home}/.jdo/PMFProperties.properties)");
+ System.exit(1);
+ }
+ try {
+ props.load(propStream);
+ } catch (IOException ex) {
+ System.out.println("Error loading properties file \"" + fileName + "\"");
+ ex.printStackTrace();
+ System.exit(1);
+ }
+ return props;
+ }
+
+}
diff --git a/tck/src/main/resources/conf/jndi.properties b/tck/src/main/resources/conf/jndi.properties
index 91179f3b..8aecdb68 100644
--- a/tck/src/main/resources/conf/jndi.properties
+++ b/tck/src/main/resources/conf/jndi.properties
@@ -14,4 +14,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory
+#java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory
+
+#java.naming.factory.initial=org.osjava.sj.SimpleContextFactory
+#org.osjava.sj.jndi.ignoreClose = true
+
+#java.naming.factory.initial=com.dattack.naming.standalone.StandaloneContextFactory
+#com.dattack.naming.standalone.StandaloneContextFactory.resources.directory=
+
+java.naming.factory.initial=org.apache.jdo.tck.util.jndi.DummyContextFactory