Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/DeclCollection.java')
-rw-r--r--bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/DeclCollection.java244
1 files changed, 0 insertions, 244 deletions
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/DeclCollection.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/DeclCollection.java
deleted file mode 100644
index d5aab547ae..0000000000
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/contentmodel/DeclCollection.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.html.core.internal.contentmodel;
-
-
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-
-/**
- */
-abstract class DeclCollection implements CMNamedNodeMap {
-
-
- protected class DualMap {
- public DualMap() {
- super();
- }
-
- public DualMap(Object[] objects) {
- super();
- initialize(objects);
- }
-
- public int size() {
- return table.length;
- }
-
- public Object getValue(int key) {
- if (!isValidIndex(key))
- return null;
- return table[key];
- }
-
- public int getKey(Object value) {
- Integer keyObj = (Integer) map.get(value);
- if (keyObj == null)
- return ID_UNKNOWN;
- return keyObj.intValue();
- }
-
- protected void initialize(Object[] objects) {
- if (objects == null)
- return;
- table = objects;
- map = new HashMap();
- for (int key = 0; key < objects.length; key++) {
- Object value = table[key];
- map.put(value, new Integer(key));
- }
- }
-
- private Object[] table = null;
- private HashMap map = null;
-
- private boolean isValidIndex(int index) {
- return index >= 0 && index < table.length;
- }
- }
-
- protected class TolerantStringDualMap extends DualMap {
- public TolerantStringDualMap(String[] names) {
- super();
- Object[] objects = new Object[names.length];
- for (int i = 0; i < names.length; i++) {
- objects[i] = makeCanonicalForm(names[i]);
- }
- initialize(objects);
- }
-
- public int getKey(Object value) {
- try {
- String name = (String) value;
- return super.getKey(makeCanonicalForm(name));
- }
- catch (ClassCastException e) {
- return ID_UNKNOWN;
- }
- }
-
- private String makeCanonicalForm(String raw) {
- // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=100152
- // we are able to "cheat" here a little and use US Locale
- // to get a good cononical form, since we are using this only
- // for HTML and JSP standard tags.
- // Long term, for similar needs with XML 1.1 (for example)
- // we should use a class such as com.ibm.icu.text.Normalizer
- return raw.toUpperCase(Locale.US);
- }
- }
-
- private class DeclIterator implements Iterator {
- public DeclIterator() {
- maxid = fDecls.length - 1;
- }
-
- public boolean hasNext() {
- return id < maxid;
- }
-
- public Object next() {
- if (!hasNext())
- return null;
- return item(++id);
- }
-
- public void remove() { /* nothing should be done. */
- }
-
- private int id = -1;
- private int maxid = -1;
- }
-
- CMNode[] fDecls = null;
- protected final static boolean STRICT_CASE = false;
- protected final static boolean TOLERANT_CASE = true;
- protected final static int ID_UNKNOWN = -1;
- private DualMap fMap = null;
-
- /**
- */
- public DeclCollection(String[] names, boolean tolerant) {
- super();
- fDecls = new CMNode[names.length];
- if (tolerant) {
- fMap = new TolerantStringDualMap(names);
- }
- else {
- fMap = new DualMap(names);
- }
- }
-
- /**
- * @return org.eclipse.wst.xml.core.internal.contentmodel.CMNode
- * @param id int
- */
- protected abstract CMNode create(String name);
-
- /**
- */
- public CMNamedNodeMap getDeclarations(String[] names) {
- CMNamedNodeMapImpl map = new CMNamedNodeMapImpl();
- for (int i = 0; i < names.length; i++) {
- String name = names[i];
- CMNode node = getNamedItem(name);
- if (node == null)
- continue;
- map.putNamedItem(name, node);
- }
- return map;
- }
-
- /**
- * @param names java.util.Iterator
- */
- public void getDeclarations(CMGroupImpl group, Iterator names) {
- while (names.hasNext()) {
- String entityName = (String) names.next();
- CMNode dec = getNamedItem(entityName);
- if (dec != null)
- group.appendChild(dec);
- }
- }
-
- /**
- * Map name to id.
- * @return int
- * @param name java.lang.String
- */
- protected int getID(String name) {
- return fMap.getKey(name);
- }
-
- /**
- * getLength method
- * @return int
- */
- public int getLength() {
- return fDecls.length;
- }
-
- /**
- * @return java.lang.String
- * @param id int
- */
- protected String getName(int id) {
- return (String) fMap.getValue(id);
- }
-
- /**
- * getNamedItem method
- * @return CMNode
- * @param name java.lang.String
- */
- public CMNode getNamedItem(String name) {
- int id = getID(name);
- if (!isValidID(id))
- return null;
- return item(id);
- }
-
- /**
- * @return boolean
- * @param id int
- */
- private boolean isValidID(int id) {
- return id >= 0 && id < fDecls.length;
- }
-
- /**
- * item method
- * @return CMNode
- * @param index int
- */
- public CMNode item(int index) {
- if (!isValidID(index))
- return null;
- CMNode decl = fDecls[index];
- if (decl != null)
- return decl; // already exist.
-
- decl = create(getName(index));
- fDecls[index] = decl;
- return decl;
- }
-
- /**
- */
- public Iterator iterator() {
- return new DeclIterator();
- }
-}

Back to the top