Package org.eclipse.jst.jsp.core.internal.contentmodel.tld

Source Code of org.eclipse.jst.jsp.core.internal.contentmodel.tld.CMDocumentImpl

/*******************************************************************************
* Copyright (c) 2004, 2007 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.jst.jsp.core.internal.contentmodel.tld;



import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.eclipse.jst.jsp.core.internal.Logger;
import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDDocument;
import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDValidator;
import org.eclipse.wst.sse.core.utils.StringUtils;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNamespace;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
import org.eclipse.wst.xml.core.internal.contentmodel.ContentModelManager;
import org.eclipse.wst.xml.core.internal.contentmodel.annotation.AnnotationMap;
import org.eclipse.wst.xml.core.internal.contentmodel.internal.annotation.AnnotationFileInfo;
import org.eclipse.wst.xml.core.internal.contentmodel.internal.annotation.AnnotationFileParser;

public class CMDocumentImpl implements TLDDocument {
 
  /** Contains taginfo and/or any other misc properties*/
  private AnnotationMap fAnnotationMap = null;
 
  private Map fProperties = new HashMap(0);

  /**
   * Records from where this document was created
   */
  private String fBaseLocation;
  /**
   * since JSP 1.2
   */
  private String fDescription;
 
  private String fDisplayName;

  /**
   * NOT public API
   */
  public CMNamedNodeMapImpl fElements = new CMNamedNodeMapImpl();

  private List fFunctions = new ArrayList(0);
 
  // id of the taglib
  private String fId = null;
  /**
   * Children of "taglib" within a .tld file each allow
   * one Text node (#PCDATA) beneath them.  Store the values
   * here for simplicity.
   */
  // The JSP specification required for this taglib to function
  private String fJSPVersion = null;
 
  private String fLargeIcon;

  private List fListeners;
 
  private String fParentURI = null;
  // A short name suggested as the default prefix for tags within the lib
  private String fShortName = null;
 
  private String fSmallIcon;
 
  /**
   * since JSP 2.0
   *
   * The entire element is stored here since its layout is undefined
   */
  private List fTaglibExtensions = new ArrayList(0);
 
  // Version information for the taglib itself
  private String fTLibVersion = null;
 
  // A unique public URI describing this taglib.  Recommended to be the URL
  // to the descriptor
  private String fURI = null;
 
  private String fLocationString;

  protected TLDValidator validator;
 
  /**
   * CMDocumentImpl constructor comment.
   */
  public CMDocumentImpl() {
    super();
  }

  /**
   * Get the annotation map associated with this document.  Lazily creates
   * and loads annotation map.
   * @return AnnotationMap
   */
  private AnnotationMap getAnnotationMap() {
    // create a new annotation map and load it up
    if (fAnnotationMap == null) {
      fAnnotationMap = new AnnotationMap();
     
      List annotationFiles = ContentModelManager.getInstance().getAnnotationFilesInfos(getUri());
        for (Iterator i = annotationFiles.iterator(); i.hasNext();) {
          try {
            AnnotationFileInfo fileInfo = (AnnotationFileInfo) i.next();
            AnnotationFileParser parser = new AnnotationFileParser();
            parser.parse(fAnnotationMap, fileInfo);
            } catch (Exception e) {
              Logger.log(Logger.WARNING_DEBUG, "Exception thrown in CMDocumentImpl#getAnnotationMap", e); //$NON-NLS-1$
            }
        }
    }
    return fAnnotationMap;
  }
  /**
   * @return Returns the baseLocation.
   */
  public String getBaseLocation() {
    return fBaseLocation;
  }

  /**
   * Gets the description.
   * @return Returns a String
   */
  public String getDescription() {
    return fDescription;
  }

  /**
   * Gets the displayName.
   * @return Returns a String
   */
  public String getDisplayName() {
    return fDisplayName;
  }

  /**
   * getElements method
   * @return CMNamedNodeMap
   *
   * Returns CMNamedNodeMap of ElementDeclaration
   */
  public CMNamedNodeMap getElements() {
    return fElements;
  }

  /**
   * getEntities method
   * @return CMNamedNodeMap
   *
   * Returns CMNamedNodeMap of EntityDeclaration
   */
  public CMNamedNodeMap getEntities() {
    return null;
  }
 
  public List getExtensions() {
    return fTaglibExtensions;
  }
  /**
   * @return Returns the functions.
   */
  public List getFunctions() {
    return fFunctions;
  }

  /**
   * Gets the id.
   * @return Returns a String
   */
  public String getId() {
    return fId;
  }

  /**
   *
   * @return java.lang.String
   */
  public String getInfo() {
    return getDescription();
  }

  /**
   *
   * @return java.lang.String
   */
  public String getJspversion() {
    return fJSPVersion;
  }

  /**
   * Gets the largeIcon.
   * @return Returns a String
   */
  public String getLargeIcon() {
    return fLargeIcon;
  }

  public List getListeners() {
    if (fListeners == null)
      fListeners = new ArrayList();
    return fListeners;
  }

  /**
   * getNamespace method
   * @return CMNamespace
   */
  public CMNamespace getNamespace() {
    return null;
  }

  /**
   * getNodeName method
   * @return java.lang.String
   */
  public String getNodeName() {
    return "#cmdocument"; //$NON-NLS-1$
  }

  /**
   * getNodeType method
   * @return int
   *
   * Returns one of :
   *
   */
  public int getNodeType() {
    return CMNode.DOCUMENT;
  }
  /**
   * @return Returns the parentURI.
   */
  public String getParentURI() {
    return fParentURI;
  }

  /**
   * getProperty method
   * @return java.lang.Object
   *
   * Returns the object property desciped by the propertyName
   *
   */
  public Object getProperty(String propertyName) {
    if (propertyName.equals(TLDDocument.CM_KIND)) {
      return TLDDocument.JSP_TLD;
    }
    else if (propertyName.equals("annotationMap")) { //$NON-NLS-1$
      return getAnnotationMap();
    }
    return fProperties.get(propertyName);
  }

  /**
   *
   * @return java.lang.String
   */
  public String getShortname() {
    return fShortName;
  }

  /**
   * Gets the smallIcon.
   * @return Returns a String
   */
  public String getSmallIcon() {
    return fSmallIcon;
  }

  /**
   *
   * @return java.lang.String
   */
  public String getTlibversion() {
    return fTLibVersion;
  }

  /**
   *
   * @return java.lang.String
   */
  public String getUri() {
    return fURI;
  }

  /*
   * @see TLDDocument#getValidator()
   */
  public TLDValidator getValidator() {
    return validator;
  }
  /**
   * @param baseLocation The baseLocation to set.
   */
  public void setBaseLocation(String baseLocation) {
    fBaseLocation = baseLocation;
  }

  /**
   * Sets the description.
   * @param description The description to set
   */
  public void setDescription(String description) {
    this.fDescription = description;
  }

  /**
   * Sets the displayName.
   * @param displayName The displayName to set
   */
  public void setDisplayName(String displayName) {
    this.fDisplayName = displayName;
  }

  /**
   * Sets the id.
   * @param id The id to set
   */
  public void setId(String id) {
    this.fId = id;
  }

  /**
   *
   * @param newInfo java.lang.String
   */
  public void setInfo(String newInfo) {
    setDescription(newInfo);
  }

  /**
   *
   * @param newJspversion java.lang.String
   */
  public void setJspversion(String newJspversion) {
    fJSPVersion = newJspversion;
  }

  /**
   * Sets the largeIcon.
   * @param largeIcon The largeIcon to set
   */
  public void setLargeIcon(String largeIcon) {
    this.fLargeIcon = largeIcon;
  }

  public void setListeners(List listeners) {
    this.fListeners = listeners;
  }
  /**
   * @param parentURI The parentURI to set.
   */
  public void setParentURI(String parentURI) {
    fParentURI = parentURI;
  }
 
  public void setProperty(String property, Object value) {
    fProperties.put(property, value);
  }

  /**
   *
   * @param newShortname java.lang.String
   */
  public void setShortname(String newShortname) {
    fShortName = newShortname;
  }

  /**
   * Sets the smallIcon.
   * @param smallIcon The smallIcon to set
   */
  public void setSmallIcon(String smallIcon) {
    this.fSmallIcon = smallIcon;
  }

  /**
   *
   * @param newTlibversion java.lang.String
   */
  public void setTlibversion(String newTlibversion) {
    fTLibVersion = newTlibversion;
  }

  /**
   *
   * @param newUri java.lang.String
   */
  public void setUri(String newUri) {
    fURI = newUri;
  }

  public void setValidator(TLDValidator validator) {
    this.validator = validator;
  }

  /**
   * supports method
   * @return boolean
   *
   * Returns true if the CMNode supports a specified property
   *
   */
  public boolean supports(String propertyName) {
    if (TLDDocument.CM_KIND.equals(propertyName) || "annotationMap".equals(propertyName)) //$NON-NLS-1$
      return true;
    return fProperties.containsKey(propertyName);
  }

  public String toString() {
    StringBuffer buffer = new StringBuffer();
    buffer.append(super.toString());
    buffer.append("\n\t short name:" + StringUtils.escape(getShortname())); //$NON-NLS-1$
    buffer.append("\n\t display name:" + StringUtils.escape(getDisplayName())); //$NON-NLS-1$
    buffer.append("\n\t description (info):" + StringUtils.escape(getDescription())); //$NON-NLS-1$
    buffer.append("\n\t URI:" + StringUtils.escape(getUri())); //$NON-NLS-1$
    buffer.append("\n\t jsp version:" + StringUtils.escape(getJspversion())); //$NON-NLS-1$
    buffer.append("\n\t taglib version:" + StringUtils.escape(getTlibversion())); //$NON-NLS-1$
    buffer.append("\n\t small icon:" + StringUtils.escape(getSmallIcon())); //$NON-NLS-1$
    buffer.append("\n\t large icon:" + StringUtils.escape(getLargeIcon())); //$NON-NLS-1$
    if (getValidator() != null)
      buffer.append("\n\t validator:" + StringUtils.replace(getValidator().toString(), "\n", "\n\t\t")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    buffer.append("\n\t listeners:"); //$NON-NLS-1$
    for (int i = 0; i < getListeners().size(); i++) {
      buffer.append("\n" + StringUtils.replace(getListeners().get(i).toString(), "\n", "\n\t\t")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    }
    buffer.append("\n\t elements:"); //$NON-NLS-1$
    CMNamedNodeMap elements = getElements();
    for (int i = 0; i < elements.getLength(); i++) {
      buffer.append(StringUtils.replace(elements.item(i).toString(), "\n", "\n\t\t")); //$NON-NLS-1$ //$NON-NLS-2$
    }
    return buffer.toString();
  }

  public String getLocationString() {
    return fLocationString;
  }

  public void setLocationString(String url) {
    fLocationString = url;
  }
}
TOP

Related Classes of org.eclipse.jst.jsp.core.internal.contentmodel.tld.CMDocumentImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.