Author: scabanovich
Date: 2011-09-27 19:05:33 -0400 (Tue, 27 Sep 2011)
New Revision: 35091
Added:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/scanner/LibraryProxy.java
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/scanner/XMLScanner.java
Log:
JBIDE-9785
https://issues.jboss.org/browse/JBIDE-9785
KB model file storage is reduced.
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 2011-09-27
22:51:00 UTC (rev 35090)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/KbProject.java 2011-09-27
23:05:33 UTC (rev 35091)
@@ -46,6 +46,7 @@
import org.jboss.tools.jst.web.kb.KbProjectFactory;
import org.jboss.tools.jst.web.kb.WebKbPlugin;
import org.jboss.tools.jst.web.kb.internal.scanner.ClassPathMonitor;
+import org.jboss.tools.jst.web.kb.internal.scanner.LibraryProxy;
import org.jboss.tools.jst.web.kb.internal.scanner.LoadedDeclarations;
import org.jboss.tools.jst.web.kb.internal.taglib.AbstractTagLib;
import org.jboss.tools.jst.web.kb.internal.taglib.FaceletTagLibrary;
@@ -55,6 +56,7 @@
import org.jboss.tools.jst.web.kb.internal.taglib.myfaces.MyFacesTagLibrary;
import org.jboss.tools.jst.web.kb.require.KbRequireBuilder;
import org.jboss.tools.jst.web.kb.require.KbRequireDefinition;
+import org.jboss.tools.jst.web.kb.taglib.ICompositeTagLibrary;
import org.jboss.tools.jst.web.kb.taglib.ICustomTagLibrary;
import org.jboss.tools.jst.web.kb.taglib.ITagLibrary;
import org.w3c.dom.Element;
@@ -549,8 +551,14 @@
} else {
//consider other cases;
}
+ if(tagLib != null && !(tagLib instanceof ICompositeTagLibrary)) {
+ LibraryProxy proxy = new LibraryProxy(tagLib);
+ proxy.loadXML(library, context);
+ tagLib = proxy.getLibrary();
+ } else if(tagLib != null) {
+ tagLib.loadXML(library, context);
+ }
if(tagLib != null) {
- tagLib.loadXML(library, context);
ds.getLibraries().add(tagLib);
}
}
@@ -591,7 +599,12 @@
for (ITagLibrary d: fs) {
if(d instanceof ICustomTagLibrary) continue;
AbstractTagLib t = (AbstractTagLib)d;
- t.toXML(cse, context);
+ if(!(t instanceof ICompositeTagLibrary)) {
+ LibraryProxy proxy = new LibraryProxy(t);
+ proxy.toXML(cse, context);
+ } else {
+ t.toXML(cse, context);
+ }
}
}
}
Added:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/scanner/LibraryProxy.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/scanner/LibraryProxy.java
(rev 0)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/scanner/LibraryProxy.java 2011-09-27
23:05:33 UTC (rev 35091)
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.internal.scanner;
+
+import java.util.Properties;
+
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.jst.web.kb.internal.KbObject;
+import org.jboss.tools.jst.web.kb.internal.taglib.AbstractTagLib;
+import org.w3c.dom.Element;
+
+/**
+ * Stores/loads first-level link between KB library object and underlying XModel object.
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class LibraryProxy extends KbObject {
+ AbstractTagLib library;
+
+ public LibraryProxy(AbstractTagLib library) {
+ this.library = library;
+ setSourcePath(library.getSourcePath());
+ setId(library.getId());
+ }
+
+ public AbstractTagLib getLibrary() {
+ return library;
+ }
+
+ public String getXMLName() {
+ return library.getXMLName();
+ }
+
+ public String getXMLClass() {
+ return library.getXMLClass();
+ }
+
+ public void loadXML(Element element, Properties context) {
+ super.loadXML(element, context);
+ XModelObject o = (XModelObject)getId();
+ LoadedDeclarations ds = new XMLScanner().parse(o, getSourcePath(),
library.getKbProject());
+ if(ds != null && !ds.getLibraries().isEmpty()) {
+ library = (AbstractTagLib)ds.getLibraries().get(0);
+ } else {
+ library = null;
+ }
+ }
+}
Property changes on:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/scanner/LibraryProxy.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/scanner/XMLScanner.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/scanner/XMLScanner.java 2011-09-27
22:51:00 UTC (rev 35090)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/scanner/XMLScanner.java 2011-09-27
23:05:33 UTC (rev 35091)
@@ -122,16 +122,16 @@
LoadedDeclarations ds = new LoadedDeclarations();
if(LibraryScanner.isTLDFile(o)) {
- parseTLD(o, source, sp, ds);
+ parseTLD(o, source, ds);
} else if(LibraryScanner.isFaceletTaglibFile(o)) {
- parseFaceletTaglib(o, source, sp, ds);
+ parseFaceletTaglib(o, source, ds);
} else if(LibraryScanner.isFacesConfigFile(o)) {
- parseFacesConfig(o, source, sp, ds);
+ parseFacesConfig(o, source, ds);
}
return ds;
}
- private void parseTLD(XModelObject o, IPath source, IKbProject sp, LoadedDeclarations
ds) {
+ private void parseTLD(XModelObject o, IPath source, LoadedDeclarations ds) {
TLDLibrary library = new TLDLibrary();
library.setId(o);
library.setURI(new XMLValueInfo(o, AbstractTagLib.URI));
@@ -193,7 +193,7 @@
}
- private void parseFaceletTaglib(XModelObject o, IPath source, IKbProject sp,
LoadedDeclarations ds) {
+ private void parseFaceletTaglib(XModelObject o, IPath source, LoadedDeclarations ds) {
FaceletTagLibrary library = new FaceletTagLibrary();
library.setId(o);
library.setURI(new XMLValueInfo(o, AbstractTagLib.URI));
@@ -240,7 +240,7 @@
}
}
- private void parseFacesConfig(XModelObject o, IPath source, IKbProject sp,
LoadedDeclarations ds) {
+ private void parseFacesConfig(XModelObject o, IPath source, LoadedDeclarations ds) {
FacesConfigTagLibrary library = new FacesConfigTagLibrary();
library.setId(o);
library.setURI("TODO"); //TODO what is the URI? //$NON-NLS-1$