blob: 1a02cf2ea60b97575d87416b09d816bde9d878a6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2004 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.jsp;
import java.io.*;
import java.io.Reader;
import org.eclipse.core.indexsearch.*;
import org.eclipse.core.resources.*;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.*;
/**
* @author weinand
*/
public class JspIndexParser extends AbstractJspParser implements IIndexer {
public static final String JSP_TYPE_REF= "jsp_typeRef"; //$NON-NLS-1$
IFile fFile;
String fFilePath;
boolean fInUseBean;
String fId;
String fClass;
IIndex fOutput;
JspIndexParser(IFile resource) {
fFile= resource;
}
protected void startTag(boolean endTag, String name, int startName) {
fInUseBean= "jsp:useBean".equals(name); //$NON-NLS-1$
}
protected void tagAttribute(String attrName, String value, int startName, int startValue) {
if (fInUseBean) {
if ("id".equals(attrName)) //$NON-NLS-1$
fId= value;
else if ("class".equals(attrName)) //$NON-NLS-1$
fClass= value;
}
}
protected void endTag(boolean end) {
if (fInUseBean) {
if (fId != null && fClass != null) {
String s= JSP_TYPE_REF + "/" + fClass; //$NON-NLS-1$
System.out.println(" " + s); //$NON-NLS-1$
fOutput.addRef(s, fFilePath);
fId= fClass= null;
}
fInUseBean= false;
}
}
public void index(IIndex indexerOutput) throws IOException {
String type= fFile.getFileExtension();
if (type != null && JspUIPlugin.JSP_TYPE.equalsIgnoreCase(type)) {
// Add the name of the file to the index
String path= fFile.getFullPath().toString();
String encoding= null;
try {
encoding= fFile.getCharset();
} catch (CoreException e1) {
}
if (encoding == null)
encoding= ResourcesPlugin.getEncoding();
String s= null;
IPath location= fFile.getLocation();
if (location == null)
s= ""; //$NON-NLS-1$
else
s= new String(Util.getFileCharContent(location.toFile(), encoding));
try {
Reader reader= new StringReader(s);
fOutput= indexerOutput;
fFilePath= path;
parse(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}