summaryrefslogtreecommitdiff
path: root/src/com/memberwebs/ldapxml/map/LXEntry.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/memberwebs/ldapxml/map/LXEntry.java')
-rw-r--r--src/com/memberwebs/ldapxml/map/LXEntry.java130
1 files changed, 130 insertions, 0 deletions
diff --git a/src/com/memberwebs/ldapxml/map/LXEntry.java b/src/com/memberwebs/ldapxml/map/LXEntry.java
new file mode 100644
index 0000000..cf1760b
--- /dev/null
+++ b/src/com/memberwebs/ldapxml/map/LXEntry.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2004, Nate Nielsen
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ * * Redistributions in binary form must reproduce the
+ * above copyright notice, this list of conditions and
+ * the following disclaimer in the documentation and/or
+ * other materials provided with the distribution.
+ * * The names of contributors to this software may not be
+ * used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ *
+ * CONTRIBUTORS
+ * Nate Nielsen <nielsen@memberwebs.com>
+ *
+ */
+
+package com.memberwebs.ldapxml.map;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Map;
+
+
+
+/**
+ * Represents an &lt;entry&gt object in an LX map.
+ *
+ * @author nielsen@memberwebs.com
+ * @version 0.5
+ */
+public class LXEntry
+ extends LXBase
+{
+ private Map m_xmlMap;
+ private Map m_nameMap;
+
+ /**
+ * Constructs a new LXEntry object.
+ *
+ * @param parent The parent of this entry in the LX map tree.
+ */
+ LXEntry(LXBase parent)
+ {
+ super(parent);
+ }
+
+ /**
+ * Gets a class in this entry.
+ *
+ * @param name The name of the class.
+ * @return The class, or null if no such class is present.
+ */
+ public LXClass getClass(String name)
+ {
+ LXClass cls = (LXClass)getChild(name);
+
+ if(cls != null && !cls.isUseable())
+ cls = null;
+
+ return cls;
+ }
+
+ /**
+ * Resolve an XML name to an attribute.
+ */
+ public LXAttribute resolveXMLName(String name)
+ {
+ loadNameMaps();
+ return (LXAttribute)m_xmlMap.get(name);
+ }
+
+ public LXAttribute resolveName(String name)
+ {
+ loadNameMaps();
+ return (LXAttribute)m_nameMap.get(name);
+ }
+
+ private void loadNameMaps()
+ {
+ // Note: This should never be called internally until the map
+ // is completely built. It relies on the map remaining static
+ // after this point, as there is no method for syncinc the
+ // cached map created below.
+
+ if(m_xmlMap == null || m_nameMap == null)
+ {
+ m_xmlMap = new Hashtable();
+ m_nameMap = new Hashtable();
+
+ Enumeration e = getChildNames();
+ while(e != null && e.hasMoreElements())
+ {
+ LXClass cls = getClass((String)e.nextElement());
+
+ Enumeration e2 = cls.getChildNames();
+ while(e2 != null && e2.hasMoreElements())
+ {
+ LXAttribute attr = cls.getAttribute((String)e2.nextElement());
+ if(attr != null)
+ {
+ m_xmlMap.put(attr.getXmlName(), attr);
+ m_nameMap.put(attr.getName(), attr);
+ }
+ }
+ }
+ }
+ }
+};