Author: julien_viet
Date: 2010-06-11 05:40:22 -0400 (Fri, 11 Jun 2010)
New Revision: 3301
Added:
portal/trunk/component/portal/src/main/java/gatein_objects_1_1.xsd
portal/trunk/component/portal/src/test/java/org/exoplatform/portal/TestXSDCorruption.java
Log:
GTNPORTAL-1263: GateIn object 1.1 version to handle width and height
Added: portal/trunk/component/portal/src/main/java/gatein_objects_1_1.xsd
===================================================================
--- portal/trunk/component/portal/src/main/java/gatein_objects_1_1.xsd
(rev 0)
+++ portal/trunk/component/portal/src/main/java/gatein_objects_1_1.xsd 2010-06-11 09:40:22
UTC (rev 3301)
@@ -0,0 +1,192 @@
+<?xml version="1.0"?>
+<!--
+ ~ Copyright (C) 2009 eXo Platform SAS.
+ ~
+ ~ This is free software; you can redistribute it and/or modify it
+ ~ under the terms of the GNU Lesser General Public License as
+ ~ published by the Free Software Foundation; either version 2.1 of
+ ~ the License, or (at your option) any later version.
+ ~
+ ~ This software is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ ~ Lesser General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public
+ ~ License along with this software; if not, write to the Free
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ ~ 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ -->
+
+<xs:schema
+
targetNamespace="http://www.gatein.org/xml/ns/gatein_objects_1_1"
+
xmlns="http://www.gatein.org/xml/ns/gatein_objects_1_1"
+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ version="1.0">
+
+ <!-- A top page element -->
+ <xs:element name="page" type="pageType"/>
+
+ <!-- A top page-set element -->
+ <xs:element name="page-set" type="pageSetType"/>
+
+ <!-- A top portal-config element -->
+ <xs:element name="portal-config" type="portalConfigType"/>
+
+ <!-- A top container element -->
+ <xs:element name="container" type="containerType"/>
+
+ <!-- A top node-navigation element -->
+ <xs:element name="node-navigation"
type="nodeNavigationType"/>
+
+ <!-- The type of a top navigation node -->
+ <xs:complexType name="nodeNavigationType">
+ <xs:sequence>
+ <xs:element name="priority" type="xs:positiveInteger"/>
+ <xs:element name="page-nodes" minOccurs="0"
maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="node" type="nodeType"
minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <!-- The type of a navigation node -->
+ <xs:complexType name="nodeType">
+ <xs:sequence>
+ <xs:element name="uri" type="xs:string"/>
+ <xs:element name="name" type="xs:string"/>
+ <xs:element name="label" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="icon" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="start-publication-date" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="end-publication-date" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="visibility" type="visibility"
default="VISIBLE" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="page-reference" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="node" type="nodeType"
minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:simpleType name="visibility">
+ <xs:restriction base='xs:string'>
+ <xs:enumeration value="DISPLAYED"/>
+ <xs:enumeration value="HIDDEN"/>
+ <xs:enumeration value="TEMPORAL"/>
+ <xs:enumeration value="SYSTEM"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="pageSetType">
+ <xs:sequence>
+ <xs:element name="page" type="pageType"
minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="portalConfigType">
+ <xs:sequence>
+ <xs:element name="portal-name" type="xs:string"
minOccurs="1" maxOccurs="1"/>
+ <xs:element name="locale" type="xs:string"
minOccurs="1" maxOccurs="1"/>
+ <xs:element name="access-permissions" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="edit-permission" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="skin" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="properties" type="propertiesType"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="portal-layout" minOccurs="1"
maxOccurs="1">
+ <xs:complexType>
+ <xs:group ref="containerChildrenGroup"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="propertiesType">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="entry" type="propertiesEntryType"
minOccurs="1" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="propertiesEntryType">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="key" type="xs:string"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:group name="containerChildrenGroup">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="portlet-application"
type="portletApplicationType" minOccurs="1"
maxOccurs="1"/>
+ <xs:element name="container" type="containerType"
minOccurs="1" maxOccurs="1"/>
+ <xs:element name="page-body" type="xs:string"
minOccurs="1" maxOccurs="1"/>
+ <xs:element name="site-body" type="xs:string"
minOccurs="1" maxOccurs="1"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:complexType name="pageType">
+ <xs:sequence>
+ <xs:element name="name" type="xs:string"
minOccurs="1" maxOccurs="1"/>
+ <xs:element name="title" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="factory-id" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="access-permissions" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="edit-permission" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="show-max-window" type="xs:boolean"
minOccurs="0" maxOccurs="1"/>
+ <xs:group ref="containerChildrenGroup"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="containerType">
+ <xs:sequence>
+ <xs:element name="name" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="title" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="icon" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="access-permissions" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="factory-id" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="description" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="width" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="height" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:group ref="containerChildrenGroup"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:string"/>
+ <xs:attribute name="template" type="xs:string"/>
+ <xs:attribute name="attribute" type="xs:string"/>
+ </xs:complexType>
+
+ <xs:complexType name="portletApplicationType">
+ <xs:sequence>
+ <xs:element name="portlet" type="portletType"
minOccurs="1" maxOccurs="1"/>
+ <xs:element name="title" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="access-permissions" type="xs:string"
minOccurs="1" maxOccurs="1"/>
+ <xs:element name="show-info-bar" type="xs:boolean"
minOccurs="1" maxOccurs="1"/>
+ <xs:element name="show-application-state" type="xs:boolean"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="show-application-mode" type="xs:boolean"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="width" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="height" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="portletType">
+ <xs:sequence>
+ <xs:element name="application-ref" type="xs:string"
minOccurs="1" maxOccurs="1"/>
+ <xs:element name="portlet-ref" type="xs:string"
minOccurs="1" maxOccurs="1"/>
+ <xs:element name="preferences" type="portletPreferencesType"
minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="portletPreferencesType">
+ <xs:sequence>
+ <xs:element name="preference" type="portletPreferenceType"
minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="portletPreferenceType">
+ <xs:sequence>
+ <xs:element name="name" type="xs:string"
minOccurs="1" maxOccurs="1"/>
+ <xs:element name="value" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ <xs:element name="read-only" type="xs:string"
minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
\ No newline at end of file
Added:
portal/trunk/component/portal/src/test/java/org/exoplatform/portal/TestXSDCorruption.java
===================================================================
---
portal/trunk/component/portal/src/test/java/org/exoplatform/portal/TestXSDCorruption.java
(rev 0)
+++
portal/trunk/component/portal/src/test/java/org/exoplatform/portal/TestXSDCorruption.java 2010-06-11
09:40:22 UTC (rev 3301)
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+
+package org.exoplatform.portal;
+
+import junit.framework.TestCase;
+import org.gatein.common.io.IOTools;
+
+import java.io.InputStream;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
+ * @version $Revision$
+ */
+public class TestXSDCorruption extends TestCase
+{
+
+ private void assertHash(String expected, String resourcePath) throws Exception
+ {
+ InputStream in =
Thread.currentThread().getContextClassLoader().getResourceAsStream(resourcePath);
+ assertNotNull(in);
+ byte[] bytes = IOTools.getBytes(in);
+ java.security.MessageDigest digester =
java.security.MessageDigest.getInstance("MD5");
+ digester.update(bytes);
+ StringBuilder sb = new StringBuilder();
+ for (byte b : digester.digest())
+ {
+ String hex = Integer.toHexString(b);
+ if (hex.length() == 1)
+ {
+ sb.append('0');
+ sb.append(hex.charAt(0));
+ }
+ else
+ {
+ sb.append(hex.substring(hex.length() - 2));
+ }
+ }
+ assertEquals(expected, sb.toString());
+ }
+
+ public void testGateInResources1_0() throws Exception
+ {
+ assertHash("d0591b0a022a0c2929e1aed8979857cd",
"gatein_objects_1_0.xsd");
+ assertHash("99ae24c9bbfe1b59e066756a29ab6c79",
"gatein_objects_1_1.xsd");
+ assertHash("c68ea6831c3d24a242f63abd2db261a6",
"gatein_resources_1_0.xsd");
+ assertHash("c55b7e0dc8ae23e2d34430b38260cd96",
"gatein_resources_1_1.xsd");
+ }
+}