Parser detects wrong include files now
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / core / SourceRefElement.java
index 9139979..d3dcce0 100644 (file)
  *******************************************************************************/
 package net.sourceforge.phpdt.internal.core;
 
+import java.util.HashMap;
+
 import net.sourceforge.phpdt.core.IBuffer;
 import net.sourceforge.phpdt.core.ICompilationUnit;
 import net.sourceforge.phpdt.core.IJavaElement;
 import net.sourceforge.phpdt.core.IJavaProject;
+import net.sourceforge.phpdt.core.IMember;
 import net.sourceforge.phpdt.core.IOpenable;
+import net.sourceforge.phpdt.core.ISourceManipulation;
 import net.sourceforge.phpdt.core.ISourceRange;
 import net.sourceforge.phpdt.core.ISourceReference;
 import net.sourceforge.phpdt.core.JavaModelException;
@@ -28,15 +32,27 @@ import org.eclipse.core.runtime.IProgressMonitor;
  * Abstract class for Java elements which implement ISourceReference.
  */
 /* package */ abstract class SourceRefElement extends JavaElement implements ISourceReference {
-protected SourceRefElement(int type, IJavaElement parent, String name) {
-       super(type, parent, name);
+       protected SourceRefElement(JavaElement parent, String name) {
+               super(parent, name);
+       }
+/**
+ * This element is being closed.  Do any necessary cleanup.
+ */
+protected void closing(Object info) throws JavaModelException {
+       // Do any necessary cleanup
+}
+/**
+ * Returns a new element info for this element.
+ */
+protected Object createElementInfo() {
+       return null; // not used for source ref elements
 }
 /**
  * @see ISourceManipulation
  */
 //public void copy(IJavaElement container, IJavaElement sibling, String rename, boolean force, IProgressMonitor monitor) throws JavaModelException {
 //     if (container == null) {
-//             throw new IllegalArgumentException(Util.bind("operation.nullContainer")); //$NON-NLS-1$
+//             throw new IllegalArgumentException(ProjectPrefUtil.bind("operation.nullContainer")); //$NON-NLS-1$
 //     }
 //     IJavaElement[] elements= new IJavaElement[] {this};
 //     IJavaElement[] containers= new IJavaElement[] {container};
@@ -57,6 +73,18 @@ protected SourceRefElement(int type, IJavaElement parent, String name) {
 //     IJavaElement[] elements = new IJavaElement[] {this};
 //     getJavaModel().delete(elements, force, monitor);
 //}
+/*
+ * @see JavaElement#generateInfos
+ */
+protected void generateInfos(Object info, HashMap newElements, IProgressMonitor pm) throws JavaModelException {
+       Openable openableParent = (Openable)getOpenableParent();
+       if (openableParent == null) return;
+
+       JavaElementInfo openableParentInfo = (JavaElementInfo) JavaModelManager.getJavaModelManager().getInfo(openableParent);
+       if (openableParentInfo == null) {
+               openableParent.generateInfos(openableParent.createElementInfo(), newElements, pm);
+       }
+}
 /**
  * @see IMember
  */
@@ -114,7 +142,14 @@ public String getSource() throws JavaModelException {
        if (offset == -1 || length == 0 ) {
                return null;
        }
-       return buffer.getText(offset, length);
+       try {
+         return buffer.getText(offset, length);
+         // jsurfer insert start
+       } catch (ArrayIndexOutOfBoundsException e) {
+               
+       }
+       return null;
+//      jsurfer insert end
 }
 /**
  * @see ISourceReference
@@ -135,7 +170,7 @@ public IResource getUnderlyingResource() throws JavaModelException {
  */
 //public void move(IJavaElement container, IJavaElement sibling, String rename, boolean force, IProgressMonitor monitor) throws JavaModelException {
 //     if (container == null) {
-//             throw new IllegalArgumentException(Util.bind("operation.nullContainer")); //$NON-NLS-1$
+//             throw new IllegalArgumentException(ProjectPrefUtil.bind("operation.nullContainer")); //$NON-NLS-1$
 //     }
 //     IJavaElement[] elements= new IJavaElement[] {this};
 //     IJavaElement[] containers= new IJavaElement[] {container};
@@ -154,7 +189,7 @@ public IResource getUnderlyingResource() throws JavaModelException {
  */
 //public void rename(String name, boolean force, IProgressMonitor monitor) throws JavaModelException {
 //     if (name == null) {
-//             throw new IllegalArgumentException(Util.bind("element.nullName")); //$NON-NLS-1$
+//             throw new IllegalArgumentException(ProjectPrefUtil.bind("element.nullName")); //$NON-NLS-1$
 //     }
 //     IJavaElement[] elements= new IJavaElement[] {this};
 //     IJavaElement[] dests= new IJavaElement[] {this.getParent()};