*fixes
diff --git a/core/plugins/org.eclipse.dltk.core/.options b/core/plugins/org.eclipse.dltk.core/.options
index 2a0f243..df58d1c 100644
--- a/core/plugins/org.eclipse.dltk.core/.options
+++ b/core/plugins/org.eclipse.dltk.core/.options
@@ -3,7 +3,6 @@
org.eclipse.dltk.core/typeInferencing/showStatistics = false
org.eclipse.dltk.ruby.core/dumpErrorsToConsole = false
org.eclipse.dltk.core/debug = false
-org.eclipse.dltk.core/debug = false
org.eclipse.dltk.core/debugIndex = false
org.eclipse.dltk.core/debugParser = false
org.eclipse.dltk.core/debugSelection = false
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/AbstractLanguageToolkit.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/AbstractLanguageToolkit.java
index 0e80af7..10a8232 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/AbstractLanguageToolkit.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/AbstractLanguageToolkit.java
@@ -23,10 +23,6 @@
return true;
}
- public String getDelimeterReplacerString() {
- return ".";
- }
-
public IType[] getParentTypes(IType type) {
return null;
}
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/IDLTKLanguageToolkit.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/IDLTKLanguageToolkit.java
index 6c49978..0157184 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/IDLTKLanguageToolkit.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/IDLTKLanguageToolkit.java
@@ -11,9 +11,6 @@
import org.eclipse.core.runtime.IPath;
-/**
- *
- */
public interface IDLTKLanguageToolkit {
/**
@@ -32,9 +29,5 @@
String getNatureId();
- String getDelimeterReplacerString();
-
- String[] getLanguageFileExtensions();
-
String getLanguageName();
}
\ No newline at end of file
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/PreferencesLookupDelegate.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/PreferencesLookupDelegate.java
index 73e4a76..b3b1c57 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/PreferencesLookupDelegate.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/PreferencesLookupDelegate.java
@@ -50,6 +50,10 @@
this.contexts = getLookupScopes(project);
}
+ public PreferencesLookupDelegate(IScriptProject scriptProject) {
+ this((scriptProject == null) ? null : scriptProject.getProject());
+ }
+
/**
* Returns a string preference value
*
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/ScriptModelUtil.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/ScriptModelUtil.java
index 72dfe19..7276f9e 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/ScriptModelUtil.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/core/ScriptModelUtil.java
@@ -11,6 +11,9 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.core.runtime.content.IContentTypeManager;
import org.eclipse.dltk.compiler.CharOperation;
import org.eclipse.dltk.core.search.IDLTKSearchConstants;
import org.eclipse.dltk.core.search.IDLTKSearchScope;
@@ -177,11 +180,21 @@
// Check for already specified extension in newMainName.
IDLTKLanguageToolkit languageToolkit = DLTKLanguageManager
.getLanguageToolkit(cu);
- String[] languageFileExtensions = languageToolkit.getLanguageFileExtensions();
- for (int i = 0; i < languageFileExtensions.length; i++) {
- if( newMainName.endsWith(languageFileExtensions[i] ) ) {
- // Return extension is OK.
- return newMainName;
+
+ String contentType = languageToolkit.getLanguageContentType();
+ IContentTypeManager manager = Platform.getContentTypeManager();
+ IContentType type = manager.getContentType(contentType);
+ String[] languageFileExtensions = null;
+ if (type != null) {
+ languageFileExtensions = type
+ .getFileSpecs(IContentType.FILE_EXTENSION_SPEC);
+ }
+ if (languageFileExtensions != null) {
+ for (int i = 0; i < languageFileExtensions.length; i++) {
+ if (newMainName.endsWith(languageFileExtensions[i])) {
+ // Return extension is OK.
+ return newMainName;
+ }
}
}
} catch (CoreException e) {
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/NewInstanceClassBasedDLTKExtensionManager.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/NewInstanceClassBasedDLTKExtensionManager.java
index d028a8e..92ac7c0 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/NewInstanceClassBasedDLTKExtensionManager.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/NewInstanceClassBasedDLTKExtensionManager.java
@@ -11,6 +11,7 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.dltk.core.DLTKCore;
import org.eclipse.dltk.core.PriorityClassDLTKExtensionManager;
public class NewInstanceClassBasedDLTKExtensionManager extends
@@ -28,8 +29,9 @@
return object;
}
} catch (CoreException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ if (DLTKCore.DEBUG) {
+ e.printStackTrace();
+ }
}
return null;
}
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ProjectFragment.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ProjectFragment.java
index 7c4a1cd..594b55e 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ProjectFragment.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ProjectFragment.java
@@ -21,8 +21,6 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
-import org.eclipse.dltk.core.DLTKCore;
-import org.eclipse.dltk.core.IBuildpathContainer;
import org.eclipse.dltk.core.IBuildpathEntry;
import org.eclipse.dltk.core.IModelElement;
import org.eclipse.dltk.core.IModelStatusConstants;
@@ -360,22 +358,14 @@
*/
public IBuildpathEntry getRawBuildpathEntry() throws ModelException {
IBuildpathEntry rawEntry = null;
- ScriptProject project = (ScriptProject) this.getScriptProject();
- project.getResolvedBuildpath(true/*ignoreUnresolvedEntry*/, false/*don't generateMarkerOnError*/, false/*don't returnResolutionInProgress*/); // force the reverse rawEntry cache to be populated
- // be populated
- Map resolvedPathToRawEntries = project.getPerProjectInfo().resolvedPathToRawEntries;
- if (resolvedPathToRawEntries != null) {
- rawEntry = (IBuildpathEntry) resolvedPathToRawEntries.get(this.getPath());
- //try to guest map from internal element.
- if( rawEntry != null && rawEntry.getEntryKind() == IBuildpathEntry.BPE_CONTAINER ) {
- IBuildpathContainer container = DLTKCore.getBuildpathContainer(rawEntry.getPath(), project);
- IBuildpathEntry entrys[] = container.getBuildpathEntries();
- for( int i = 0; i < entrys.length; ++i ) {
- if( entrys[i].getPath().equals(this.getPath())) {
- return entrys[i];
- }
- }
- }
+ ScriptProject project = (ScriptProject)this.getScriptProject();
+ project.getResolvedBuildpath(); // force the reverse rawEntry cache to be populated
+ Map rootPathToRawEntries = project.getPerProjectInfo().resolvedPathToRawEntries;
+ if (rootPathToRawEntries != null) {
+ rawEntry = (IBuildpathEntry) rootPathToRawEntries.get(this.getPath());
+ }
+ if (rawEntry == null) {
+ throw new ModelException(new ModelStatus(IModelStatusConstants.ELEMENT_NOT_ON_BUILDPATH, this));
}
return rawEntry;
}
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/SourceModuleInfoCache.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/SourceModuleInfoCache.java
index 2bf793a..787adc6 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/SourceModuleInfoCache.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/SourceModuleInfoCache.java
@@ -34,11 +34,11 @@
static long allAccess = 0;
static long miss = 0;
static long closes = 0;
-
+
public SourceModuleInfoCache() {
// set the size of the caches in function of the maximum amount of
// memory available
-// long maxMemory = Runtime.getRuntime().freeMemory();
+ // long maxMemory = Runtime.getRuntime().freeMemory();
// if max memory is infinite, set the ratio to 4d which corresponds to
// the 256MB that Eclipse defaults to
// (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=111299)
@@ -46,8 +46,8 @@
this.cache = new ElementCache(
(int) (ModelCache.DEFAULT_ROOT_SIZE * ratio));
- this.cache.setLoadFactor( 0.90 );
- this.cache.addListener(new IElementCacheListener(){
+ this.cache.setLoadFactor(0.90);
+ this.cache.addListener(new IElementCacheListener() {
public void close(Object element) {
closes++;
}
@@ -58,10 +58,10 @@
public void stop() {
DLTKCore.removeElementChangedListener(changedListener);
}
-
+
public ISourceModuleInfo get(ISourceModule module) {
Object object = this.cache.get(module);
- if (DLTKCore.VERBOSE ) {
+ if (DLTKCore.VERBOSE) {
System.out.println("Filling ratio:" + this.cache.fillingRatio());
}
allAccess++;
@@ -71,13 +71,15 @@
}
SoftReference ref = (SoftReference) object;
ISourceModuleInfo info = (ISourceModuleInfo) ref.get();
- if( info == null ) {
+ if (info == null) {
miss++;
return returnAdd(module);
}
-// this.cache.printStats();
- if(DLTKCore.PERFOMANCE) {
- System.out.println("SourceModuleInfoCache: access:" + allAccess + " ok:" + ( 100.0f * (allAccess - miss ) / allAccess) + "% closes:" + closes );
+ // this.cache.printStats();
+ if (DLTKCore.PERFOMANCE) {
+ System.out.println("SourceModuleInfoCache: access:" + allAccess
+ + " ok:" + (100.0f * (allAccess - miss) / allAccess)
+ + "% closes:" + closes);
System.out.println("Filling ratio:" + this.cache.fillingRatio());
}
return (ISourceModuleInfo) info;
@@ -100,10 +102,11 @@
private void processDelta(IModelElementDelta delta) {
IModelElement element = delta.getElement();
if (delta.getKind() == IModelElementDelta.REMOVED
- || (delta.getFlags() & IModelElementDelta.F_REMOVED_FROM_BUILDPATH) != 0
- || ( delta.getFlags() & IModelElementDelta.CHANGED) != 0 ) {
+ || delta.getKind() == IModelElementDelta.CHANGED
+ || (delta.getFlags() & IModelElementDelta.F_REMOVED_FROM_BUILDPATH) != 0
+ || (delta.getFlags() & IModelElementDelta.CHANGED) != 0) {
if (element.getElementType() == IModelElement.SOURCE_MODULE) {
- SourceModuleInfoCache.this.remove((ISourceModule)element);
+ SourceModuleInfoCache.this.remove((ISourceModule) element);
}
}
if ((delta.getFlags() & IModelElementDelta.F_CHILDREN) != 0) {
@@ -141,7 +144,7 @@
}
public boolean isEmpty() {
- if( this.map == null ) {
+ if (this.map == null) {
return true;
}
return this.map.isEmpty();
diff --git a/core/plugins/org.eclipse.dltk.core/search/org/eclipse/dltk/core/mixin/MixinModel.java b/core/plugins/org.eclipse.dltk.core/search/org/eclipse/dltk/core/mixin/MixinModel.java
index adf67e3..f22ebed 100644
--- a/core/plugins/org.eclipse.dltk.core/search/org/eclipse/dltk/core/mixin/MixinModel.java
+++ b/core/plugins/org.eclipse.dltk.core/search/org/eclipse/dltk/core/mixin/MixinModel.java
@@ -10,6 +10,7 @@
package org.eclipse.dltk.core.mixin;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
@@ -114,28 +115,32 @@
ISourceModule[] containedModules = SearchEngine.searchMixinSources(
pattern, toolkit, set);
-
- if (containedModules.length == 0) {
+ Set modules = new HashSet();
+ modules.addAll(Arrays.asList(containedModules));
+
+ if (modules.size() == 0) {
return new IMixinElement[0];
}
- long start = System.currentTimeMillis();
- for (int i = 0; i < containedModules.length; ++i) {
- reportModule(containedModules[i]);
- if (delta != -1) {
- if (System.currentTimeMillis() - start > delta) {
-// System.out.println("Mixin timeout break:"
-// + Long.toString(System.currentTimeMillis() - start)
-// + ":"
-// + Integer.toString(containedModules.length - i));
- break;
- }
- }
+ // long start = System.currentTimeMillis();
+ // for (int i = 0; i < containedModules.length; ++i) {
+ for (Iterator iterator = modules.iterator(); iterator.hasNext();) {
+ ISourceModule module = (ISourceModule) iterator.next();
+ reportModule(module);
+ // if (delta != -1) {
+ // // if (System.currentTimeMillis() - start > delta) {
+ // // System.out.println("Mixin timeout break:"
+ // // + Long.toString(System.currentTimeMillis() - start)
+ // // + ":"
+ // // + Integer.toString(containedModules.length - i));
+ // // break;
+ // // }
+ // }
}
List result = new ArrayList();
-// int i = 0;
+ // int i = 0;
for (Iterator iterator = set.keySet().iterator(); iterator.hasNext();) {
ISourceModule module = (ISourceModule) iterator.next();
if (this.elementToMixinCache.containsKey(module)) {
@@ -144,13 +149,14 @@
String key = (String) iterator2.next();
MixinElement element = getCreateEmpty(key);
markElementAsFinal(element);
- result.add( element);
+ result.add(element);
existKeysCache.add(key);
}
}
}
- return (IMixinElement[]) result.toArray(new IMixinElement[result.size()]);
+ return (IMixinElement[]) result
+ .toArray(new IMixinElement[result.size()]);
}
public IMixinElement[] find(String pattern) {
@@ -569,8 +575,7 @@
}
return objs;
}
- if (o != null)
- {
+ if (o != null) {
notifyInitializeListener(this, module, o);
return new Object[] { o };
}