Author: alexsmirnov
Date: 2009-09-21 20:35:44 -0400 (Mon, 21 Sep 2009)
New Revision: 15653
Modified:
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/Icon.java
root/cdk/trunk/plugins/generator/pom.xml
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/ComponentProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/DescriptionGroup.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ModelElementBase.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/CdkEntityResolver.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/JAXBBinding.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/DescriptionGroupBean.java
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/FacesConfigTest.java
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/FragmentParserTest.java
root/cdk/trunk/plugins/generator/src/test/resources/org/richfaces/cdk/xmlconfig/component.xml
root/cdk/trunk/plugins/generator/src/test/resources/org/richfaces/cdk/xmlconfig/properties.xml
Log:
turn oh xml schema validation for JAXB parser
Modified:
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/Icon.java
===================================================================
---
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/Icon.java 2009-09-21
21:21:50 UTC (rev 15652)
+++
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/Icon.java 2009-09-22
00:35:44 UTC (rev 15653)
@@ -50,8 +50,9 @@
*
* @return Icon url.
*/
- public String value();
+ public String small() default "";
+ public String large() default "";
}
Modified: root/cdk/trunk/plugins/generator/pom.xml
===================================================================
--- root/cdk/trunk/plugins/generator/pom.xml 2009-09-21 21:21:50 UTC (rev 15652)
+++ root/cdk/trunk/plugins/generator/pom.xml 2009-09-22 00:35:44 UTC (rev 15653)
@@ -145,7 +145,7 @@
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
- <version>2.8.1</version>
+ <version>2.9.1</version>
</dependency>
<!--
<dependency> <groupId>com.google.collections</groupId>
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/ComponentProcessor.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/ComponentProcessor.java 2009-09-21
21:21:50 UTC (rev 15652)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/ComponentProcessor.java 2009-09-22
00:35:44 UTC (rev 15653)
@@ -62,6 +62,7 @@
import org.richfaces.cdk.annotations.SuggestedValue;
import org.richfaces.cdk.model.ClassDescription;
import org.richfaces.cdk.model.ComponentLibrary;
+import org.richfaces.cdk.model.DescriptionGroup;
import org.richfaces.cdk.model.Property;
import org.richfaces.cdk.util.Strings;
import org.richfaces.cdk.xmlconfig.CdkEntityResolver;
@@ -194,7 +195,7 @@
facet.setDescription(beanProperty.getDocComment());
Icon icon = beanProperty.getAnnotation(Icon.class);
if (null != icon) {
- facet.setIcon(icon.value());
+ setIcon(facet, icon);
}
DisplayName displayName = beanProperty
.getAnnotation(DisplayName.class);
@@ -227,7 +228,7 @@
.getDocComment(componentElement));
Icon icon = componentElement.getAnnotation(Icon.class);
if (null != icon) {
- component.setIcon(icon.value());
+ setIcon(component, icon);
}
DisplayName displayName = componentElement
.getAnnotation(DisplayName.class);
@@ -236,6 +237,22 @@
}
}
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param component
+ * @param icon
+ */
+ private void setIcon(DescriptionGroup component, Icon icon) {
+ DescriptionGroup.Icon iconValue = new DescriptionGroup.Icon();
+ if (icon.small().length() > 0) {
+ iconValue.setSmallIcon(icon.small());
+ }
+ if (icon.large().length() > 0) {
+ iconValue.setLargeIcon(icon.large());
+ }
+ component.setIcon(iconValue);
+ }
+
private void setComponeneFamily(TypeElement componentElement,
org.richfaces.cdk.model.Component component) {
Family family = componentElement.getAnnotation(Family.class);
@@ -296,7 +313,7 @@
attribute.setDescription(beanProperty.getDocComment());
Icon icon = beanProperty.getAnnotation(Icon.class);
if (null != icon) {
- attribute.setIcon(icon.value());
+ setIcon(attribute,icon);
}
DisplayName displayName = beanProperty
.getAnnotation(DisplayName.class);
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/DescriptionGroup.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/DescriptionGroup.java 2009-09-21
21:21:50 UTC (rev 15652)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/DescriptionGroup.java 2009-09-22
00:35:44 UTC (rev 15653)
@@ -1,6 +1,7 @@
package org.richfaces.cdk.model;
import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
/**
* <p class="changed_added_4_0"></p>
@@ -10,6 +11,47 @@
public interface DescriptionGroup {
/**
+ * <p class="changed_added_4_0"></p>
+ * @author asmirnov(a)exadel.com
+ *
+ */
+ @XmlType(name="icon-type",namespace=ComponentLibrary.FACES_CONFIG_NAMESPACE)
+ public static final class Icon {
+ private String smallIcon;
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return the smallIcon
+ */
+ @XmlElement(name = "small-icon", namespace =
ComponentLibrary.FACES_CONFIG_NAMESPACE)
+ public String getSmallIcon() {
+ return smallIcon;
+ }
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param smallIcon the smallIcon to set
+ */
+ public void setSmallIcon(String smallIcon) {
+ this.smallIcon = smallIcon;
+ }
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return the largeIcon
+ */
+ @XmlElement(name = "large-icon", namespace =
ComponentLibrary.FACES_CONFIG_NAMESPACE)
+ public String getLargeIcon() {
+ return largeIcon;
+ }
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param largeIcon the largeIcon to set
+ */
+ public void setLargeIcon(String largeIcon) {
+ this.largeIcon = largeIcon;
+ }
+ private String largeIcon;
+ }
+
+ /**
* <p class="changed_added_4_0">Documentation description of that
element.
* </p>
*
@@ -55,7 +97,7 @@
*/
@XmlElement
@Merge
- public String getIcon();
+ public Icon getIcon();
/**
* <p class="changed_added_4_0">
@@ -64,6 +106,6 @@
* @param icon
* the icon to set
*/
- public void setIcon(String icon);
+ public void setIcon(Icon icon);
}
\ No newline at end of file
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ModelElementBase.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ModelElementBase.java 2009-09-21
21:21:50 UTC (rev 15652)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ModelElementBase.java 2009-09-22
00:35:44 UTC (rev 15653)
@@ -23,7 +23,7 @@
* Icon name for IDE tools
* </p>
*/
- private String icon;
+ private Icon icon;
private ConfigExtension extension;
public ModelElementBase() {
@@ -49,11 +49,11 @@
}
@XmlElement
- public final String getIcon() {
+ public final Icon getIcon() {
return icon;
}
- public final void setIcon(String icon) {
+ public final void setIcon(Icon icon) {
this.icon = icon;
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/CdkEntityResolver.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/CdkEntityResolver.java 2009-09-21
21:21:50 UTC (rev 15652)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/CdkEntityResolver.java 2009-09-22
00:35:44 UTC (rev 15653)
@@ -28,6 +28,7 @@
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URI;
import org.richfaces.cdk.CdkContext;
import org.richfaces.cdk.StandardSources;
@@ -59,21 +60,21 @@
private static final ImmutableMap<String, String> systemEntities = ImmutableMap
.<String, String> builder()
.put("http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd",
- URN_SYSTEM + "web-facesconfig_2_0.xsd")
+ URN_SYSTEM + "/web-facesconfig_2_0.xsd")
.put("http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd",
- URN_SYSTEM + "web-facesconfig_1_2.xsd")
+ URN_SYSTEM + "/web-facesconfig_1_2.xsd")
.put("http://java.sun.com/xml/ns/javaee/javaee_5.xsd",
- URN_SYSTEM + "javaee_5.xsd")
+ URN_SYSTEM + "/javaee_5.xsd")
.put(
"http://java.sun.com/xml/ns/javaee/javaee_web_services_1_2.xsd",
- URN_SYSTEM + "javaee_web_services_1_2.xsd")
+ URN_SYSTEM + "/javaee_web_services_1_2.xsd")
.put(
"http://java.sun.com/xml/ns/javaee/javaee_web_services_client_1_2.xsd",
- URN_SYSTEM + "javaee_web_services_client_1_2.xsd")
- .put("http://www.w3.org/2001/03/xml.xsd", URN_SYSTEM + "xml.xsd")
+ URN_SYSTEM + "/javaee_web_services_client_1_2.xsd")
+ .put("http://www.w3.org/2001/03/xml.xsd", URN_SYSTEM +
"/xml.xsd")
.build();
- private static final String SYSTEM_PREFIX = "/META-INF/schema/";
+ private static final String SYSTEM_PREFIX = "/META-INF/schema";
public static final String URN_RESOURCE = "urn:resource:";
@@ -116,7 +117,17 @@
@Override
public InputSource resolveEntity(String name, String publicId,
String baseURI, String systemId) throws SAXException, IOException {
- // TODO perform conversions with baseURI
+ // perform conversions with baseURI
+ if (null != systemId) {
+ try {
+ URI sourceURI = URI.create(systemId);
+ if (!sourceURI.isAbsolute() && null != baseURI) {
+ systemId = URI.create(baseURI).resolve(sourceURI).toString();
+ }
+ } catch (IllegalArgumentException e){
+ // Ignore ?
+ }
+ }
return resolveSystemId(systemId);
}
@@ -142,48 +153,51 @@
throws FileNotFoundException {
InputSource entity = null;
// first step - convert known system url's:
+ String systemIdInternal;
if (systemEntities.containsKey(systemId)) {
- systemId = systemEntities.get(systemId);
+ systemIdInternal = systemEntities.get(systemId);
+ } else {
+ systemIdInternal = systemId;
}
// Check registered urn's:
- if (systemId.startsWith(URN_SYSTEM)) {
+ if (systemIdInternal.startsWith(URN_SYSTEM)) {
// Cdk resources
- String path = systemId.substring(URN_SYSTEM.length());
+ String path = systemIdInternal.substring(URN_SYSTEM.length());
InputStream inputStream = CdkEntityResolver.class
.getResourceAsStream(SYSTEM_PREFIX + path);
if (null != inputStream) {
entity = new InputSource(inputStream);
-
}
- } else if (systemId.startsWith(URN_RESOURCE)) {
+ } else if (systemIdInternal.startsWith(URN_RESOURCE)) {
// Project resources
- String path = systemId.substring(URN_RESOURCE.length());
+ String path = systemIdInternal.substring(URN_RESOURCE.length());
InputStream inputStream = getContext().getLoader()
.getResourceAsStream(RESOURCE_PREFIX + path);
if (null != inputStream) {
entity = new InputSource(inputStream);
-
}
- } else if (systemId.startsWith(URN_ATTRIBUTES)) {
+ } else if (systemIdInternal.startsWith(URN_ATTRIBUTES)) {
// Standard attributes. Look for them in the satndard place via
// project classloader.
- String path = systemId.substring(URN_ATTRIBUTES.length());
+ String path = systemIdInternal.substring(URN_ATTRIBUTES.length());
InputStream inputStream = getContext().getLoader()
.getResourceAsStream(ATTRIBUTES_PREFIX + path);
if (null != inputStream) {
entity = new InputSource(inputStream);
-
}
- } else if (systemId.startsWith(URN_CONFIG)) {
+ } else if (systemIdInternal.startsWith(URN_CONFIG)) {
// Config folder.
- String path = systemId.substring(URN_CONFIG.length());
+ String path = systemIdInternal.substring(URN_CONFIG.length());
entity = getProjectInputSource(StandardSources.FACES_CONFIGS, path);
- } else if (systemId.startsWith(URN_TEMPLATES)) {
+ } else if (systemIdInternal.startsWith(URN_TEMPLATES)) {
// Templates folder.
- String path = systemId.substring(URN_TEMPLATES.length());
+ String path = systemIdInternal.substring(URN_TEMPLATES.length());
entity = getProjectInputSource(StandardSources.RENDERER_TEMPLATES,
path);
}
+ if(null != entity){
+ entity.setSystemId(systemId);
+ }
return entity;
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/JAXBBinding.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/JAXBBinding.java 2009-09-21
21:21:50 UTC (rev 15652)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/JAXBBinding.java 2009-09-22
00:35:44 UTC (rev 15653)
@@ -23,7 +23,6 @@
package org.richfaces.cdk.xmlconfig;
-import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.File;
@@ -34,7 +33,6 @@
import java.io.InputStream;
import java.io.Reader;
import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URI;
import java.net.URISyntaxException;
@@ -46,11 +44,6 @@
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.UnmarshallerHandler;
import javax.xml.bind.util.ValidationEventCollector;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.sax.SAXSource;
@@ -60,16 +53,12 @@
import org.richfaces.cdk.CdkContext;
import org.richfaces.cdk.CdkException;
import org.richfaces.cdk.CdkWorker;
-import org.richfaces.cdk.model.ClassDescription;
-import org.richfaces.cdk.model.ComponentLibrary;
import org.richfaces.cdk.model.ConfigExtension;
import org.richfaces.cdk.model.Extensible;
import org.richfaces.cdk.model.Key;
import org.richfaces.cdk.model.ModelElement;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
@@ -109,6 +98,7 @@
throws CdkException {
try {
InputSource input = new InputSource(new FileInputStream(file));
+ input.setSystemId(file.toURI().toString());
T unmarshal = unmarshal(schemaLocation, bindClass, input);
return unmarshal;
} catch (FileNotFoundException e) {
@@ -138,6 +128,8 @@
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
xmlReader.setEntityResolver(resolver);
xmlReader.setFeature("http://xml.org/sax/features/validation",
true);
+
xmlReader.setFeature("http://apache.org/xml/features/validation/sche...;, true);
+
xmlReader.setFeature("http://apache.org/xml/features/validation/dyna...;,
true);
// Setup JAXB to unmarshal
// TODO - create xinclude content handler that process xinclude directives
// and send SAX event to the unmarshaller handler.
@@ -299,7 +291,7 @@
if (source instanceof Extensible
&& destination instanceof Extensible) {
Extensible extensibleSource = (Extensible) source;
- Extensible extensibleDestination = (Extensible) destination;
+ Extensible<ConfigExtension> extensibleDestination =
(Extensible<ConfigExtension>) destination;
ConfigExtension sourceExtension = extensibleSource
.getExtension();
if (null != sourceExtension) {
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/DescriptionGroupBean.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/DescriptionGroupBean.java 2009-09-21
21:21:50 UTC (rev 15652)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/DescriptionGroupBean.java 2009-09-22
00:35:44 UTC (rev 15653)
@@ -7,7 +7,7 @@
public class DescriptionGroupBean implements DescriptionGroup {
- private String icon;
+ private Icon icon;
private String description;
private String displayname;
@@ -20,7 +20,7 @@
* @return the icon
*/
@XmlElement(name = "icon", namespace =
ComponentLibrary.FACES_CONFIG_NAMESPACE)
- public final String getIcon() {
+ public final Icon getIcon() {
return icon;
}
@@ -28,7 +28,7 @@
* <p class="changed_added_4_0"></p>
* @param icon the icon to set
*/
- public final void setIcon(String icon) {
+ public final void setIcon(Icon icon) {
this.icon = icon;
}
Modified:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/FacesConfigTest.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/FacesConfigTest.java 2009-09-21
21:21:50 UTC (rev 15652)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/FacesConfigTest.java 2009-09-22
00:35:44 UTC (rev 15653)
@@ -58,7 +58,8 @@
assertEquals("javax.faces.Panel", component.getType().toString());
assertEquals("javax.faces.Panel", component.getFamily());
assertEquals("javax.faces.component.UIPanel",
component.getComponentClass().getName());
- assertEquals("panel.gif", component.getIcon());
+ assertEquals("panel.gif", component.getIcon().getSmallIcon());
+ assertEquals("panel-large.gif", component.getIcon().getLargeIcon());
assertEquals("Panel component", component.getDescription());
assertEquals("Panel", component.getDisplayname());
assertTrue(component.isGenerate());
Modified:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/FragmentParserTest.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/FragmentParserTest.java 2009-09-21
21:21:50 UTC (rev 15652)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/FragmentParserTest.java 2009-09-22
00:35:44 UTC (rev 15653)
@@ -82,7 +82,7 @@
assertEquals("ontest2",property.getName().toString());
assertEquals("int",property.getType().getName());
assertEquals("test2 property",property.getDescription());
- assertEquals("ontest2.png",property.getIcon());
+ assertEquals("ontest2.png",property.getIcon().getSmallIcon());
assertEquals("test2 event property",property.getDisplayname());
assertEquals("3",property.getDefaultValue());
assertEquals("15",property.getSuggestedValue());
Modified:
root/cdk/trunk/plugins/generator/src/test/resources/org/richfaces/cdk/xmlconfig/component.xml
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/resources/org/richfaces/cdk/xmlconfig/component.xml 2009-09-21
21:21:50 UTC (rev 15652)
+++
root/cdk/trunk/plugins/generator/src/test/resources/org/richfaces/cdk/xmlconfig/component.xml 2009-09-22
00:35:44 UTC (rev 15653)
@@ -6,13 +6,19 @@
version="2.0">
<component>
+ <description>Panel component</description>
+ <display-name>Panel</display-name>
+ <icon>
+ <small-icon>panel.gif</small-icon>
+ <large-icon>panel-large.gif</large-icon>
+ </icon>
<component-type>javax.faces.Panel</component-type>
<component-class>javax.faces.component.UIPanel</component-class>
<facet>
<description>Header facet</description>
<facet-name>header</facet-name>
<facet-extension>
- <cdk:generate>true</cdk:generate>
+ <cdk:generate>true</cdk:generate>
</facet-extension>
</facet>
@@ -56,12 +62,10 @@
<value-expression-enabled>true</value-expression-enabled>
</property-extension>
</property>
- <icon>panel.gif</icon>
- <description>Panel component</description>
- <display-name>Panel</display-name>
<component-extension>
<cdk:component-family>javax.faces.Panel</cdk:component-family>
- <cdk:base-class>javax.faces.component.UIComponentBase</cdk:base-class>
+ <cdk:base-class>javax.faces.component.UIComponentBase
+ </cdk:base-class>
<cdk:generate>true</cdk:generate>
</component-extension>
</component>
Modified:
root/cdk/trunk/plugins/generator/src/test/resources/org/richfaces/cdk/xmlconfig/properties.xml
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/resources/org/richfaces/cdk/xmlconfig/properties.xml 2009-09-21
21:21:50 UTC (rev 15652)
+++
root/cdk/trunk/plugins/generator/src/test/resources/org/richfaces/cdk/xmlconfig/properties.xml 2009-09-22
00:35:44 UTC (rev 15653)
@@ -5,7 +5,7 @@
<property>
<description><![CDATA[test2 property]]></description>
<display-name>test2 event property</display-name>
- <icon>ontest2.png</icon>
+ <icon><small-icon>ontest2.png</small-icon></icon>
<property-name>ontest2</property-name>
<property-class>int</property-class>
<default-value>3</default-value>