[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