Author: scabanovich
Date: 2011-01-17 10:34:11 -0500 (Mon, 17 Jan 2011)
New Revision: 28305
Modified:
branches/jbosstools-3.2.0.CR1/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FolderImpl.java
branches/jbosstools-3.2.0.CR1/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/ModelEntityRecognizer.java
Log:
JBIDE-8067
https://issues.jboss.org/browse/JBIDE-8067
Modified:
branches/jbosstools-3.2.0.CR1/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FolderImpl.java
===================================================================
---
branches/jbosstools-3.2.0.CR1/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FolderImpl.java 2011-01-17
14:50:08 UTC (rev 28304)
+++
branches/jbosstools-3.2.0.CR1/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FolderImpl.java 2011-01-17
15:34:11 UTC (rev 28305)
@@ -49,9 +49,11 @@
import org.jboss.tools.common.model.impl.XModelImpl;
import org.jboss.tools.common.model.impl.XModelObjectImpl;
import org.jboss.tools.common.model.loaders.AuxiliaryLoader;
+import org.jboss.tools.common.model.loaders.EntityRecognizer;
import org.jboss.tools.common.model.loaders.EntityRecognizerContext;
import org.jboss.tools.common.model.loaders.Reloadable;
import org.jboss.tools.common.model.loaders.XObjectLoader;
+import org.jboss.tools.common.model.loaders.impl.ModelEntityRecognizer;
import org.jboss.tools.common.model.loaders.impl.PropertiesLoader;
import org.jboss.tools.common.model.markers.ResourceMarkers;
import org.jboss.tools.common.model.plugin.ModelPlugin;
@@ -231,20 +233,29 @@
parseFileName(p, f.getName());
String ext = p.getProperty(XModelObjectConstants.ATTR_NAME_EXTENSION);
String body = null;
- String entity = getModel().getEntityRecognizer().getEntityName(new
EntityRecognizerContext(f.getName(), ext, body));
+ EntityRecognizer recognizer = getModel().getEntityRecognizer();
+ EntityRecognizerContext context = new EntityRecognizerContext(f.getName(), ext,
body);
+ String entity = recognizer.getEntityName(context);
if("FileAny".equals(entity)) { //$NON-NLS-1$
boolean isText = XModelObjectLoaderUtil.isTextFile(f, 100);
if(f.length() > 100000 || !isText) entity =
XModelObjectConstants.ENT_FILE_ANY_LONG;
else if(isText) entity = "FileTXT"; //$NON-NLS-1$
- } else /*if(entity == null)*/ {
+ } else if(isRecognizerNeedingBody(entity, recognizer, context)) {
body = getBodySource(f).get();
- entity = getModel().getEntityRecognizer().getEntityName(new
EntityRecognizerContext(f.getName(), ext, body));
+ entity = recognizer.getEntityName(new EntityRecognizerContext(f.getName(),
ext, body));
}
if(entity == null || getModel().getMetaData().getEntity(entity) == null) entity =
"FileAny"; //$NON-NLS-1$
p.setProperty(XMetaDataConstants.ENTITY, entity);
if(body != null) p.setProperty(XModelObjectConstants.ATTR_NAME_BODY, body);
return p;
}
+
+ private boolean isRecognizerNeedingBody(String entityForNullBody, EntityRecognizer
recognizer, EntityRecognizerContext context) {
+ if(recognizer instanceof ModelEntityRecognizer) {
+ return ((ModelEntityRecognizer)recognizer).isBodyRequired(context,
entityForNullBody);
+ }
+ return true;
+ }
private XModelObject createFileObject(File f, boolean add) {
return createFileObject(f, getEntityProperties(f), add);
Modified:
branches/jbosstools-3.2.0.CR1/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/ModelEntityRecognizer.java
===================================================================
---
branches/jbosstools-3.2.0.CR1/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/ModelEntityRecognizer.java 2011-01-17
14:50:08 UTC (rev 28304)
+++
branches/jbosstools-3.2.0.CR1/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/ModelEntityRecognizer.java 2011-01-17
15:34:11 UTC (rev 28305)
@@ -19,6 +19,7 @@
public class ModelEntityRecognizer implements EntityRecognizer {
private XModelMetaData meta = null;
private HashMap<String,EntityRecognizer[]> recognizers = new
HashMap<String,EntityRecognizer[]>();
+ private Set<String> umbiguousExtensions = new HashSet<String>();
public ModelEntityRecognizer() {}
@@ -42,6 +43,11 @@
return null;
}
+ public boolean isBodyRequired(EntityRecognizerContext context, String entityForNullBody)
{
+ return entityForNullBody == null
+ || (context.getExtension() != null &&
umbiguousExtensions.contains(context.getExtension()));
+ }
+
private void load() {
XMapping m = meta.getMapping("Recognizers"); //$NON-NLS-1$
if(m == null) return;
@@ -77,6 +83,12 @@
recognizers.put(ks[i], rs);
}
}
+ for (String ext: recognizers.keySet()) {
+ EntityRecognizer[] rs = recognizers.get(ext);
+ if(rs != null && rs.length > 1) {
+ umbiguousExtensions.add(ext);
+ }
+ }
}
private EntityRecognizer find(String clsname) {
@@ -166,4 +178,3 @@
}
}
-