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