Author: scabanovich
Date: 2010-02-02 09:09:31 -0500 (Tue, 02 Feb 2010)
New Revision: 20069
Added:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/EntityRecognizerContext.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/XMLRecognizerContext.java
Removed:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/EntityRecognizerExtension.java
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/ant/model/AntEntityRecognizer.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/action/impl/DefaultWizardDataValidator.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/XModel.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/files/handlers/CreateFileSupport.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/AbstractExtendedXMLFileImpl.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/CreateFileHandler.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/ExtensionChange.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FolderImpl.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/JarFolderImpl.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/example/AuxiliaryFileRecognizer.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/example/MainFileRecognizer.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/handlers/DeleteProjectHandler.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/XModelImpl.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/EntityRecognizer.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/DefaultEntityRecognizer.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/MappedEntityRecognizer.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/ModelEntityRecognizer.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5781
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/ant/model/AntEntityRecognizer.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/ant/model/AntEntityRecognizer.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/ant/model/AntEntityRecognizer.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -24,8 +24,12 @@
public class AntEntityRecognizer implements EntityRecognizer {
private static final QualifiedName[] SUPPORTED_OPTIONS = new QualifiedName[]
{IContentDescription.CHARSET, IContentDescription.BYTE_ORDER_MARK};
public AntEntityRecognizer() {}
+
+ public String getEntityName(EntityRecognizerContext context) {
+ return getEntityName(context.getExtension(), context.getBody());
+ }
- public String getEntityName(String ext, String body) {
+ String getEntityName(String ext, String body) {
if(body == null) return null;
IContentType cd =
Platform.getContentTypeManager().getContentType("org.eclipse.ant.core.antBuildFile");
//$NON-NLS-1$
AntBuildfileContentDescriber d = new AntBuildfileContentDescriber();
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/action/impl/DefaultWizardDataValidator.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/action/impl/DefaultWizardDataValidator.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/action/impl/DefaultWizardDataValidator.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -20,6 +20,7 @@
import org.jboss.tools.common.model.XModelObjectConstants;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.filesystems.impl.CreateFileHandler;
+import org.jboss.tools.common.model.loaders.EntityRecognizerContext;
import org.jboss.tools.common.model.util.XModelObjectLoaderUtil;
public class DefaultWizardDataValidator implements WizardDataValidator {
@@ -97,7 +98,7 @@
String entity = support.action.getProperty(XMetaDataConstants.ENTITY);
if(entity == null) {
String ext = null;
- entity = (ext != null) ?
support.getTarget().getModel().getEntityRecognizer().getEntityName(ext, null)
+ entity = (ext != null) ?
support.getTarget().getModel().getEntityRecognizer().getEntityName(new
EntityRecognizerContext(ext))
: ds[step].getModelEntity().getName();
if(entity == null || support.getTarget().getModel().getMetaData().getEntity(entity) ==
null)
entity = ds[step].getModelEntity().getName();
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/XModel.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/XModel.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/XModel.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -16,7 +16,6 @@
import org.jboss.tools.common.model.event.*;
import org.jboss.tools.common.model.undo.XUndoManager;
import org.jboss.tools.common.model.loaders.EntityRecognizer;
-import org.jboss.tools.common.model.loaders.EntityRecognizerExtension;
import org.jboss.tools.common.model.filesystems.impl.FileSystemPeer;
/**
@@ -180,7 +179,7 @@
* Returns a singleton used to resolve entity of a file object.
* @return
*/
- public EntityRecognizerExtension getEntityRecognizer();
+ public EntityRecognizer getEntityRecognizer();
/**
* Returns registry keeping time stamps of loaded file objects.
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/files/handlers/CreateFileSupport.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/files/handlers/CreateFileSupport.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/files/handlers/CreateFileSupport.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -25,6 +25,7 @@
import org.jboss.tools.common.meta.impl.XMetaDataConstants;
import org.jboss.tools.common.model.*;
import org.jboss.tools.common.model.filesystems.impl.*;
+import org.jboss.tools.common.model.loaders.EntityRecognizerContext;
import org.jboss.tools.common.model.loaders.impl.MappedEntityRecognizer;
import org.jboss.tools.common.model.plugin.ModelMessages;
import org.jboss.tools.common.model.util.*;
@@ -298,7 +299,7 @@
entity = action.getProperty(XMetaDataConstants.ENTITY);
}
if(entity == null) {
- entity = new MappedEntityRecognizer().getEntityName(extension, null);
+ entity = new MappedEntityRecognizer().getEntityName(new
EntityRecognizerContext(extension));
}
if(entity != null && getTarget().getModel().getMetaData().getEntity(entity) !=
null) {
return entity;
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/AbstractExtendedXMLFileImpl.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/AbstractExtendedXMLFileImpl.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/AbstractExtendedXMLFileImpl.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -163,7 +163,7 @@
if(body == null) return;
if(!isForceLoadOn() && body.equals(getAsText())) return;
- String entity = getModel().getEntityRecognizer().getEntityName(toFileName(this),
getAttributeValue(XModelObjectConstants.ATTR_NAME_EXTENSION), body);
+ String entity = getModel().getEntityRecognizer().getEntityName(new
EntityRecognizerContext(toFileName(this),
getAttributeValue(XModelObjectConstants.ATTR_NAME_EXTENSION), body));
if(entity == null || !entity.equals(getModelEntity().getName())) {
String[] errors = (body.length() == 0) ? null : XMLUtil.getXMLErrors(new
java.io.StringReader(body), false);
if(errors == null || errors.length == 0) errors = new String[]{"Doctype has been
changed. Please save file for the change to take effect in object model. :0:0"};
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/CreateFileHandler.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/CreateFileHandler.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/CreateFileHandler.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -19,6 +19,7 @@
import org.jboss.tools.common.meta.action.XActionInvoker;
import org.jboss.tools.common.meta.action.impl.handlers.*;
import org.jboss.tools.common.meta.impl.XMetaDataConstants;
+import org.jboss.tools.common.model.loaders.EntityRecognizerContext;
import org.jboss.tools.common.model.util.*;
public class CreateFileHandler extends DefaultCreateHandler {
@@ -32,7 +33,7 @@
String ext = p.getProperty(XModelObjectConstants.ATTR_NAME_EXTENSION);
String entity = action.getProperty(XMetaDataConstants.ENTITY);
if(entity == null) {
- entity = (ext != null) ?
object.getModel().getEntityRecognizer().getEntityName(ext, null)
+ entity = (ext != null) ?
object.getModel().getEntityRecognizer().getEntityName(new EntityRecognizerContext(ext))
: data[0].getModelEntity().getName();
if(entity == null || object.getModel().getMetaData().getEntity(entity) ==
null)
entity = data[0].getModelEntity().getName();
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/ExtensionChange.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/ExtensionChange.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/ExtensionChange.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -20,6 +20,7 @@
import org.jboss.tools.common.model.XModelObjectConstants;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.XModelObjectConstants;
+import org.jboss.tools.common.model.loaders.EntityRecognizerContext;
import org.jboss.tools.common.model.loaders.XObjectLoader;
import org.jboss.tools.common.model.undo.XTransactionUndo;
import org.jboss.tools.common.model.undo.XUndoManager;
@@ -41,7 +42,7 @@
private boolean execute() {
XModel model = file.getModel();
- String entity = model.getEntityRecognizer().getEntityName(extension, null);
+ String entity = model.getEntityRecognizer().getEntityName(new
EntityRecognizerContext(extension));
String oldEntity = file.getModelEntity().getName();
String body = __body();
if(body == null) return false;
@@ -50,7 +51,7 @@
if(FileUtil.isText(body)) entity = "FileTXT";
else return false;
} else if(entity == null) {
- entity = model.getEntityRecognizer().getEntityName(extension, body);
+ entity = model.getEntityRecognizer().getEntityName(new
EntityRecognizerContext(extension, body));
}
if(entity == null || model.getMetaData().getEntity(entity) == null) entity =
"FileAny";
if(file.getModelEntity().getName().equals(entity)) return false;
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FolderImpl.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FolderImpl.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FolderImpl.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -48,6 +48,7 @@
import org.jboss.tools.common.model.impl.RegularObjectImpl;
import org.jboss.tools.common.model.impl.XModelImpl;
import org.jboss.tools.common.model.loaders.AuxiliaryLoader;
+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.PropertiesLoader;
@@ -205,14 +206,14 @@
parseFileName(p, f.getName());
String ext = p.getProperty(XModelObjectConstants.ATTR_NAME_EXTENSION);
String body = null;
- String entity = getModel().getEntityRecognizer().getEntityName(f.getName(), ext,
body);
+ String entity = getModel().getEntityRecognizer().getEntityName(new
EntityRecognizerContext(f.getName(), ext, body));
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)*/ {
body = getBodySource(f).get();
- entity = getModel().getEntityRecognizer().getEntityName(f.getName(), ext,
body);
+ entity = getModel().getEntityRecognizer().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);
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/JarFolderImpl.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/JarFolderImpl.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/JarFolderImpl.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -84,13 +84,13 @@
FolderImpl.parseFileName(p, name);
String ext = p.getProperty(XModelObjectConstants.ATTR_NAME_EXTENSION);
String body = null;
- String entity = getModel().getEntityRecognizer().getEntityName(name, ext, body);
+ String entity = getModel().getEntityRecognizer().getEntityName(new
EntityRecognizerContext(name, ext, body));
if("FileAny".equals(entity)) { //$NON-NLS-1$
if(jar.getSize(cpath) > 100000) entity =
XModelObjectConstants.ENT_FILE_ANY_LONG;
else if(jar.isTextEntry(cpath, 100)) entity = "FileTXT";
//$NON-NLS-1$
} else /*if(entity == null)*/ {
body = jar.getContent(cpath);
- entity = getModel().getEntityRecognizer().getEntityName(name, ext, body);
+ entity = getModel().getEntityRecognizer().getEntityName(new
EntityRecognizerContext(name, ext, body));
}
if(entity == null || getModel().getMetaData().getEntity(entity) == null) entity =
"FileAny"; //$NON-NLS-1$
XModelObject c = getModel().createModelObject(entity, p);
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/example/AuxiliaryFileRecognizer.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/example/AuxiliaryFileRecognizer.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/example/AuxiliaryFileRecognizer.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -14,7 +14,11 @@
public class AuxiliaryFileRecognizer implements EntityRecognizer {
- public String getEntityName(String ext, String body) {
+ public String getEntityName(EntityRecognizerContext context) {
+ return getEntityName(context.getExtension(), context.getBody());
+ }
+
+ String getEntityName(String ext, String body) {
if(body == null) return null;
return "efe".equals(ext) ? "FileAnyAuxiliary" : null;
//$NON-NLS-1$ //$NON-NLS-2$
}
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/example/MainFileRecognizer.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/example/MainFileRecognizer.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/example/MainFileRecognizer.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -14,7 +14,11 @@
public class MainFileRecognizer implements EntityRecognizer {
- public String getEntityName(String ext, String body) {
+ public String getEntityName(EntityRecognizerContext context) {
+ return getEntityName(context.getExtension(), context.getBody());
+ }
+
+ String getEntityName(String ext, String body) {
if(body == null) return null;
return "mfe".equals(ext) ? "FileXTMain" : null; //$NON-NLS-1$
//$NON-NLS-2$
}
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/handlers/DeleteProjectHandler.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/handlers/DeleteProjectHandler.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/handlers/DeleteProjectHandler.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -34,7 +34,7 @@
IProject project = EclipseResourceUtil.getProject(object);
if (project != null)
{
- DeleteResourceAction deleteAction = new
DeleteResourceAction(ModelPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell());
+ DeleteResourceAction deleteAction = new
DeleteResourceAction(ModelPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow());
deleteAction.selectionChanged(new StructuredSelection(project));
deleteAction.run();
if(!project.exists()) {
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/XModelImpl.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/XModelImpl.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/impl/XModelImpl.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -48,7 +48,6 @@
import org.jboss.tools.common.model.filesystems.impl.FileSystemImpl;
import org.jboss.tools.common.model.filesystems.impl.FileSystemPeer;
import org.jboss.tools.common.model.loaders.EntityRecognizer;
-import org.jboss.tools.common.model.loaders.EntityRecognizerExtension;
import org.jboss.tools.common.model.loaders.XObjectLoader;
import org.jboss.tools.common.model.loaders.impl.ModelEntityRecognizer;
import org.jboss.tools.common.model.plugin.ModelMessages;
@@ -121,7 +120,7 @@
return buffer;
}
- public EntityRecognizerExtension getEntityRecognizer() {
+ public EntityRecognizer getEntityRecognizer() {
return recognizer;
}
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/EntityRecognizer.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/EntityRecognizer.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/EntityRecognizer.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -21,6 +21,6 @@
* @param body
* @return
*/
- public String getEntityName(String ext, String body);
+ public String getEntityName(EntityRecognizerContext context);
}
Added:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/EntityRecognizerContext.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/EntityRecognizerContext.java
(rev 0)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/EntityRecognizerContext.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.common.model.loaders;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class EntityRecognizerContext {
+ protected String fileName;
+ protected String extension;
+ protected String body;
+ protected XMLRecognizerContext xml = null;
+
+ public EntityRecognizerContext(String extension) {
+ this.extension = extension;
+ }
+
+ public EntityRecognizerContext(String extension, String body) {
+ this.extension = extension;
+ this.body = body;
+ }
+
+ public EntityRecognizerContext(String fileName, String extension, String body) {
+ this.fileName = fileName;
+ this.extension = extension;
+ this.body = body;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public String getExtension() {
+ return extension;
+ }
+
+ public String getBody() {
+ return body;
+ }
+
+ public XMLRecognizerContext getXMLContext() {
+ if(xml == null) {
+ xml = new XMLRecognizerContext(this);
+ }
+ return xml;
+ }
+
+}
Property changes on:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/EntityRecognizerContext.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/EntityRecognizerExtension.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/EntityRecognizerExtension.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/EntityRecognizerExtension.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Red Hat, Inc.
- * Distributed under license by Red Hat, Inc. All rights reserved.
- * This program is 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:
- * Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.common.model.loaders;
-
-/**
- *
- * Interface is used for cases when file name is sufficient to define entity of file
model object.
- * @author Viacheslav Kabanovich
- *
- */
-public interface EntityRecognizerExtension extends EntityRecognizer {
-
- public String getEntityName(String fileName, String ext, String body);
-
-}
Added:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/XMLRecognizerContext.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/XMLRecognizerContext.java
(rev 0)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/XMLRecognizerContext.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.common.model.loaders;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.HashMap;
+
+import javax.xml.parsers.DocumentBuilder;
+
+import org.jboss.tools.common.model.util.SafeDocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentType;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class XMLRecognizerContext extends EntityRecognizerContext {
+ protected boolean isDTD = false;
+
+ protected DoctypeInfo doctypeInfo = null;
+
+ static protected class DoctypeInfo {
+ protected String publicId;
+ protected String systemId;
+ protected String name;
+ }
+ static DoctypeInfo NULL_INFO = new DoctypeInfo();
+
+ public XMLRecognizerContext(EntityRecognizerContext context) {
+ super(context.getFileName(), context.getExtension(), context.getBody());
+ init();
+ }
+
+ void init() {
+ if(body == null) return;
+
+ String doctypeText = getUnformattedDoctypeFromBody(body);
+ if (doctypeText != null) {
+ isDTD = true;
+ doctypeInfo = checkDocType(doctypeText);
+ }
+
+ }
+
+ public boolean isDTD() {
+ return isDTD;
+ }
+
+ public String getPublicId() {
+ return doctypeInfo == null ? null : doctypeInfo.publicId;
+ }
+
+ public String getSystemId() {
+ return doctypeInfo == null ? null : doctypeInfo.systemId;
+ }
+
+ public String getRootName() {
+ if(doctypeInfo != null) {
+ return doctypeInfo.name;
+ }
+ //TODO
+ return null;
+ }
+
+ public XMLRecognizerContext getXMLContext() {
+ return this;
+ }
+
+ static HashMap<String, DoctypeInfo> doctypes = new HashMap<String,
DoctypeInfo>();
+
+ private DoctypeInfo checkDocType(String docTypeString) {
+ if(doctypes.containsKey(docTypeString)) {
+ return doctypes.get(docTypeString);
+ }
+ Reader xml = new StringReader(docTypeString + "<root></root>");
//$NON-NLS-1$
+ DocumentBuilder db = SafeDocumentBuilderFactory.createDocumentBuilder(false);
+ try {
+ db.setErrorHandler(new ErrorHandler() {
+ public void warning(SAXParseException exception)
+ throws SAXException {
+ }
+
+ public void fatalError(SAXParseException exception)
+ throws SAXException {
+ }
+
+ public void error(SAXParseException exception)
+ throws SAXException {
+ }
+ });
+ db.setEntityResolver(new EntityResolver() {
+ public InputSource resolveEntity(String publicId,
+ String systemId) throws SAXException, IOException {
+ return new InputSource(new StringReader("")); //$NON-NLS-1$
+ }
+ });
+ Document doc = db.parse(new InputSource(xml));
+ if(doc != null) {
+ DocumentType dt = doc.getDoctype();
+ DoctypeInfo doctypeInfo = new DoctypeInfo();
+ doctypeInfo.publicId = dt.getPublicId();
+ doctypeInfo.systemId = dt.getSystemId();
+ doctypeInfo.name = dt.getName();
+ doctypes.put(docTypeString, doctypeInfo);
+ // System.out.println("" + doctypes.size() + " " +
+ // doctypeInfo.publicId + " " + doctypeInfo.systemId + " " +
+ // doctypeInfo.name);
+ return doctypeInfo;
+ }
+ } catch (SAXException e1) {
+ //ignore - doctype is corrupted
+ } catch (IOException e2) {
+ //ignore - impossible
+ } finally {
+ try {
+ xml.close();
+ } catch (IOException e) {
+ }
+ }
+ doctypes.put(docTypeString, NULL_INFO);
+ return NULL_INFO;
+ }
+
+ private String getUnformattedDoctypeFromBody(String body) {
+ int i = body.indexOf("<!DOCTYPE"); //$NON-NLS-1$
+ if (i < 0)
+ return null;
+ int j = body.indexOf(">", i); //$NON-NLS-1$
+ if (j < 0)
+ return null;
+ return body.substring(i, j+1);
+ }
+
+}
Property changes on:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/XMLRecognizerContext.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/DefaultEntityRecognizer.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/DefaultEntityRecognizer.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/DefaultEntityRecognizer.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -20,7 +20,8 @@
public DefaultEntityRecognizer() {}
- public String getEntityName(String ext, String body) {
+ public String getEntityName(EntityRecognizerContext context) {
+ String body = context.getBody();
if(body == null) return null;
Element e = XMLUtil.getElement(new StringReader(body));
if(e == null) return null;
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/MappedEntityRecognizer.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/MappedEntityRecognizer.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/MappedEntityRecognizer.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -32,8 +32,12 @@
}
}
+ public String getEntityName(EntityRecognizerContext context) {
+ return getEntityName(context.getExtension(), context.getBody());
+ }
+
// NB i18n: there is code that depends on these entity names (in English)
- public String getEntityName(String ext, String body) {
+ String getEntityName(String ext, String body) {
if(ext == null) return null;
String s = (String)map.get(ext.toLowerCase());
return (s != null) ? s : "File" + ext.toUpperCase(); //$NON-NLS-1$
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/ModelEntityRecognizer.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/ModelEntityRecognizer.java 2010-02-02
13:00:54 UTC (rev 20068)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/loaders/impl/ModelEntityRecognizer.java 2010-02-02
14:09:31 UTC (rev 20069)
@@ -16,7 +16,7 @@
import org.jboss.tools.common.model.plugin.ModelPlugin;
import org.jboss.tools.common.model.util.ModelFeatureFactory;
-public class ModelEntityRecognizer implements EntityRecognizerExtension {
+public class ModelEntityRecognizer implements EntityRecognizer {
private XModelMetaData meta = null;
private HashMap<String,EntityRecognizer[]> recognizers = new
HashMap<String,EntityRecognizer[]>();
@@ -30,33 +30,18 @@
load();
}
- public String getEntityName(String fileName, String ext, String body) {
+ public String getEntityName(EntityRecognizerContext context) {
+ String ext = context.getExtension();
if(ext != null) ext = ext.toLowerCase();
EntityRecognizer[] list = recognizers.get(ext);
if(list == null || list.length == 0) return "FileAny"; //$NON-NLS-1$
for (EntityRecognizer r: list) {
- String n = null;
- if(r instanceof EntityRecognizerExtension) {
- n = ((EntityRecognizerExtension)r).getEntityName(fileName, ext, body);
- } else {
- n = r.getEntityName(ext, body);
- }
+ String n = r.getEntityName(context);
if(n != null) return n;
}
return null;
}
- public String getEntityName(String ext, String body) {
- if(ext != null) ext = ext.toLowerCase();
- EntityRecognizer[] list = recognizers.get(ext);
- if(list == null || list.length == 0) return "FileAny"; //$NON-NLS-1$
- for (int i = 0; i < list.length; i++) {
- String n = list[i].getEntityName(ext, body);
- if(n != null) return n;
- }
- return null;
- }
-
private void load() {
XMapping m = meta.getMapping("Recognizers"); //$NON-NLS-1$
if(m == null) return;
@@ -158,7 +143,7 @@
}
}
- private class EntityRecognizerWrapper implements EntityRecognizerExtension {
+ private class EntityRecognizerWrapper implements EntityRecognizer {
String clsname;
EntityRecognizer resolved;
@@ -174,17 +159,9 @@
return resolved != null;
}
- public String getEntityName(String ext, String body) {
- return checkResolved() ? resolved.getEntityName(ext, body) : null;
- }
-
- public String getEntityName(String fileName, String ext, String body) {
+ public String getEntityName(EntityRecognizerContext context) {
if(!checkResolved()) return null;
- if(resolved instanceof EntityRecognizerExtension) {
- return ((EntityRecognizerExtension)resolved).getEntityName(fileName, ext, body);
- } else {
- return resolved.getEntityName(ext, body);
- }
+ return resolved.getEntityName(context);
}
}