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:45 UTC

[db-jdo] branch jdo-827-jndi-support created (now 78899db4)

This is an automated email from the ASF dual-hosted git repository.

tilmannz pushed a change to branch jdo-827-jndi-support
in repository https://gitbox.apache.org/repos/asf/db-jdo.git


      at 78899db4 Dummy JNDI

This branch includes the following new commits:

     new 78899db4 Dummy JNDI

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[db-jdo] 01/01: Dummy JNDI

Posted by ti...@apache.org.
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