Apply patch for 407026.
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/MetaDataEnabledFeatureRegistry.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/MetaDataEnabledFeatureRegistry.java
index 2f34223..4632f5d 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/MetaDataEnabledFeatureRegistry.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/metadataprocessors/internal/MetaDataEnabledFeatureRegistry.java
@@ -13,6 +13,7 @@
package org.eclipse.jst.jsf.metadataprocessors.internal;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -91,7 +92,10 @@
}
else {
List list = featuresMap.get(typeId);
- list.add(aFeature);
+ if (list != null)
+ {
+ list.add(aFeature);
+ }
}
}
}
@@ -123,7 +127,7 @@
featuresMap.put(typeId,new ArrayList());
//copy current featuresMapped to typeId into return list
- List<IMetaDataEnabledFeatureExtension> srcList = featuresMap.get(typeId);
+ List<IMetaDataEnabledFeatureExtension> srcList = getExtensionsForId(typeId);
List<IMetaDataEnabledFeatureExtension> ret = new ArrayList<IMetaDataEnabledFeatureExtension>(srcList.size());
copy(ret, srcList);
@@ -158,12 +162,20 @@
for (Iterator it=typeCacheMap.keySet().iterator();it.hasNext();){
String featureTypeId = (String)it.next();
Class featureTypeClass = typeCacheMap.get(featureTypeId);
- if (featureTypeClass.isAssignableFrom(typeClass)) {
- ret.addAll(featuresMap.get(featureTypeId));
+ if (featureTypeClass != null && featureTypeClass.isAssignableFrom(typeClass)) {
+ ret.addAll(getExtensionsForId(featureTypeId));
}
}
return ret;
}
-
+ private List<IMetaDataEnabledFeatureExtension> getExtensionsForId(String featureTypeId)
+ {
+ List<IMetaDataEnabledFeatureExtension> list = featuresMap.get(featureTypeId);
+ if (list == null)
+ {
+ return Collections.emptyList();
+ }
+ return Collections.unmodifiableList(list);
+ }
}