Author: akazakov
Date: 2012-07-27 16:34:46 -0400 (Fri, 27 Jul 2012)
New Revision: 42768
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.test/src/org/jboss/tools/jsf/kb/test/WebWithModuleTest.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/IKbProject.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/KbProject.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/LibraryStorage.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/StaticLibraries.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/AbstractAttribute.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/AbstractTagLib.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/FunctionTagLib.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/taglib/TagLibraryManager.java
trunk/jst/tests/org.jboss.tools.jst.web.kb.test/src/org/jboss/tools/jst/web/kb/test/KbMockModelTest.java
trunk/jst/tests/org.jboss.tools.jst.web.kb.test/src/org/jboss/tools/jst/web/kb/test/WebWithModuleTest.java
Log:
https://issues.jboss.org/browse/JBIDE-12304 Make Quick Fix "Add tag library
definition" work with KB Model instead of using plain tag library list
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.test/src/org/jboss/tools/jsf/kb/test/WebWithModuleTest.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.test/src/org/jboss/tools/jsf/kb/test/WebWithModuleTest.java 2012-07-27
16:07:57 UTC (rev 42767)
+++
trunk/jsf/tests/org.jboss.tools.jsf.test/src/org/jboss/tools/jsf/kb/test/WebWithModuleTest.java 2012-07-27
20:34:46 UTC (rev 42768)
@@ -56,7 +56,7 @@
IKbProject kbUtility = KbProjectFactory.getKbProject(utility, true);
assertNotNull(kbUtility);
int w = 0;
- while(kbUtility.getTagLibraries().length == 0 && w++ < 50) {
+ while(kbUtility.getProjectTagLibraries().length == 0 && w++ < 50) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/IKbProject.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/IKbProject.java 2012-07-27
16:07:57 UTC (rev 42767)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/IKbProject.java 2012-07-27
20:34:46 UTC (rev 42768)
@@ -10,6 +10,8 @@
******************************************************************************/
package org.jboss.tools.jst.web.kb;
+import java.util.List;
+
import org.eclipse.core.resources.IProjectNature;
import org.eclipse.core.runtime.IPath;
import org.jboss.tools.common.validation.IProjectValidationContext;
@@ -26,12 +28,20 @@
public static String NATURE_ID = WebKbPlugin.PLUGIN_ID + ".kbnature";
//$NON-NLS-1$
/**
- * Returns all available tag libraries.
+ * Returns all available tag libraries of the project.
+ * Doesn't returns libraries from XML Catalog.
+ * The same as getTagLibraries(false);
* @return
*/
- ITagLibrary[] getTagLibraries();
+ ITagLibrary[] getProjectTagLibraries();
/**
+ * Returns all available tag libraries including static libraries from XML Catalog.
+ * @return
+ */
+ List<ITagLibrary> getAllTagLibraries();
+
+ /**
* Returns tag libraries by URI
* @param uri
* @return
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/KbProject.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/KbProject.java 2012-07-27
16:07:57 UTC (rev 42767)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/KbProject.java 2012-07-27
20:34:46 UTC (rev 42768)
@@ -100,16 +100,30 @@
public void setMock() {
isMock = true;
}
+
/*
* (non-Javadoc)
- * @see org.jboss.tools.jst.web.kb.IKbProject#getTagLibraries()
+ * @see org.jboss.tools.jst.web.kb.IKbProject#getProjectTagLibraries()
*/
- public ITagLibrary[] getTagLibraries() {
+ @Override
+ public ITagLibrary[] getProjectTagLibraries() {
return libraries.getAllLibrariesArray();
}
/*
* (non-Javadoc)
+ * @see org.jboss.tools.jst.web.kb.IKbProject#getAllTagLibraries(boolean)
+ */
+ @Override
+ public List<ITagLibrary> getAllTagLibraries() {
+ Set<ITagLibrary> libs = libraries.getAllLibraries();
+ List<ITagLibrary> result = StaticLibraries.instance.getAllTagLibraries();
+ result.addAll(libs);
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.IKbProject#getTagLibraries(java.lang.String)
*/
public ITagLibrary[] getTagLibraries(String uri) {
@@ -664,7 +678,7 @@
*/
Map<IPath, LoadedDeclarations> getAllDeclarations() throws
CloneNotSupportedException {
Map<IPath, LoadedDeclarations> map = new HashMap<IPath,
LoadedDeclarations>();
- for (ITagLibrary f : getTagLibraries()) {
+ for (ITagLibrary f : getProjectTagLibraries()) {
IPath p = f.getSourcePath();
if(p == null || EclipseResourceUtil.isJar(p.toString())) continue;
LoadedDeclarations ds = map.get(p);
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/LibraryStorage.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/LibraryStorage.java 2012-07-27
16:07:57 UTC (rev 42767)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/LibraryStorage.java 2012-07-27
20:34:46 UTC (rev 42768)
@@ -50,6 +50,10 @@
return allLibrariesArray;
}
+ synchronized Set<ITagLibrary> getAllLibraries() {
+ return allLibraries;
+ }
+
public synchronized ITagLibrary[] getLibrariesArray(String uri) {
ITagLibrary[] result = librariesByUriArray.get(uri);
if(result == null) {
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/StaticLibraries.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/StaticLibraries.java 2012-07-27
16:07:57 UTC (rev 42767)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/StaticLibraries.java 2012-07-27
20:34:46 UTC (rev 42768)
@@ -10,11 +10,12 @@
******************************************************************************/
package org.jboss.tools.jst.web.kb.internal;
-
import java.io.File;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.eclipse.core.runtime.Path;
import org.jboss.tools.common.model.XModelObject;
@@ -35,7 +36,7 @@
LibraryStorage libraries = new LibraryStorage();
Map<File, XModelObject> loadedFolders = new HashMap<File, XModelObject>();
Map<File, XModelObject> loadedFiles = new HashMap<File, XModelObject>();
-
+
private StaticLibraries() {}
public ITagLibrary[] getLibraries(String uri) {
@@ -44,6 +45,11 @@
if(loadedFiles.containsKey(file)) {
return libraries.getLibrariesArray(uri);
}
+ addLib(file);
+ return libraries.getLibrariesArray(uri);
+ }
+
+ private void addLib(File file) {
File folder = file.getParentFile();
if(!loadedFolders.containsKey(folder)) {
XModelObject o = EclipseResourceUtil.createObjectForLocation(file.getAbsolutePath());
@@ -64,8 +70,18 @@
}
}
}
-
- return libraries.getLibrariesArray(uri);
}
-}
+ public List<ITagLibrary> getAllTagLibraries() {
+ List<ITagLibrary> libs = new ArrayList<ITagLibrary>();
+ List<File> files = TagLibraryManager.getStaticTagLibs();
+ for (File file : files) {
+ if(!loadedFiles.containsKey(file)) {
+ addLib(file);
+ }
+ Set<ITagLibrary> ls = libraries.getLibrariesBySource(new
Path(file.getAbsolutePath()));
+ libs.addAll(ls);
+ }
+ return libs;
+ }
+}
\ No newline at end of file
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/AbstractAttribute.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/AbstractAttribute.java 2012-07-27
16:07:57 UTC (rev 42767)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/AbstractAttribute.java 2012-07-27
20:34:46 UTC (rev 42768)
@@ -42,6 +42,7 @@
/* (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.taglib.IAttribute#getDescription()
*/
+ @Override
public String getDescription() {
return description;
}
@@ -61,6 +62,7 @@
/* (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.taglib.IAttribute#getName()
*/
+ @Override
public String getName() {
return name;
}
@@ -80,6 +82,7 @@
/* (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.taglib.IAttribute#isPreferable()
*/
+ @Override
public boolean isPreferable() {
return isRequired();
}
@@ -87,6 +90,7 @@
/* (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.taglib.IAttribute#isRequired()
*/
+ @Override
public boolean isRequired() {
return required;
}
@@ -107,6 +111,7 @@
* (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.taglib.IAttribute#getComponent()
*/
+ @Override
public IComponent getComponent() {
return (IComponent)parent;
}
@@ -115,6 +120,7 @@
* (non-Javadoc)
* @see
org.jboss.tools.jst.web.kb.IProposalProcessor#getProposals(org.jboss.tools.jst.web.kb.KbQuery,
org.jboss.tools.jst.web.kb.IPageContext)
*/
+ @Override
public TextProposal[] getProposals(KbQuery query, IPageContext context) {
return EMPTY_PROPOSAL_LIST;
}
@@ -176,7 +182,7 @@
@Override
public Element toXML(Element parent, Properties context) {
Element element = super.toXML(parent, context);
-
+
if(attributesInfo.get(XMLStoreConstants.ATTR_NAME) == null && name != null) {
element.setAttribute(XMLStoreConstants.ATTR_NAME, name);
}
@@ -207,9 +213,7 @@
*/
@Override
protected void saveAttributesInfo(Element element, Properties context) {
- if(context.get(XMLStoreConstants.KEY_MODEL_OBJECT) == getId()) {
-
- } else {
+ if(context.get(XMLStoreConstants.KEY_MODEL_OBJECT) != getId()) {
super.saveAttributesInfo(element, context);
}
}
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/AbstractTagLib.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/AbstractTagLib.java 2012-07-27
16:07:57 UTC (rev 42767)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/AbstractTagLib.java 2012-07-27
20:34:46 UTC (rev 42768)
@@ -44,7 +44,6 @@
* Abstract implementation of ITagLibrary
* @author Alexey Kazakov
*/
-
public abstract class AbstractTagLib extends KbObject implements ITagLibrary {
public static String URI = "uri"; //$NON-NLS-1$
@@ -60,6 +59,7 @@
/* (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.taglib.TagLibrary#getAllComponents()
*/
+ @Override
public IComponent[] getComponents() {
if(componentsArray==null) {
synchronized (components) {
@@ -72,6 +72,7 @@
/* (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.taglib.TagLibrary#getComponent(java.lang.String)
*/
+ @Override
public IComponent getComponent(String name) {
if(ignoreCase) {
name = name.toLowerCase();
@@ -83,6 +84,7 @@
* (non-Javadoc)
* @see
org.jboss.tools.jst.web.kb.taglib.ITagLibrary#getComponentByType(java.lang.String)
*/
+ @Override
public IComponent getComponentByType(String type) {
IComponent[] comps = getComponents();
for (int i = 0; i < comps.length; i++) {
@@ -96,6 +98,7 @@
/* (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.taglib.TagLibrary#getComponents(java.lang.String)
*/
+ @Override
public IComponent[] getComponents(String nameTemplate) {
return getComponents(nameTemplate, null);
}
@@ -121,6 +124,7 @@
/* (non-Javadoc)
* @see
org.jboss.tools.jst.web.kb.taglib.ITagLibrary#getComponents(org.jboss.tools.jst.web.kb.KbQuery,
org.jboss.tools.jst.web.kb.PageContext)
*/
+ @Override
public IComponent[] getComponents(KbQuery query, IPageContext context) {
List<String> prefixes = getPrefixes(query, context);
return getComponentsByPrefixes(query, prefixes, context);
@@ -347,6 +351,7 @@
/* (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.taglib.TagLibrary#getResource()
*/
+ @Override
public IResource getResource() {
if(resource != null) return resource;
if(source != null) {
@@ -365,6 +370,7 @@
/* (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.taglib.IComponent#getNameSpace()
*/
+ @Override
public INameSpace getDefaultNameSpace() {
return nameSpace;
}
@@ -379,6 +385,7 @@
/* (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.taglib.TagLibrary#getURI()
*/
+ @Override
public String getURI() {
return uri;
}
@@ -399,6 +406,7 @@
* (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.taglib.ITagLibrary#getVersion()
*/
+ @Override
public String getVersion() {
return version;
}
@@ -413,6 +421,7 @@
/* (non-Javadoc)
* @see
org.jboss.tools.jst.web.kb.ProposalProcessor#getProposals(org.jboss.tools.jst.web.kb.KbQuery,
org.jboss.tools.jst.web.kb.PageContext)
*/
+ @Override
public TextProposal[] getProposals(KbQuery query, IPageContext context) {
List<String> prefixes = getPrefixes(query, context);
List<TextProposal> proposals = new ArrayList<TextProposal>();
@@ -548,6 +557,7 @@
private void clearComponentArrays() {
componentsArray = null;
}
+
/*
* (non-Javadoc)
* @see org.jboss.tools.jst.web.kb.internal.KbObject#getXMLName()
@@ -621,5 +631,4 @@
protected void loadAttributeValues(Element element) {
setURI(attributesInfo.get(URI));
}
-
}
\ No newline at end of file
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 2012-07-27
16:07:57 UTC (rev 42767)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/FaceletTagLibrary.java 2012-07-27
20:34:46 UTC (rev 42768)
@@ -22,12 +22,13 @@
public FaceletTagLibrary() {
}
+ @Override
public FaceletTagLibrary clone() throws CloneNotSupportedException {
return (FaceletTagLibrary)super.clone();
}
+ @Override
public String getXMLClass() {
return KbXMLStoreConstants.CLS_FACELET_LIBRARY;
}
-
-}
+}
\ No newline at end of file
Modified:
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 2012-07-27
16:07:57 UTC (rev 42767)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/taglib/FunctionTagLib.java 2012-07-27
20:34:46 UTC (rev 42768)
@@ -35,6 +35,7 @@
public FunctionTagLib() {}
+ @Override
public IELFunction[] getFunctions() {
if(functionArray == null) {
functionArray = functions.toArray(new ELFunction[0]);
@@ -42,6 +43,7 @@
return functionArray;
}
+ @Override
public FunctionTagLib clone() throws CloneNotSupportedException {
FunctionTagLib copy = (FunctionTagLib)super.clone();
copy.functions = new ArrayList<ELFunction>();
@@ -57,6 +59,7 @@
functionArray = null;
}
+ @Override
public List<Change> merge(KbObject s) {
List<Change> changes = super.merge(s);
FunctionTagLib t = (FunctionTagLib)s;
@@ -95,6 +98,7 @@
}
}
+ @Override
public Element toXML(Element parent, Properties context) {
Element element = super.toXML(parent, context);
@@ -105,9 +109,10 @@
return element;
}
+ @Override
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();
@@ -115,5 +120,4 @@
addFunction(f);
}
}
-
-}
+}
\ No newline at end of file
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/taglib/TagLibraryManager.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/taglib/TagLibraryManager.java 2012-07-27
16:07:57 UTC (rev 42767)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/taglib/TagLibraryManager.java 2012-07-27
20:34:46 UTC (rev 42768)
@@ -13,10 +13,13 @@
import java.io.File;
import java.io.IOException;
import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.wst.xml.core.internal.XMLCorePlugin;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogEntry;
import org.jboss.tools.jst.web.kb.IKbProject;
import org.jboss.tools.jst.web.kb.KbProjectFactory;
import org.jboss.tools.jst.web.kb.WebKbPlugin;
@@ -37,7 +40,7 @@
if(kbProject == null) {
return new ITagLibrary[0];
}
- return uri==null?kbProject.getTagLibraries():kbProject.getTagLibraries(uri);
+ return uri==null?kbProject.getProjectTagLibraries():kbProject.getTagLibraries(uri);
}
/**
@@ -92,4 +95,30 @@
return null;
}
+
+ /**
+ * Returns all the tag libraries which are available for all the projects
+ * even if the lib are not in the project classpath.
+ * These libs should be registered in XML Catalog via plugin.xml.
+ * @param uri
+ * @return
+ */
+ public static List<File> getStaticTagLibs() {
+ List<File> files = new ArrayList<File>();
+ try {
+ ICatalogEntry[] entries =
XMLCorePlugin.getDefault().getDefaultXMLCatalog().getCatalogEntries();
+ for (ICatalogEntry entry : entries) {
+ String uri = entry.getURI();
+ if(uri!=null && uri.endsWith(".tld") &&
uri.endsWith(".xml")) {
+ File file = new File(new URL(uri).getFile());
+ if(file.exists()) {
+ files.add(file);
+ }
+ }
+ }
+ } catch (IOException e) {
+ WebKbPlugin.getDefault().logError(e);
+ }
+ return files;
+ }
}
\ No newline at end of file
Modified:
trunk/jst/tests/org.jboss.tools.jst.web.kb.test/src/org/jboss/tools/jst/web/kb/test/KbMockModelTest.java
===================================================================
---
trunk/jst/tests/org.jboss.tools.jst.web.kb.test/src/org/jboss/tools/jst/web/kb/test/KbMockModelTest.java 2012-07-27
16:07:57 UTC (rev 42767)
+++
trunk/jst/tests/org.jboss.tools.jst.web.kb.test/src/org/jboss/tools/jst/web/kb/test/KbMockModelTest.java 2012-07-27
20:34:46 UTC (rev 42768)
@@ -64,7 +64,7 @@
kbProject = KbProjectFactory.getKbProject(project, true, false);
assertNotNull(kbProject);
- ITagLibrary[] ls = kbProject.getTagLibraries();
+ ITagLibrary[] ls = kbProject.getProjectTagLibraries();
assertTrue(ls.length > 0);
}
Modified:
trunk/jst/tests/org.jboss.tools.jst.web.kb.test/src/org/jboss/tools/jst/web/kb/test/WebWithModuleTest.java
===================================================================
---
trunk/jst/tests/org.jboss.tools.jst.web.kb.test/src/org/jboss/tools/jst/web/kb/test/WebWithModuleTest.java 2012-07-27
16:07:57 UTC (rev 42767)
+++
trunk/jst/tests/org.jboss.tools.jst.web.kb.test/src/org/jboss/tools/jst/web/kb/test/WebWithModuleTest.java 2012-07-27
20:34:46 UTC (rev 42768)
@@ -55,7 +55,7 @@
IKbProject kbUtility = KbProjectFactory.getKbProject(utility, true);
assertNotNull(kbUtility);
int w = 0;
- while(kbUtility.getTagLibraries().length == 0 && w++ < 50) {
+ while(kbUtility.getProjectTagLibraries().length == 0 && w++ < 50) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {