[jbosstools-commits] JBoss Tools SVN: r30644 - in trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb: internal/taglib and 1 other directories.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Mon Apr 18 15:26:25 EDT 2011
Author: scabanovich
Date: 2011-04-18 15:26:25 -0400 (Mon, 18 Apr 2011)
New Revision: 30644
Added:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/FunctionTagLib.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/taglib/IFunctionLibrary.java
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/scanner/XMLScanner.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/ELFunction.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/FaceletTagLibrary.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/TLDLibrary.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/taglib/IFaceletTagLibrary.java
Log:
JBIDE-8744
https://issues.jboss.org/browse/JBIDE-8744
Modified: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/scanner/XMLScanner.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/scanner/XMLScanner.java 2011-04-18 19:09:25 UTC (rev 30643)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/scanner/XMLScanner.java 2011-04-18 19:26:25 UTC (rev 30644)
@@ -16,6 +16,7 @@
import org.jboss.tools.common.model.XModel;
import org.jboss.tools.common.model.XModelException;
import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.XModelObjectConstants;
import org.jboss.tools.common.model.filesystems.impl.FolderImpl;
import org.jboss.tools.common.model.plugin.ModelPlugin;
import org.jboss.tools.common.model.project.ext.store.XMLStoreConstants;
@@ -177,6 +178,17 @@
library.addComponent(tag);
}
}
+ XModelObject functions = o.getChildByPath("Functions"); //$NON-NLS-1$
+ if(functions != null) {
+ ts = functions.getChildren();
+ for (XModelObject t: ts) {
+ ELFunction f = new ELFunction();
+ f.setId(t);
+ f.setName(new XMLValueInfo(t, XModelObjectConstants.ATTR_NAME));
+ f.setSignature(new XMLValueInfo(t, ATTR_FUNC_SIGN));
+ library.addFunction(f);
+ }
+ }
}
Modified: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/ELFunction.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/ELFunction.java 2011-04-18 19:09:25 UTC (rev 30643)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/ELFunction.java 2011-04-18 19:26:25 UTC (rev 30644)
@@ -10,10 +10,13 @@
******************************************************************************/
package org.jboss.tools.jst.web.kb.internal.taglib;
+import java.util.List;
import java.util.Properties;
import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.XModelObjectConstants;
import org.jboss.tools.common.model.project.ext.IValueInfo;
+import org.jboss.tools.common.model.project.ext.event.Change;
import org.jboss.tools.common.model.project.ext.store.XMLStoreConstants;
import org.jboss.tools.jst.web.kb.internal.KbObject;
import org.jboss.tools.jst.web.kb.internal.KbXMLStoreConstants;
@@ -89,11 +92,28 @@
protected void loadAttributesInfo(Element element, Properties context) {
if(context.get(XMLStoreConstants.KEY_MODEL_OBJECT) == getId() && getId() != null) {
XModelObject a = (XModelObject)getId();
- attributesInfo.put(XMLStoreConstants.ATTR_NAME, new XMLValueInfo(a, XMLScanner.ATTR_FUNC_NAME));
+ String attrname = a.getModelEntity().getAttribute(XMLScanner.ATTR_FUNC_NAME) != null ? XMLScanner.ATTR_FUNC_NAME : XModelObjectConstants.ATTR_NAME;
+ attributesInfo.put(XMLStoreConstants.ATTR_NAME, new XMLValueInfo(a, attrname));
attributesInfo.put(SIGNATURE, new XMLValueInfo(a, XMLScanner.ATTR_FUNC_SIGN));
} else {
super.loadAttributesInfo(element, context);
}
}
+ @Override
+ public List<Change> merge(KbObject s) {
+ List<Change> changes = super.merge(s);
+
+ ELFunction a = (ELFunction)s;
+ if(!stringsEqual(name, a.name)) {
+ changes = Change.addChange(changes, new Change(this, XMLStoreConstants.ATTR_NAME, name, a.name));
+ name = a.name;
+ }
+ if(!stringsEqual(signature, a.signature)) {
+ changes = Change.addChange(changes, new Change(this, SIGNATURE, signature, a.signature));
+ signature = a.signature;
+ }
+ return changes;
+ }
+
}
Modified: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/FaceletTagLibrary.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/FaceletTagLibrary.java 2011-04-18 19:09:25 UTC (rev 30643)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/FaceletTagLibrary.java 2011-04-18 19:26:25 UTC (rev 30644)
@@ -10,115 +10,24 @@
******************************************************************************/
package org.jboss.tools.jst.web.kb.internal.taglib;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.jboss.tools.common.model.project.ext.event.Change;
-import org.jboss.tools.common.xml.XMLUtilities;
-import org.jboss.tools.jst.web.kb.internal.KbObject;
import org.jboss.tools.jst.web.kb.internal.KbXMLStoreConstants;
-import org.jboss.tools.jst.web.kb.taglib.IELFunction;
import org.jboss.tools.jst.web.kb.taglib.IFaceletTagLibrary;
-import org.w3c.dom.Element;
/**
* @author Viacheslav Kabanovich
*/
-public class FaceletTagLibrary extends AbstractTagLib implements
+public class FaceletTagLibrary extends FunctionTagLib implements
IFaceletTagLibrary {
- List<ELFunction> functions = new ArrayList<ELFunction>();
- IELFunction[] functionArray = null;
- public FaceletTagLibrary() {
-
+ public FaceletTagLibrary() {
}
- public IELFunction[] getFunctions() {
- if(functionArray == null) {
- functionArray = functions.toArray(new ELFunction[0]);
- }
- return functionArray;
- }
-
- public void addFunction(ELFunction f) {
- functions.add(f);
- functionArray = null;
- }
-
public FaceletTagLibrary clone() throws CloneNotSupportedException {
- FaceletTagLibrary copy = (FaceletTagLibrary)super.clone();
- copy.functions = new ArrayList<ELFunction>();
- copy.functionArray = null;
- for (IELFunction f: getFunctions()) {
- copy.addFunction(((ELFunction)f).clone());
- }
- return copy;
+ return (FaceletTagLibrary)super.clone();
}
public String getXMLClass() {
return KbXMLStoreConstants.CLS_FACELET_LIBRARY;
}
- public List<Change> merge(KbObject s) {
- List<Change> changes = super.merge(s);
- FaceletTagLibrary t = (FaceletTagLibrary)s;
- Change children = new Change(this, null, null, null);
- mergeFunctions(t, children);
- changes = Change.addChange(changes, children);
- return changes;
- }
-
- public void mergeFunctions(FaceletTagLibrary c, Change children) {
- Map<Object,ELFunction> functionMap = new HashMap<Object, ELFunction>();
- for (IELFunction f: getFunctions()) functionMap.put(((KbObject)f).getId(), (ELFunction)f);
- for (IELFunction f: c.getFunctions()) {
- ELFunction loaded = (ELFunction)f;
- ELFunction current = functionMap.get(loaded.getId());
- if(current == null) {
- addFunction(loaded);
- Change change = new Change(this, null, null, loaded);
- children.addChildren(Change.addChange(null, change));
- } else {
- List<Change> rc = current.merge(loaded);
- if(rc != null) children.addChildren(rc);
- }
- }
- for (ELFunction f: functionMap.values()) {
- ELFunction removed = f;
- synchronized (functions) {
- if(functions.contains(removed)) {
- continue;
- }
- functions.remove(removed.getName());
- functionArray = null;
- }
- Change change = new Change(this, null, removed, null);
- children.addChildren(Change.addChange(null, change));
- }
- }
-
- public Element toXML(Element parent, Properties context) {
- Element element = super.toXML(parent, context);
-
- for (IELFunction f: getFunctions()) {
- ((KbObject)f).toXML(element, context);
- }
-
- return element;
- }
-
- public void loadXML(Element element, Properties context) {
- super.loadXML(element, context);
-
- Element[] cs = XMLUtilities.getChildren(element, KbXMLStoreConstants.TAG_FUNCTION);
- for (Element e: cs) {
- ELFunction f = new ELFunction();
- f.loadXML(e, context);
- addFunction(f);
- }
- }
-
}
Added: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/FunctionTagLib.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/FunctionTagLib.java (rev 0)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/FunctionTagLib.java 2011-04-18 19:26:25 UTC (rev 30644)
@@ -0,0 +1,104 @@
+package org.jboss.tools.jst.web.kb.internal.taglib;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.jboss.tools.common.model.project.ext.event.Change;
+import org.jboss.tools.common.xml.XMLUtilities;
+import org.jboss.tools.jst.web.kb.internal.KbObject;
+import org.jboss.tools.jst.web.kb.internal.KbXMLStoreConstants;
+import org.jboss.tools.jst.web.kb.taglib.IELFunction;
+import org.jboss.tools.jst.web.kb.taglib.IFunctionLibrary;
+import org.w3c.dom.Element;
+
+public abstract class FunctionTagLib extends AbstractTagLib implements IFunctionLibrary {
+ protected List<ELFunction> functions = new ArrayList<ELFunction>();
+ protected IELFunction[] functionArray = null;
+
+ public FunctionTagLib() {}
+
+ public IELFunction[] getFunctions() {
+ if(functionArray == null) {
+ functionArray = functions.toArray(new ELFunction[0]);
+ }
+ return functionArray;
+ }
+
+ public FunctionTagLib clone() throws CloneNotSupportedException {
+ FunctionTagLib copy = (FunctionTagLib)super.clone();
+ copy.functions = new ArrayList<ELFunction>();
+ copy.functionArray = null;
+ for (IELFunction f: getFunctions()) {
+ copy.addFunction(((ELFunction)f).clone());
+ }
+ return copy;
+ }
+
+ public void addFunction(ELFunction f) {
+ functions.add(f);
+ functionArray = null;
+ }
+
+ public List<Change> merge(KbObject s) {
+ List<Change> changes = super.merge(s);
+ FunctionTagLib t = (FunctionTagLib)s;
+ Change children = new Change(this, null, null, null);
+ mergeFunctions(t, children);
+ changes = Change.addChange(changes, children);
+ return changes;
+ }
+
+ public void mergeFunctions(FunctionTagLib c, Change children) {
+ Map<Object,ELFunction> functionMap = new HashMap<Object, ELFunction>();
+ for (IELFunction f: getFunctions()) functionMap.put(((KbObject)f).getId(), (ELFunction)f);
+ for (IELFunction f: c.getFunctions()) {
+ ELFunction loaded = (ELFunction)f;
+ ELFunction current = functionMap.get(loaded.getId());
+ if(current == null) {
+ addFunction(loaded);
+ Change change = new Change(this, null, null, loaded);
+ children.addChildren(Change.addChange(null, change));
+ } else {
+ List<Change> rc = current.merge(loaded);
+ if(rc != null) children.addChildren(rc);
+ }
+ }
+ for (ELFunction f: functionMap.values()) {
+ ELFunction removed = f;
+ synchronized (functions) {
+ if(functions.contains(removed)) {
+ continue;
+ }
+ functions.remove(removed.getName());
+ functionArray = null;
+ }
+ Change change = new Change(this, null, removed, null);
+ children.addChildren(Change.addChange(null, change));
+ }
+ }
+
+ public Element toXML(Element parent, Properties context) {
+ Element element = super.toXML(parent, context);
+
+ for (IELFunction f: getFunctions()) {
+ ((KbObject)f).toXML(element, context);
+ }
+
+ return element;
+ }
+
+ public void loadXML(Element element, Properties context) {
+ super.loadXML(element, context);
+
+ Element[] cs = XMLUtilities.getChildren(element, KbXMLStoreConstants.TAG_FUNCTION);
+ for (Element e: cs) {
+ ELFunction f = new ELFunction();
+ f.loadXML(e, context);
+ addFunction(f);
+ }
+ }
+
+}
Property changes on: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/FunctionTagLib.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/TLDLibrary.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/TLDLibrary.java 2011-04-18 19:09:25 UTC (rev 30643)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/TLDLibrary.java 2011-04-18 19:26:25 UTC (rev 30644)
@@ -22,7 +22,7 @@
/**
* @author Viacheslav Kabanovich
*/
-public class TLDLibrary extends AbstractTagLib implements ITLDLibrary {
+public class TLDLibrary extends FunctionTagLib implements ITLDLibrary {
public static final String DISPLAY_NAME = "display-name"; //$NON-NLS-1$
public static final String SHORT_NAME = "short-name"; //$NON-NLS-1$
public static final String VERSION = "version"; //$NON-NLS-1$
Modified: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/taglib/IFaceletTagLibrary.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/taglib/IFaceletTagLibrary.java 2011-04-18 19:09:25 UTC (rev 30643)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/taglib/IFaceletTagLibrary.java 2011-04-18 19:26:25 UTC (rev 30644)
@@ -13,10 +13,6 @@
/**
* @author Alexey Kazakov
*/
-public interface IFaceletTagLibrary extends ITagLibrary {
+public interface IFaceletTagLibrary extends IFunctionLibrary {
- /**
- * @return EL functions
- */
- IELFunction[] getFunctions();
}
\ No newline at end of file
Added: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/taglib/IFunctionLibrary.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/taglib/IFunctionLibrary.java (rev 0)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/taglib/IFunctionLibrary.java 2011-04-18 19:26:25 UTC (rev 30644)
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2009 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.jst.web.kb.taglib;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public interface IFunctionLibrary extends ITagLibrary {
+
+ /**
+ * @return EL functions
+ */
+ IELFunction[] getFunctions();
+
+}
Property changes on: trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/taglib/IFunctionLibrary.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
More information about the jbosstools-commits
mailing list