gatein SVN: r7495 - in components/pc/trunk: portlet/src/main/java/org/gatein/pc/portlet/impl/deployment and 13 other directories.
by do-not-reply@jboss.org
Author: julien_viet
Date: 2011-09-23 04:35:39 -0400 (Fri, 23 Sep 2011)
New Revision: 7495
Added:
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/deployment/xml/
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/deployment/xml/XSD.java
components/pc/trunk/portlet/src/main/resources/org/
components/pc/trunk/portlet/src/main/resources/org/gatein/
components/pc/trunk/portlet/src/main/resources/org/gatein/pc/
components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/
components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/
components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/
components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/
components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/XMLSchema.dtd
components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/datatypes.dtd
components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/portlet-app_1_0.xsd
components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/portlet-app_2_0.xsd
components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/xml.xsd
components/pc/trunk/portlet/src/test/resources/metadata/portlet/portlet1-invalid.xml
components/pc/trunk/portlet/src/test/resources/metadata/portlet/portlet2-invalid.xml
Modified:
components/pc/trunk/pom.xml
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/deployment/PortletApplicationDeployer.java
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/deployment/staxnav/PortletApplicationMetaDataBuilder.java
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/AbstractMetaDataTestCase.java
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/ContainerRuntimeOptionTestCase.java
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/CustomPortletModeTestEverythingTestCase.java
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/CustomWindowStateTestEverythingTestCase.java
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/EventTestEverythingTestCase.java
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/FilterTestEverythingTestCase.java
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/GeneralMetaDataTestCase.java
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/ListenerTestCase.java
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/PortletTestEverythingTestCase.java
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/RenderParameterTestEverythingTestCase.java
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/SecurityConstraintTestEverythingTestCase.java
components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/UserAttributeTestEverythingTestCase.java
components/pc/trunk/portlet/src/test/resources/metadata/general/portlet-app_1_0.xml
Log:
GTNPC-72 : Portlet Descriptor XML Schema Validation
Modified: components/pc/trunk/pom.xml
===================================================================
--- components/pc/trunk/pom.xml 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/pom.xml 2011-09-23 08:35:39 UTC (rev 7495)
@@ -238,7 +238,7 @@
<dependency>
<groupId>org.staxnav</groupId>
<artifactId>staxnav.core</artifactId>
- <version>0.9.5</version>
+ <version>0.9.6</version>
</dependency>
<dependency>
Modified: components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/deployment/PortletApplicationDeployer.java
===================================================================
--- components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/deployment/PortletApplicationDeployer.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/deployment/PortletApplicationDeployer.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -50,6 +50,7 @@
import org.staxnav.ValueType;
import java.io.InputStream;
+import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collection;
import java.util.HashMap;
@@ -253,23 +254,24 @@
in = IOTools.safeBufferedWrapper(url.openStream());
//
- ValueType vt = null;
-
- //
PortletApplicationMetaDataBuilder builder = new PortletApplicationMetaDataBuilder();
//
return builder.build(in);
}
+ catch (Exception e)
+ {
+ log.error("Cannot read portlet.xml " + url, e);
+ }
finally
{
IOTools.safeClose(in);
}
}
}
- catch (Exception e)
+ catch (MalformedURLException e)
{
- log.error("Cannot read portlet.xml", e);
+ log.error("Could not read portlet deployment descriptor for application " + webApp.getContextPath());
}
return null;
}
Modified: components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/deployment/staxnav/PortletApplicationMetaDataBuilder.java
===================================================================
--- components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/deployment/staxnav/PortletApplicationMetaDataBuilder.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/deployment/staxnav/PortletApplicationMetaDataBuilder.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -21,11 +21,15 @@
import org.gatein.common.i18n.LocaleFormat;
import org.gatein.common.i18n.LocalizedString;
+import org.gatein.common.io.IOTools;
+import org.gatein.common.logging.Logger;
+import org.gatein.common.logging.LoggerFactory;
import org.gatein.common.util.ConversionException;
import org.gatein.pc.api.LifeCyclePhase;
import org.gatein.pc.api.Mode;
import org.gatein.pc.api.TransportGuarantee;
import org.gatein.pc.api.WindowState;
+import org.gatein.pc.portlet.impl.deployment.xml.XSD;
import org.gatein.pc.portlet.impl.metadata.CustomPortletModeMetaData;
import org.gatein.pc.portlet.impl.metadata.CustomWindowStateMetaData;
import org.gatein.pc.portlet.impl.metadata.ListenerMetaData;
@@ -60,6 +64,9 @@
import javax.xml.namespace.QName;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.stax.StAXSource;
+import javax.xml.transform.stream.StreamSource;
+import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.net.URI;
import java.util.ArrayList;
@@ -79,12 +86,28 @@
public class PortletApplicationMetaDataBuilder
{
+ /** . */
+ private static final Logger log = LoggerFactory.getLogger(PortletApplicationMetaDataBuilder.class);
+
+ /** . */
+ private static final QName XML_LANG = new QName("http://www.w3.org/XML/1998/namespace", "lang");
+
+ /** . */
+ private static final String PORTLET_1_0 = "http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd";
+
+ /** . */
+ private static final String PORTLET_2_0 = "http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd";
+
+ /** . */
private static final EnumSet<Element> NAME_OR_QNAME = EnumSet.of(Element.name, Element.qname);
+ /** . */
private static final ValueType<PortletCacheScopeEnum> PORTLET_CACHE_SCOPE = ValueType.get(PortletCacheScopeEnum.class);
+ /** . */
private static final ValueType<TransportGuarantee> TRANSPORT_GUARANTEE = ValueType.get(TransportGuarantee.class);
+ /** . */
private static final ValueType<LifeCyclePhase> LIFE_CYCLE = new ValueType<LifeCyclePhase>()
{
@Override
@@ -101,117 +124,88 @@
}
};
- private static final QName XML_LANG = new QName("http://www.w3.org/XML/1998/namespace", "lang");
+ /** . */
+ private boolean schemaValidation;
- private static final String PORTLET_1_0 = "http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd";
- private static final String PORTLET_2_0 = "http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd";
+ /** . */
+ private XMLInputFactory inputFactory;
- private LocalizedString readLocalizedString(StaxNavigator<Element> nav, Element element) throws ConversionException
+ public PortletApplicationMetaDataBuilder()
{
- Map<Locale, String> descriptions = new LinkedHashMap<Locale, String>();
- while (nav.next(element))
- {
- String lang = nav.getAttribute(XML_LANG);
- String description = nav.getContent();
- Locale locale = LocaleFormat.DEFAULT.getLocale(lang == null ? DEFAULT_LOCALE : lang);
- descriptions.put(locale, description);
- }
- if (descriptions.size() > 0)
- {
- return new LocalizedString(descriptions, new Locale(DEFAULT_LOCALE));
- }
- else
- {
- return null;
- }
+ this(XMLInputFactory.newInstance(), false);
}
- private QName readQName(StaxNavigator<Element> nav)
+ public PortletApplicationMetaDataBuilder(XMLInputFactory inputFactory, boolean schemaValidation) throws NullPointerException
{
- String val = nav.getContent();
- int pos = val.indexOf(':');
- if (pos == -1)
+ if (inputFactory == null)
{
- return new QName(val);
+ throw new NullPointerException("No null xml input factory allowed");
}
- else
- {
- String prefix = val.substring(0, pos);
- String localPart = val.substring(pos + 1);
- String uri = nav.getNamespaceByPrefix(prefix);
- if (uri == null)
- {
- throw new UnsupportedOperationException("todo");
- }
- else
- {
- return new QName(uri, localPart, prefix);
- }
- }
+
+ //
+ this.inputFactory = inputFactory;
+ this.schemaValidation = schemaValidation;
}
- private Iterable<InitParamMetaData> readInitParams(StaxNavigator<Element> nav) throws ConversionException
+ public boolean getSchemaValidation()
{
- List<InitParamMetaData> list = Collections.emptyList();
- while (nav.next(Element.init_param))
- {
- InitParamMetaData initParamMD = new InitParamMetaData();
- initParamMD.setId(nav.getAttribute("id"));
- initParamMD.setDescription(readLocalizedString(nav, Element.description));
- initParamMD.setName(getContent(nav, Element.name));
- initParamMD.setValue(getContent(nav, Element.value));
- if (list.isEmpty())
- {
- list = new ArrayList<InitParamMetaData>();
- }
- list.add(initParamMD);
- }
- return list;
+ return schemaValidation;
}
- private String getContent(StaxNavigator<Element> nav, Element element)
+ public void setSchemaValidation(boolean schemaValidation)
{
- if (nav.next(element))
- {
- return nav.getContent();
- }
- else
- {
- throw new StaxNavException(nav.getLocation(), "Was expecting elemnt " + element + " to be present");
- }
+ this.schemaValidation = schemaValidation;
}
public PortletApplication20MetaData build(InputStream is) throws Exception
{
+ // We will need to read the input stream twice
+ byte[] bytes = null;
+ if (schemaValidation)
+ {
+ bytes = IOTools.getBytes(is);
+ is = new ByteArrayInputStream(bytes);
+ }
+
PortletApplication20MetaData md = new PortletApplication20MetaData();
- XMLInputFactory factory = XMLInputFactory.newInstance();
- factory.setProperty("javax.xml.stream.isCoalescing", true);
- XMLStreamReader stream = factory.createXMLStreamReader(is);
+ //
+ inputFactory.setProperty("javax.xml.stream.isCoalescing", true);
+ XMLStreamReader stream = inputFactory.createXMLStreamReader(is);
StaxNavigator<Element> nav = StaxNavigatorFactory.create(new Naming.Enumerated.Simple<Element>(Element.class, null), stream);
-
+
+ // We want to trim content (mandated by the spec)
nav.setTrimContent(true);
- // For now we do it this way
- // but it's not correct
- String defaultNS = nav.getNamespaceByPrefix("");
+ // Get the root element qname
+ QName qname = nav.getQName();
+ String rootNS = qname.getNamespaceURI();
+
+ // Determine the correct version to parse
int version;
- if (PORTLET_1_0.equals(defaultNS))
+ if (PORTLET_1_0.equals(rootNS))
{
md.setVersion("1.0");
version = 1;
}
- else if (PORTLET_2_0.equals(defaultNS))
+ else if (PORTLET_2_0.equals(rootNS))
{
md.setVersion("2.0");
version = 2;
}
else
{
- throw new UnsupportedOperationException();
+ throw new StaxNavException("Illegal portlet xml namespace " + rootNS);
}
+ // Perform schema validation if required
+ if (schemaValidation)
+ {
+ XSD xsd = version == 1 ? XSD.PORTLET_1_0 : XSD.PORTLET_2_0;
+ xsd.validate(new StreamSource(new ByteArrayInputStream(bytes)));
+ }
+
//
assert Element.portlet_app == nav.getName();
@@ -574,4 +568,79 @@
//
return md;
}
+
+ private LocalizedString readLocalizedString(StaxNavigator<Element> nav, Element element) throws ConversionException
+ {
+ Map<Locale, String> descriptions = new LinkedHashMap<Locale, String>();
+ while (nav.next(element))
+ {
+ String lang = nav.getAttribute(XML_LANG);
+ String description = nav.getContent();
+ Locale locale = LocaleFormat.DEFAULT.getLocale(lang == null ? DEFAULT_LOCALE : lang);
+ descriptions.put(locale, description);
+ }
+ if (descriptions.size() > 0)
+ {
+ return new LocalizedString(descriptions, new Locale(DEFAULT_LOCALE));
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ private QName readQName(StaxNavigator<Element> nav)
+ {
+ String val = nav.getContent();
+ int pos = val.indexOf(':');
+ if (pos == -1)
+ {
+ return new QName(val);
+ }
+ else
+ {
+ String prefix = val.substring(0, pos);
+ String localPart = val.substring(pos + 1);
+ String uri = nav.getNamespaceByPrefix(prefix);
+ if (uri == null)
+ {
+ throw new UnsupportedOperationException("todo");
+ }
+ else
+ {
+ return new QName(uri, localPart, prefix);
+ }
+ }
+ }
+
+ private Iterable<InitParamMetaData> readInitParams(StaxNavigator<Element> nav) throws ConversionException
+ {
+ List<InitParamMetaData> list = Collections.emptyList();
+ while (nav.next(Element.init_param))
+ {
+ InitParamMetaData initParamMD = new InitParamMetaData();
+ initParamMD.setId(nav.getAttribute("id"));
+ initParamMD.setDescription(readLocalizedString(nav, Element.description));
+ initParamMD.setName(getContent(nav, Element.name));
+ initParamMD.setValue(getContent(nav, Element.value));
+ if (list.isEmpty())
+ {
+ list = new ArrayList<InitParamMetaData>();
+ }
+ list.add(initParamMD);
+ }
+ return list;
+ }
+
+ private String getContent(StaxNavigator<Element> nav, Element element)
+ {
+ if (nav.next(element))
+ {
+ return nav.getContent();
+ }
+ else
+ {
+ throw new StaxNavException(nav.getLocation(), "Was expecting elemnt " + element + " to be present");
+ }
+ }
}
Added: components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/deployment/xml/XSD.java
===================================================================
--- components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/deployment/xml/XSD.java (rev 0)
+++ components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/deployment/xml/XSD.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2010 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.gatein.pc.portlet.impl.deployment.xml;
+
+import org.gatein.common.logging.Logger;
+import org.gatein.common.logging.LoggerFactory;
+import org.w3c.dom.bootstrap.DOMImplementationRegistry;
+import org.w3c.dom.ls.DOMImplementationLS;
+import org.w3c.dom.ls.LSInput;
+import org.w3c.dom.ls.LSParser;
+import org.w3c.dom.ls.LSResourceResolver;
+import org.xml.sax.SAXException;
+
+import javax.xml.XMLConstants;
+import javax.xml.transform.Source;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.Validator;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executor;
+import java.util.concurrent.FutureTask;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class XSD
+{
+
+ /** . */
+ private static final Logger log = LoggerFactory.getLogger(XSD.class);
+
+ private final static Map<String, String> a = new HashMap<String, String>();
+
+ static
+ {
+ a.put("http://www.w3.org/2001/xml.xsd", "xml.xsd");
+ a.put("XMLSchema.dtd", "XMLSchema.dtd");
+ a.put("datatypes.dtd", "datatypes.dtd");
+ }
+
+ /** . */
+ public static final XSD PORTLET_1_0 = new XSD(XSD.class.getResource("portlet-app_1_0.xsd")).fetch();
+
+ /** . */
+ public static final XSD PORTLET_2_0 = new XSD(XSD.class.getResource("portlet-app_2_0.xsd")).fetch();
+
+ /** . */
+ private final FutureTask<Schema> schema;
+
+ public XSD(final URL url)
+ {
+ this.schema = new FutureTask<Schema>(new Callable<Schema>()
+ {
+ public Schema call() throws Exception
+ {
+ SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ factory.setResourceResolver(new LSResourceResolver()
+ {
+ public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId, String baseURI)
+ {
+ String resolvedName = a.get(systemId);
+ if (resolvedName != null)
+ {
+ try
+ {
+ InputStream in = XSD.class.getResourceAsStream(resolvedName);
+ System.out.println("Resolved systemId=" + systemId);
+ DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
+ DOMImplementationLS ls = (DOMImplementationLS)registry.getDOMImplementation("LS");
+ LSInput input = ls.createLSInput();
+ input.setByteStream(in);
+ return input;
+ }
+ catch (Exception e)
+ {
+ log.error("Could not obtain xml.xsd", e);
+ }
+ }
+ return null;
+ }
+ });
+ return factory.newSchema(url);
+ }
+ });
+ }
+
+ public XSD fetch()
+ {
+ new Thread()
+ {
+ public void run()
+ {
+ schema.run();
+ }
+ }.start();
+ return this;
+ }
+
+ public XSD fetch(Executor executor)
+ {
+ executor.execute(schema);
+ return this;
+ }
+
+ public Validator getValidator()
+ {
+ try
+ {
+ return schema.get().newValidator();
+ }
+ catch (InterruptedException e)
+ {
+ throw new AssertionError(e);
+ }
+ catch (ExecutionException e)
+ {
+ throw new AssertionError(e.getCause());
+ }
+ }
+
+ public void validate(Source source) throws SAXException, IOException
+ {
+ getValidator().validate(source);
+ }
+}
Added: components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/XMLSchema.dtd
===================================================================
--- components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/XMLSchema.dtd (rev 0)
+++ components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/XMLSchema.dtd 2011-09-23 08:35:39 UTC (rev 7495)
@@ -0,0 +1,402 @@
+<!-- DTD for XML Schemas: Part 1: Structures
+ Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN"
+ Official Location: http://www.w3.org/2001/XMLSchema.dtd -->
+<!-- $Id: XMLSchema.dtd,v 1.31 2001/10/24 15:50:16 ht Exp $ -->
+<!-- Note this DTD is NOT normative, or even definitive. --> <!--d-->
+<!-- prose copy in the structures REC is the definitive version --> <!--d-->
+<!-- (which shouldn't differ from this one except for this --> <!--d-->
+<!-- comment and entity expansions, but just in case) --> <!--d-->
+<!-- With the exception of cases with multiple namespace
+ prefixes for the XML Schema namespace, any XML document which is
+ not valid per this DTD given redefinitions in its internal subset of the
+ 'p' and 's' parameter entities below appropriate to its namespace
+ declaration of the XML Schema namespace is almost certainly not
+ a valid schema. -->
+
+<!-- The simpleType element and its constituent parts
+ are defined in XML Schema: Part 2: Datatypes -->
+<!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' >
+
+<!ENTITY % p 'xs:'> <!-- can be overriden in the internal subset of a
+ schema document to establish a different
+ namespace prefix -->
+<!ENTITY % s ':xs'> <!-- if %p is defined (e.g. as foo:) then you must
+ also define %s as the suffix for the appropriate
+ namespace declaration (e.g. :foo) -->
+<!ENTITY % nds 'xmlns%s;'>
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % schema "%p;schema">
+<!ENTITY % complexType "%p;complexType">
+<!ENTITY % complexContent "%p;complexContent">
+<!ENTITY % simpleContent "%p;simpleContent">
+<!ENTITY % extension "%p;extension">
+<!ENTITY % element "%p;element">
+<!ENTITY % unique "%p;unique">
+<!ENTITY % key "%p;key">
+<!ENTITY % keyref "%p;keyref">
+<!ENTITY % selector "%p;selector">
+<!ENTITY % field "%p;field">
+<!ENTITY % group "%p;group">
+<!ENTITY % all "%p;all">
+<!ENTITY % choice "%p;choice">
+<!ENTITY % sequence "%p;sequence">
+<!ENTITY % any "%p;any">
+<!ENTITY % anyAttribute "%p;anyAttribute">
+<!ENTITY % attribute "%p;attribute">
+<!ENTITY % attributeGroup "%p;attributeGroup">
+<!ENTITY % include "%p;include">
+<!ENTITY % import "%p;import">
+<!ENTITY % redefine "%p;redefine">
+<!ENTITY % notation "%p;notation">
+
+<!-- annotation elements -->
+<!ENTITY % annotation "%p;annotation">
+<!ENTITY % appinfo "%p;appinfo">
+<!ENTITY % documentation "%p;documentation">
+
+<!-- Customisation entities for the ATTLIST of each element type.
+ Define one of these if your schema takes advantage of the
+ anyAttribute='##other' in the schema for schemas -->
+
+<!ENTITY % schemaAttrs ''>
+<!ENTITY % complexTypeAttrs ''>
+<!ENTITY % complexContentAttrs ''>
+<!ENTITY % simpleContentAttrs ''>
+<!ENTITY % extensionAttrs ''>
+<!ENTITY % elementAttrs ''>
+<!ENTITY % groupAttrs ''>
+<!ENTITY % allAttrs ''>
+<!ENTITY % choiceAttrs ''>
+<!ENTITY % sequenceAttrs ''>
+<!ENTITY % anyAttrs ''>
+<!ENTITY % anyAttributeAttrs ''>
+<!ENTITY % attributeAttrs ''>
+<!ENTITY % attributeGroupAttrs ''>
+<!ENTITY % uniqueAttrs ''>
+<!ENTITY % keyAttrs ''>
+<!ENTITY % keyrefAttrs ''>
+<!ENTITY % selectorAttrs ''>
+<!ENTITY % fieldAttrs ''>
+<!ENTITY % includeAttrs ''>
+<!ENTITY % importAttrs ''>
+<!ENTITY % redefineAttrs ''>
+<!ENTITY % notationAttrs ''>
+<!ENTITY % annotationAttrs ''>
+<!ENTITY % appinfoAttrs ''>
+<!ENTITY % documentationAttrs ''>
+
+<!ENTITY % complexDerivationSet "CDATA">
+ <!-- #all or space-separated list drawn from derivationChoice -->
+<!ENTITY % blockSet "CDATA">
+ <!-- #all or space-separated list drawn from
+ derivationChoice + 'substitution' -->
+
+<!ENTITY % mgs '%all; | %choice; | %sequence;'>
+<!ENTITY % cs '%choice; | %sequence;'>
+<!ENTITY % formValues '(qualified|unqualified)'>
+
+
+<!ENTITY % attrDecls '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
+
+<!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
+
+<!-- This is used in part2 -->
+<!ENTITY % restriction1 '((%mgs; | %group;)?)'>
+
+%xs-datatypes;
+
+<!-- the duplication below is to produce an unambiguous content model
+ which allows annotation everywhere -->
+<!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
+ ((%simpleType; | %complexType;
+ | %element; | %attribute;
+ | %attributeGroup; | %group;
+ | %notation; ),
+ (%annotation;)*)* )>
+<!ATTLIST %schema;
+ targetNamespace %URIref; #IMPLIED
+ version CDATA #IMPLIED
+ %nds; %URIref; #FIXED 'http://www.w3.org/2001/XMLSchema'
+ xmlns CDATA #IMPLIED
+ finalDefault %complexDerivationSet; ''
+ blockDefault %blockSet; ''
+ id ID #IMPLIED
+ elementFormDefault %formValues; 'unqualified'
+ attributeFormDefault %formValues; 'unqualified'
+ xml:lang CDATA #IMPLIED
+ %schemaAttrs;>
+<!-- Note the xmlns declaration is NOT in the Schema for Schemas,
+ because at the Infoset level where schemas operate,
+ xmlns(:prefix) is NOT an attribute! -->
+<!-- The declaration of xmlns is a convenience for schema authors -->
+
+<!-- The id attribute here and below is for use in external references
+ from non-schemas using simple fragment identifiers.
+ It is NOT used for schema-to-schema reference, internal or
+ external. -->
+
+<!-- a type is a named content type specification which allows attribute
+ declarations-->
+<!-- -->
+
+<!ELEMENT %complexType; ((%annotation;)?,
+ (%simpleContent;|%complexContent;|
+ %particleAndAttrs;))>
+
+<!ATTLIST %complexType;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ abstract %boolean; #IMPLIED
+ final %complexDerivationSet; #IMPLIED
+ block %complexDerivationSet; #IMPLIED
+ mixed (true|false) 'false'
+ %complexTypeAttrs;>
+
+<!-- particleAndAttrs is shorthand for a root type -->
+<!-- mixed is disallowed if simpleContent, overriden if complexContent
+ has one too. -->
+
+<!-- If anyAttribute appears in one or more referenced attributeGroups
+ and/or explicitly, the intersection of the permissions is used -->
+
+<!ELEMENT %complexContent; ((%annotation;)?, (%restriction;|%extension;))>
+<!ATTLIST %complexContent;
+ mixed (true|false) #IMPLIED
+ id ID #IMPLIED
+ %complexContentAttrs;>
+
+<!-- restriction should use the branch defined above, not the simple
+ one from part2; extension should use the full model -->
+
+<!ELEMENT %simpleContent; ((%annotation;)?, (%restriction;|%extension;))>
+<!ATTLIST %simpleContent;
+ id ID #IMPLIED
+ %simpleContentAttrs;>
+
+<!-- restriction should use the simple branch from part2, not the
+ one defined above; extension should have no particle -->
+
+<!ELEMENT %extension; ((%annotation;)?, (%particleAndAttrs;))>
+<!ATTLIST %extension;
+ base %QName; #REQUIRED
+ id ID #IMPLIED
+ %extensionAttrs;>
+
+<!-- an element is declared by either:
+ a name and a type (either nested or referenced via the type attribute)
+ or a ref to an existing element declaration -->
+
+<!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
+ (%unique; | %key; | %keyref;)*)>
+<!-- simpleType or complexType only if no type|ref attribute -->
+<!-- ref not allowed at top level -->
+<!ATTLIST %element;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ type %QName; #IMPLIED
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ nillable %boolean; #IMPLIED
+ substitutionGroup %QName; #IMPLIED
+ abstract %boolean; #IMPLIED
+ final %complexDerivationSet; #IMPLIED
+ block %blockSet; #IMPLIED
+ default CDATA #IMPLIED
+ fixed CDATA #IMPLIED
+ form %formValues; #IMPLIED
+ %elementAttrs;>
+<!-- type and ref are mutually exclusive.
+ name and ref are mutually exclusive, one is required -->
+<!-- In the absence of type AND ref, type defaults to type of
+ substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
+<!-- default and fixed are mutually exclusive -->
+
+<!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
+<!ATTLIST %group;
+ name %NCName; #IMPLIED
+ ref %QName; #IMPLIED
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %groupAttrs;>
+
+<!ELEMENT %all; ((%annotation;)?, (%element;)*)>
+<!ATTLIST %all;
+ minOccurs (1) #IMPLIED
+ maxOccurs (1) #IMPLIED
+ id ID #IMPLIED
+ %allAttrs;>
+
+<!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %choice;
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %choiceAttrs;>
+
+<!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %sequence;
+ minOccurs %nonNegativeInteger; #IMPLIED
+ maxOccurs CDATA #IMPLIED
+ id ID #IMPLIED
+ %sequenceAttrs;>
+
+<!-- an anonymous grouping in a model, or
+ a top-level named group definition, or a reference to same -->
+
+<!-- Note that if order is 'all', group is not allowed inside.
+ If order is 'all' THIS group must be alone (or referenced alone) at
+ the top level of a content model -->
+<!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
+<!-- Should allow minOccurs=0 inside order='all' . . . -->
+
+<!ELEMENT %any; (%annotation;)?>
+<!ATTLIST %any;
+ namespace CDATA '##any'
+ processContents (skip|lax|strict) 'strict'
+ minOccurs %nonNegativeInteger; '1'
+ maxOccurs CDATA '1'
+ id ID #IMPLIED
+ %anyAttrs;>
+
+<!-- namespace is interpreted as follows:
+ ##any - - any non-conflicting WFXML at all
+
+ ##other - - any non-conflicting WFXML from namespace other
+ than targetNamespace
+
+ ##local - - any unqualified non-conflicting WFXML/attribute
+ one or - - any non-conflicting WFXML from
+ more URI the listed namespaces
+ references
+
+ ##targetNamespace ##local may appear in the above list,
+ with the obvious meaning -->
+
+<!ELEMENT %anyAttribute; (%annotation;)?>
+<!ATTLIST %anyAttribute;
+ namespace CDATA '##any'
+ processContents (skip|lax|strict) 'strict'
+ id ID #IMPLIED
+ %anyAttributeAttrs;>
+<!-- namespace is interpreted as for 'any' above -->
+
+<!-- simpleType only if no type|ref attribute -->
+<!-- ref not allowed at top level, name iff at top level -->
+<!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
+<!ATTLIST %attribute;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ type %QName; #IMPLIED
+ use (prohibited|optional|required) #IMPLIED
+ default CDATA #IMPLIED
+ fixed CDATA #IMPLIED
+ form %formValues; #IMPLIED
+ %attributeAttrs;>
+<!-- type and ref are mutually exclusive.
+ name and ref are mutually exclusive, one is required -->
+<!-- default for use is optional when nested, none otherwise -->
+<!-- default and fixed are mutually exclusive -->
+<!-- type attr and simpleType content are mutually exclusive -->
+
+<!-- an attributeGroup is a named collection of attribute decls, or a
+ reference thereto -->
+<!ELEMENT %attributeGroup; ((%annotation;)?,
+ (%attribute; | %attributeGroup;)*,
+ (%anyAttribute;)?) >
+<!ATTLIST %attributeGroup;
+ name %NCName; #IMPLIED
+ id ID #IMPLIED
+ ref %QName; #IMPLIED
+ %attributeGroupAttrs;>
+
+<!-- ref iff no content, no name. ref iff not top level -->
+
+<!-- better reference mechanisms -->
+<!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %unique;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ %uniqueAttrs;>
+
+<!ELEMENT %key; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %key;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ %keyAttrs;>
+
+<!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %keyref;
+ name %NCName; #REQUIRED
+ refer %QName; #REQUIRED
+ id ID #IMPLIED
+ %keyrefAttrs;>
+
+<!ELEMENT %selector; ((%annotation;)?)>
+<!ATTLIST %selector;
+ xpath %XPathExpr; #REQUIRED
+ id ID #IMPLIED
+ %selectorAttrs;>
+<!ELEMENT %field; ((%annotation;)?)>
+<!ATTLIST %field;
+ xpath %XPathExpr; #REQUIRED
+ id ID #IMPLIED
+ %fieldAttrs;>
+
+<!-- Schema combination mechanisms -->
+<!ELEMENT %include; (%annotation;)?>
+<!ATTLIST %include;
+ schemaLocation %URIref; #REQUIRED
+ id ID #IMPLIED
+ %includeAttrs;>
+
+<!ELEMENT %import; (%annotation;)?>
+<!ATTLIST %import;
+ namespace %URIref; #IMPLIED
+ schemaLocation %URIref; #IMPLIED
+ id ID #IMPLIED
+ %importAttrs;>
+
+<!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
+ %attributeGroup; | %group;)*>
+<!ATTLIST %redefine;
+ schemaLocation %URIref; #REQUIRED
+ id ID #IMPLIED
+ %redefineAttrs;>
+
+<!ELEMENT %notation; (%annotation;)?>
+<!ATTLIST %notation;
+ name %NCName; #REQUIRED
+ id ID #IMPLIED
+ public CDATA #REQUIRED
+ system %URIref; #IMPLIED
+ %notationAttrs;>
+
+<!-- Annotation is either application information or documentation -->
+<!-- By having these here they are available for datatypes as well
+ as all the structures elements -->
+
+<!ELEMENT %annotation; (%appinfo; | %documentation;)*>
+<!ATTLIST %annotation; %annotationAttrs;>
+
+<!-- User must define annotation elements in internal subset for this
+ to work -->
+<!ELEMENT %appinfo; ANY> <!-- too restrictive -->
+<!ATTLIST %appinfo;
+ source %URIref; #IMPLIED
+ id ID #IMPLIED
+ %appinfoAttrs;>
+<!ELEMENT %documentation; ANY> <!-- too restrictive -->
+<!ATTLIST %documentation;
+ source %URIref; #IMPLIED
+ id ID #IMPLIED
+ xml:lang CDATA #IMPLIED
+ %documentationAttrs;>
+
+<!NOTATION XMLSchemaStructures PUBLIC
+ 'structures' 'http://www.w3.org/2001/XMLSchema.xsd' >
+<!NOTATION XML PUBLIC
+ 'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >
Added: components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/datatypes.dtd
===================================================================
--- components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/datatypes.dtd (rev 0)
+++ components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/datatypes.dtd 2011-09-23 08:35:39 UTC (rev 7495)
@@ -0,0 +1,203 @@
+<!--
+ DTD for XML Schemas: Part 2: Datatypes
+ $Id: datatypes.dtd,v 1.23 2001/03/16 17:36:30 ht Exp $
+ Note this DTD is NOT normative, or even definitive. - - the
+ prose copy in the datatypes REC is the definitive version
+ (which shouldn't differ from this one except for this comment
+ and entity expansions, but just in case)
+ -->
+
+<!--
+ This DTD cannot be used on its own, it is intended
+ only for incorporation in XMLSchema.dtd, q.v.
+ -->
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % simpleType "%p;simpleType">
+<!ENTITY % restriction "%p;restriction">
+<!ENTITY % list "%p;list">
+<!ENTITY % union "%p;union">
+<!ENTITY % maxExclusive "%p;maxExclusive">
+<!ENTITY % minExclusive "%p;minExclusive">
+<!ENTITY % maxInclusive "%p;maxInclusive">
+<!ENTITY % minInclusive "%p;minInclusive">
+<!ENTITY % totalDigits "%p;totalDigits">
+<!ENTITY % fractionDigits "%p;fractionDigits">
+<!ENTITY % length "%p;length">
+<!ENTITY % minLength "%p;minLength">
+<!ENTITY % maxLength "%p;maxLength">
+<!ENTITY % enumeration "%p;enumeration">
+<!ENTITY % whiteSpace "%p;whiteSpace">
+<!ENTITY % pattern "%p;pattern">
+
+<!--
+ Customisation entities for the ATTLIST of each element
+ type. Define one of these if your schema takes advantage
+ of the anyAttribute='##other' in the schema for schemas
+ -->
+
+<!ENTITY % simpleTypeAttrs "">
+<!ENTITY % restrictionAttrs "">
+<!ENTITY % listAttrs "">
+<!ENTITY % unionAttrs "">
+<!ENTITY % maxExclusiveAttrs "">
+<!ENTITY % minExclusiveAttrs "">
+<!ENTITY % maxInclusiveAttrs "">
+<!ENTITY % minInclusiveAttrs "">
+<!ENTITY % totalDigitsAttrs "">
+<!ENTITY % fractionDigitsAttrs "">
+<!ENTITY % lengthAttrs "">
+<!ENTITY % minLengthAttrs "">
+<!ENTITY % maxLengthAttrs "">
+<!ENTITY % enumerationAttrs "">
+<!ENTITY % whiteSpaceAttrs "">
+<!ENTITY % patternAttrs "">
+
+<!-- Define some entities for informative use as attribute
+ types -->
+<!ENTITY % URIref "CDATA">
+<!ENTITY % XPathExpr "CDATA">
+<!ENTITY % QName "NMTOKEN">
+<!ENTITY % QNames "NMTOKENS">
+<!ENTITY % NCName "NMTOKEN">
+<!ENTITY % nonNegativeInteger "NMTOKEN">
+<!ENTITY % boolean "(true|false)">
+<!ENTITY % simpleDerivationSet "CDATA">
+<!--
+ #all or space-separated list drawn from derivationChoice
+ -->
+
+<!--
+ Note that the use of 'facet' below is less restrictive
+ than is really intended: There should in fact be no
+ more than one of each of minInclusive, minExclusive,
+ maxInclusive, maxExclusive, totalDigits, fractionDigits,
+ length, maxLength, minLength within datatype,
+ and the min- and max- variants of Inclusive and Exclusive
+ are mutually exclusive. On the other hand, pattern and
+ enumeration may repeat.
+ -->
+<!ENTITY % minBound "(%minInclusive; | %minExclusive;)">
+<!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)">
+<!ENTITY % bounds "%minBound; | %maxBound;">
+<!ENTITY % numeric "%totalDigits; | %fractionDigits;">
+<!ENTITY % ordered "%bounds; | %numeric;">
+<!ENTITY % unordered
+ "%pattern; | %enumeration; | %whiteSpace; | %length; |
+ %maxLength; | %minLength;">
+<!ENTITY % facet "%ordered; | %unordered;">
+<!ENTITY % facetAttr
+ "value CDATA #REQUIRED
+ id ID #IMPLIED">
+<!ENTITY % fixedAttr "fixed %boolean; #IMPLIED">
+<!ENTITY % facetModel "(%annotation;)?">
+<!ELEMENT %simpleType;
+ ((%annotation;)?, (%restriction; | %list; | %union;))>
+<!ATTLIST %simpleType;
+ name %NCName; #IMPLIED
+ final %simpleDerivationSet; #IMPLIED
+ id ID #IMPLIED
+ %simpleTypeAttrs;>
+<!-- name is required at top level -->
+<!ELEMENT %restriction; ((%annotation;)?,
+ (%restriction1; |
+ ((%simpleType;)?,(%facet;)*)),
+ (%attrDecls;))>
+<!ATTLIST %restriction;
+ base %QName; #IMPLIED
+ id ID #IMPLIED
+ %restrictionAttrs;>
+<!--
+ base and simpleType child are mutually exclusive,
+ one is required.
+
+ restriction is shared between simpleType and
+ simpleContent and complexContent (in XMLSchema.xsd).
+ restriction1 is for the latter cases, when this
+ is restricting a complex type, as is attrDecls.
+ -->
+<!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)>
+<!ATTLIST %list;
+ itemType %QName; #IMPLIED
+ id ID #IMPLIED
+ %listAttrs;>
+<!--
+ itemType and simpleType child are mutually exclusive,
+ one is required
+ -->
+<!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)>
+<!ATTLIST %union;
+ id ID #IMPLIED
+ memberTypes %QNames; #IMPLIED
+ %unionAttrs;>
+<!--
+ At least one item in memberTypes or one simpleType
+ child is required
+ -->
+
+<!ELEMENT %maxExclusive; %facetModel;>
+<!ATTLIST %maxExclusive;
+ %facetAttr;
+ %fixedAttr;
+ %maxExclusiveAttrs;>
+<!ELEMENT %minExclusive; %facetModel;>
+<!ATTLIST %minExclusive;
+ %facetAttr;
+ %fixedAttr;
+ %minExclusiveAttrs;>
+
+<!ELEMENT %maxInclusive; %facetModel;>
+<!ATTLIST %maxInclusive;
+ %facetAttr;
+ %fixedAttr;
+ %maxInclusiveAttrs;>
+<!ELEMENT %minInclusive; %facetModel;>
+<!ATTLIST %minInclusive;
+ %facetAttr;
+ %fixedAttr;
+ %minInclusiveAttrs;>
+
+<!ELEMENT %totalDigits; %facetModel;>
+<!ATTLIST %totalDigits;
+ %facetAttr;
+ %fixedAttr;
+ %totalDigitsAttrs;>
+<!ELEMENT %fractionDigits; %facetModel;>
+<!ATTLIST %fractionDigits;
+ %facetAttr;
+ %fixedAttr;
+ %fractionDigitsAttrs;>
+
+<!ELEMENT %length; %facetModel;>
+<!ATTLIST %length;
+ %facetAttr;
+ %fixedAttr;
+ %lengthAttrs;>
+<!ELEMENT %minLength; %facetModel;>
+<!ATTLIST %minLength;
+ %facetAttr;
+ %fixedAttr;
+ %minLengthAttrs;>
+<!ELEMENT %maxLength; %facetModel;>
+<!ATTLIST %maxLength;
+ %facetAttr;
+ %fixedAttr;
+ %maxLengthAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %enumeration; %facetModel;>
+<!ATTLIST %enumeration;
+ %facetAttr;
+ %enumerationAttrs;>
+
+<!ELEMENT %whiteSpace; %facetModel;>
+<!ATTLIST %whiteSpace;
+ %facetAttr;
+ %fixedAttr;
+ %whiteSpaceAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %pattern; %facetModel;>
+<!ATTLIST %pattern;
+ %facetAttr;
+ %patternAttrs;>
Added: components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/portlet-app_1_0.xsd
===================================================================
--- components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/portlet-app_1_0.xsd (rev 0)
+++ components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/portlet-app_1_0.xsd 2011-09-23 08:35:39 UTC (rev 7495)
@@ -0,0 +1,682 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema
+ targetNamespace="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:portlet="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified" attributeFormDefault="unqualified"
+ version="1.0" xml:lang="en">
+ <annotation>
+ <documentation>
+ This is the XML Schema for the Portlet 1.0 deployment
+ descriptor.
+ </documentation>
+ </annotation>
+ <annotation>
+ <documentation>
+ The following conventions apply to all J2EE deployment
+ descriptor elements unless indicated otherwise. - In
+ elements that specify a pathname to a file within the same
+ JAR file, relative filenames (i.e., those not starting with
+ "/") are considered relative to the root of the JAR file's
+ namespace. Absolute filenames (i.e., those starting with
+ "/") also specify names in the root of the JAR file's
+ namespace. In general, relative names are preferred. The
+ exception is .war files where absolute names are preferred
+ for consistency with the Servlet API.
+ </documentation>
+ </annotation>
+ <!-- *********************************************************** -->
+ <import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/xml.xsd" />
+ <element name="portlet-app" type="portlet:portlet-appType">
+ <annotation>
+ <documentation>
+ The portlet-app element is the root of the deployment
+ descriptor for a portlet application. This element has a
+ required attribute version to specify to which version
+ of the schema the deployment descriptor conforms.
+ </documentation>
+ </annotation>
+ <unique name="portlet-name-uniqueness">
+ <annotation>
+ <documentation>
+ The portlet element contains the name of a portlet.
+ This name must be unique within the portlet
+ application.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:portlet" />
+ <field xpath="portlet:portlet-name" />
+ </unique>
+ <unique name="custom-portlet-mode-uniqueness">
+ <annotation>
+ <documentation>
+ The custom-portlet-mode element contains the
+ portlet-mode. This portlet mode must be unique
+ within the portlet application.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:custom-portlet-mode" />
+ <field xpath="portlet:portlet-mode" />
+ </unique>
+ <unique name="custom-window-state-uniqueness">
+ <annotation>
+ <documentation>
+ The custom-window-state element contains the
+ window-state. This window state must be unique
+ within the portlet application.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:custom-window-state" />
+ <field xpath="portlet:window-state" />
+ </unique>
+ <unique name="user-attribute-name-uniqueness">
+ <annotation>
+ <documentation>
+ The user-attribute element contains the name the
+ attribute. This name must be unique within the
+ portlet application.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:user-attribute" />
+ <field xpath="portlet:name" />
+ </unique>
+ </element>
+ <complexType name="portlet-appType">
+ <sequence>
+ <element name="portlet" type="portlet:portletType"
+ minOccurs="0" maxOccurs="unbounded">
+ <unique name="init-param-name-uniqueness">
+ <annotation>
+ <documentation>
+ The init-param element contains the name the
+ attribute. This name must be unique within
+ the portlet.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:init-param" />
+ <field xpath="portlet:name" />
+ </unique>
+ <unique name="supports-mime-type-uniqueness">
+ <annotation>
+ <documentation>
+ The supports element contains the supported
+ mime-type. This mime type must be unique
+ within the portlet.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:supports" />
+ <field xpath="mime-type" />
+ </unique>
+ <unique name="preference-name-uniqueness">
+ <annotation>
+ <documentation>
+ The preference element contains the name the
+ preference. This name must be unique within
+ the portlet.
+ </documentation>
+ </annotation>
+ <selector
+ xpath="portlet:portlet-preferences/portlet:preference" />
+ <field xpath="portlet:name" />
+ </unique>
+ <unique name="security-role-ref-name-uniqueness">
+ <annotation>
+ <documentation>
+ The security-role-ref element contains the
+ role-name. This role name must be unique
+ within the portlet.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:security-role-ref" />
+ <field xpath="portlet:role-name" />
+ </unique>
+ </element>
+ <element name="custom-portlet-mode"
+ type="portlet:custom-portlet-modeType" minOccurs="0"
+ maxOccurs="unbounded" />
+ <element name="custom-window-state"
+ type="portlet:custom-window-stateType" minOccurs="0"
+ maxOccurs="unbounded" />
+ <element name="user-attribute"
+ type="portlet:user-attributeType" minOccurs="0"
+ maxOccurs="unbounded" />
+ <element name="security-constraint"
+ type="portlet:security-constraintType" minOccurs="0"
+ maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="version" type="string" use="required" />
+ <attribute name="id" type="string" use="optional" />
+ </complexType>
+ <complexType name="custom-portlet-modeType">
+ <annotation>
+ <documentation>
+ A custom portlet mode that one or more portlets in this
+ portlet application supports. Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType"
+ minOccurs="0" maxOccurs="unbounded" />
+ <element name="portlet-mode"
+ type="portlet:portlet-modeType" />
+ </sequence>
+ <attribute name="id" type="string" use="optional" />
+ </complexType>
+ <complexType name="custom-window-stateType">
+ <annotation>
+ <documentation>
+ A custom window state that one or more portlets in this
+ portlet application supports. Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType"
+ minOccurs="0" maxOccurs="unbounded" />
+ <element name="window-state"
+ type="portlet:window-stateType" />
+ </sequence>
+ <attribute name="id" type="string" use="optional" />
+ </complexType>
+ <complexType name="expiration-cacheType">
+ <annotation>
+ <documentation>
+ Expriation-cache defines expiration-based caching for
+ this portlet. The parameter indicates the time in
+ seconds after which the portlet output expires. -1
+ indicates that the output never expires. Used in:
+ portlet
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="int" />
+ </simpleContent>
+ </complexType>
+ <complexType name="init-paramType">
+ <annotation>
+ <documentation>
+ The init-param element contains a name/value pair as an
+ initialization param of the portlet Used in:portlet
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType"
+ minOccurs="0" maxOccurs="unbounded" />
+ <element name="name" type="portlet:nameType" />
+ <element name="value" type="portlet:valueType" />
+ </sequence>
+ <attribute name="id" type="string" use="optional" />
+ </complexType>
+ <complexType name="keywordsType">
+ <annotation>
+ <documentation>
+ Locale specific keywords associated with this portlet.
+ The kewords are separated by commas. Used in:
+ portlet-info
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="string" />
+ </simpleContent>
+ </complexType>
+ <complexType name="mime-typeType">
+ <annotation>
+ <documentation>
+ MIME type name, e.g. "text/html". The MIME type may also
+ contain the wildcard character '*', like "text/*" or
+ "*/*". Used in: supports
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="string" />
+ </simpleContent>
+ </complexType>
+ <complexType name="nameType">
+ <annotation>
+ <documentation>
+ The name element contains the name of a parameter. Used
+ in: init-param, ...
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="string" />
+ </simpleContent>
+ </complexType>
+ <complexType name="portletType">
+ <annotation>
+ <documentation>
+ The portlet element contains the declarative data of a
+ portlet. Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType"
+ minOccurs="0" maxOccurs="unbounded" />
+ <element name="portlet-name"
+ type="portlet:portlet-nameType" />
+ <element name="display-name" type="portlet:display-nameType"
+ minOccurs="0" maxOccurs="unbounded" />
+ <element name="portlet-class"
+ type="portlet:portlet-classType" />
+ <element name="init-param" type="portlet:init-paramType"
+ minOccurs="0" maxOccurs="unbounded" />
+ <element name="expiration-cache"
+ type="portlet:expiration-cacheType" minOccurs="0" />
+ <element name="supports" type="portlet:supportsType"
+ maxOccurs="unbounded" />
+ <element name="supported-locale"
+ type="portlet:supported-localeType" minOccurs="0"
+ maxOccurs="unbounded" />
+ <choice>
+ <sequence>
+ <element name="resource-bundle"
+ type="portlet:resource-bundleType" />
+ <element name="portlet-info"
+ type="portlet:portlet-infoType" minOccurs="0" />
+ </sequence>
+ <element name="portlet-info"
+ type="portlet:portlet-infoType" />
+ </choice>
+ <element name="portlet-preferences"
+ type="portlet:portlet-preferencesType" minOccurs="0" />
+ <element name="security-role-ref"
+ type="portlet:security-role-refType" minOccurs="0"
+ maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="id" type="string" use="optional" />
+ </complexType>
+ <simpleType name="portlet-classType">
+ <annotation>
+ <documentation>
+ The portlet-class element contains the fully qualified
+ class name of the portlet. Used in: portlet
+ </documentation>
+ </annotation>
+ <restriction base="portlet:fully-qualified-classType" />
+ </simpleType>
+ <complexType name="portlet-collectionType">
+ <annotation>
+ <documentation>
+ The portlet-collectionType is used to identify a subset
+ of portlets within a portlet application to which a
+ security constraint applies. Used in:
+ security-constraint
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="portlet-name" type="portlet:portlet-nameType"
+ maxOccurs="unbounded" />
+ </sequence>
+ </complexType>
+ <complexType name="portlet-infoType">
+ <sequence>
+ <element name="title" type="portlet:titleType" />
+ <element name="short-title" type="portlet:short-titleType"
+ minOccurs="0" />
+ <element name="keywords" type="portlet:keywordsType"
+ minOccurs="0" />
+ </sequence>
+ <attribute name="id" type="string" use="optional" />
+ </complexType>
+ <complexType name="portlet-modeType">
+ <annotation>
+ <documentation>
+ Portlet modes. The specification pre-defines the
+ following values as valid portlet mode constants:
+ "edit", "help", "view". Portlet mode names are not case
+ sensitive. Used in: custom-portlet-mode, supports
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="string" />
+ </simpleContent>
+ </complexType>
+ <complexType name="portlet-nameType">
+ <annotation>
+ <documentation>
+ The portlet-name element contains the canonical name of
+ the portlet. Each portlet name is unique within the
+ portlet application. Used in: portlet, portlet-mapping
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="string" />
+ </simpleContent>
+ </complexType>
+ <complexType name="portlet-preferencesType">
+ <annotation>
+ <documentation>
+ Portlet persistent preference store. Used in: portlet
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="preference" type="portlet:preferenceType"
+ minOccurs="0" maxOccurs="unbounded" />
+ <element name="preferences-validator"
+ type="portlet:preferences-validatorType" minOccurs="0" />
+ </sequence>
+ <attribute name="id" type="string" use="optional" />
+ </complexType>
+ <complexType name="preferenceType">
+ <annotation>
+ <documentation>
+ Persistent preference values that may be used for
+ customization and personalization by the portlet. Used
+ in: portlet-preferences
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="name" type="portlet:nameType" />
+ <element name="value" type="portlet:valueType" minOccurs="0"
+ maxOccurs="unbounded" />
+ <element name="read-only" type="portlet:read-onlyType"
+ minOccurs="0" />
+ </sequence>
+ <attribute name="id" type="string" use="optional" />
+ </complexType>
+ <simpleType name="preferences-validatorType">
+ <annotation>
+ <documentation>
+ The class specified under preferences-validator
+ implements the PreferencesValidator interface to
+ validate the preferences settings. Used in:
+ portlet-preferences
+ </documentation>
+ </annotation>
+ <restriction base="portlet:fully-qualified-classType" />
+ </simpleType>
+ <simpleType name="read-onlyType">
+ <annotation>
+ <documentation>
+ read-only indicates that a setting cannot be changed in
+ any of the standard portlet modes ("view","edit" or
+ "help"). Per default all preferences are modifiable.
+ Valid values are: - true for read-only - false for
+ modifiable Used in: preferences
+ </documentation>
+ </annotation>
+ <restriction base="portlet:string">
+ <enumeration value="true" />
+ <enumeration value="false" />
+ </restriction>
+ </simpleType>
+ <complexType name="resource-bundleType">
+ <annotation>
+ <documentation>
+ Filename of the resource bundle containing the language
+ specific portlet informations in different languages.
+ Used in: portlet-info
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="string" />
+ </simpleContent>
+ </complexType>
+ <complexType name="role-linkType">
+ <annotation>
+ <documentation>
+ The role-link element is a reference to a defined
+ security role. The role-link element must contain the
+ name of one of the security roles defined in the
+ security-role elements. Used in: security-role-ref
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="string" />
+ </simpleContent>
+ </complexType>
+ <complexType name="security-constraintType">
+ <annotation>
+ <documentation>
+ The security-constraintType is used to associate
+ intended security constraints with one or more portlets.
+ Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="display-name" type="portlet:display-nameType"
+ minOccurs="0" maxOccurs="unbounded" />
+ <element name="portlet-collection"
+ type="portlet:portlet-collectionType" />
+ <element name="user-data-constraint"
+ type="portlet:user-data-constraintType" />
+ </sequence>
+ <attribute name="id" type="string" use="optional" />
+ </complexType>
+ <complexType name="security-role-refType">
+ <annotation>
+ <documentation>
+ The security-role-ref element contains the declaration
+ of a security role reference in the code of the web
+ application. The declaration consists of an optional
+ description, the security role name used in the code,
+ and an optional link to a security role. If the security
+ role is not specified, the Deployer must choose an
+ appropriate security role. The value of the role name
+ element must be the String used as the parameter to the
+ EJBContext.isCallerInRole(String roleName) method or the
+ HttpServletRequest.isUserInRole(String role) method.
+ Used in: portlet
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType"
+ minOccurs="0" maxOccurs="unbounded" />
+ <element name="role-name" type="portlet:role-nameType" />
+ <element name="role-link" type="portlet:role-linkType"
+ minOccurs="0" />
+ </sequence>
+ <attribute name="id" type="string" use="optional" />
+ </complexType>
+ <complexType name="short-titleType">
+ <annotation>
+ <documentation>
+ Locale specific short version of the static title. Used
+ in: portlet-info
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="string" />
+ </simpleContent>
+ </complexType>
+ <complexType name="supportsType">
+ <annotation>
+ <documentation>
+ Supports indicates the portlet modes a portlet supports
+ for a specific content type. All portlets must support
+ the view mode. Used in: portlet
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="mime-type" type="portlet:mime-typeType" />
+ <element name="portlet-mode" type="portlet:portlet-modeType"
+ minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="id" type="string" use="optional" />
+ </complexType>
+ <complexType name="supported-localeType">
+ <annotation>
+ <documentation>
+ Indicated the locales the portlet supports. Used in:
+ portlet
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="string" />
+ </simpleContent>
+ </complexType>
+ <complexType name="titleType">
+ <annotation>
+ <documentation>
+ Locale specific static title for this portlet. Used in:
+ portlet-info
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="string" />
+ </simpleContent>
+ </complexType>
+ <simpleType name="transport-guaranteeType">
+ <annotation>
+ <documentation>
+ The transport-guaranteeType specifies that the
+ communication between client and portlet should be NONE,
+ INTEGRAL, or CONFIDENTIAL. NONE means that the portlet
+ does not require any transport guarantees. A value of
+ INTEGRAL means that the portlet requires that the data
+ sent between the client and portlet be sent in such a
+ way that it can't be changed in transit. CONFIDENTIAL
+ means that the portlet requires that the data be
+ transmitted in a fashion that prevents other entities
+ from observing the contents of the transmission. In most
+ cases, the presence of the INTEGRAL or CONFIDENTIAL flag
+ will indicate that the use of SSL is required. Used in:
+ user-data-constraint
+ </documentation>
+ </annotation>
+ <restriction base="portlet:string">
+ <enumeration value="NONE" />
+ <enumeration value="INTEGRAL" />
+ <enumeration value="CONFIDENTIAL" />
+ </restriction>
+ </simpleType>
+ <complexType name="user-attributeType">
+ <annotation>
+ <documentation>
+ User attribute defines a user specific attribute that
+ the portlet application needs. The portlet within this
+ application can access this attribute via the request
+ parameter USER_INFO map. Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType"
+ minOccurs="0" maxOccurs="unbounded" />
+ <element name="name" type="portlet:nameType" />
+ </sequence>
+ <attribute name="id" type="string" use="optional" />
+ </complexType>
+ <complexType name="user-data-constraintType">
+ <annotation>
+ <documentation>
+ The user-data-constraintType is used to indicate how
+ data communicated between the client and portlet should
+ be protected. Used in: security-constraint
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType"
+ minOccurs="0" maxOccurs="unbounded" />
+ <element name="transport-guarantee"
+ type="portlet:transport-guaranteeType" />
+ </sequence>
+ <attribute name="id" type="string" use="optional" />
+ </complexType>
+ <complexType name="valueType">
+ <annotation>
+ <documentation>
+ The value element contains the value of a parameter.
+ Used in: init-param
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="string" />
+ </simpleContent>
+ </complexType>
+ <complexType name="window-stateType">
+ <annotation>
+ <documentation>
+ Portlet window state. Window state names are not case
+ sensitive. Used in: custom-window-state
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="string" />
+ </simpleContent>
+ </complexType>
+ <!--- everything below is copied from j2ee_1_4.xsd -->
+ <complexType name="descriptionType">
+ <annotation>
+ <documentation>
+ The description element is used to provide text
+ describing the parent element. The description element
+ should include any information that the portlet
+ application war file producer wants to provide to the
+ consumer of the portlet application war file (i.e., to
+ the Deployer). Typically, the tools used by the portlet
+ application war file consumer will display the
+ description when processing the parent element that
+ contains the description. It has an optional attribute
+ xml:lang to indicate which language is used in the
+ description according to RFC 1766
+ (http://www.ietf.org/rfc/rfc1766.txt). The default value
+ of this attribute is English(“en”). Used in: init-param,
+ portlet, portlet-app, security-role
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="string">
+ <attribute ref="xml:lang" />
+ </extension>
+ </simpleContent>
+ </complexType>
+ <complexType name="display-nameType">
+ <annotation>
+ <documentation>
+ The display-name type contains a short name that is
+ intended to be displayed by tools. It is used by
+ display-name elements. The display name need not be
+ unique. Example: ...
+ <display-name xml:lang="en">
+ Employee Self Service
+ </display-name>
+
+ It has an optional attribute xml:lang to indicate which
+ language is used in the description according to RFC
+ 1766 (http://www.ietf.org/rfc/rfc1766.txt). The default
+ value of this attribute is English(“en”).
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string">
+ <attribute ref="xml:lang" />
+ </extension>
+ </simpleContent>
+ </complexType>
+ <simpleType name="fully-qualified-classType">
+ <annotation>
+ <documentation>
+ The elements that use this type designate the name of a
+ Java class or interface.
+ </documentation>
+ </annotation>
+ <restriction base="portlet:string" />
+ </simpleType>
+ <simpleType name="role-nameType">
+ <annotation>
+ <documentation>
+ The role-nameType designates the name of a security
+ role.
+
+ The name must conform to the lexical rules for an
+ NMTOKEN.
+ </documentation>
+ </annotation>
+ <restriction base="NMTOKEN" />
+ </simpleType>
+ <simpleType name="string">
+ <annotation>
+ <documentation>
+ This is a special string datatype that is defined by
+ J2EE as a base type for defining collapsed strings. When
+ schemas require trailing/leading space elimination as
+ well as collapsing the existing whitespace, this base
+ type may be used.
+ </documentation>
+ </annotation>
+ <restriction base="string">
+ <whiteSpace value="collapse" />
+ </restriction>
+ </simpleType>
+</schema>
Added: components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/portlet-app_2_0.xsd
===================================================================
--- components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/portlet-app_2_0.xsd (rev 0)
+++ components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/portlet-app_2_0.xsd 2011-09-23 08:35:39 UTC (rev 7495)
@@ -0,0 +1,830 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:portlet="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0" xml:lang="en">
+ <annotation>
+ <documentation>
+ This is the XML Schema for the Portlet 2.0 deployment descriptor.
+ </documentation>
+ </annotation>
+ <annotation>
+ <documentation>
+ The following conventions apply to all J2EE
+ deployment descriptor elements unless indicated otherwise.
+ - In elements that specify a pathname to a file within the
+ same JAR file, relative filenames (i.e., those not
+ starting with "/") are considered relative to the root of
+ the JAR file's namespace. Absolute filenames (i.e., those
+ starting with "/") also specify names in the root of the
+ JAR file's namespace. In general, relative names are
+ preferred. The exception is .war files where absolute
+ names are preferred for consistency with the Servlet API.
+ </documentation>
+ </annotation>
+ <!-- *********************************************************** -->
+ <import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+ <element name="portlet-app" type="portlet:portlet-appType">
+ <annotation>
+ <documentation>
+ The portlet-app element is the root of the deployment descriptor
+ for a portlet application. This element has a required attribute version
+ to specify to which version of the schema the deployment descriptor
+ conforms. In order to be a valid JSR 286 portlet application the version
+ must have the value "2.0".
+ </documentation>
+ </annotation>
+ <unique name="portlet-name-uniqueness">
+ <annotation>
+ <documentation>
+ The portlet element contains the name of a portlet.
+ This name must be unique within the portlet application.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:portlet"/>
+ <field xpath="portlet:portlet-name"/>
+ </unique>
+ <unique name="custom-portlet-mode-uniqueness">
+ <annotation>
+ <documentation>
+ The custom-portlet-mode element contains the portlet-mode.
+ This portlet mode must be unique within the portlet application.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:custom-portlet-mode"/>
+ <field xpath="portlet:portlet-mode"/>
+ </unique>
+ <unique name="custom-window-state-uniqueness">
+ <annotation>
+ <documentation>
+ The custom-window-state element contains the window-state.
+ This window state must be unique within the portlet application.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:custom-window-state"/>
+ <field xpath="portlet:window-state"/>
+ </unique>
+ <unique name="user-attribute-name-uniqueness">
+ <annotation>
+ <documentation>
+ The user-attribute element contains the name the attribute.
+ This name must be unique within the portlet application.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:user-attribute"/>
+ <field xpath="portlet:name"/>
+ </unique>
+ <unique name="filter-name-uniqueness">
+ <annotation>
+ <documentation>
+ The filter element contains the name of a filter.
+ The name must be unique within the portlet application.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:filter"/>
+ <field xpath="portlet:filter-name"/>
+ </unique>
+ </element>
+ <complexType name="portlet-appType">
+ <sequence>
+ <element name="portlet" type="portlet:portletType" minOccurs="0" maxOccurs="unbounded">
+ <unique name="init-param-name-uniqueness">
+ <annotation>
+ <documentation>
+ The init-param element contains the name the attribute.
+ This name must be unique within the portlet.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:init-param"/>
+ <field xpath="portlet:name"/>
+ </unique>
+ <unique name="supports-mime-type-uniqueness">
+ <annotation>
+ <documentation>
+ The supports element contains the supported mime-type.
+ This mime type must be unique within the portlet.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:supports"/>
+ <field xpath="mime-type"/>
+ </unique>
+ <unique name="preference-name-uniqueness">
+ <annotation>
+ <documentation>
+ The preference element contains the name the preference.
+ This name must be unique within the portlet.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:portlet-preferences/portlet:preference"/>
+ <field xpath="portlet:name"/>
+ </unique>
+ <unique name="security-role-ref-name-uniqueness">
+ <annotation>
+ <documentation>
+ The security-role-ref element contains the role-name.
+ This role name must be unique within the portlet.
+ </documentation>
+ </annotation>
+ <selector xpath="portlet:security-role-ref"/>
+ <field xpath="portlet:role-name"/>
+ </unique>
+ </element>
+ <element name="custom-portlet-mode" type="portlet:custom-portlet-modeType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="custom-window-state" type="portlet:custom-window-stateType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="user-attribute" type="portlet:user-attributeType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="security-constraint" type="portlet:security-constraintType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="resource-bundle" type="portlet:resource-bundleType" minOccurs="0"/>
+ <element name="filter" type="portlet:filterType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="filter-mapping" type="portlet:filter-mappingType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="default-namespace" type="xs:anyURI" minOccurs="0"/>
+ <element name="event-definition" type="portlet:event-definitionType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="public-render-parameter" type="portlet:public-render-parameterType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="listener" type="portlet:listenerType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="container-runtime-option" type="portlet:container-runtime-optionType" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="version" type="portlet:string" use="required"/>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="cache-scopeType">
+ <annotation>
+ <documentation>
+ Caching scope, allowed values are "private" indicating that the content should not be shared
+ across users and "public" indicating that the content may be shared across users.
+ The default value if not present is "private".
+ Used in: portlet
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string"/>
+ </simpleContent>
+ </complexType>
+ <complexType name="custom-portlet-modeType">
+ <annotation>
+ <documentation>
+ A custom portlet mode that one or more portlets in
+ this portlet application supports.
+ If the portal does not need to provide some management functionality
+ for this portlet mode, the portal-managed element needs to be set
+ to "false", otherwise to "true". Default is "true".
+ Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="portlet-mode" type="portlet:portlet-modeType"/>
+ <element name="portal-managed" type="portlet:portal-managedType" minOccurs="0"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="custom-window-stateType">
+ <annotation>
+ <documentation>
+ A custom window state that one or more portlets in this
+ portlet application supports.
+ Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="window-state" type="portlet:window-stateType"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="expiration-cacheType">
+ <annotation>
+ <documentation>
+ Expiration-time defines the time in seconds after which the portlet output expires.
+ -1 indicates that the output never expires.
+ Used in: portlet
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="int"/>
+ </simpleContent>
+ </complexType>
+ <complexType name="init-paramType">
+ <annotation>
+ <documentation>
+ The init-param element contains a name/value pair as an
+ initialization param of the portlet
+ Used in:portlet
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="name" type="portlet:nameType"/>
+ <element name="value" type="portlet:valueType"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="keywordsType">
+ <annotation>
+ <documentation>
+ Locale specific keywords associated with this portlet.
+ The kewords are separated by commas.
+ Used in: portlet-info
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string"/>
+ </simpleContent>
+ </complexType>
+ <complexType name="mime-typeType">
+ <annotation>
+ <documentation>
+ MIME type name, e.g. "text/html".
+ The MIME type may also contain the wildcard
+ character '*', like "text/*" or "*/*".
+ Used in: supports
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string"/>
+ </simpleContent>
+ </complexType>
+ <complexType name="nameType">
+ <annotation>
+ <documentation>
+ The name element contains the name of a parameter.
+ Used in: init-param, ...
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string"/>
+ </simpleContent>
+ </complexType>
+ <complexType name="portletType">
+ <annotation>
+ <documentation>
+ The portlet element contains the declarative data of a portlet.
+ Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="portlet-name" type="portlet:portlet-nameType"/>
+ <element name="display-name" type="portlet:display-nameType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="portlet-class" type="portlet:portlet-classType"/>
+ <element name="init-param" type="portlet:init-paramType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="expiration-cache" type="portlet:expiration-cacheType" minOccurs="0"/>
+ <element name="cache-scope" type="portlet:cache-scopeType" minOccurs="0"/>
+ <element name="supports" type="portlet:supportsType" maxOccurs="unbounded"/>
+ <element name="supported-locale" type="portlet:supported-localeType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="resource-bundle" type="portlet:resource-bundleType" minOccurs="0"/>
+ <element name="portlet-info" type="portlet:portlet-infoType" minOccurs="0"/>
+ <element name="portlet-preferences" type="portlet:portlet-preferencesType" minOccurs="0"/>
+ <element name="security-role-ref" type="portlet:security-role-refType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="supported-processing-event" type="portlet:event-definition-referenceType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="supported-publishing-event" type="portlet:event-definition-referenceType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="supported-public-render-parameter" type="portlet:string" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="container-runtime-option" type="portlet:container-runtime-optionType" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <simpleType name="portlet-classType">
+ <annotation>
+ <documentation>
+ The portlet-class element contains the fully
+ qualified class name of the portlet.
+ Used in: portlet
+ </documentation>
+ </annotation>
+ <restriction base="portlet:fully-qualified-classType"/>
+ </simpleType>
+ <complexType name="container-runtime-optionType">
+ <annotation>
+ <documentation>
+ The container-runtime-option element contains settings
+ for the portlet container that the portlet expects to be honored
+ at runtime. These settings may re-define default portlet container
+ behavior, like the javax.portlet.escapeXml setting that disables
+ XML encoding of URLs produced by the portlet tag library as
+ default.
+ Names with the javax.portlet prefix are reserved for the Java
+ Portlet Specification.
+ Used in: portlet-app, portlet
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="name" type="portlet:nameType"/>
+ <element name="value" type="portlet:valueType" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="filter-mappingType">
+ <annotation>
+ <documentation>
+ Declaration of the filter mappings in this portlet
+ application is done by using filter-mappingType.
+ The container uses the filter-mapping
+ declarations to decide which filters to apply to a request,
+ and in what order. To determine which filters to
+ apply it matches filter-mapping declarations on the
+ portlet-name and the lifecyle phase defined in the
+ filter element. The order in which filters are invoked
+ is the order in which filter-mapping declarations
+ that match appear in the list of filter-mapping elements.
+ Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="filter-name" type="portlet:filter-nameType"/>
+ <element name="portlet-name" type="portlet:portlet-nameType" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="filterType">
+ <annotation>
+ <documentation>
+ The filter element specifies a filter that can transform the
+ content of portlet requests and portlet responses.
+ Filters can access the initialization parameters declared in
+ the deployment descriptor at runtime via the FilterConfig
+ interface.
+ A filter can be restricted to one or more lifecycle phases
+ of the portlet. Valid entries for lifecycle are:
+ ACTION_PHASE, EVENT_PHASE, RENDER_PHASE,
+ RESOURCE_PHASE
+ Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="display-name" type="portlet:display-nameType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="filter-name" type="portlet:filter-nameType"/>
+ <element name="filter-class" type="portlet:fully-qualified-classType"/>
+ <element name="lifecycle" type="portlet:string" maxOccurs="unbounded"/>
+ <element name="init-param" type="portlet:init-paramType" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="portlet-collectionType">
+ <annotation>
+ <documentation>
+ The portlet-collectionType is used to identify a subset
+ of portlets within a portlet application to which a
+ security constraint applies.
+ Used in: security-constraint
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="portlet-name" type="portlet:portlet-nameType" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <complexType name="event-definitionType">
+ <annotation>
+ <documentation>
+ The event-definitionType is used to declare events the portlet can either
+ receive or emit.
+ The name must be unique and must be the one the
+ portlet is using in its code for referencing this event.
+ Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+ <choice>
+ <element name="qname" type="xs:QName"/>
+ <element name="name" type="xs:NCName"/>
+ </choice>
+ <element name="alias" type="xs:QName" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="value-type" type="portlet:fully-qualified-classType" minOccurs="0"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="event-definition-referenceType">
+ <annotation>
+ <documentation>
+ The event-definition-referenceType is used to reference events
+ declared with the event-definition element at application level.
+ Used in: portlet
+ </documentation>
+ </annotation>
+ <choice>
+ <element name="qname" type="xs:QName"/>
+ <element name="name" type="xs:NCName"/>
+ </choice>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="listenerType">
+ <annotation>
+ <documentation>
+ The listenerType is used to declare listeners for this portlet application.
+ Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="display-name" type="portlet:display-nameType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="listener-class" type="portlet:fully-qualified-classType"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="portlet-infoType">
+ <sequence>
+ <element name="title" type="portlet:titleType" minOccurs="0"/>
+ <element name="short-title" type="portlet:short-titleType" minOccurs="0"/>
+ <element name="keywords" type="portlet:keywordsType" minOccurs="0"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <simpleType name="portal-managedType">
+ <annotation>
+ <documentation>
+ portal-managed indicates if a custom portlet mode
+ needs to be managed by the portal or not.
+ Per default all custom portlet modes are portal managed.
+ Valid values are:
+ - true for portal-managed
+ - false for not portal managed
+ Used in: custom-portlet-modes
+ </documentation>
+ </annotation>
+ <restriction base="portlet:string">
+ <enumeration value="true"/>
+ <enumeration value="false"/>
+ </restriction>
+ </simpleType>
+ <complexType name="portlet-modeType">
+ <annotation>
+ <documentation>
+ Portlet modes. The specification pre-defines the following values
+ as valid portlet mode constants:
+ "edit", "help", "view".
+ Portlet mode names are not case sensitive.
+ Used in: custom-portlet-mode, supports
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string"/>
+ </simpleContent>
+ </complexType>
+ <complexType name="portlet-nameType">
+ <annotation>
+ <documentation>
+ The portlet-name element contains the canonical name of the
+ portlet. Each portlet name is unique within the portlet
+ application.
+ Used in: portlet, filter-mapping
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string"/>
+ </simpleContent>
+ </complexType>
+ <complexType name="portlet-preferencesType">
+ <annotation>
+ <documentation>
+ Portlet persistent preference store.
+ Used in: portlet
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="preference" type="portlet:preferenceType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="preferences-validator" type="portlet:preferences-validatorType" minOccurs="0"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="preferenceType">
+ <annotation>
+ <documentation>
+ Persistent preference values that may be used for customization
+ and personalization by the portlet.
+ Used in: portlet-preferences
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="name" type="portlet:nameType"/>
+ <element name="value" type="portlet:valueType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="read-only" type="portlet:read-onlyType" minOccurs="0"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <simpleType name="preferences-validatorType">
+ <annotation>
+ <documentation>
+ The class specified under preferences-validator implements
+ the PreferencesValidator interface to validate the
+ preferences settings.
+ Used in: portlet-preferences
+ </documentation>
+ </annotation>
+ <restriction base="portlet:fully-qualified-classType"/>
+ </simpleType>
+ <simpleType name="read-onlyType">
+ <annotation>
+ <documentation>
+ read-only indicates that a setting cannot
+ be changed in any of the standard portlet modes
+ ("view","edit" or "help").
+ Per default all preferences are modifiable.
+ Valid values are:
+ - true for read-only
+ - false for modifiable
+ Used in: preferences
+ </documentation>
+ </annotation>
+ <restriction base="portlet:string">
+ <enumeration value="true"/>
+ <enumeration value="false"/>
+ </restriction>
+ </simpleType>
+ <complexType name="resource-bundleType">
+ <annotation>
+ <documentation>
+ Name of the resource bundle containing the language specific
+ portlet informations in different languages (Filename without
+ the language specific part (e.g. _en) and the ending (.properties).
+ Used in: portlet-info
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string"/>
+ </simpleContent>
+ </complexType>
+ <complexType name="role-linkType">
+ <annotation>
+ <documentation>
+ The role-link element is a reference to a defined security role.
+ The role-link element must contain the name of one of the
+ security roles defined in the security-role elements.
+ Used in: security-role-ref
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string"/>
+ </simpleContent>
+ </complexType>
+ <complexType name="security-constraintType">
+ <annotation>
+ <documentation>
+ The security-constraintType is used to associate
+ intended security constraints with one or more portlets.
+ Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="display-name" type="portlet:display-nameType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="portlet-collection" type="portlet:portlet-collectionType"/>
+ <element name="user-data-constraint" type="portlet:user-data-constraintType"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="security-role-refType">
+ <annotation>
+ <documentation>
+ The security-role-ref element contains the declaration of a
+ security role reference in the code of the web application. The
+ declaration consists of an optional description, the security
+ role name used in the code, and an optional link to a security
+ role. If the security role is not specified, the Deployer must
+ choose an appropriate security role.
+ The value of the role name element must be the String used
+ as the parameter to the
+ EJBContext.isCallerInRole(String roleName) method
+ or the HttpServletRequest.isUserInRole(String role) method.
+ Used in: portlet
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="role-name" type="portlet:role-nameType"/>
+ <element name="role-link" type="portlet:role-linkType" minOccurs="0"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="public-render-parameterType">
+ <annotation>
+ <documentation>
+ The public-render-parameters defines a render parameter that is allowed to be public
+ and thus be shared with other portlets.
+ The identifier must be used for referencing this public render parameter in the portlet code.
+ Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="identifier" type="portlet:string"/>
+ <choice>
+ <element name="qname" type="xs:QName"/>
+ <element name="name" type="xs:NCName"/>
+ </choice>
+ <element name="alias" type="xs:QName" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="short-titleType">
+ <annotation>
+ <documentation>
+ Locale specific short version of the static title.
+ Used in: portlet-info
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string"/>
+ </simpleContent>
+ </complexType>
+ <complexType name="supportsType">
+ <annotation>
+ <documentation>
+ Supports indicates the portlet modes a
+ portlet supports for a specific content type. All portlets must
+ support the view mode.
+ Used in: portlet
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="mime-type" type="portlet:mime-typeType"/>
+ <element name="portlet-mode" type="portlet:portlet-modeType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="window-state" type="portlet:window-stateType" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="supported-localeType">
+ <annotation>
+ <documentation>
+ Indicated the locales the portlet supports.
+ Used in: portlet
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string"/>
+ </simpleContent>
+ </complexType>
+ <complexType name="titleType">
+ <annotation>
+ <documentation>
+ Locale specific static title for this portlet.
+ Used in: portlet-info
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string"/>
+ </simpleContent>
+ </complexType>
+ <simpleType name="transport-guaranteeType">
+ <annotation>
+ <documentation>
+ The transport-guaranteeType specifies that
+ the communication between client and portlet should
+ be NONE, INTEGRAL, or CONFIDENTIAL.
+ NONE means that the portlet does not
+ require any transport guarantees. A value of
+ INTEGRAL means that the portlet requires that the
+ data sent between the client and portlet be sent in
+ such a way that it can't be changed in transit.
+ CONFIDENTIAL means that the portlet requires
+ that the data be transmitted in a fashion that
+ prevents other entities from observing the contents
+ of the transmission.
+ In most cases, the presence of the INTEGRAL or
+ CONFIDENTIAL flag will indicate that the use
+ of SSL is required.
+ Used in: user-data-constraint
+ </documentation>
+ </annotation>
+ <restriction base="portlet:string">
+ <enumeration value="NONE"/>
+ <enumeration value="INTEGRAL"/>
+ <enumeration value="CONFIDENTIAL"/>
+ </restriction>
+ </simpleType>
+ <complexType name="user-attributeType">
+ <annotation>
+ <documentation>
+ User attribute defines a user specific attribute that the
+ portlet application needs. The portlet within this application
+ can access this attribute via the request parameter USER_INFO
+ map.
+ Used in: portlet-app
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="name" type="portlet:nameType"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="user-data-constraintType">
+ <annotation>
+ <documentation>
+ The user-data-constraintType is used to indicate how
+ data communicated between the client and portlet should be
+ protected.
+ Used in: security-constraint
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="portlet:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="transport-guarantee" type="portlet:transport-guaranteeType"/>
+ </sequence>
+ <attribute name="id" type="portlet:string" use="optional"/>
+ </complexType>
+ <complexType name="valueType">
+ <annotation>
+ <documentation>
+ The value element contains the value of a parameter.
+ Used in: init-param
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string"/>
+ </simpleContent>
+ </complexType>
+ <complexType name="window-stateType">
+ <annotation>
+ <documentation>
+ Portlet window state. Window state names are not case sensitive.
+ Used in: custom-window-state
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string"/>
+ </simpleContent>
+ </complexType>
+ <!--- everything below is copied from j2ee_1_4.xsd -->
+ <complexType name="descriptionType">
+ <annotation>
+ <documentation>
+ The description element is used to provide text describing the
+ parent element. The description element should include any
+ information that the portlet application war file producer wants
+ to provide to the consumer of the portlet application war file
+ (i.e., to the Deployer). Typically, the tools used by the
+ portlet application war file consumer will display the
+ description when processing the parent element that contains the
+ description. It has an optional attribute xml:lang to indicate
+ which language is used in the description according to
+ RFC 1766 (http://www.ietf.org/rfc/rfc1766.txt). The default
+ value of this attribute is English(“en”).
+ Used in: init-param, portlet, portlet-app, security-role
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string">
+ <attribute ref="xml:lang"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ <complexType name="display-nameType">
+ <annotation>
+ <documentation>
+ The display-name type contains a short name that is intended
+ to be displayed by tools. It is used by display-name
+ elements. The display name need not be unique.
+ Example:
+ ...
+ <display-name xml:lang="en">Employee Self Service</display-name>
+
+ It has an optional attribute xml:lang to indicate
+ which language is used in the description according to
+ RFC 1766 (http://www.ietf.org/rfc/rfc1766.txt). The default
+ value of this attribute is English(“en”).
+ </documentation>
+ </annotation>
+ <simpleContent>
+ <extension base="portlet:string">
+ <attribute ref="xml:lang"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ <simpleType name="fully-qualified-classType">
+ <annotation>
+ <documentation>
+ The elements that use this type designate the name of a
+ Java class or interface.
+ </documentation>
+ </annotation>
+ <restriction base="portlet:string"/>
+ </simpleType>
+ <simpleType name="role-nameType">
+ <annotation>
+ <documentation>
+ The role-nameType designates the name of a security role.
+
+ The name must conform to the lexical rules for an NMTOKEN.
+ </documentation>
+ </annotation>
+ <restriction base="NMTOKEN"/>
+ </simpleType>
+ <simpleType name="string">
+ <annotation>
+ <documentation>
+ This is a special string datatype that is defined by JavaEE
+ as a base type for defining collapsed strings. When
+ schemas require trailing/leading space elimination as
+ well as collapsing the existing whitespace, this base
+ type may be used.
+ </documentation>
+ </annotation>
+ <restriction base="string">
+ <whiteSpace value="collapse"/>
+ </restriction>
+ </simpleType>
+ <simpleType name="filter-nameType">
+ <annotation>
+ <documentation>
+ The logical name of the filter is declare
+ by using filter-nameType. This name is used to map the
+ filter. Each filter name is unique within the portlet
+ application.
+ Used in: filter, filter-mapping
+ </documentation>
+ </annotation>
+ <restriction base="portlet:string"/>
+ </simpleType>
+</schema>
Added: components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/xml.xsd
===================================================================
--- components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/xml.xsd (rev 0)
+++ components/pc/trunk/portlet/src/main/resources/org/gatein/pc/portlet/impl/deployment/xml/xml.xsd 2011-09-23 08:35:39 UTC (rev 7495)
@@ -0,0 +1,117 @@
+<?xml version='1.0'?>
+<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" >
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
+
+ <xs:annotation>
+ <xs:documentation>
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang or xml:space attributes
+ on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ <schema . . .>
+ . . .
+ <import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ <type . . .>
+ . . .
+ <attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2001/03/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself. In other words, if the XML Schema namespace changes, the version
+ of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2001/03/xml.xsd will not change.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang" type="xs:language">
+ <xs:annotation>
+ <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values . . .</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="space" default="preserve">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+ <xs:attribute ref="xml:base"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+
+</xs:schema>
Modified: components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/AbstractMetaDataTestCase.java
===================================================================
--- components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/AbstractMetaDataTestCase.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/AbstractMetaDataTestCase.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -40,22 +40,17 @@
public abstract class AbstractMetaDataTestCase extends TestCase
{
- /** Test parameter for using xml binding annotation. */
- public static final String ANNOTATION_BINDING = "annotation";
-
- /** Annotation or ObjectModelFactory parsing. */
- private String parser = ANNOTATION_BINDING;
-
- protected PortletApplication20MetaData _unmarshall10(String file) throws SAXException, IOException
+ protected PortletApplication20MetaData unmarshall(String file) throws SAXException, IOException
{
- return _unmarshall10(file, false);
+ return unmarshall(file, false);
}
- protected PortletApplication20MetaData _unmarshall10(String file, boolean fail) throws SAXException, IOException
+ protected PortletApplication20MetaData unmarshall(String file, boolean fail) throws SAXException, IOException
{
try
{
PortletApplicationMetaDataBuilder builder = new PortletApplicationMetaDataBuilder();
+ builder.setSchemaValidation(true);
String path = getPath(file);
URL url = new URL(path);
InputStream in = url.openStream();
Modified: components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/ContainerRuntimeOptionTestCase.java
===================================================================
--- components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/ContainerRuntimeOptionTestCase.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/ContainerRuntimeOptionTestCase.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -36,7 +36,7 @@
public void test021() throws Exception
{
- PortletApplication20MetaData md = _unmarshall10("metadata/runtimeoption/portlet.xml");
+ PortletApplication20MetaData md = unmarshall("metadata/runtimeoption/portlet.xml");
PortletMetaData portlet = md.getPortlet("portlet-name");
assertNotNull(portlet);
Map<String, ContainerRuntimeMetaData> m = portlet.getContainerRuntimeOptions();
Modified: components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/CustomPortletModeTestEverythingTestCase.java
===================================================================
--- components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/CustomPortletModeTestEverythingTestCase.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/CustomPortletModeTestEverythingTestCase.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -42,7 +42,7 @@
{
String xmlFile = "metadata/customPortletMode/portlet1.xml";
- PortletApplication10MetaData md = _unmarshall10(xmlFile);
+ PortletApplication10MetaData md = unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication10MetaData);
assertEquals("1.0", md.getVersion());
@@ -70,7 +70,7 @@
String xmlFile = "metadata/customPortletMode/portlet2.xml";
- PortletApplication20MetaData md = _unmarshall10(xmlFile);
+ PortletApplication20MetaData md = unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication20MetaData);
assertEquals("2.0", md.getVersion());
@@ -107,6 +107,6 @@
public void test03() throws Exception
{
String xmlFile = "metadata/customPortletMode/portlet1-fail.xml";
- _unmarshall10(xmlFile, true);
+ unmarshall(xmlFile, true);
}
}
Modified: components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/CustomWindowStateTestEverythingTestCase.java
===================================================================
--- components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/CustomWindowStateTestEverythingTestCase.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/CustomWindowStateTestEverythingTestCase.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -41,7 +41,7 @@
String xmlFile = "metadata/customWindowState/portlet1.xml";
- PortletApplication10MetaData md = _unmarshall10(xmlFile);
+ PortletApplication10MetaData md = unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication10MetaData);
assertEquals("1.0", md.getVersion());
@@ -71,7 +71,7 @@
String xmlFile = "metadata/customWindowState/portlet2.xml";
- PortletApplication20MetaData md = _unmarshall10(xmlFile);
+ PortletApplication20MetaData md = unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication20MetaData);
assertEquals("2.0", md.getVersion());
Modified: components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/EventTestEverythingTestCase.java
===================================================================
--- components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/EventTestEverythingTestCase.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/EventTestEverythingTestCase.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -46,7 +46,7 @@
String xmlFile = "metadata/event/portlet-event1.xml";
- _unmarshall10(xmlFile);
+ unmarshall(xmlFile);
fail();
}
catch (Exception e)
@@ -62,7 +62,7 @@
String xmlFile = "metadata/event/portlet-event2.xml";
- PortletApplication20MetaData md = _unmarshall10(xmlFile);
+ PortletApplication20MetaData md = unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication20MetaData);
assertEquals("2.0", md.getVersion());
@@ -124,6 +124,6 @@
{
// "Should fail: name and qname defined!"
String xmlFile = "metadata/event/portlet-event2-fail.xml";
- _unmarshall10(xmlFile, true);
+ unmarshall(xmlFile, true);
}
}
Modified: components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/FilterTestEverythingTestCase.java
===================================================================
--- components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/FilterTestEverythingTestCase.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/FilterTestEverythingTestCase.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -38,7 +38,7 @@
public void test01() throws Exception
{
- _unmarshall10("metadata/filter/portlet-filter1.xml", true);
+ unmarshall("metadata/filter/portlet-filter1.xml", true);
}
public void test02()
@@ -47,7 +47,7 @@
{
String xmlFile = "metadata/filter/portlet-filter2.xml";
- PortletApplication20MetaData md = _unmarshall10(xmlFile);
+ PortletApplication20MetaData md = unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication20MetaData);
Modified: components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/GeneralMetaDataTestCase.java
===================================================================
--- components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/GeneralMetaDataTestCase.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/GeneralMetaDataTestCase.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -41,7 +41,7 @@
{
try
{
- PortletApplication10MetaData md = _unmarshall10("metadata/general/portlet1.xml");
+ PortletApplication10MetaData md = unmarshall("metadata/general/portlet1.xml");
assertNotNull(md);
assertTrue(md instanceof PortletApplication10MetaData);
assertEquals("1.0", md.getVersion());
@@ -56,7 +56,7 @@
{
try
{
- PortletApplication20MetaData md = _unmarshall10("metadata/general/portlet2.xml");
+ PortletApplication20MetaData md = unmarshall("metadata/general/portlet2.xml");
assertNotNull(md);
assertTrue(md instanceof PortletApplication20MetaData);
assertEquals("2.0", md.getVersion());
@@ -71,7 +71,7 @@
{
try
{
- PortletApplication20MetaData md = _unmarshall10("metadata/general/portlet2-jsr286.xml");
+ PortletApplication20MetaData md = unmarshall("metadata/general/portlet2-jsr286.xml");
assertEquals("2.0", md.getVersion());
assertTrue(md instanceof PortletApplication20MetaData);
@@ -111,7 +111,7 @@
{
try
{
- PortletApplication10MetaData md = _unmarshall10("metadata/general/portlet-app_1_0.xml");
+ PortletApplication10MetaData md = unmarshall("metadata/general/portlet-app_1_0.xml");
assertNotNull(md);
assertTrue(md instanceof PortletApplication10MetaData);
@@ -129,7 +129,7 @@
{
try
{
- PortletApplication20MetaData md = _unmarshall10("metadata/general/portlet-app_2_0.xml");
+ PortletApplication20MetaData md = unmarshall("metadata/general/portlet-app_2_0.xml");
assertEquals("2.0", md.getVersion());
assertTrue(md instanceof PortletApplication20MetaData);
}
Modified: components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/ListenerTestCase.java
===================================================================
--- components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/ListenerTestCase.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/ListenerTestCase.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -35,7 +35,7 @@
{
try
{
- PortletApplication20MetaData md = _unmarshall10("metadata/listener/portlet2.xml");
+ PortletApplication20MetaData md = unmarshall("metadata/listener/portlet2.xml");
List<ListenerMetaData> listeners = md.getListeners();
assertNotNull(listeners);
assertEquals(1, listeners.size());
Modified: components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/PortletTestEverythingTestCase.java
===================================================================
--- components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/PortletTestEverythingTestCase.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/PortletTestEverythingTestCase.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -52,7 +52,7 @@
{
String xmlFile = "metadata/portlet/portlet1.xml";
- PortletApplication10MetaData md = _unmarshall10(xmlFile);
+ PortletApplication10MetaData md = unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication10MetaData);
assertEquals("1.0", md.getVersion());
@@ -218,7 +218,7 @@
{
String xmlFile = "metadata/portlet/portlet2.xml";
- PortletApplication20MetaData md = this._unmarshall10(xmlFile);
+ PortletApplication20MetaData md = this.unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication20MetaData);
assertEquals("2.0", md.getVersion());
@@ -376,7 +376,7 @@
{
String xmlFile = "metadata/portlet/portlet2-jsr286.xml";
- PortletApplication20MetaData md = this._unmarshall10(xmlFile);
+ PortletApplication20MetaData md = this.unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication20MetaData);
assertEquals("2.0", md.getVersion());
@@ -493,4 +493,9 @@
}
}
+ public void testInvalid() throws Exception
+ {
+ unmarshall("metadata/portlet/portlet1-invalid.xml", true);
+ unmarshall("metadata/portlet/portlet2-invalid.xml", true);
+ }
}
Modified: components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/RenderParameterTestEverythingTestCase.java
===================================================================
--- components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/RenderParameterTestEverythingTestCase.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/RenderParameterTestEverythingTestCase.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -39,7 +39,7 @@
String xmlFile = "metadata/renderParameter/portlet2.xml";
- PortletApplication20MetaData md = _unmarshall10(xmlFile);
+ PortletApplication20MetaData md = unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication20MetaData);
assertEquals("2.0", md.getVersion());
Modified: components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/SecurityConstraintTestEverythingTestCase.java
===================================================================
--- components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/SecurityConstraintTestEverythingTestCase.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/SecurityConstraintTestEverythingTestCase.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -44,7 +44,7 @@
String xmlFile = "metadata/security/portlet1.xml";
- PortletApplication10MetaData md = _unmarshall10(xmlFile);
+ PortletApplication10MetaData md = unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication10MetaData);
assertEquals("1.0", md.getVersion());
@@ -132,7 +132,7 @@
String xmlFile = "metadata/security/portlet2.xml";
- PortletApplication20MetaData md = this._unmarshall10( xmlFile);
+ PortletApplication20MetaData md = this.unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication20MetaData);
assertEquals("2.0", md.getVersion());
Modified: components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/UserAttributeTestEverythingTestCase.java
===================================================================
--- components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/UserAttributeTestEverythingTestCase.java 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/test/java/org/gatein/pc/portlet/deployment/UserAttributeTestEverythingTestCase.java 2011-09-23 08:35:39 UTC (rev 7495)
@@ -41,7 +41,7 @@
{
String xmlFile = "metadata/userAttribute/portlet1.xml";
- PortletApplication10MetaData md = _unmarshall10(xmlFile);
+ PortletApplication10MetaData md = unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication10MetaData);
@@ -70,7 +70,7 @@
{
String xmlFile = "metadata/userAttribute/portlet2.xml";
- PortletApplication20MetaData md = this._unmarshall10(xmlFile);
+ PortletApplication20MetaData md = this.unmarshall(xmlFile);
assertNotNull(md);
assertTrue(md instanceof PortletApplication20MetaData);
Modified: components/pc/trunk/portlet/src/test/resources/metadata/general/portlet-app_1_0.xml
===================================================================
--- components/pc/trunk/portlet/src/test/resources/metadata/general/portlet-app_1_0.xml 2011-09-23 05:21:23 UTC (rev 7494)
+++ components/pc/trunk/portlet/src/test/resources/metadata/general/portlet-app_1_0.xml 2011-09-23 08:35:39 UTC (rev 7495)
@@ -35,7 +35,7 @@
<preferences-validator>preferences-validator</preferences-validator>
</portlet-preferences>
<security-role-ref id="id">
- <description xml:lang="">description</description>
+ <description xml:lang="en">description</description>
<role-name>NMTOKEN</role-name>
<role-link>role-link</role-link>
</security-role-ref>
@@ -58,7 +58,7 @@
<portlet-name>portlet-name</portlet-name>
</portlet-collection>
<user-data-constraint id="">
- <description xml:lang="">description</description>
+ <description xml:lang="en">description</description>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
Added: components/pc/trunk/portlet/src/test/resources/metadata/portlet/portlet1-invalid.xml
===================================================================
--- components/pc/trunk/portlet/src/test/resources/metadata/portlet/portlet1-invalid.xml (rev 0)
+++ components/pc/trunk/portlet/src/test/resources/metadata/portlet/portlet1-invalid.xml 2011-09-23 08:35:39 UTC (rev 7495)
@@ -0,0 +1,7 @@
+<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
+ version="1.0">
+ <portlet>
+ </portlet>
+</portlet-app>
Added: components/pc/trunk/portlet/src/test/resources/metadata/portlet/portlet2-invalid.xml
===================================================================
--- components/pc/trunk/portlet/src/test/resources/metadata/portlet/portlet2-invalid.xml (rev 0)
+++ components/pc/trunk/portlet/src/test/resources/metadata/portlet/portlet2-invalid.xml 2011-09-23 08:35:39 UTC (rev 7495)
@@ -0,0 +1,7 @@
+<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+ version="2.0">
+ <portlet>
+ </portlet>
+</portlet-app>
\ No newline at end of file
13 years, 3 months
gatein SVN: r7492 - in epp/docs/branches/5.2/Release_Notes/en-US: Common_Content and 1 other directory.
by do-not-reply@jboss.org
Author: smumford
Date: 2011-09-22 23:22:11 -0400 (Thu, 22 Sep 2011)
New Revision: 7492
Modified:
epp/docs/branches/5.2/Release_Notes/en-US/5.2.0_Release_Notes.ent
epp/docs/branches/5.2/Release_Notes/en-US/5.2.0_Release_Notes.xml
epp/docs/branches/5.2/Release_Notes/en-US/Author_Group.xml
epp/docs/branches/5.2/Release_Notes/en-US/Book_Info.xml
epp/docs/branches/5.2/Release_Notes/en-US/Common_Content/Conventions.xml
epp/docs/branches/5.2/Release_Notes/en-US/Common_Content/Legal_Notice.xml
epp/docs/branches/5.2/Release_Notes/en-US/Revision_History.xml
epp/docs/branches/5.2/Release_Notes/en-US/known_issues.xml
epp/docs/branches/5.2/Release_Notes/en-US/need_info.xml
epp/docs/branches/5.2/Release_Notes/en-US/not_documented.xml
epp/docs/branches/5.2/Release_Notes/en-US/resolved_issues.xml
Log:
Updated Issues lists.
Added 'Assignee' remarks.
Modified: epp/docs/branches/5.2/Release_Notes/en-US/5.2.0_Release_Notes.ent
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/5.2.0_Release_Notes.ent 2011-09-23 00:03:21 UTC (rev 7491)
+++ epp/docs/branches/5.2/Release_Notes/en-US/5.2.0_Release_Notes.ent 2011-09-23 03:22:11 UTC (rev 7492)
@@ -2,7 +2,7 @@
<!ENTITY PRODUCT "JBoss Enterprise Portal Platform">
<!-- Book specifics: -->
-<!ENTITY BOOKID "5.1.1 Release Notes">
+<!ENTITY BOOKID "5.2.0 Release Notes">
<!-- Corporate Specifics: -->
<!ENTITY YEAR "2011">
Modified: epp/docs/branches/5.2/Release_Notes/en-US/5.2.0_Release_Notes.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/5.2.0_Release_Notes.xml 2011-09-23 00:03:21 UTC (rev 7491)
+++ epp/docs/branches/5.2/Release_Notes/en-US/5.2.0_Release_Notes.xml 2011-09-23 03:22:11 UTC (rev 7492)
@@ -1,11 +1,11 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "5.1.1_Release_Notes.ent">
+<!ENTITY % BOOK_ENTITIES SYSTEM "5.2.0_Release_Notes.ent">
%BOOK_ENTITIES;
]>
<article>
<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <section id="sect-5.1.1_Release_Notes-Introduction">
+ <section id="sect-5.2.0_Release_Notes-Introduction">
<title>Introduction</title>
<para>
JBoss Enterprise Portal Platform offers an intuitive, easy to manage user interface and a proven core infrastructure to enable organizations to quickly build dynamic web sites in a highly reusable way. By bringing the principals of Open Choice to the presentation layer, JBoss Enterprise Portal Platform 5 maximizes existing skills and technology investments.
@@ -15,37 +15,40 @@
</para>
</section>
-
- <section id="sect-5.1.1_Release_Notes-New_and_Upgraded_Components">
+
+ <section id="sect-5.2.0_Release_Notes-Upgraded_Components">
<title>Upgraded Components</title>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term></term>
+ <listitem>
+ <para>
+ <remark>Which are the component upgrades we want to call out in particular?</remark>
- <variablelist id="vari-5.1.1_Release_Notes-New_and_Upgraded_Components-Upgraded_Components">
- <title></title>
- <varlistentry>
- <term></term>
- <listitem>
- <para>
-
- </para>
- </listitem>
- </varlistentry>
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
</variablelist>
- <para>
- More details about the component versions that make up JBoss Enterprise Portal Platform 5.1.1 can be found in <xref linkend="sect-5.1.1_Release_Notes-Component_Versions"/>
- </para>
- <!-- Source Metadata
+ <para>
+ More details about the component versions that make up JBoss Enterprise Portal Platform &VZ; can be found in <xref linkend="sect-5.2.0_Release_Notes-Component_Versions" />
+ </para>
+ <!-- Source Metadata
URL: https://issues.jboss.org/browse/JBEPP-897
Author [w/email]: Honza Fnukal (hfnukal(a)redhat.com)
License: Red Hat?
- -->
+ -->
</section>
-
- <section id="sect-5.1.1_Release_Notes-Component_Versions">
+
+ <section id="sect-5.2.0_Release_Notes-Component_Versions">
<title>Component Versions</title>
<para>
- This section details the versions of the components in JBoss Enterprise Portal Platform 5.1.1.
+ This section details the versions of the components in JBoss Enterprise Portal Platform &VZ;.
</para>
- <table id="tabl-5.1.1_Release_Notes-Component_Versions-JBoss_Enterprise_Portal_Platform_Component_Versions">
+ <table id="tabl-5.2.0_Release_Notes-Component_Versions-JBoss_Enterprise_Portal_Platform_Component_Versions">
<title>JBoss Enterprise Portal Platform Component Versions</title>
<tgroup cols="2">
<thead>
@@ -56,7 +59,9 @@
<entry>
Version
</entry>
+
</row>
+
</thead>
<tbody>
<row>
@@ -64,228 +69,267 @@
EAP
</entry>
<entry>
-
+ 5.1.1-GA
</entry>
+
</row>
<row>
<entry>
eXo junit
</entry>
- <entry>
-
+ <entry>
+ 1.2.1-GA
</entry>
+
</row>
<row>
<entry>
eXo kernel
</entry>
<entry>
-
+ 2.3.0-GA
</entry>
+
</row>
<row>
<entry>
eXo Core
</entry>
- <entry>
-
+ <entry>
+ 2.4.0-GA-CP02
</entry>
+
</row>
<row>
<entry>
eXo WS
</entry>
- <entry>
-
+ <entry>
+ 2.2.0-GA
</entry>
+
</row>
<row>
<entry>
eXo JCR
</entry>
- <entry>
-
+ <entry>
+ 1.14.0-GA
</entry>
+
</row>
<row>
<entry>
Apache Shindig
</entry>
- <entry>
-
+ <entry>
+ 2.0.2-Beta02
</entry>
+
</row>
<row>
<entry>
Simple Captcha
</entry>
- <entry>
-
+ <entry>
+ 1.1.1-GA-Patch01
</entry>
+
</row>
<row>
<entry>
GateIn Parent
</entry>
- <entry>
-
+ <entry>
+ 1.0.2-GA
</entry>
+
</row>
<row>
<entry>
GateIn dep
</entry>
- <entry>
-
+ <entry>
+ 1.1.0-Beta06
</entry>
+
</row>
<row>
<entry>
GateIn Common
</entry>
- <entry>
-
+ <entry>
+ 2.0.4.Beta03
</entry>
+
</row>
<row>
<entry>
GateIn WCI
</entry>
- <entry>
-
+ <entry>
+ 2.1.0-Beta06
</entry>
+
</row>
<row>
<entry>
GateIn PC
</entry>
- <entry>
-
+ <entry>
+ 2.3.0-Beta05
</entry>
+
</row>
<row>
<entry>
GateIn WSRP
</entry>
- <entry>
-
+ <entry>
+ 2.1.0-Beta05
</entry>
+
</row>
<row>
<entry>
GateIn MOP
</entry>
- <entry>
-
+ <entry>
+ 1.1.0-Beta05
</entry>
+
</row>
<row>
<entry>
GateIn SSO
</entry>
- <entry>
-
+ <entry>
+ 1.0.2-epp-DEV01
</entry>
+
</row>
<row>
<entry>
PicketLink IDM
</entry>
- <entry>
-
+ <entry>
+ 1.3.0.Alpha04
</entry>
+
</row>
<row>
<entry>
Chromattic
</entry>
- <entry>
-
+ <entry>
+ 1.1.0-beta6
</entry>
+
</row>
<row>
<entry>
Portlet Bridge
</entry>
- <entry>
-
+ <entry>
+ 2.1.1.GA.EPP51
</entry>
+
</row>
<row>
<entry>
Seam
</entry>
- <entry>
-
+ <entry>
+ 2.2.3.EAP5-13.ep5.el6
</entry>
+
</row>
<row>
<entry>
Richfaces
</entry>
- <entry>
-
+ <entry>
+ 3.3.1.SP3.1.ep5.ep6
</entry>
+
</row>
<row>
<entry>
Groovy
</entry>
- <entry>
-
+ <entry>
+ 1.7.6
</entry>
+
</row>
<row>
<entry>
Commons DBCP
</entry>
- <entry>
-
+ <entry>
+ 1.4
</entry>
+
</row>
<row>
<entry>
Commons IO
</entry>
- <entry>
-
+ <entry>
+ 1.4
</entry>
+
</row>
<row>
<entry>
Commons Lang
</entry>
- <entry>
-
+ <entry>
+ 2.6
</entry>
+
</row>
<row>
<entry>
HSQLDB
</entry>
- <entry>
-
+ <entry>
+ 2.0.0
</entry>
+
</row>
<row>
<entry>
JBoss Cache
</entry>
+ <entry>
+ 3.2.7
+ </entry>
+
+ </row>
+ <row>
<entry>
-
+ GateIn Management
</entry>
+ <entry>
+ 1.0.0-Beta03
+ </entry>
+
</row>
+
</tbody>
+
</tgroup>
+
</table>
- <!-- Source Metadata
+ <!-- Source Metadata
URL: https://docspace.corp.redhat.com/docs/DOC-64265
Author: Thomas Heute (theute(a)redhat.com)
License: Red Hat is the Holder.
- -->
+ -->
</section>
-
- <section id="sect-5.1.1_Release_Notes-Installation">
+
+ <section id="sect-5.2.0_Release_Notes-Installation">
<title>Installation</title>
<para>
The JBoss Enterprise Portal Platform Installation Guide contains details of software and hardware requirements as well as detailed installation instructions.
@@ -295,79 +339,94 @@
</para>
</section>
-
- <section id="sect-5.1.1_Release_Notes-Resolved_Issues">
+
+ <section id="sect-5.2.0_Release_Notes-Resolved_Issues">
<title>Resolved Issues</title>
<xi:include href="resolved_issues.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</section>
+
+ <section id="sect-5.2.0_Release_Notes-Known_Issues">
+ <title>Known Issues</title>
+ <xi:include href="known_issues.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <section id="sect-5.1.1_Release_Notes-Known_Issues">
- <title>Known Issues</title>
- <xi:include href="known_issues.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</section>
+
+ <section id="sect-5.2.0_Release_Notes-NEEDINFO_Issues_">
+ <title><remark>NEEDINFO Issues</remark>
+ </title>
+ <xi:include href="need_info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <section>
- <title><remark>NEEDINFO Issues</remark></title>
- <xi:include href="need_info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- </section>
+ </section>
+
+ <section id="sect-5.2.0_Release_Notes-Not_Documented_Issues_">
+ <title><remark>Not Documented Issues</remark>
+ </title>
+ <xi:include href="not_documented.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <section>
- <title><remark>Not Documented Issues</remark></title>
- <xi:include href="not_documented.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- </section>
- <section>
+ </section>
+
+ <section id="sect-5.2.0_Release_Notes-Security_Related_Issues">
<title>Security Related Issues</title>
- <variablelist>
+ <variablelist>
<title></title>
- <varlistentry>
- <term></term>
- <listitem>
- <para>
-
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
+ <varlistentry>
+ <term></term>
+ <listitem>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
</section>
- <section>
- <title>Recommended Practices</title>
- <variablelist>
- <!-- https://issues.jboss.org/browse/JBEPP-610 -->
- <varlistentry>
- <term>Plain Text Passwords</term>
- <listitem>
+
+ <section id="sect-5.2.0_Release_Notes-Recommended_Practices">
+ <title>Recommended Practices</title>
+ <variablelist>
+ <!-- https://issues.jboss.org/browse/JBEPP-610 --> <varlistentry>
+ <term>Plain Text Passwords</term>
+ <listitem>
+ <para>
+ JBoss Enterprise Portal Platform administrators should be aware that passwords saved by users who chose the <guilabel>Remember Me</guilabel> option when logging in are stored in the underlying JCR in plain text. This creates a possible security risk as user passwords could be obtained with an SQL query.
+ </para>
<para>
- JBoss Enterprise Portal Platform administrators should be aware that passwords saved by users who chose the <guilabel>Remember Me</guilabel> option when logging in are stored in the underlying JCR in plain text. This creates a possible security risk as user passwords could be obtained with an SQL query.
- </para>
- <para>
While this is the default behavior of JBoss Enterprise Portal Platform, administrators can negate this risk by either disabling the <guilabel>Remember Me</guilabel> option or encrypting the passwords stored in the JCR.
- </para>
+ </para>
<para>
- Instructions for implementing both of these solutions are included in section 14.1 of the JBoss Enterprise Portal Platform Reference Guide which is available at <ulink type="http" url="http://docs.redhat.com/docs/en-US/JBoss_Enterprise_Portal_Platform/index...."></ulink>.
- </para>
- </listitem>
+ Instructions for implementing both of these solutions are included in section 14.1 of the JBoss Enterprise Portal Platform Reference Guide which is available at <ulink type="http" url="http://docs.redhat.com/docs/en-US/JBoss_Enterprise_Portal_Platform/index...." />.
+ </para>
+
+ </listitem>
+
</varlistentry>
- </variablelist>
- </section>
- <section id="sect-5.1.1_Release_Notes-Migration">
+ </variablelist>
+
+ </section>
+
+ <section id="sect-5.2.0_Release_Notes-Migration">
<title>Migration</title>
- <para>
- JBoss Enterprise Portal Platform 5 is based upon an entirely new core architecture and is not backwards compatible with JBoss Enterprise Portal Platform 4.3.
- </para>
- <para>
- As a value added part of an enterprise subscription the JBoss Portal team is working to develop a set of migration utilities (which may take the form of documentation, guides and/or scripts) to assist customers in migration. We intend to release these utilities in a future revision of JBoss Enterprise Portal Platform 5.
- </para>
- <para>
- For customers seeking to begin a migration prior to the availability of any Red Hat provided migration utilities, please contact Red Hat JBoss Support for migration advice. Red Hat JBoss support will be the main communication channel for migration knowledge as it is developed.
- </para>
- <para>
- Red Hat JBoss Customer Support can be accessed at <ulink type="http" url="https://www.redhat.com/apps/support/" />.
- </para>
- </section>
+ <para>
+ JBoss Enterprise Portal Platform 5 is based upon an entirely new core architecture and is not backwards compatible with JBoss Enterprise Portal Platform 4.3.
+ </para>
+ <para>
+ As a value added part of an enterprise subscription the JBoss Portal team is working to develop a set of migration utilities (which may take the form of documentation, guides and/or scripts) to assist customers in migration. We intend to release these utilities in a future revision of JBoss Enterprise Portal Platform 5.
+ </para>
+ <para>
+ For customers seeking to begin a migration prior to the availability of any Red Hat provided migration utilities, please contact Red Hat JBoss Support for migration advice. Red Hat JBoss support will be the main communication channel for migration knowledge as it is developed.
+ </para>
+ <para>
+ Red Hat JBoss Customer Support can be accessed at <ulink type="http" url="https://www.redhat.com/apps/support/" />.
+ </para>
- <section id="sect-5.1.1_Release_Notes-Site_Publisher">
+ </section>
+
+ <section id="sect-5.2.0_Release_Notes-Site_Publisher">
<title>Site Publisher</title>
<para>
Site Publisher provides many additional features for organizations looking to enable line of business resources to directly manage sites, pages and content within the context of the portal versus through integration with an external web content management system.
@@ -380,8 +439,8 @@
</para>
</section>
-
- <section id="sect-5.1.1_Release_Notes-Documentation">
+
+ <section id="sect-5.2.0_Release_Notes-Documentation">
<title>Documentation</title>
<para>
Visit <ulink type="http" url="http://docs.redhat.com/docs/en-US/JBoss_Enterprise_Portal_Platform/index....">http://docs.redhat.com</ulink> for further documentation regarding JBoss Enterprise Portal Platform.
@@ -397,7 +456,9 @@
<para>
This document explains how to install and verify the installation of JBoss Enterprise Portal Platform using different installation methods.
</para>
+
</listitem>
+
</varlistentry>
<varlistentry>
<term>User Guide</term>
@@ -405,7 +466,9 @@
<para>
This document provides an easy to follow guide to the functions and options available in JBoss Enterprise Portal Platform. It is intended to be accessible and useful to both experienced and novice portal users.
</para>
+
</listitem>
+
</varlistentry>
<varlistentry>
<term>Reference Guide</term>
@@ -413,80 +476,98 @@
<para>
This is a high-level usage document. It deals with more advanced topics than the Installation and User guides, adding new content or taking concepts discussed in the earlier documents further. It aims to provide supporting documentation for advanced users of JBoss Enterprise Portal Platform. Its primary focus is on advanced use of the product and it assumes an intermediate or advanced knowledge of the technology and terms.
</para>
+
</listitem>
+
</varlistentry>
- <varlistentry>
- <term>Site Publisher</term>
- <listitem>
- <para>
- Dedicated Installation and User Guides provide information on installing, configuring and using the JBoss Enterprise Portal Platform Site Publisher extension. These documents assume the required JBoss Enterprise Portal Platform installation is present and functioning properly.
- </para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term>Site Publisher</term>
+ <listitem>
+ <para>
+ Dedicated Installation and User Guides provide information on installing, configuring and using the JBoss Enterprise Portal Platform Site Publisher extension. These documents assume the required JBoss Enterprise Portal Platform installation is present and functioning properly.
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
</variablelist>
+
</para>
<para>
The online documentation will be updated as necessary so be sure to check the site regularly, especially when a new version of JBoss Enterprise Portal Platform is released.
</para>
+
</section>
-
- <section id="sect-5.1.1_Release_Notes-_Product_Support_and_License_Website_Links_">
+
+ <section id="sect-5.2.0_Release_Notes-_Product_Support_and_License_Website_Links_">
<title> Product Support and License Website Links </title>
- <formalpara id="form-5.1.1_Release_Notes-_Product_Support_and_License_Website_Links_-Red_Hat_JBoss_Customer_Support">
+ <formalpara id="form-5.2.0_Release_Notes-_Product_Support_and_License_Website_Links_-Red_Hat_JBoss_Customer_Support">
<title>Red Hat JBoss Customer Support</title>
<para>
<ulink type="http" url="https://access.redhat.com/home " />
</para>
+
</formalpara>
- <formalpara id="form-5.1.1_Release_Notes-_Product_Support_and_License_Website_Links_-JBoss_Customer_Support_Portal_Downloads">
+ <formalpara id="form-5.2.0_Release_Notes-_Product_Support_and_License_Website_Links_-JBoss_Customer_Support_Portal_Downloads">
<title>JBoss Customer Support Portal Downloads</title>
<para>
<ulink type="http" url="https://access.redhat.com/jbossnetwork/restricted/listSoftware.html?produ..." />
</para>
+
</formalpara>
- <formalpara id="form-5.1.1_Release_Notes-_Product_Support_and_License_Website_Links_-Support_Processes">
+ <formalpara id="form-5.2.0_Release_Notes-_Product_Support_and_License_Website_Links_-Support_Processes">
<title>Support Processes</title>
<para>
<ulink url="https://access.redhat.com/support/policy/support_process.html" />
</para>
+
</formalpara>
- <formalpara id="form-5.1.1_Release_Notes-_Product_Support_and_License_Website_Links_-_Production_Support_Scope_of_Coverage_">
+ <formalpara id="form-5.2.0_Release_Notes-_Product_Support_and_License_Website_Links_-_Production_Support_Scope_of_Coverage_">
<title> Production Support Scope of Coverage </title>
<para>
<ulink url="https://access.redhat.com/support/offerings/production/soc.html" />
</para>
+
</formalpara>
- <formalpara id="form-5.1.1_Release_Notes-_Product_Support_and_License_Website_Links_-_Production_Support_Service_Level_Agreement_">
+ <formalpara id="form-5.2.0_Release_Notes-_Product_Support_and_License_Website_Links_-_Production_Support_Service_Level_Agreement_">
<title> Production Support Service Level Agreement </title>
<para>
<ulink url="https://access.redhat.com/support/offerings/production/sla.html" />
</para>
+
</formalpara>
- <formalpara id="form-5.1.1_Release_Notes-_Product_Support_and_License_Website_Links_-_Developer_Support_Scope_of_Coverage">
+ <formalpara id="form-5.2.0_Release_Notes-_Product_Support_and_License_Website_Links_-_Developer_Support_Scope_of_Coverage">
<title> Developer Support Scope of Coverage</title>
<para>
<ulink url="https://access.redhat.com/support/offerings/developer/soc.html" />
</para>
+
</formalpara>
- <formalpara id="form-5.1.1_Release_Notes-_Product_Support_and_License_Website_Links_-_Developer_Support_Service_Level_Agreement">
+ <formalpara id="form-5.2.0_Release_Notes-_Product_Support_and_License_Website_Links_-_Developer_Support_Service_Level_Agreement">
<title> Developer Support Service Level Agreement</title>
<para>
<ulink url="https://access.redhat.com/support/offerings/developer/sla.html" />
</para>
+
</formalpara>
- <formalpara id="form-5.1.1_Release_Notes-_Product_Support_and_License_Website_Links_-_Product_Update_and_Support_Policy">
+ <formalpara id="form-5.2.0_Release_Notes-_Product_Support_and_License_Website_Links_-_Product_Update_and_Support_Policy">
<title> Product Update and Support Policy</title>
<para>
<ulink url="https://access.redhat.com/support/policy/updates/jboss_notes/" />
</para>
+
</formalpara>
- <formalpara id="form-5.1.1_Release_Notes-_Product_Support_and_License_Website_Links_-_JBoss_End_User_License_Agreement">
+ <formalpara id="form-5.2.0_Release_Notes-_Product_Support_and_License_Website_Links_-_JBoss_End_User_License_Agreement">
<title> JBoss End User License Agreement</title>
<para>
<ulink url="http://www.redhat.com/licenses/jboss_eula.html" />
</para>
+
</formalpara>
+
</section>
-
+
<xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</article>
+
Modified: epp/docs/branches/5.2/Release_Notes/en-US/Author_Group.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/Author_Group.xml 2011-09-23 00:03:21 UTC (rev 7491)
+++ epp/docs/branches/5.2/Release_Notes/en-US/Author_Group.xml 2011-09-23 03:22:11 UTC (rev 7492)
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "5.1.1_Release_Notes.ent">
+<!ENTITY % BOOK_ENTITIES SYSTEM "5.2.0_Release_Notes.ent">
%BOOK_ENTITIES;
]>
<authorgroup>
Modified: epp/docs/branches/5.2/Release_Notes/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/Book_Info.xml 2011-09-23 00:03:21 UTC (rev 7491)
+++ epp/docs/branches/5.2/Release_Notes/en-US/Book_Info.xml 2011-09-23 03:22:11 UTC (rev 7492)
@@ -1,18 +1,18 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE articleinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "5.1.1_Release_Notes.ent">
+<!ENTITY % BOOK_ENTITIES SYSTEM "5.2.0_Release_Notes.ent">
%BOOK_ENTITIES;
]>
-<articleinfo id="arti-5.1.1_Release_Notes-5.1.1_Release_Notes">
- <title>5.2.0 Release Notes</title>
- <subtitle>For use with JBoss Enterprise Portal Platform &VZ;</subtitle>
+<articleinfo id="arti-5.2.0_Release_Notes-a5.2.0_Release_Notes">
+ <title>5.2.0 Release Notes</title>
+ <subtitle>For use with JBoss Enterprise Portal Platform &VZ;</subtitle>
<productname>JBoss Enterprise Portal Platform</productname>
- <productnumber>5.2</productnumber>
- <edition>5.2.0</edition>
- <pubsnumber>1</pubsnumber>
+ <productnumber>5.2</productnumber>
+ <edition>5.2.0</edition>
+ <pubsnumber>2</pubsnumber>
<abstract>
<para>
- These release notes contain important information related to JBoss Enterprise Portal Platform &VX; that may not be currently available in the Product Manuals. You should read these Release Notes in their entirety before installing the product.
+ These release notes contain important information related to JBoss Enterprise Portal Platform &VX; that may not be currently available in the Product Manuals. You should read these Release Notes in their entirety before installing the product.
</para>
</abstract>
Modified: epp/docs/branches/5.2/Release_Notes/en-US/Common_Content/Conventions.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/Common_Content/Conventions.xml 2011-09-23 00:03:21 UTC (rev 7491)
+++ epp/docs/branches/5.2/Release_Notes/en-US/Common_Content/Conventions.xml 2011-09-23 03:22:11 UTC (rev 7492)
@@ -1,9 +1,9 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "5.1.1_Release_Notes.ent">
+<!ENTITY % BOOK_ENTITIES SYSTEM "5.2.0_Release_Notes.ent">
%BOOK_ENTITIES;
]>
-<section id="sect-5.1.1_Release_Notes-Document_Conventions">
+<section id="sect-5.2.0_Release_Notes-Document_Conventions">
<title>Document Conventions</title>
<para>
This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information.
@@ -11,7 +11,7 @@
<para>
In PDF and paper editions, this manual uses typefaces drawn from the <ulink url="https://fedorahosted.org/liberation-fonts/">Liberation Fonts</ulink> set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default.
</para>
- <section id="sect-5.1.1_Release_Notes-Document_Conventions-Typographic_Conventions">
+ <section id="sect-5.2.0_Release_Notes-Document_Conventions-Typographic_Conventions">
<title>Typographic Conventions</title>
<para>
Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows.
@@ -109,7 +109,7 @@
</section>
- <section id="sect-5.1.1_Release_Notes-Document_Conventions-Pull_quote_Conventions">
+ <section id="sect-5.2.0_Release_Notes-Document_Conventions-Pull_quote_Conventions">
<title>Pull-quote Conventions</title>
<para>
Terminal output and source code listings are set off visually from the surrounding text.
@@ -148,7 +148,7 @@
</section>
- <section id="sect-5.1.1_Release_Notes-Document_Conventions-Notes_and_Warnings">
+ <section id="sect-5.2.0_Release_Notes-Document_Conventions-Notes_and_Warnings">
<title>Notes and Warnings</title>
<para>
Finally, we use three visual styles to draw attention to information that might otherwise be overlooked.
Modified: epp/docs/branches/5.2/Release_Notes/en-US/Common_Content/Legal_Notice.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/Common_Content/Legal_Notice.xml 2011-09-23 00:03:21 UTC (rev 7491)
+++ epp/docs/branches/5.2/Release_Notes/en-US/Common_Content/Legal_Notice.xml 2011-09-23 03:22:11 UTC (rev 7492)
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE legalnotice PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "5.1.1_Release_Notes.ent">
+<!ENTITY % BOOK_ENTITIES SYSTEM "5.2.0_Release_Notes.ent">
%BOOK_ENTITIES;
]>
<legalnotice>
@@ -17,7 +17,8 @@
All other trademarks are the property of their respective owners.
</para>
<para>
- <address>
+
+<address>
<street>1801 Varsity Drive</street>
<city>Raleigh</city>, <state>NC</state> <postcode>27606-2072</postcode> <country>USA</country>
<phone>Phone: +1 919 754 3700</phone>
@@ -25,7 +26,7 @@
<fax>Fax: +1 919 754 3701</fax>
<pob>PO Box 13588</pob> <city>Research Triangle Park</city>, <state>NC</state> <postcode>27709</postcode> <country>USA</country>
- </address>
+</address>
</para>
</legalnotice>
Modified: epp/docs/branches/5.2/Release_Notes/en-US/Revision_History.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/Revision_History.xml 2011-09-23 00:03:21 UTC (rev 7491)
+++ epp/docs/branches/5.2/Release_Notes/en-US/Revision_History.xml 2011-09-23 03:22:11 UTC (rev 7492)
@@ -1,26 +1,48 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "5.1.1_Release_Notes.ent">
+<!ENTITY % BOOK_ENTITIES SYSTEM "5.2.0_Release_Notes.ent">
%BOOK_ENTITIES;
]>
-<appendix id="appe-Release_Notes-Revision_History">
+<appendix id="appe-5.2.0_Release_Notes-Revision_History">
<title>Revision History</title>
<simpara>
<revhistory>
- <revision>
- <revnumber>5.2.0-1</revnumber>
- <date>Mon Aug 29 2011</date>
- <author>
- <firstname>Scott</firstname>
- <surname>Mumford</surname>
- <email></email>
- </author>
- <revdescription>
- <simplelist>
- <member>Updating version and resetting pubs/ed numbers.</member>
- </simplelist>
- </revdescription>
- </revision>
+ <revision>
+ <revnumber>5.2.0-2</revnumber>
+ <date>Fri Sep 23 2011</date>
+ <author>
+ <firstname>Scott</firstname>
+ <surname>Mumford</surname>
+ <email></email>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member>Updated Issues lists.</member>
+ <member>Added 'Assignee' remarks.</member>
+ </simplelist>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>5.2.0-1</revnumber>
+ <date>Mon Aug 29 2011</date>
+ <author>
+ <firstname>Scott</firstname>
+ <surname>Mumford</surname>
+ <email></email>
+
+ </author>
+ <revdescription>
+ <simplelist>
+ <member>Updating version and resetting pubs/ed numbers.</member>
+
+ </simplelist>
+
+ </revdescription>
+
+ </revision>
+
</revhistory>
+
</simpara>
-</appendix>
\ No newline at end of file
+</appendix>
+
Modified: epp/docs/branches/5.2/Release_Notes/en-US/known_issues.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/known_issues.xml 2011-09-23 00:03:21 UTC (rev 7491)
+++ epp/docs/branches/5.2/Release_Notes/en-US/known_issues.xml 2011-09-23 03:22:11 UTC (rev 7492)
@@ -1,23 +1,9 @@
-<?xml version='1.0'?>
-<!DOCTYPE variablelist PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE para PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "5.2.0_Release_Notes.ent">
+%BOOK_ENTITIES;
]>
+<para>
+ There are no known issues in this release.
+</para>
-
-<variablelist>
-
- <!-- https://issues.jboss.org/browse/JBEPP-715 -->
- <varlistentry>
- <term><ulink url="https://issues.jboss.org/browse/JBEPP-715" /></term>
- <listitem>
-
- <remark>JIRA is OPEN</remark>
-
-
- <para>
-
- </para>
-
- </listitem>
- </varlistentry>
-
-</variablelist>
Modified: epp/docs/branches/5.2/Release_Notes/en-US/need_info.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/need_info.xml 2011-09-23 00:03:21 UTC (rev 7491)
+++ epp/docs/branches/5.2/Release_Notes/en-US/need_info.xml 2011-09-23 03:22:11 UTC (rev 7492)
@@ -1,4 +1,20 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE variablelist PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "5.2.0_Release_Notes.ent">
+%BOOK_ENTITIES;
+]>
+<variablelist>
+ <!-- https://issues.jboss.org/browse/JBEPP-1098 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1098" /></term>
+ <listitem>
+ <remark>Assignee is: mwringe</remark>
+ <para>
+ In previous versions of JBoss Enterprise Portal Platform, new portlets added to a page did not, by default, display the 'info bar' which usually surrounds the portlet. In this release, behaviour to have the 'info bar' displayed by default is available under the portal config settings.
+ </para>
-<para>
-There are no issues that require more information at this time.
-</para>
+ </listitem>
+
+ </varlistentry>
+
+</variablelist>
+
Modified: epp/docs/branches/5.2/Release_Notes/en-US/not_documented.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/not_documented.xml 2011-09-23 00:03:21 UTC (rev 7491)
+++ epp/docs/branches/5.2/Release_Notes/en-US/not_documented.xml 2011-09-23 03:22:11 UTC (rev 7492)
@@ -1,38 +1,578 @@
-<?xml version='1.0'?>
+<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE variablelist PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "5.2.0_Release_Notes.ent">
+%BOOK_ENTITIES;
]>
+<variablelist>
+ <!-- https://issues.jboss.org/browse/JBEPP-353 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-353" /></term>
+ <listitem>
+ <remark>Assignee is: hfnukal</remark>
+ <warning>
+ <title>Not Public Yet - RHT+eXo</title>
+ <para>
+ </para>
-<variablelist>
-
- <!-- https://issues.jboss.org/browse/JBEPP-599 -->
- <varlistentry>
- <term><ulink url="https://issues.jboss.org/browse/JBEPP-599" /></term>
- <listitem>
-
-
- <para>
- If a portal is deleted from its own Site management page (that is; if a user deletes the portal they are currently logged into), the resultant redirect returns the user to the public mode of the default portal (/portal/public/classic) .
+ </warning>
-The user should be redirected to the private mode of the default portal (/portal/private/classic).
+ </listitem>
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-631 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-631" /></term>
+ <listitem>
+ <remark>Assignee is: hfnukal</remark>
+ <para>
- </para>
-
- </listitem>
- </varlistentry>
+ </para>
- <!-- https://issues.jboss.org/browse/JBEPP-779 -->
- <varlistentry>
- <term><ulink url="https://issues.jboss.org/browse/JBEPP-779" /></term>
- <listitem>
-
-
- <para>
- Configuration moved from jar file to portal.war.
- </para>
-
- </listitem>
- </varlistentry>
+ </listitem>
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-699 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-699" /></term>
+ <listitem>
+ <remark>This issue is unassigned!</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-763 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-763" /></term>
+ <listitem>
+ <remark>Assignee is: hfnukal</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-781 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-781" /></term>
+ <listitem>
+ <remark>Assignee is: bdaw</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-808 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-808" /></term>
+ <listitem>
+ <remark>Assignee is: hfnukal</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-810 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-810" /></term>
+ <listitem>
+ <remark>This issue is unassigned!</remark>
+ <warning>
+ <title>Not Public Yet - RHT+eXo</title>
+ <para>
+
+ </para>
+
+ </warning>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-853 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-853" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <warning>
+ <title>Not Public Yet - RHT+eXo</title>
+ <para>
+
+ </para>
+
+ </warning>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-865 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-865" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <warning>
+ <title>Not Public Yet - RHT+eXo</title>
+ <para>
+
+ </para>
+
+ </warning>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-867 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-867" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <warning>
+ <title>Not Public Yet - RHT+eXo</title>
+ <para>
+
+ </para>
+
+ </warning>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-900 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-900" /></term>
+ <listitem>
+ <remark>Assignee is: hfnukal</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-901 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-901" /></term>
+ <listitem>
+ <remark>Assignee is: bdaw</remark>
+ <warning>
+ <title>Not Public Yet - RHT+eXo</title>
+ <para>
+
+ </para>
+
+ </warning>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-903 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-903" /></term>
+ <listitem>
+ <remark>Assignee is: bdaw</remark>
+ <warning>
+ <title>Not Public Yet - RHT+eXo</title>
+ <para>
+
+ </para>
+
+ </warning>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-908 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-908" /></term>
+ <listitem>
+ <remark>Assignee is: bdaw</remark>
+ <warning>
+ <title>Not Public Yet - RHT+eXo</title>
+ <para>
+
+ </para>
+
+ </warning>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-924 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-924" /></term>
+ <listitem>
+ <remark>Assignee is: hfnukal</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-925 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-925" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-927 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-927" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-932 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-932" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-933 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-933" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-934 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-934" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-937 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-937" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-938 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-938" /></term>
+ <listitem>
+ <remark>Assignee is: mwringe</remark>
+ <para>
+ Update to Shindig 2
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-939 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-939" /></term>
+ <listitem>
+ <remark>Assignee is: hfnukal</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-940 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-940" /></term>
+ <listitem>
+ <remark>Assignee is: bdaw</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-985 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-985" /></term>
+ <listitem>
+ <remark>Assignee is: hfnukal</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1002 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1002" /></term>
+ <listitem>
+ <remark>Assignee is: mwringe</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1011 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1011" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1015 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1015" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1016 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1016" /></term>
+ <listitem>
+ <remark>Assignee is: mwringe</remark>
+ <para>
+ Add priority for skin module css loading
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1032 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1032" /></term>
+ <listitem>
+ <remark>Assignee is: bdaw</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1037 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1037" /></term>
+ <listitem>
+ <remark>Assignee is: hfnukal</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1048 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1048" /></term>
+ <listitem>
+ <remark>Assignee is: hfnukal</remark>
+ <warning>
+ <title>Not Public Yet - RHT+eXo</title>
+ <para>
+
+ </para>
+
+ </warning>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1051 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1051" /></term>
+ <listitem>
+ <remark>Assignee is: mwringe</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1053 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1053" /></term>
+ <listitem>
+ <remark>This issue is unassigned!</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1058 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1058" /></term>
+ <listitem>
+ <remark>Assignee is: bdaw</remark>
+ <warning>
+ <title>Not Public Yet - RHT+eXo</title>
+ <para>
+
+ </para>
+
+ </warning>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1059 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1059" /></term>
+ <listitem>
+ <remark>Assignee is: bdaw</remark>
+ <warning>
+ <title>Not Public Yet - RHT+eXo</title>
+ <para>
+
+ </para>
+
+ </warning>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1064 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1064" /></term>
+ <listitem>
+ <remark>Assignee is: bdaw</remark>
+ <warning>
+ <title>Not Public Yet - RHT+eXo</title>
+ <para>
+
+ </para>
+
+ </warning>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1068 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1068" /></term>
+ <listitem>
+ <remark>Assignee is: bdaw</remark>
+ <warning>
+ <title>Not Public Yet - RHT+eXo</title>
+ <para>
+
+ </para>
+
+ </warning>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1077 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1077" /></term>
+ <listitem>
+ <remark>This issue is unassigned!</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1088 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1088" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1097 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1097" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1140 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1140" /></term>
+ <listitem>
+ <remark>Assignee is: hfnukal</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1148 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1148" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1149 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1149" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1150 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1150" /></term>
+ <listitem>
+ <remark>Assignee is: mputz</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1155 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1155" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1169 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1169" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
</variablelist>
+
Modified: epp/docs/branches/5.2/Release_Notes/en-US/resolved_issues.xml
===================================================================
--- epp/docs/branches/5.2/Release_Notes/en-US/resolved_issues.xml 2011-09-23 00:03:21 UTC (rev 7491)
+++ epp/docs/branches/5.2/Release_Notes/en-US/resolved_issues.xml 2011-09-23 03:22:11 UTC (rev 7492)
@@ -1,47 +1,53 @@
-<?xml version='1.0'?>
+<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE variablelist PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "5.2.0_Release_Notes.ent">
+%BOOK_ENTITIES;
]>
+<variablelist>
+ <!-- https://issues.jboss.org/browse/JBEPP-715 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-715" /></term>
+ <listitem>
+ <remark>This issue is unassigned!</remark>
+ <para>
+ The page URL conventions in previous versions of JBoss Enterprise Portal Platform did not allow for Portal pages to have the same name. In these instances, pages with identical names were allocated the same URL, with only one page available through it. A change to the way JBoss Enterprise Portal Platform constructs page URLs resolves this issue.
+ </para>
+ </listitem>
-<variablelist>
-
- <!-- https://issues.jboss.org/browse/JBEPP-893 -->
- <varlistentry>
- <term><ulink url="https://issues.jboss.org/browse/JBEPP-893" /></term>
- <listitem>
-
-
- <para>
- An issue with PicketLink cache never evicting cached items has been resolved with an upgrade to PicketLink IDM 1.1.9.
- </para>
-
- </listitem>
- </varlistentry>
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-983 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-983" /></term>
+ <listitem>
+ <remark>Assignee is: claprun</remark>
+ <para>
+ An inconsistency in how portlets are handled across different part of the administration interface resulted in an error when remote portlets were added to a category from the "Portlet" tab of the Application Registry. The inconsistency has now be resolved and it should be now possible to properly display remote portlets regardless of how they were added to categories.
+ </para>
- <!-- https://issues.jboss.org/browse/JBEPP-1013 -->
- <varlistentry>
- <term><ulink url="https://issues.jboss.org/browse/JBEPP-1013" /></term>
- <listitem>
-
-
- <para>
- The demo iFrame portlet was setup to use the GateIn blog as an example page. With the new GateIn blog, the portal is redirected so that the blog takes the full page. The location has changed to point to gatein.org homepage which doesn't do any redirection.
- </para>
-
- </listitem>
- </varlistentry>
+ </listitem>
- <!-- https://issues.jboss.org/browse/JBEPP-1018 -->
- <varlistentry>
- <term><ulink url="https://issues.jboss.org/browse/JBEPP-1018" /></term>
- <listitem>
-
-
- <para>
- Previous versions of JBoss Enterprise Portal Platform did not honor the location of the WSRP consumer configuration file specified in wsrp-configuration.xml. This made it impossible to use any configuration file other than the default. This version of JBoss Enterprise Portal Platform honors the configuration file location by adding the ability to configure consumers from an InputStream similar to the method used by the producer configuration. Administrators can now use custom consumer configuration files instead of needing to modify the default file.
- </para>
-
- </listitem>
- </varlistentry>
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1116 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1116" /></term>
+ <listitem>
+ <remark>Assignee is: claprun</remark>
+ <para>
+ Configuring a page is no longer restricted to local portlets, it is now possible to define remote portlets (WSRP) in pages descriptors for initial population of data.
+ </para>
+ </listitem>
+
+ </varlistentry>
+ <!-- https://issues.jboss.org/browse/JBEPP-1158 --> <varlistentry>
+ <term><ulink url="https://issues.jboss.org/browse/JBEPP-1158" /></term>
+ <listitem>
+ <remark>Assignee is: theute</remark>
+ <para>
+ The HTML DOM has been optimized to achieve better performance when transmitting markup and also simplified for a faster rendering on recent web browsers. Older browser like Internet Explorer will work in a degraded mode.
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
</variablelist>
+
13 years, 3 months
gatein SVN: r7491 - in sandbox/as7_support/trunk/wci: exo and 24 other directories.
by do-not-reply@jboss.org
Author: mstruk
Date: 2011-09-22 20:03:21 -0400 (Thu, 22 Sep 2011)
New Revision: 7491
Removed:
sandbox/as7_support/trunk/wci/test/servers/.pom.xml.swp
sandbox/as7_support/trunk/wci/test/servers/jboss42/src/integration-tests/.build.xml.swp
sandbox/as7_support/trunk/wci/test/servers/jboss6/src/integration-tests/.build.xml.swp
Modified:
sandbox/as7_support/trunk/wci/
sandbox/as7_support/trunk/wci/exo/
sandbox/as7_support/trunk/wci/exo/pom.xml
sandbox/as7_support/trunk/wci/jboss/
sandbox/as7_support/trunk/wci/jboss/jboss6/
sandbox/as7_support/trunk/wci/jboss/jboss6/pom.xml
sandbox/as7_support/trunk/wci/jboss/pom.xml
sandbox/as7_support/trunk/wci/jetty/
sandbox/as7_support/trunk/wci/jetty/pom.xml
sandbox/as7_support/trunk/wci/pom.xml
sandbox/as7_support/trunk/wci/test/
sandbox/as7_support/trunk/wci/test/core/
sandbox/as7_support/trunk/wci/test/core/pom.xml
sandbox/as7_support/trunk/wci/test/pom.xml
sandbox/as7_support/trunk/wci/test/portlets/
sandbox/as7_support/trunk/wci/test/portlets/exo-portlet/
sandbox/as7_support/trunk/wci/test/portlets/exo-portlet/pom.xml
sandbox/as7_support/trunk/wci/test/portlets/gatein-portlet/
sandbox/as7_support/trunk/wci/test/portlets/gatein-portlet/pom.xml
sandbox/as7_support/trunk/wci/test/portlets/native-portlet/
sandbox/as7_support/trunk/wci/test/portlets/native-portlet/pom.xml
sandbox/as7_support/trunk/wci/test/portlets/pom.xml
sandbox/as7_support/trunk/wci/test/servers/
sandbox/as7_support/trunk/wci/test/servers/jboss42/
sandbox/as7_support/trunk/wci/test/servers/jboss51/
sandbox/as7_support/trunk/wci/test/servers/jboss51/pom.xml
sandbox/as7_support/trunk/wci/test/servers/jboss6/
sandbox/as7_support/trunk/wci/test/servers/jboss6/pom.xml
sandbox/as7_support/trunk/wci/test/servers/jetty6/
sandbox/as7_support/trunk/wci/test/servers/jetty6/pom.xml
sandbox/as7_support/trunk/wci/test/servers/pom.xml
sandbox/as7_support/trunk/wci/test/servers/tomcat6/
sandbox/as7_support/trunk/wci/test/servers/tomcat6/pom.xml
sandbox/as7_support/trunk/wci/test/servers/tomcat7/
sandbox/as7_support/trunk/wci/test/servers/tomcat7/pom.xml
sandbox/as7_support/trunk/wci/test/servers/tomcat7/src/integration-tests/build.xml
sandbox/as7_support/trunk/wci/tomcat/
sandbox/as7_support/trunk/wci/tomcat/pom.xml
sandbox/as7_support/trunk/wci/tomcat/tomcat6/
sandbox/as7_support/trunk/wci/tomcat/tomcat6/pom.xml
sandbox/as7_support/trunk/wci/tomcat/tomcat7/
sandbox/as7_support/trunk/wci/tomcat/tomcat7/pom.xml
sandbox/as7_support/trunk/wci/wci/
sandbox/as7_support/trunk/wci/wci/pom.xml
sandbox/as7_support/trunk/wci/wci/src/main/java/org/gatein/wci/security/WCILoginController.java
Log:
Merged from wci trunk up to r7111
Property changes on: sandbox/as7_support/trunk/wci
___________________________________________________________________
Modified: svn:ignore
- target
.settings
.project
.metadata
+ .idea
target
.settings
.project
.metadata
*.iml
Modified: svn:mergeinfo
- /components/wci/branches/logout:5894-6009
/components/wci/trunk:6492-6756
+ /components/wci/branches/logout:5894-6009
/components/wci/trunk:6492-7111
Property changes on: sandbox/as7_support/trunk/wci/exo
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/exo/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/exo/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/exo/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-exo</artifactId>
Property changes on: sandbox/as7_support/trunk/wci/jboss
___________________________________________________________________
Added: svn:ignore
+ target
*.iml
Property changes on: sandbox/as7_support/trunk/wci/jboss/jboss6
___________________________________________________________________
Added: svn:ignore
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/jboss/jboss6/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/jboss/jboss6/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/jboss/jboss6/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,11 +2,11 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-jboss</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-jboss6</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
<packaging>jar</packaging>
<name>GateIn - WCI JBoss 6 compatibility component</name>
Modified: sandbox/as7_support/trunk/wci/jboss/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/jboss/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/jboss/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-jboss</artifactId>
Property changes on: sandbox/as7_support/trunk/wci/jetty
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/jetty/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/jetty/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/jetty/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-jetty</artifactId>
Modified: sandbox/as7_support/trunk/wci/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -6,7 +6,7 @@
<groupId>org.gatein.wci</groupId>
<artifactId>wci-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
@@ -44,7 +44,7 @@
<dependency>
<groupId>org.gatein</groupId>
<artifactId>gatein-dep</artifactId>
- <version>1.1.0-Beta04</version>
+ <version>1.1.0-Beta06</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Property changes on: sandbox/as7_support/trunk/wci/test
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Property changes on: sandbox/as7_support/trunk/wci/test/core
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/test/core/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/test/core/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/test/core/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-test-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-test-core</artifactId>
@@ -63,10 +63,6 @@
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</dependency>
- <dependency>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- </dependency>
</dependencies>
<build>
Modified: sandbox/as7_support/trunk/wci/test/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/test/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/test/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-test-parent</artifactId>
@@ -11,7 +11,14 @@
<dependencyManagement>
<dependencies>
+
<dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
+ </dependency>
+
+ <dependency>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-test-core</artifactId>
<version>${project.version}</version>
@@ -38,6 +45,12 @@
</dependencies>
</dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ </dependency>
+ </dependencies>
<modules>
<module>core</module>
Property changes on: sandbox/as7_support/trunk/wci/test/portlets
___________________________________________________________________
Added: svn:ignore
+ target
*.iml
Property changes on: sandbox/as7_support/trunk/wci/test/portlets/exo-portlet
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/test/portlets/exo-portlet/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/test/portlets/exo-portlet/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/test/portlets/exo-portlet/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,11 +2,11 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-test-portlets</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-test-exo-portlet</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
<packaging>war</packaging>
<name>GateIn - WCI eXo Backwards Compatibility Test Portlet</name>
</project>
Property changes on: sandbox/as7_support/trunk/wci/test/portlets/gatein-portlet
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/test/portlets/gatein-portlet/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/test/portlets/gatein-portlet/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/test/portlets/gatein-portlet/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,11 +2,11 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-test-portlets</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-test-gatein-portlet</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
<packaging>war</packaging>
<name>GateIn - WCI Gatein Test Portlet</name>
</project>
Property changes on: sandbox/as7_support/trunk/wci/test/portlets/native-portlet
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/test/portlets/native-portlet/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/test/portlets/native-portlet/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/test/portlets/native-portlet/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,11 +2,11 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-test-portlets</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-test-native-portlet</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
<packaging>war</packaging>
<name>GateIn - WCI Native Test Portlet</name>
</project>
Modified: sandbox/as7_support/trunk/wci/test/portlets/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/test/portlets/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/test/portlets/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-test-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-test-portlets</artifactId>
Property changes on: sandbox/as7_support/trunk/wci/test/servers
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Deleted: sandbox/as7_support/trunk/wci/test/servers/.pom.xml.swp
===================================================================
(Binary files differ)
Property changes on: sandbox/as7_support/trunk/wci/test/servers/jboss42
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Deleted: sandbox/as7_support/trunk/wci/test/servers/jboss42/src/integration-tests/.build.xml.swp
===================================================================
(Binary files differ)
Property changes on: sandbox/as7_support/trunk/wci/test/servers/jboss51
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/test/servers/jboss51/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/test/servers/jboss51/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/test/servers/jboss51/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-test-server-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-test-jboss51</artifactId>
Property changes on: sandbox/as7_support/trunk/wci/test/servers/jboss6
___________________________________________________________________
Added: svn:ignore
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/test/servers/jboss6/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/test/servers/jboss6/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/test/servers/jboss6/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-test-server-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-test-jboss6</artifactId>
Deleted: sandbox/as7_support/trunk/wci/test/servers/jboss6/src/integration-tests/.build.xml.swp
===================================================================
(Binary files differ)
Property changes on: sandbox/as7_support/trunk/wci/test/servers/jetty6
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/test/servers/jetty6/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/test/servers/jetty6/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/test/servers/jetty6/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-test-server-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-test-jetty6</artifactId>
Modified: sandbox/as7_support/trunk/wci/test/servers/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/test/servers/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/test/servers/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-test-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-test-server-parent</artifactId>
Property changes on: sandbox/as7_support/trunk/wci/test/servers/tomcat6
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/test/servers/tomcat6/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/test/servers/tomcat6/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/test/servers/tomcat6/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-test-server-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-test-tomcat6</artifactId>
Property changes on: sandbox/as7_support/trunk/wci/test/servers/tomcat7
___________________________________________________________________
Added: svn:ignore
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/test/servers/tomcat7/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/test/servers/tomcat7/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/test/servers/tomcat7/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-test-server-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-test-tomcat7</artifactId>
@@ -367,6 +367,7 @@
<property name="dependency.gatein-wci-tomcat.jar" value="${maven.dependency.org.gatein.wci.wci-tomcat7.jar.path}" />
<property name="dependency.gatein-wci-exo.jar" value="${maven.dependency.org.gatein.wci.wci-exo.jar.path}" />
<property name="dependency.jboss-serialization.jar" value="${maven.dependency.jboss.jboss-serialization.jar.path}" />
+ <property name="dependency.tomcat.jar" value="${maven.dependency.org.apache.tomcat.tomcat-catalina.jar.path}" />
<!-- locations of archives to use -->
<property name="test.archives.directory" value="${project.build.directory}/test-archives" />
Modified: sandbox/as7_support/trunk/wci/test/servers/tomcat7/src/integration-tests/build.xml
===================================================================
--- sandbox/as7_support/trunk/wci/test/servers/tomcat7/src/integration-tests/build.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/test/servers/tomcat7/src/integration-tests/build.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -32,6 +32,7 @@
<path path="${dependency.gatein-wci-tomcat.jar}"/>
<path path="${dependency.gatein-wci-exo.jar}"/>
<path path="${dependency.jboss-serialization.jar}"/>
+ <path path="${dependency.tomcat.jar}"/>
</path>
<target name="cargo.start" depends="cargo.setup">
Property changes on: sandbox/as7_support/trunk/wci/tomcat
___________________________________________________________________
Added: svn:ignore
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/tomcat/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/tomcat/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/tomcat/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-tomcat</artifactId>
Property changes on: sandbox/as7_support/trunk/wci/tomcat/tomcat6
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/tomcat/tomcat6/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/tomcat/tomcat6/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/tomcat/tomcat6/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,11 +2,11 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-tomcat</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-tomcat6</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
<packaging>jar</packaging>
<name>GateIn - WCI Tomcat 6 compatibility component</name>
Property changes on: sandbox/as7_support/trunk/wci/tomcat/tomcat7
___________________________________________________________________
Added: svn:ignore
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/tomcat/tomcat7/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/tomcat/tomcat7/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/tomcat/tomcat7/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,11 +2,11 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-tomcat</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-tomcat7</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
<packaging>jar</packaging>
<name>GateIn - WCI Tomcat 7 compatibility component</name>
@@ -18,7 +18,7 @@
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
- <version>7.0.2</version>
+ <version>7.0.19</version>
</dependency>
</dependencies>
</project>
Property changes on: sandbox/as7_support/trunk/wci/wci
___________________________________________________________________
Modified: svn:ignore
- target
+ target
*.iml
Modified: sandbox/as7_support/trunk/wci/wci/pom.xml
===================================================================
--- sandbox/as7_support/trunk/wci/wci/pom.xml 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/wci/pom.xml 2011-09-23 00:03:21 UTC (rev 7491)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.gatein.wci</groupId>
<artifactId>wci-parent</artifactId>
- <version>2.1.0-Beta05-SNAPSHOT</version>
+ <version>2.1.0-Beta07-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wci-wci</artifactId>
Modified: sandbox/as7_support/trunk/wci/wci/src/main/java/org/gatein/wci/security/WCILoginController.java
===================================================================
--- sandbox/as7_support/trunk/wci/wci/src/main/java/org/gatein/wci/security/WCILoginController.java 2011-09-22 15:10:35 UTC (rev 7490)
+++ sandbox/as7_support/trunk/wci/wci/src/main/java/org/gatein/wci/security/WCILoginController.java 2011-09-23 00:03:21 UTC (rev 7491)
@@ -37,9 +37,6 @@
/** . */
private static final Logger log = LoggerFactory.getLogger(WCILoginController.class);
- /** . */
- protected Credentials credentials;
-
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
String username = req.getParameter("username");
@@ -52,23 +49,13 @@
) return;
//
- if (username == null)
- {
- log.error("Tried to access the portal login controller without username provided");
- resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "No username provided");
- return;
+
+ if (username != null && password != null)
+ {
+ log.debug("Found username and password and set credentials in http session");
+ Credentials credentials = new Credentials(username, password);
+ req.getSession().setAttribute(Credentials.CREDENTIALS, credentials);
}
- if (password == null)
- {
- log.error("Tried to access the portal login controller without password provided");
- resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "No password provided");
- return;
- }
-
- //
- log.debug("Found username and password and set credentials in http session");
- credentials = new Credentials(username, password);
- req.getSession().setAttribute(Credentials.CREDENTIALS, credentials);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
13 years, 3 months
gatein SVN: r7490 - components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/registration.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2011-09-22 11:10:35 -0400 (Thu, 22 Sep 2011)
New Revision: 7490
Modified:
components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/registration/RegistrationPropertyDescription.java
Log:
- Use ParameterValidation.isOldAndNewDifferent instead of local version.
- Added getter for ValueChangeListener.
Modified: components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/registration/RegistrationPropertyDescription.java
===================================================================
--- components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/registration/RegistrationPropertyDescription.java 2011-09-22 14:32:41 UTC (rev 7489)
+++ components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/registration/RegistrationPropertyDescription.java 2011-09-22 15:10:35 UTC (rev 7490)
@@ -1,6 +1,6 @@
/*
* JBoss, a division of Red Hat
- * Copyright 2010, Red Hat Middleware, LLC, and individual
+ * Copyright 2011, Red Hat Middleware, LLC, and individual
* contributors as indicated by the @authors tag. See the
* copyright.txt in the distribution for a full listing of
* individual contributors.
@@ -160,7 +160,7 @@
public void setName(QName name)
{
- if (valueWillBeUpdated(this.name, name))
+ if (ParameterValidation.isOldAndNewDifferent(this.name, name))
{
QName oldName = this.name;
this.name = name;
@@ -322,6 +322,11 @@
this.valueChangeListener = listener;
}
+ public ValueChangeListener getValueChangeListener()
+ {
+ return valueChangeListener;
+ }
+
private void notifyParentOfChangeIfNeeded(Object oldValue, Object newValue)
{
if (valueChangeListener != null)
@@ -332,7 +337,7 @@
public Object modifyIfNeeded(Object oldValue, Object newValue)
{
- if (valueWillBeUpdated(oldValue, newValue))
+ if (ParameterValidation.isOldAndNewDifferent(oldValue, newValue))
{
notifyParentOfChangeIfNeeded(oldValue, newValue);
oldValue = newValue;
@@ -341,11 +346,6 @@
return oldValue;
}
- private boolean valueWillBeUpdated(Object oldValue, Object newValue)
- {
- return (oldValue != null && !oldValue.equals(newValue)) || (oldValue == null && newValue != null);
- }
-
/**
* Tries to heuristically determine the language for this RegistrationPropertyDescription
*
13 years, 3 months
gatein SVN: r7489 - in epp/portal/branches/EPP_5_2_Branch: component and 17 other directories.
by do-not-reply@jboss.org
Author: theute
Date: 2011-09-22 10:32:41 -0400 (Thu, 22 Sep 2011)
New Revision: 7489
Added:
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/BitStack.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Regex.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RegexFactory.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RenderContext.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/ControllerRendererDriver.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/NullAppendable.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/Standalone.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/JRegexFactory.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/RegexTestCase.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBitStack.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/web/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/web/controller/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/web/controller/performance/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/web/controller/performance/controller.xml
Removed:
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/ControllerRendererDriver.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/NullAppendable.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/Standalone.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/web/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/web/controller/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/web/controller/performance/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/web/controller/performance/controller.xml
Modified:
epp/portal/branches/EPP_5_2_Branch/
epp/portal/branches/EPP_5_2_Branch/component/
epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/pom.xml
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/ControllerContext.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/QualifiedName.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/ControllerDescriptor.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PathParam.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PatternBuilder.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PatternRoute.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RequestParam.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Route.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RouteEscaper.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPatternBuilder.java
epp/portal/branches/EPP_5_2_Branch/wsrp-integration/
Log:
JBEPP-1202: Navigation controller renderer performance improvements
Property changes on: epp/portal/branches/EPP_5_2_Branch
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795:5868
/portal/branches/branch-GTNPORTAL-1592:4894
/portal/branches/branch-GTNPORTAL-1643:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745:5765
/portal/branches/branch-GTNPORTAL-1790:5871
/portal/branches/branch-GTNPORTAL-1822:5943,5952
/portal/branches/branch-GTNPORTAL-1832:6030,6063
/portal/branches/branch-GTNPORTAL-1872:6400,6551
/portal/branches/branch-GTNPORTAL-1921:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963:6904,6915-6916
/portal/branches/decoupled-webos:6214-6243
/portal/branches/gatein-management:6920-6958
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/trunk:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7186,7239,7262,7308,7326,7331,7359,7367,7433
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795:5868
/portal/branches/branch-GTNPORTAL-1592:4894
/portal/branches/branch-GTNPORTAL-1643:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745:5765
/portal/branches/branch-GTNPORTAL-1790:5871
/portal/branches/branch-GTNPORTAL-1822:5943,5952
/portal/branches/branch-GTNPORTAL-1832:6030,6063
/portal/branches/branch-GTNPORTAL-1872:6400,6551
/portal/branches/branch-GTNPORTAL-1921:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963:6904,6915-6916
/portal/branches/decoupled-webos:6214-6243
/portal/branches/gatein-management:6920-6958
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/trunk:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7186,7239,7262,7308,7326,7331,7359,7367,7433,7454
Property changes on: epp/portal/branches/EPP_5_2_Branch/component
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component:5868
/portal/branches/branch-GTNPORTAL-1592/component:4894
/portal/branches/branch-GTNPORTAL-1643/component:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component:5765
/portal/branches/branch-GTNPORTAL-1790/component:5871
/portal/branches/branch-GTNPORTAL-1822/component:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component:6904,6915-6916
/portal/trunk/component:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7186,7239,7262,7308,7326,7331,7359,7367,7433
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component:5868
/portal/branches/branch-GTNPORTAL-1592/component:4894
/portal/branches/branch-GTNPORTAL-1643/component:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component:5765
/portal/branches/branch-GTNPORTAL-1790/component:5871
/portal/branches/branch-GTNPORTAL-1822/component:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component:6904,6915-6916
/portal/trunk/component:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7186,7239,7262,7308,7326,7331,7359,7367,7433,7454
Property changes on: epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component/portal/src/main/java/org:5868
/portal/branches/branch-GTNPORTAL-1592/component/portal/src/main/java/org:4894
/portal/branches/branch-GTNPORTAL-1643/component/portal/src/main/java/org:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component/portal/src/main/java/org:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component/portal/src/main/java/org:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component/portal/src/main/java/org:5765
/portal/branches/branch-GTNPORTAL-1790/component/portal/src/main/java/org:5871
/portal/branches/branch-GTNPORTAL-1822/component/portal/src/main/java/org:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component/portal/src/main/java/org:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component/portal/src/main/java/org:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component/portal/src/main/java/org:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component/portal/src/main/java/org:6904,6915-6916
/portal/trunk/component/portal/src/main/java/org:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7186,7198,7239,7262,7308,7326,7331,7359,7367,7433
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component/portal/src/main/java/org:5868
/portal/branches/branch-GTNPORTAL-1592/component/portal/src/main/java/org:4894
/portal/branches/branch-GTNPORTAL-1643/component/portal/src/main/java/org:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component/portal/src/main/java/org:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component/portal/src/main/java/org:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component/portal/src/main/java/org:5765
/portal/branches/branch-GTNPORTAL-1790/component/portal/src/main/java/org:5871
/portal/branches/branch-GTNPORTAL-1822/component/portal/src/main/java/org:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component/portal/src/main/java/org:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component/portal/src/main/java/org:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component/portal/src/main/java/org:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component/portal/src/main/java/org:6904,6915-6916
/portal/trunk/component/portal/src/main/java/org:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7186,7198,7239,7262,7308,7326,7331,7359,7367,7433,7454
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/pom.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/pom.xml 2011-09-22 14:27:37 UTC (rev 7488)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/pom.xml 2011-09-22 14:32:41 UTC (rev 7489)
@@ -31,6 +31,11 @@
<description>The GateIn web controller takes care of managing portal requests and delegate the processing to
the appropriate subsystem.</description>
+ <properties>
+ <japex.runIterations>100000</japex.runIterations>
+ <japex.numberOfThreads>1</japex.numberOfThreads>
+ </properties>
+
<dependencies>
<dependency>
<groupId>org.exoplatform.kernel</groupId>
@@ -44,6 +49,7 @@
<groupId>org.exoplatform.portal</groupId>
<artifactId>exo.portal.component.portal</artifactId>
</dependency>
+
<!-- Used only for pretty printing, need to find a better solution than this -->
<!--
<dependency>
@@ -67,5 +73,104 @@
<groupId>org.staxnav</groupId>
<artifactId>staxnav.core</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>net.sourceforge.jregex</groupId>
+ <artifactId>jregex</artifactId>
+ <version>1.2_01</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.japex</groupId>
+ <artifactId>japex</artifactId>
+ <version>1.2.3</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.sun.japex</groupId>
+ <artifactId>japex-maven-plugin</artifactId>
+ <version>1.2.3</version>
+ <executions>
+ <execution>
+ <id>japex</id>
+ <goals>
+ <goal>japex</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <japexConfig>
+ <testSuite name="ParsingPerformance" xmlns="http://www.sun.com/japex/testSuite">
+ <param name="japex.namedClassPath" value="maven.test.classpath"/>
+ <param name="japex.resultUnit" value="ms"/>
+ <param name="japex.warmupIterations" value="10000"/>
+ <param name="japex.runIterations" value="${japex.runIterations}"/>
+ <param name="japex.numberOfThreads" value="${japex.numberOfThreads}"/>
+ <driver name="JavaUtilRegex">
+ <param name="japex.driverClass" value="org.exoplatform.web.controller.performance.ControllerRendererDriver"/>
+ <param name="description" value="Controller performance with the java.util.regex package"/>
+ <param name="regex" value="java"/>
+ </driver>
+ <driver name="JRegex">
+ <param name="japex.driverClass" value="org.exoplatform.web.controller.performance.ControllerRendererDriver"/>
+ <param name="description" value="Controller performance with the jregex package"/>
+ <param name="regex" value="jregex"/>
+ </driver>
+ <testCase name="classic">
+ <param name="parameters" value="{ 'gtn:handler' : 'portal', 'gtn:sitetype' : 'portal' , 'gtn:sitename' : 'classic', 'gtn:path' : 'page' }"/>
+ </testCase>
+ <testCase name="fr/classic">
+ <param name="parameters" value="{ 'gtn:handler' : 'portal', 'gtn:lang' : 'fr', 'gtn:sitetype' : 'portal' , 'gtn:sitename' : 'classic', 'gtn:path' : 'page' }"/>
+ </testCase>
+ <testCase name="group">
+ <param name="parameters" value="{ 'gtn:handler' : 'portal', 'gtn:sitetype' : 'group' , 'gtn:sitename' : '/platform/administrator', 'gtn:path' : 'page' }"/>
+ </testCase>
+ <testCase name="user">
+ <param name="parameters" value="{ 'gtn:handler' : 'portal', 'gtn:sitetype' : 'user' , 'gtn:sitename' : 'root', 'gtn:path' : 'page' }"/>
+ </testCase>
+ </testSuite>
+ </japexConfig>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+
+ <profile>
+ <id>japex</id>
+ <properties>
+ <japex.runIterations>1000000</japex.runIterations>
+ <japex.numberOfThreads>4</japex.numberOfThreads>
+ </properties>
+ </profile>
+ <profile>
+ <!-- A never ending test used to profile the rendering execution -->
+ <id>standalone</id>
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <includes>
+ <include>**/Standalone.java</include>
+ </includes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+ </profile>
+ </profiles>
</project>
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/ControllerContext.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/ControllerContext.java 2011-09-22 14:27:37 UTC (rev 7488)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/ControllerContext.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -20,6 +20,7 @@
package org.exoplatform.web;
import org.exoplatform.web.controller.QualifiedName;
+import org.exoplatform.web.controller.router.RenderContext;
import org.exoplatform.web.controller.router.Router;
import org.exoplatform.web.controller.router.URIWriter;
@@ -53,6 +54,9 @@
/** . */
private final String contextName;
+ /** . */
+ private final RenderContext renderContext;
+
public ControllerContext(
WebAppController controller,
Router router,
@@ -66,6 +70,7 @@
this.parameters = parameters;
this.contextName = request.getContextPath().substring(1);
this.router = router;
+ this.renderContext = new RenderContext();
}
public WebAppController getController()
@@ -88,14 +93,11 @@
return parameters.get(parameter);
}
- public void renderURL(Map<QualifiedName, String> parameters, URIWriter renderContext) throws IOException
+ public void renderURL(Map<QualifiedName, String> parameters, URIWriter uriWriter) throws IOException
{
- renderContext.append('/');
-
- //
- renderContext.appendSegment(contextName);
-
- //
- router.render(parameters, renderContext);
+ renderContext.reset(parameters);
+ uriWriter.append('/');
+ uriWriter.appendSegment(contextName);
+ router.render(renderContext, uriWriter);
}
}
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/QualifiedName.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/QualifiedName.java 2011-09-22 14:27:37 UTC (rev 7488)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/QualifiedName.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -92,6 +92,9 @@
/** The name. */
private final String name;
+ /** The cached hash code. */
+ private int hashCode;
+
private QualifiedName(String name) throws NullPointerException, IllegalArgumentException
{
this("", name);
@@ -119,6 +122,7 @@
//
this.qualifier = qualifier;
this.name = name;
+ this.hashCode = qualifier.hashCode() ^ name.hashCode();
}
/**
@@ -161,7 +165,7 @@
@Override
public int hashCode()
{
- return qualifier.hashCode() ^ name.hashCode();
+ return hashCode;
}
@Override
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/ControllerDescriptor.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/ControllerDescriptor.java 2011-09-22 14:27:37 UTC (rev 7488)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/ControllerDescriptor.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -19,6 +19,7 @@
package org.exoplatform.web.controller.metadata;
+import org.exoplatform.web.controller.router.RegexFactory;
import org.exoplatform.web.controller.router.RouterConfigException;
import org.exoplatform.web.controller.router.Router;
@@ -94,4 +95,9 @@
{
return new Router(this);
}
+
+ public Router build(RegexFactory regexFactory) throws RouterConfigException
+ {
+ return new Router(this, regexFactory);
+ }
}
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/BitStack.java (from rev 7454, portal/trunk/component/web/controller/src/main/java/org/exoplatform/web/controller/router/BitStack.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/BitStack.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/BitStack.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2011 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.web.controller.router;
+
+/**
+ * A bit stack optimized for speed.
+ *
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
+ */
+class BitStack
+{
+
+ private static class Frame
+ {
+
+ /** . */
+ private Frame previous;
+
+ /** . */
+ private Frame next;
+
+ /** . */
+ private long bits;
+
+ /** . */
+ private int cardinality;
+
+ private Frame()
+ {
+ this(0, 0);
+ }
+
+ private Frame(long bits, int cardinality)
+ {
+ this.previous = null;
+ this.next = null;
+ this.bits = bits;
+ this.cardinality = cardinality;
+ }
+ }
+
+ /** . */
+ private Frame head;
+
+ /** . */
+ private Frame current;
+
+ /** . */
+ private int depth;
+
+ /** . */
+ private int size;
+
+ BitStack()
+ {
+ this.current = null;
+ this.depth = 0;
+ this.size = 0;
+ }
+
+ void init(int size)
+ {
+ if (depth > 0)
+ {
+ throw new IllegalStateException();
+ }
+ if (size < 0)
+ {
+ throw new IllegalArgumentException();
+ }
+ this.size = size;
+ }
+
+ void reset()
+ {
+ if (depth > 0)
+ {
+ throw new IllegalStateException();
+ }
+ this.size = 0;
+ }
+
+ void push()
+ {
+ if (current == null)
+ {
+ if (head == null)
+ {
+ head = new Frame();
+ }
+ current = head;
+ depth++;
+ }
+ else
+ {
+ if (current.next == null)
+ {
+ Frame next = new Frame(current.bits, current.cardinality);
+ current.next = next;
+ next.previous = current;
+ current = next;
+ depth++;
+ }
+ else
+ {
+ Frame next = current.next;
+ next.bits = current.bits;
+ next.cardinality = current.cardinality;
+ current = next;
+ depth++;
+ }
+ }
+ }
+
+ void pop()
+ {
+ if (depth == 0)
+ {
+ throw new IllegalStateException();
+ }
+ current = current.previous;
+ depth--;
+ }
+
+ int getDepth()
+ {
+ return depth;
+ }
+
+ void set(int index)
+ {
+ if (index > 63)
+ {
+ throw new IllegalArgumentException("Index " + index + " > 63 not allowed");
+ }
+ if (depth < 1)
+ {
+ throw new IllegalStateException();
+ }
+ if (index > size)
+ {
+ throw new IllegalArgumentException();
+ }
+ long pre = current.bits;
+ current.bits |= 1L << index;
+ if (current.bits != pre)
+ {
+ current.cardinality++;
+ }
+ }
+
+ boolean get(int index)
+ {
+ if (index > 63)
+ {
+ throw new IllegalArgumentException("Index " + index + " > 63 not allowed");
+ }
+ if (depth < 1)
+ {
+ throw new IllegalStateException();
+ }
+ if (index > size)
+ {
+ throw new IllegalArgumentException();
+ }
+ return (current.bits & (1L << index)) != 0;
+ }
+
+ boolean isEmpty()
+ {
+ if (depth < 1)
+ {
+ throw new IllegalStateException();
+ }
+ return current.cardinality == size;
+ }
+}
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PathParam.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PathParam.java 2011-09-22 14:27:37 UTC (rev 7488)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PathParam.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -27,7 +27,6 @@
import org.exoplatform.web.controller.regexp.SyntaxException;
import java.io.IOException;
-import java.util.regex.Pattern;
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
@@ -36,12 +35,12 @@
class PathParam extends Param
{
- static PathParam create(QualifiedName name)
+ static PathParam create(QualifiedName name, Router router)
{
- return create(new PathParamDescriptor(name));
+ return create(new PathParamDescriptor(name), router);
}
- static PathParam create(PathParamDescriptor descriptor)
+ static PathParam create(PathParamDescriptor descriptor, Router router)
{
if (descriptor == null)
{
@@ -111,7 +110,7 @@
descriptor.getQualifiedName(),
encodingMode,
routingRegex.toString(),
- renderingRegex.toString());
+ router.compile(renderingRegex.toString()));
}
/** . */
@@ -121,13 +120,13 @@
final String routingRegex;
/** . */
- final Pattern renderingPattern;
+ final Regex renderingPattern;
PathParam(
QualifiedName name,
EncodingMode encodingMode,
String routingRegex,
- String renderingRegex)
+ Regex renderingRegex)
{
super(name);
@@ -140,7 +139,7 @@
//
this.encodingMode = encodingMode;
this.routingRegex = routingRegex;
- this.renderingPattern = Pattern.compile(renderingRegex);
+ this.renderingPattern = renderingRegex;
}
@Override
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PatternBuilder.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PatternBuilder.java 2011-09-22 14:27:37 UTC (rev 7488)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PatternBuilder.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -21,8 +21,6 @@
import org.exoplatform.web.controller.regexp.Literal;
-import java.util.regex.Pattern;
-
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
* @version $Revision$
@@ -33,6 +31,11 @@
/** . */
private final StringBuilder buffer = new StringBuilder();
+ /** . */
+ PatternBuilder()
+ {
+ }
+
public PatternBuilder expr(CharSequence s)
{
if (s == null)
@@ -93,8 +96,8 @@
return literal(Character.toString(c));
}
- public Pattern build()
+ public String build()
{
- return Pattern.compile(buffer.toString());
+ return buffer.toString();
}
}
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PatternRoute.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PatternRoute.java 2011-09-22 14:27:37 UTC (rev 7488)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PatternRoute.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -20,7 +20,6 @@
package org.exoplatform.web.controller.router;
import java.util.List;
-import java.util.regex.Pattern;
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
@@ -30,7 +29,7 @@
{
/** . */
- final Pattern pattern;
+ final Regex pattern;
/** . */
final PathParam[] params;
@@ -43,7 +42,7 @@
PatternRoute(
Router router,
- Pattern pattern,
+ Regex pattern,
List<PathParam> params,
List<String> chunks)
{
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Regex.java (from rev 7454, portal/trunk/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Regex.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Regex.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Regex.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2011 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.web.controller.router;
+
+/** @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> */
+public abstract class Regex
+{
+
+ /** . */
+ public static final Match[] NO_MATCHES = new Match[0];
+
+ /** . */
+ public static final Match NULL_MATCH = new Match(-1, -1, null);
+
+ /** An index set by the router to do matcher reuse easily, the regex implementation should not care about it. */
+ int index = -1;
+
+ public abstract String getPattern();
+
+ public abstract Matcher matcher();
+
+ public abstract static class Matcher
+ {
+
+ public abstract boolean matches(CharSequence s);
+
+ public abstract Match[] find(CharSequence s);
+
+ }
+
+ public static class Match
+ {
+
+ /** . */
+ private final int start;
+
+ /** . */
+ private final int end;
+
+ /** . */
+ private final String value;
+
+ protected Match(int start, int end, String value)
+ {
+ this.start = start;
+ this.end = end;
+ this.value = value;
+ }
+
+ public int getStart()
+ {
+ return start;
+ }
+
+ public int getEnd()
+ {
+ return end;
+ }
+
+ public String getValue()
+ {
+ return value;
+ }
+ }
+
+ public static class Java extends Regex
+ {
+
+ /** . */
+ private final java.util.regex.Pattern pattern;
+
+ public Java(String regex)
+ {
+ this.pattern = java.util.regex.Pattern.compile(regex);
+ }
+
+ public Matcher matcher()
+ {
+ return new Matcher()
+ {
+
+ /** . */
+ private java.util.regex.Matcher impl;
+
+ private java.util.regex.Matcher get(CharSequence s)
+ {
+ if (impl == null)
+ {
+ impl = pattern.matcher(s);
+ }
+ else
+ {
+ impl.reset(s);
+ }
+ return impl;
+ }
+
+ @Override
+ public boolean matches(CharSequence s)
+ {
+ return get(s).matches();
+ }
+
+ @Override
+ public Match[] find(CharSequence s)
+ {
+ java.util.regex.Matcher matcher = get(s);
+ if (matcher.find())
+ {
+ Match[] matches = new Match[1 + matcher.groupCount()];
+ for (int i = 0;i <= matcher.groupCount();i++)
+ {
+ if (matcher.group() != null)
+ {
+ matches[i] = new Match(matcher.start(i), matcher.end(i), matcher.group(i));
+ }
+ else
+ {
+ matches[i] = NULL_MATCH;
+ }
+ }
+ return matches;
+ }
+ else
+ {
+ return NO_MATCHES;
+ }
+ }
+ };
+ }
+
+ @Override
+ public String getPattern()
+ {
+ return pattern.pattern();
+ }
+ }
+}
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RegexFactory.java (from rev 7454, portal/trunk/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RegexFactory.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RegexFactory.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RegexFactory.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2011 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.web.controller.router;
+
+/** @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> */
+public abstract class RegexFactory implements Cloneable
+{
+
+ public static RegexFactory JAVA = new RegexFactory()
+ {
+ @Override
+ public Regex compile(String pattern)
+ {
+ return new Regex.Java(pattern);
+ }
+
+ @Override
+ public String getName()
+ {
+ return "java";
+ }
+ };
+
+ protected RegexFactory()
+ {
+ }
+
+ public abstract Regex compile(String pattern);
+
+ public abstract String getName();
+}
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RenderContext.java (from rev 7454, portal/trunk/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RenderContext.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RenderContext.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RenderContext.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2011 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.web.controller.router;
+
+import org.exoplatform.web.controller.QualifiedName;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * The render context used to compute the rendering of a parameter map.
+ *
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
+ */
+public class RenderContext
+{
+
+ class Parameter
+ {
+
+ /** . */
+ private String value;
+
+ /** . */
+ private final int index;
+
+ private Parameter(String value, int index)
+ {
+ this.value = value;
+ this.index = index;
+ }
+
+ public String getValue()
+ {
+ return value;
+ }
+
+ public void remove()
+ {
+ if (stack.getDepth() < 1)
+ {
+ throw new IllegalStateException();
+ }
+ stack.set(index);
+ }
+ }
+
+ /** . */
+ private final Map<QualifiedName, Parameter> parameters;
+
+ /** . */
+ private BitStack stack = new BitStack();
+
+ /** . */
+ Regex.Matcher[] matchers;
+
+ public RenderContext(Map<QualifiedName, String> map)
+ {
+ this();
+
+ //
+ reset(map);
+ }
+
+ public RenderContext()
+ {
+ this.parameters = new HashMap<QualifiedName, Parameter>();
+ this.stack = new BitStack();
+ this.matchers = null;
+ }
+
+ Regex.Matcher matcher(Regex regex)
+ {
+ Regex.Matcher matcher = matchers[regex.index];
+ if (matcher == null)
+ {
+ matcher = matchers[regex.index] = regex.matcher();
+ }
+ return matcher;
+ }
+
+ /**
+ * Reuse the context with new parameters.
+ *
+ * @param map the map
+ */
+ public void reset(Map<QualifiedName, String> map)
+ {
+ this.parameters.clear();
+ this.stack.reset();
+
+ //
+ for (Map.Entry<QualifiedName, String> entry : map.entrySet())
+ {
+ addParameter(entry.getKey(), entry.getValue());
+ }
+ }
+
+ void addParameter(QualifiedName name, String value)
+ {
+ if (stack.getDepth() > 0)
+ {
+ throw new IllegalStateException();
+ }
+ if (name == null)
+ {
+ throw new NullPointerException();
+ }
+ if (value == null)
+ {
+ throw new NullPointerException();
+ }
+ Parameter parameter = parameters.get(name);
+ if (parameter == null)
+ {
+ parameter = new Parameter(value, parameters.size());
+ parameters.put(name, parameter);
+ }
+ else
+ {
+ parameter.value = value;
+ }
+ }
+
+ Parameter getParameter(QualifiedName name)
+ {
+ Parameter entry = parameters.get(name);
+ if (stack.getDepth() == 0 || (entry != null && !stack.get(entry.index)))
+ {
+ return entry;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ String getParameterValue(QualifiedName name)
+ {
+ Parameter entry = getParameter(name);
+ return entry != null ? entry.value : null;
+ }
+
+ boolean isEmpty()
+ {
+ return stack.getDepth() ==0 || stack.isEmpty();
+ }
+
+ void enter()
+ {
+ if (stack.getDepth() == 0)
+ {
+ stack.init(parameters.size());
+ }
+ stack.push();
+ }
+
+ void leave()
+ {
+ stack.pop();
+ }
+}
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RequestParam.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RequestParam.java 2011-09-22 14:27:37 UTC (rev 7488)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RequestParam.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -22,8 +22,6 @@
import org.exoplatform.web.controller.QualifiedName;
import org.exoplatform.web.controller.metadata.RequestParamDescriptor;
-import java.util.regex.Pattern;
-
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
* @version $Revision$
@@ -31,7 +29,7 @@
class RequestParam extends Param
{
- static RequestParam create(RequestParamDescriptor descriptor)
+ static RequestParam create(RequestParamDescriptor descriptor, Router router)
{
if (descriptor == null)
{
@@ -39,7 +37,7 @@
}
//
- Pattern matchValue = null;
+ Regex matchValue = null;
if (descriptor.getValue() != null)
{
PatternBuilder matchValueBuilder = new PatternBuilder();
@@ -53,7 +51,7 @@
matchValueBuilder.literal(descriptor.getValue());
}
matchValueBuilder.expr("$");
- matchValue = matchValueBuilder.build();
+ matchValue = router.compile(matchValueBuilder.build());
}
//
@@ -72,7 +70,7 @@
final String matchName;
/** . */
- final Pattern matchPattern;
+ final Regex matchPattern;
/** . */
final ControlMode controlMode;
@@ -80,7 +78,7 @@
/** . */
final ValueMapping valueMapping;
- RequestParam(QualifiedName name, String matchName, Pattern matchPattern, ControlMode controlMode, ValueMapping valueMapping)
+ RequestParam(QualifiedName name, String matchName, Regex matchPattern, ControlMode controlMode, ValueMapping valueMapping)
{
super(name);
@@ -108,6 +106,6 @@
boolean matchValue(String value)
{
- return matchPattern == null || matchPattern.matcher(value).matches();
+ return matchPattern == null || matchPattern.matcher().matches(value);
}
}
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Route.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Route.java 2011-09-22 14:27:37 UTC (rev 7488)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Route.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -42,7 +42,6 @@
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
-import java.util.regex.Matcher;
/**
* The implementation of the routing algorithm.
@@ -88,7 +87,7 @@
}
//
- for (RouteParam routeParam : routeParams.values())
+ for (RouteParam routeParam : routeParamArray)
{
writer.writeStartElement("route-param");
writer.writeAttribute("qname", routeParam.name.getValue());
@@ -97,14 +96,14 @@
}
//
- for (RequestParam requestParam : requestParams.values())
+ for (RequestParam requestParam : requestParamArray)
{
writer.writeStartElement("request-param");
writer.writeAttribute("qname", requestParam.name.getValue());
writer.writeAttribute("name", requestParam.matchName);
if (requestParam.matchPattern != null)
{
- writer.writeAttribute("value", requestParam.matchPattern.pattern());
+ writer.writeAttribute("value", requestParam.matchPattern.getPattern());
}
writer.writeEndElement();
}
@@ -155,6 +154,12 @@
private static final Route[] EMPTY_ROUTE_ARRAY = new Route[0];
/** . */
+ private static final RouteParam[] EMPTY_ROUTE_PARAM_ARRAY = new RouteParam[0];
+
+ /** . */
+ private static final RequestParam[] EMPTY_REQUEST_PARAM_ARRAY = new RequestParam[0];
+
+ /** . */
private final Router router;
/** . */
@@ -167,19 +172,27 @@
private Route[] children;
/** . */
- private final Map<QualifiedName, RouteParam> routeParams;
+ private Map<QualifiedName, RouteParam> routeParamMap;
/** . */
- private final Map<String, RequestParam> requestParams;
+ private RouteParam[] routeParamArray;
+ /** . */
+ private Map<String, RequestParam> requestParamMap;
+
+ /** . */
+ private RequestParam[] requestParamArray;
+
Route(Router router)
{
this.router = router;
this.parent = null;
this.terminal = true;
this.children = EMPTY_ROUTE_ARRAY;
- this.routeParams = new HashMap<QualifiedName, RouteParam>();
- this.requestParams = new HashMap<String, RequestParam>();
+ this.routeParamMap = Collections.emptyMap();
+ this.routeParamArray = EMPTY_ROUTE_PARAM_ARRAY;
+ this.requestParamMap = Collections.emptyMap();
+ this.requestParamArray = EMPTY_REQUEST_PARAM_ARRAY;
}
final boolean isTerminal()
@@ -191,27 +204,27 @@
* Ok, so this is not the fastest way to do it, but for now it's OK, it's what is needed, we'll find
* a way to optimize it later with some precompilation.
*/
- final void render(Map<QualifiedName, String> blah, URIWriter writer) throws IOException
+ final void render(RenderContext context, URIWriter writer) throws IOException
{
- Route r = find(blah);
+ Route r = find(context);
// We found a route we need to render it now
if (r != null)
{
// Append path first
- r.renderPath(blah, writer, false);
+ r.renderPath(context, writer, false);
// Append query parameters after
- r.renderQueryString(blah, writer);
+ r.renderQueryString(context, writer);
}
}
- private boolean renderPath(Map<QualifiedName, String> blah, URIWriter writer, boolean hasChildren) throws IOException
+ private boolean renderPath(RenderContext context, URIWriter writer, boolean hasChildren) throws IOException
{
boolean endWithSlash;
if (parent != null)
{
- endWithSlash = parent.renderPath(blah, writer, true);
+ endWithSlash = parent.renderPath(context, writer, true);
}
else
{
@@ -251,7 +264,7 @@
//
PathParam def = pr.params[i];
- String value = blah.get(def.name);
+ String value = context.getParameterValue(def.name);
count += value.length();
// Write value
@@ -303,57 +316,58 @@
return endWithSlash;
}
- private void renderQueryString(Map<QualifiedName, String> blah, URIWriter writer) throws IOException
+ private void renderQueryString(RenderContext context, URIWriter writer) throws IOException
{
if (parent != null)
{
- parent.renderQueryString(blah, writer);
+ parent.renderQueryString(context, writer);
}
//
- if (requestParams.size() > 0)
+ for (RequestParam requestParamDef : requestParamArray)
{
- for (RequestParam requestParamDef : requestParams.values())
+ String s = context.getParameterValue(requestParamDef.name);
+ switch (requestParamDef.valueMapping)
{
- String s = blah.get(requestParamDef.name);
- switch (requestParamDef.valueMapping)
- {
- case CANONICAL:
- break;
- case NEVER_EMPTY:
- if (s != null && s.length() == 0)
- {
- s = null;
- }
- break;
- case NEVER_NULL:
- if (s == null)
- {
- s = "";
- }
- break;
- }
- if (s != null)
- {
- writer.appendQueryParameter(requestParamDef.matchName, s);
- }
+ case CANONICAL:
+ break;
+ case NEVER_EMPTY:
+ if (s != null && s.length() == 0)
+ {
+ s = null;
+ }
+ break;
+ case NEVER_NULL:
+ if (s == null)
+ {
+ s = "";
+ }
+ break;
}
+ if (s != null)
+ {
+ writer.appendQueryParameter(requestParamDef.matchName, s);
+ }
}
}
- final Route find(Map<QualifiedName, String> blah)
+ final Route find(RenderContext context)
{
+ context.enter();
+ Route route = _find(context);
+ context.leave();
+ return route;
+ }
- // Remove what is matched
- Map<QualifiedName, String> abc = new HashMap<QualifiedName, String>(blah);
-
+ private Route _find(RenderContext context)
+ {
// Match first the static parameteters
- for (RouteParam param : routeParams.values())
+ for (RouteParam param : routeParamArray)
{
- String value = blah.get(param.name);
- if (param.value.equals(value))
+ RenderContext.Parameter entry = context.getParameter(param.name);
+ if (entry != null && param.value.equals(entry.getValue()))
{
- abc.remove(param.name);
+ entry.remove();
}
else
{
@@ -362,36 +376,33 @@
}
// Match any request parameter
- if (requestParams.size() > 0)
+ for (RequestParam requestParamDef : requestParamArray)
{
- for (RequestParam requestParamDef : requestParams.values())
+ RenderContext.Parameter entry = context.getParameter(requestParamDef.name);
+ boolean matched = false;
+ if (entry != null)
{
- String a = blah.get(requestParamDef.name);
- boolean matched = false;
- if (a != null)
+ if (requestParamDef.matchPattern == null || context.matcher(requestParamDef.matchPattern).matches(entry.getValue()))
{
- if (requestParamDef.matchValue(a))
- {
- matched = true;
- }
+ matched = true;
}
- if (matched)
+ }
+ if (matched)
+ {
+ entry.remove();
+ }
+ else
+ {
+ switch (requestParamDef.controlMode)
{
- abc.remove(requestParamDef.name);
+ case OPTIONAL:
+ // Do nothing
+ break;
+ case REQUIRED:
+ return null;
+ default:
+ throw new AssertionError();
}
- else
- {
- switch (requestParamDef.controlMode)
- {
- case OPTIONAL:
- // Do nothing
- break;
- case REQUIRED:
- return null;
- default:
- throw new AssertionError();
- }
- }
}
}
@@ -402,17 +413,17 @@
for (int i = 0;i < prt.params.length;i++)
{
PathParam param = prt.params[i];
- String s = blah.get(param.name);
+ RenderContext.Parameter s = context.getParameter(param.name);
boolean matched = false;
if (s != null)
{
switch (param.encodingMode)
{
case FORM:
- matched = param.renderingPattern.matcher(s).matches();
+ matched = context.matcher(param.renderingPattern).matches(s.getValue());
break;
case PRESERVE_PATH:
- matched = param.renderingPattern.matcher(s).matches();
+ matched = context.matcher(param.renderingPattern).matches(s.getValue());
break;
default:
throw new AssertionError();
@@ -420,7 +431,7 @@
}
if (matched)
{
- abc.remove(param.name);
+ s.remove();
}
else
{
@@ -430,7 +441,7 @@
}
//
- if (abc.isEmpty() && terminal)
+ if (context.isEmpty() && terminal)
{
return this;
}
@@ -438,7 +449,7 @@
//
for (Route route : children)
{
- Route a = route.find(abc);
+ Route a = route.find(context);
if (a != null)
{
return a;
@@ -526,16 +537,13 @@
}
parameters.putAll(frame.matches);
}
- if (frame.route.routeParams.size() > 0)
+ for (RouteParam param : frame.route.routeParamArray)
{
if (parameters == null)
{
parameters = new HashMap<QualifiedName, String>();
}
- for (RouteParam param : frame.route.routeParams.values())
- {
- parameters.put(param.name, param.value);
- }
+ parameters.put(param.name, param.value);
}
}
return parameters != null ? parameters : Collections.<QualifiedName, String>emptyMap();
@@ -622,58 +630,55 @@
boolean matched = true;
// We enter a frame
- if (current.route.requestParams.size() > 0)
+ for (RequestParam requestParamDef : current.route.requestParamArray)
{
- for (RequestParam requestParamDef : current.route.requestParams.values())
+ String value = null;
+ String[] values = requestParams.get(requestParamDef.matchName);
+ if (values != null && values.length > 0 && values[0] != null)
{
- String value = null;
- String[] values = requestParams.get(requestParamDef.matchName);
- if (values != null && values.length > 0 && values[0] != null)
+ value = values[0];
+ }
+ if (value == null)
+ {
+ switch (requestParamDef.controlMode)
{
- value = values[0];
+ case OPTIONAL:
+ // Do nothing
+ break;
+ case REQUIRED:
+ matched = false;
+ break;
}
- if (value == null)
- {
- switch (requestParamDef.controlMode)
+ }
+ else if (!requestParamDef.matchValue(value))
+ {
+ matched = false;
+ break;
+ }
+ switch (requestParamDef.valueMapping)
+ {
+ case CANONICAL:
+ break;
+ case NEVER_EMPTY:
+ if (value != null && value.length() == 0)
{
- case OPTIONAL:
- // Do nothing
- break;
- case REQUIRED:
- matched = false;
- break;
+ value = null;
}
- }
- else if (!requestParamDef.matchValue(value))
- {
- matched = false;
break;
- }
- switch (requestParamDef.valueMapping)
- {
- case CANONICAL:
- break;
- case NEVER_EMPTY:
- if (value != null && value.length() == 0)
- {
- value = null;
- }
- break;
- case NEVER_NULL:
- if (value == null)
- {
- value = "";
- }
- break;
- }
- if (value != null)
- {
- if (current.matches == null)
+ case NEVER_NULL:
+ if (value == null)
{
- current.matches = new HashMap<QualifiedName, String>();
+ value = "";
}
- current.matches.put(requestParamDef.name, value);
+ break;
+ }
+ if (value != null)
+ {
+ if (current.matches == null)
+ {
+ current.matches = new HashMap<QualifiedName, String>();
}
+ current.matches.put(requestParamDef.name, value);
}
}
@@ -774,13 +779,13 @@
PatternRoute patternRoute = (PatternRoute)child;
//
- Matcher matcher = patternRoute.pattern.matcher(current.path.getValue());
+ Regex.Match[] matches = patternRoute.pattern.matcher().find(current.path.getValue());
// We match
- if (matcher.find())
+ if (matches.length > 0)
{
// Build next controller context
- int nextPos = matcher.end();
+ int nextPos = matches[0].getEnd();
Path nextPath;
if (current.path.length() == nextPos)
{
@@ -802,22 +807,19 @@
// JULIEN : this can be done lazily
// Append parameters
- int group = 1;
for (int i = 0;i < patternRoute.params.length;i++)
{
PathParam param = patternRoute.params[i];
+ Regex.Match match = matches[1 + i];
//
- int end = matcher.end(group);
-
- //
- if (end != -1)
+ if (match.getEnd() != -1)
{
String value;
if (param.encodingMode == EncodingMode.FORM)
{
StringBuilder sb = new StringBuilder();
- for (int from = matcher.start(group);from < end;from++)
+ for (int from = match.getStart();from < match.getEnd();from++)
{
char c = current.path.charAt(from);
if (c == child.router.separatorEscape && current.path.getRawLength(from) == 1)
@@ -830,7 +832,7 @@
}
else
{
- value = matcher.group(group);
+ value = match.getValue();
}
if (next.matches == null)
{
@@ -842,9 +844,6 @@
{
// We have an optional match
}
-
- //
- group++;
}
}
else
@@ -1034,7 +1033,7 @@
//
for (RequestParamDescriptor requestParamDesc : descriptor.getRequestParams())
{
- route.add(RequestParam.create(requestParamDesc));
+ route.add(RequestParam.create(requestParamDesc, router));
}
//
@@ -1054,7 +1053,12 @@
{
throw new MalformedRouteException("Duplicate parameter " + param.name);
}
- routeParams.put(param.name, param);
+ if (routeParamArray.length == 0)
+ {
+ routeParamMap = new HashMap<QualifiedName, RouteParam>();
+ }
+ routeParamMap.put(param.name, param);
+ routeParamArray = Tools.appendTo(routeParamArray, param);
return this;
}
@@ -1065,7 +1069,12 @@
{
throw new MalformedRouteException("Duplicate parameter " + param.name);
}
- requestParams.put(param.matchName, param);
+ if (requestParamArray.length == 0)
+ {
+ requestParamMap = new HashMap<String, RequestParam>();
+ }
+ requestParamMap.put(param.matchName, param);
+ requestParamArray = Tools.appendTo(requestParamArray, param);
return this;
}
@@ -1151,11 +1160,11 @@
PathParam param;
if (parameterDescriptor != null)
{
- param = PathParam.create(parameterDescriptor);
+ param = PathParam.create(parameterDescriptor, router);
}
else
{
- param = PathParam.create(parameterQName);
+ param = PathParam.create(parameterQName, router);
}
// Append routing regex to the route regex
@@ -1177,7 +1186,7 @@
//
chunks.add(path.substring(previous, pos));
- PatternRoute route = new PatternRoute(router, builder.build(), parameterPatterns, chunks);
+ PatternRoute route = new PatternRoute(router, router.compile(builder.build()), parameterPatterns, chunks);
// Wire
add(route);
@@ -1204,31 +1213,30 @@
private Param getParam(QualifiedName name)
{
- if (routeParams.containsKey(name))
+ Param param = routeParamMap.get(name);
+ if (param == null)
{
- return routeParams.get(name);
- }
- else
- {
- for (RequestParam param : requestParams.values())
+ for (RequestParam requestParam : requestParamArray)
{
- if (param.name.equals(name))
+ if (requestParam.name.equals(name))
{
- return param;
+ param = requestParam;
+ break;
}
}
- }
- if (this instanceof PatternRoute)
- {
- for (PathParam param : ((PatternRoute)this).params)
+ if (param == null && this instanceof PatternRoute)
{
- if (param.name.equals(name))
+ for (PathParam pathParam : ((PatternRoute)this).params)
{
- return param;
+ if (pathParam.name.equals(name))
+ {
+ param = pathParam;
+ break;
+ }
}
}
}
- return null;
+ return param;
}
private Param findParam(QualifiedName name)
@@ -1243,14 +1251,11 @@
private void findParams(List<Param> params)
{
- for (RouteParam param : routeParams.values())
+ Collections.addAll(params, routeParamArray);
+ for (RequestParam param : requestParamArray)
{
params.add(param);
}
- for (RequestParam param : requestParams.values())
- {
- params.add(param);
- }
if (this instanceof PatternRoute)
{
Collections.addAll(params, ((PatternRoute)this).params);
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RouteEscaper.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RouteEscaper.java 2011-09-22 14:27:37 UTC (rev 7488)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/RouteEscaper.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -19,6 +19,7 @@
package org.exoplatform.web.controller.router;
+import org.exoplatform.web.controller.regexp.GroupType;
import org.exoplatform.web.controller.regexp.RENode;
/**
@@ -89,12 +90,10 @@
else if (expr instanceof RENode.Group)
{
RENode.Group group = (RENode.Group)expr;
-/*
if (group.getType() == GroupType.CAPTURING_GROUP)
{
group.setType(GroupType.NON_CAPTURING_GROUP);
}
-*/
visit(group.getDisjunction());
}
else if (expr instanceof RENode.Any)
@@ -108,9 +107,9 @@
RENode.CharacterClass characterClass = (RENode.CharacterClass)expr;
RENode.CharacterClassExpr ccExpr = characterClass.getExpr();
ccExpr = ccExpr.replace(src, dst);
- RENode.CharacterClassExpr.And ccRepl = new RENode.CharacterClassExpr.And(null, new RENode.CharacterClassExpr.Not(new RENode.CharacterClassExpr.Char('/')));
- ccExpr.replaceBy(ccRepl);
- ccRepl.setLeft(ccExpr);
+// RENode.CharacterClassExpr.And ccRepl = new RENode.CharacterClassExpr.And(null, new RENode.CharacterClassExpr.Not(new RENode.CharacterClassExpr.Char('/')));
+// ccExpr.replaceBy(ccRepl);
+// ccRepl.setLeft(ccExpr);
}
}
}
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java 2011-09-22 14:27:37 UTC (rev 7488)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -24,12 +24,16 @@
import org.exoplatform.web.controller.metadata.ControllerDescriptor;
import org.exoplatform.web.url.MimeType;
import org.gatein.common.io.UndeclaredIOException;
+import org.gatein.common.util.Tools;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.BitSet;
import java.util.Collections;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
/**
* The router takes care of mapping a request to a a map.
@@ -62,6 +66,9 @@
escapeSet = bs;
}
+ /** . */
+ private final RegexFactory regexFactory;
+
/** The root route. */
final Route root;
@@ -74,8 +81,16 @@
/** . */
final char separatorEscapeNible2;
+ /** . */
+ private Regex[] regexes;
+
public Router(ControllerDescriptor metaData) throws RouterConfigException
{
+ this(metaData, RegexFactory.JAVA);
+ }
+
+ public Router(ControllerDescriptor metaData, RegexFactory regexFactory) throws RouterConfigException
+ {
char separtorEscape = metaData.getSeparatorEscape();
//
@@ -91,33 +106,59 @@
separatorEscapeNible2 = s.charAt(1);
//
+ this.regexFactory = regexFactory;
this.root = new Route(this);
this.separatorEscape = separtorEscape;
+ this.regexes = new Regex[0];
//
for (RouteDescriptor routeMetaData : metaData.getRoutes())
{
- addRoute(routeMetaData);
+ root.append(routeMetaData);
}
}
- public void addRoute(RouteDescriptor routeMetaData) throws RouterConfigException
+ Regex compile(String pattern)
{
- root.append(routeMetaData);
+ for (Regex regex : regexes)
+ {
+ if (regex.getPattern().equals(pattern))
+ {
+ return regex;
+ }
+ }
+ Regex regex = regexFactory.compile(pattern);
+ regex.index = regexes.length;
+ regexes = Tools.appendTo(regexes, regex);
+ return regex;
}
public void render(Map<QualifiedName, String> parameters, URIWriter writer) throws IOException
{
- root.render(parameters, writer);
+ render(new RenderContext(parameters), writer);
}
public String render(Map<QualifiedName, String> parameters)
{
+ return render(new RenderContext(parameters));
+ }
+
+ public void render(RenderContext context, URIWriter writer) throws IOException
+ {
+ if (context.matchers == null)
+ {
+ context.matchers = new Regex.Matcher[regexes.length];
+ }
+ root.render(context, writer);
+ }
+
+ public String render(RenderContext context)
+ {
try
{
StringBuilder sb = new StringBuilder();
URIWriter renderContext = new URIWriter(sb, MimeType.PLAIN);
- render(parameters, renderContext);
+ render(context, renderContext);
return sb.toString();
}
catch (IOException e)
Deleted: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/ControllerRendererDriver.java
===================================================================
--- portal/trunk/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/ControllerRendererDriver.java 2011-09-16 12:28:21 UTC (rev 7454)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/ControllerRendererDriver.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -1,137 +0,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.
- */
-package org.exoplatform.web.controller.performance;
-
-import com.sun.japex.JapexDriverBase;
-import com.sun.japex.TestCase;
-import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.metadata.ControllerDescriptor;
-import org.exoplatform.web.controller.metadata.DescriptorBuilder;
-import org.exoplatform.web.controller.router.JRegexFactory;
-import org.exoplatform.web.controller.router.RegexFactory;
-import org.exoplatform.web.controller.router.RenderContext;
-import org.exoplatform.web.controller.router.Router;
-import org.exoplatform.web.controller.router.URIWriter;
-import org.json.JSONObject;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-/** @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> */
-public class ControllerRendererDriver extends JapexDriverBase
-{
-
- /** . */
- private RegexFactory regexFactory;
-
- /** . */
- private Router router;
-
- /** . */
- private RenderContext input;
-
- /** . */
- private URIWriter writer;
-
- @Override
- public void initializeDriver()
- {
- String regexFactoryName = getParam("regex");
- if (regexFactoryName.equals("jregex")) {
- regexFactory = JRegexFactory.INSTANCE;
- } else if (regexFactoryName.equals("java")) {
- regexFactory = RegexFactory.JAVA;
- }
-
- //
- this.regexFactory = regexFactory;
- }
-
- @Override
- public void prepare(TestCase testCase)
- {
- try
- {
- URL url = ControllerRendererDriver.class.getResource("controller.xml");
- DescriptorBuilder builder = new DescriptorBuilder();
- ControllerDescriptor descriptor = builder.build(url.openStream());
- Router router = descriptor.build(regexFactory);
-
- //
- Map<QualifiedName, String> input = new HashMap<QualifiedName, String>();
- String parameters = testCase.getParam("parameters");
- JSONObject o = new JSONObject(parameters);
- for (Iterator<String> i = o.keys();i.hasNext();)
- {
- String key = i.next();
- String value = (String)o.get(key);
- input.put(QualifiedName.parse(key), value);
- }
-
- //
- if (router.render(input) == null)
- {
- throw new Exception("Could not render " + input);
- }
-
- //
- this.router = router;
- this.input = new RenderContext(input);
- this.writer = new URIWriter(NullAppendable.INSTANCE);
- }
- catch (Exception e)
- {
- AssertionError afe = new AssertionError("Could not load controller configuration");
- afe.initCause(e);
- throw afe;
- }
- }
-
- @Override
- public void run(TestCase testCase)
- {
- try
- {
- router.render(input, writer);
- writer.reset(NullAppendable.INSTANCE);
- }
- catch (IOException e)
- {
- AssertionError err = new AssertionError("Unexpected IOException");
- err.initCause(e);
- throw err;
- }
- }
-
- @Override
- public void finish(TestCase testCase)
- {
- this.router = null;
- this.input = null;
- this.writer = null;
- }
-
- @Override
- public void terminateDriver()
- {
- }
-}
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/ControllerRendererDriver.java (from rev 7454, portal/trunk/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/ControllerRendererDriver.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/ControllerRendererDriver.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/ControllerRendererDriver.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -0,0 +1,137 @@
+/**
+ * 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.web.controller.performance;
+
+import com.sun.japex.JapexDriverBase;
+import com.sun.japex.TestCase;
+import org.exoplatform.web.controller.QualifiedName;
+import org.exoplatform.web.controller.metadata.ControllerDescriptor;
+import org.exoplatform.web.controller.metadata.DescriptorBuilder;
+import org.exoplatform.web.controller.router.JRegexFactory;
+import org.exoplatform.web.controller.router.RegexFactory;
+import org.exoplatform.web.controller.router.RenderContext;
+import org.exoplatform.web.controller.router.Router;
+import org.exoplatform.web.controller.router.URIWriter;
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/** @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> */
+public class ControllerRendererDriver extends JapexDriverBase
+{
+
+ /** . */
+ private RegexFactory regexFactory;
+
+ /** . */
+ private Router router;
+
+ /** . */
+ private RenderContext input;
+
+ /** . */
+ private URIWriter writer;
+
+ @Override
+ public void initializeDriver()
+ {
+ String regexFactoryName = getParam("regex");
+ if (regexFactoryName.equals("jregex")) {
+ regexFactory = JRegexFactory.INSTANCE;
+ } else if (regexFactoryName.equals("java")) {
+ regexFactory = RegexFactory.JAVA;
+ }
+
+ //
+ this.regexFactory = regexFactory;
+ }
+
+ @Override
+ public void prepare(TestCase testCase)
+ {
+ try
+ {
+ URL url = ControllerRendererDriver.class.getResource("controller.xml");
+ DescriptorBuilder builder = new DescriptorBuilder();
+ ControllerDescriptor descriptor = builder.build(url.openStream());
+ Router router = descriptor.build(regexFactory);
+
+ //
+ Map<QualifiedName, String> input = new HashMap<QualifiedName, String>();
+ String parameters = testCase.getParam("parameters");
+ JSONObject o = new JSONObject(parameters);
+ for (Iterator<String> i = o.keys();i.hasNext();)
+ {
+ String key = i.next();
+ String value = (String)o.get(key);
+ input.put(QualifiedName.parse(key), value);
+ }
+
+ //
+ if (router.render(input) == null)
+ {
+ throw new Exception("Could not render " + input);
+ }
+
+ //
+ this.router = router;
+ this.input = new RenderContext(input);
+ this.writer = new URIWriter(NullAppendable.INSTANCE);
+ }
+ catch (Exception e)
+ {
+ AssertionError afe = new AssertionError("Could not load controller configuration");
+ afe.initCause(e);
+ throw afe;
+ }
+ }
+
+ @Override
+ public void run(TestCase testCase)
+ {
+ try
+ {
+ router.render(input, writer);
+ writer.reset(NullAppendable.INSTANCE);
+ }
+ catch (IOException e)
+ {
+ AssertionError err = new AssertionError("Unexpected IOException");
+ err.initCause(e);
+ throw err;
+ }
+ }
+
+ @Override
+ public void finish(TestCase testCase)
+ {
+ this.router = null;
+ this.input = null;
+ this.writer = null;
+ }
+
+ @Override
+ public void terminateDriver()
+ {
+ }
+}
Deleted: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/NullAppendable.java
===================================================================
--- portal/trunk/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/NullAppendable.java 2011-09-16 12:28:21 UTC (rev 7454)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/NullAppendable.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2010 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.web.controller.performance;
-
-import java.io.IOException;
-
-/**
- * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
- * @version $Revision$
- */
-public class NullAppendable implements Appendable
-{
-
- /** . */
- public static final NullAppendable INSTANCE = new NullAppendable();
-
- private NullAppendable()
- {
- }
-
- public Appendable append(CharSequence csq) throws IOException
- {
- return this;
- }
-
- public Appendable append(CharSequence csq, int start, int end) throws IOException
- {
- return this;
- }
-
- public Appendable append(char c) throws IOException
- {
- return this;
- }
-}
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/NullAppendable.java (from rev 7454, portal/trunk/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/NullAppendable.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/NullAppendable.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/NullAppendable.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2010 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.web.controller.performance;
+
+import java.io.IOException;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class NullAppendable implements Appendable
+{
+
+ /** . */
+ public static final NullAppendable INSTANCE = new NullAppendable();
+
+ private NullAppendable()
+ {
+ }
+
+ public Appendable append(CharSequence csq) throws IOException
+ {
+ return this;
+ }
+
+ public Appendable append(CharSequence csq, int start, int end) throws IOException
+ {
+ return this;
+ }
+
+ public Appendable append(char c) throws IOException
+ {
+ return this;
+ }
+}
Deleted: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/Standalone.java
===================================================================
--- portal/trunk/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/Standalone.java 2011-09-16 12:28:21 UTC (rev 7454)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/Standalone.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -1,76 +0,0 @@
-package org.exoplatform.web.controller.performance;
-
-import junit.framework.TestCase;
-import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.metadata.ControllerDescriptor;
-import org.exoplatform.web.controller.metadata.DescriptorBuilder;
-import org.exoplatform.web.controller.router.RegexFactory;
-import org.exoplatform.web.controller.router.RenderContext;
-import org.exoplatform.web.controller.router.Router;
-import org.exoplatform.web.controller.router.URIWriter;
-
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-
-/** @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> */
-public class Standalone extends TestCase
-{
-
- /** . */
- private static final QualifiedName HANDLER = QualifiedName.parse("gtn:handler");
-
- /** . */
- private static final QualifiedName LANG = QualifiedName.parse("gtn:lang");
-
- /** . */
- private static final QualifiedName SITETYPE = QualifiedName.parse("gtn:sitetype");
-
- /** . */
- private static final QualifiedName SITENAME = QualifiedName.parse("gtn:sitename");
-
- /** . */
- private static final QualifiedName PATH = QualifiedName.parse("gtn:path");
-
- /** . */
- private static final QualifiedName COMPONENT_ID = QualifiedName.parse("gtn:componentid");
-
- /** . */
- private static final QualifiedName ACTION = QualifiedName.parse("gtn:action");
-
- /** . */
- private static final QualifiedName OBJECT_ID = QualifiedName.parse("gtn:objectid");
-
- public void testFoo() throws Exception
- {
-
- URL url = ControllerRendererDriver.class.getResource("controller.xml");
- DescriptorBuilder builder = new DescriptorBuilder();
- ControllerDescriptor descriptor = builder.build(url.openStream());
- Router router = descriptor.build(RegexFactory.JAVA);
-
- //
- Map<QualifiedName, String> map = new HashMap<QualifiedName, String>();
- map.put(HANDLER, "portal");
- map.put(SITETYPE, "portal");
- map.put(SITENAME, "classic");
- map.put(PATH, "page");
-
- //
- RenderContext context = new RenderContext(map);
-
- //
- URIWriter writer = new URIWriter(NullAppendable.INSTANCE);
-
- //
- String s = router.render(map);
- assertNotNull(s);
-
- //
- while (true)
- {
- writer.reset(NullAppendable.INSTANCE);
- router.render(context, writer);
- }
- }
-}
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/Standalone.java (from rev 7454, portal/trunk/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/Standalone.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/Standalone.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/performance/Standalone.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -0,0 +1,76 @@
+package org.exoplatform.web.controller.performance;
+
+import junit.framework.TestCase;
+import org.exoplatform.web.controller.QualifiedName;
+import org.exoplatform.web.controller.metadata.ControllerDescriptor;
+import org.exoplatform.web.controller.metadata.DescriptorBuilder;
+import org.exoplatform.web.controller.router.RegexFactory;
+import org.exoplatform.web.controller.router.RenderContext;
+import org.exoplatform.web.controller.router.Router;
+import org.exoplatform.web.controller.router.URIWriter;
+
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+/** @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> */
+public class Standalone extends TestCase
+{
+
+ /** . */
+ private static final QualifiedName HANDLER = QualifiedName.parse("gtn:handler");
+
+ /** . */
+ private static final QualifiedName LANG = QualifiedName.parse("gtn:lang");
+
+ /** . */
+ private static final QualifiedName SITETYPE = QualifiedName.parse("gtn:sitetype");
+
+ /** . */
+ private static final QualifiedName SITENAME = QualifiedName.parse("gtn:sitename");
+
+ /** . */
+ private static final QualifiedName PATH = QualifiedName.parse("gtn:path");
+
+ /** . */
+ private static final QualifiedName COMPONENT_ID = QualifiedName.parse("gtn:componentid");
+
+ /** . */
+ private static final QualifiedName ACTION = QualifiedName.parse("gtn:action");
+
+ /** . */
+ private static final QualifiedName OBJECT_ID = QualifiedName.parse("gtn:objectid");
+
+ public void testFoo() throws Exception
+ {
+
+ URL url = ControllerRendererDriver.class.getResource("controller.xml");
+ DescriptorBuilder builder = new DescriptorBuilder();
+ ControllerDescriptor descriptor = builder.build(url.openStream());
+ Router router = descriptor.build(RegexFactory.JAVA);
+
+ //
+ Map<QualifiedName, String> map = new HashMap<QualifiedName, String>();
+ map.put(HANDLER, "portal");
+ map.put(SITETYPE, "portal");
+ map.put(SITENAME, "classic");
+ map.put(PATH, "page");
+
+ //
+ RenderContext context = new RenderContext(map);
+
+ //
+ URIWriter writer = new URIWriter(NullAppendable.INSTANCE);
+
+ //
+ String s = router.render(map);
+ assertNotNull(s);
+
+ //
+ while (true)
+ {
+ writer.reset(NullAppendable.INSTANCE);
+ router.render(context, writer);
+ }
+ }
+}
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/JRegexFactory.java (from rev 7454, portal/trunk/component/web/controller/src/test/java/org/exoplatform/web/controller/router/JRegexFactory.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/JRegexFactory.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/JRegexFactory.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2011 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.web.controller.router;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
+ */
+public class JRegexFactory extends RegexFactory
+{
+
+ /** . */
+ public static final RegexFactory INSTANCE = new JRegexFactory();
+
+ private JRegexFactory()
+ {
+ }
+
+ @Override
+ public Regex compile(String pattern)
+ {
+ return new JRegex(pattern);
+ }
+
+ @Override
+ public String getName()
+ {
+ return "jregex";
+ }
+
+ public static class JRegex extends Regex
+ {
+
+ /** . */
+ private final jregex.Pattern pattern;
+
+ public JRegex(String regex)
+ {
+ this.pattern = new jregex.Pattern(regex);
+ }
+
+ public Matcher matcher()
+ {
+ return new Matcher()
+ {
+
+ /** . */
+ private jregex.Matcher impl;
+
+ private jregex.Matcher get(CharSequence seq)
+ {
+ String s = seq.toString();
+ if (impl == null)
+ {
+ impl = pattern.matcher(s);
+ }
+ else
+ {
+ impl.setTarget(s);
+ }
+ return impl;
+ }
+
+ @Override
+ public boolean matches(CharSequence s)
+ {
+ return get(s).matches();
+ }
+
+ @Override
+ public Match[] find(CharSequence s)
+ {
+ jregex.Matcher matcher = get(s);
+ if (matcher.find())
+ {
+ Match[] matches = new Match[matcher.groupCount()];
+ for (int i = 0;i < matcher.groupCount();i++)
+ {
+ if (matcher.isCaptured(i))
+ {
+ matches[i] = new Match(matcher.start(i), matcher.end(i), matcher.group(i));
+ }
+ else
+ {
+ matches[i] = NULL_MATCH;
+ }
+ }
+ return matches;
+ }
+ else
+ {
+ return NO_MATCHES;
+ }
+ }
+ };
+ }
+
+ @Override
+ public String getPattern()
+ {
+ return pattern.toString();
+ }
+ }
+}
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/RegexTestCase.java (from rev 7454, portal/trunk/component/web/controller/src/test/java/org/exoplatform/web/controller/router/RegexTestCase.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/RegexTestCase.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/RegexTestCase.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2011 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.web.controller.router;
+
+import junit.framework.TestCase;
+
+/** @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> */
+public class RegexTestCase extends TestCase
+{
+
+ public void testLiteral()
+ {
+ Regex regex = JRegexFactory.INSTANCE.compile("abc");
+ Regex.Match[] matches = regex.matcher().find("abc");
+ assertEquals(1, matches.length);
+ assertEquals(0, matches[0].getStart());
+ assertEquals(3, matches[0].getEnd());
+ assertEquals("abc", matches[0].getValue());
+ }
+
+ public void testSimpleGroup1()
+ {
+ Regex regex = JRegexFactory.INSTANCE.compile("(abc)");
+ Regex.Match[] matches = regex.matcher().find("abc");
+ assertEquals(2, matches.length);
+ assertEquals(0, matches[0].getStart());
+ assertEquals(3, matches[0].getEnd());
+ assertEquals("abc", matches[0].getValue());
+ assertEquals(0, matches[1].getStart());
+ assertEquals(3, matches[1].getEnd());
+ assertEquals("abc", matches[1].getValue());
+ }
+
+ public void testSimpleGroup2()
+ {
+ Regex regex = JRegexFactory.INSTANCE.compile("a(b)c");
+ Regex.Match[] matches = regex.matcher().find("abc");
+ assertEquals(2, matches.length);
+ assertEquals(0, matches[0].getStart());
+ assertEquals(3, matches[0].getEnd());
+ assertEquals("abc", matches[0].getValue());
+ assertEquals(1, matches[1].getStart());
+ assertEquals(2, matches[1].getEnd());
+ assertEquals("b", matches[1].getValue());
+ }
+
+ public void testNonCapturingGroup()
+ {
+ Regex regex = JRegexFactory.INSTANCE.compile("a(?:b)c");
+ Regex.Match[] matches = regex.matcher().find("abc");
+ assertEquals(1, matches.length);
+ assertEquals(0, matches[0].getStart());
+ assertEquals(3, matches[0].getEnd());
+ assertEquals("abc", matches[0].getValue());
+ }
+}
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBitStack.java (from rev 7454, portal/trunk/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBitStack.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBitStack.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBitStack.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2011 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.web.controller.router;
+
+import junit.framework.TestCase;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
+ */
+public class TestBitStack extends TestCase
+{
+
+ public void testSimple()
+ {
+ BitStack bs = new BitStack();
+ assertEquals(0, bs.getDepth());
+ bs.init(2);
+ bs.push();
+ assertEquals(1, bs.getDepth());
+ bs.set(1);
+ assertFalse(bs.isEmpty());
+ bs.push();
+ assertEquals(2, bs.getDepth());
+ bs.set(0);
+ assertTrue(bs.isEmpty());
+ bs.pop();
+ assertEquals(1, bs.getDepth());
+ assertFalse(bs.isEmpty());
+ bs.pop();
+ assertEquals(0, bs.getDepth());
+ }
+
+ public void testReuse()
+ {
+ BitStack bs = new BitStack();
+ bs.init(2);
+ bs.push();
+ bs.set(0);
+ bs.push();
+ bs.set(1);
+ assertTrue(bs.isEmpty());
+ bs.pop();
+ bs.push();
+ assertFalse(bs.isEmpty());
+ }
+
+ public void testState()
+ {
+ BitStack bs = new BitStack();
+ try
+ {
+ bs.set(0);
+ fail();
+ }
+ catch (IllegalStateException e)
+ {
+ }
+ try
+ {
+ bs.pop();
+ fail();
+ }
+ catch (IllegalStateException e)
+ {
+ }
+ }
+
+}
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java 2011-09-22 14:27:37 UTC (rev 7488)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -38,10 +38,10 @@
assertEquals(0, router.root.getSegmentNames().size());
assertEquals(1, router.root.getPatternSize());
PatternRoute patternRoute = router.root.getPattern(0);
- assertEquals("^/([^/]+)(?:(?<=^/)|(?=/)|$)", patternRoute.pattern.toString());
+ assertEquals("^/([^/]+)(?:(?<=^/)|(?=/)|$)", patternRoute.pattern.getPattern());
assertEquals(1, patternRoute.params.length);
assertEquals(Names.A, patternRoute.params[0].name);
- assertEquals("^.+$", patternRoute.params[0].renderingPattern.toString());
+ assertEquals("^.+$", patternRoute.params[0].renderingPattern.getPattern());
assertEquals(EncodingMode.FORM, patternRoute.params[0].encodingMode);
assertEquals(2, patternRoute.chunks.length);
assertEquals("", patternRoute.chunks[0]);
@@ -56,10 +56,10 @@
assertEquals(0, router.root.getSegmentNames().size());
assertEquals(1, router.root.getPatternSize());
PatternRoute patternRoute = router.root.getPattern(0);
- assertEquals("^/([^/]+)(?:(?<=^/)|(?=/)|$)", patternRoute.pattern.toString());
+ assertEquals("^/([^/]+)(?:(?<=^/)|(?=/)|$)", patternRoute.pattern.getPattern());
assertEquals(1, patternRoute.params.length);
assertEquals(Names.Q_A, patternRoute.params[0].name);
- assertEquals("^.+$", patternRoute.params[0].renderingPattern.toString());
+ assertEquals("^.+$", patternRoute.params[0].renderingPattern.getPattern());
assertEquals(EncodingMode.FORM, patternRoute.params[0].encodingMode);
assertEquals(2, patternRoute.chunks.length);
assertEquals("", patternRoute.chunks[0]);
@@ -74,10 +74,10 @@
assertEquals(0, router.root.getSegmentNames().size());
assertEquals(1, router.root.getPatternSize());
PatternRoute patternRoute = router.root.getPattern(0);
- assertEquals("^/([^/]*)(?:(?<=^/)|(?=/)|$)", patternRoute.pattern.toString());
+ assertEquals("^/([^/]*)(?:(?<=^/)|(?=/)|$)", patternRoute.pattern.getPattern());
assertEquals(1, patternRoute.params.length);
assertEquals(Names.A, patternRoute.params[0].name);
- assertEquals("^.*$", patternRoute.params[0].renderingPattern.toString());
+ assertEquals("^.*$", patternRoute.params[0].renderingPattern.getPattern());
assertEquals(EncodingMode.FORM, patternRoute.params[0].encodingMode);
assertEquals(2, patternRoute.chunks.length);
assertEquals("", patternRoute.chunks[0]);
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPatternBuilder.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPatternBuilder.java 2011-09-22 14:27:37 UTC (rev 7488)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPatternBuilder.java 2011-09-22 14:32:41 UTC (rev 7489)
@@ -21,8 +21,6 @@
import junit.framework.TestCase;
-import java.util.regex.Pattern;
-
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
* @version $Revision$
@@ -51,7 +49,7 @@
pb.expr("^");
pb.literal(c);
pb.expr("$");
- Pattern pattern = pb.build();
- assertTrue(pattern.matcher(Character.toString(c)).matches());
+ Regex pattern = RegexFactory.JAVA.compile(pb.build());
+ assertTrue(pattern.matcher().matches(Character.toString(c)));
}
}
Deleted: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/web/controller/performance/controller.xml
===================================================================
--- portal/trunk/component/web/controller/src/test/resources/org/exoplatform/web/controller/performance/controller.xml 2011-09-16 12:28:21 UTC (rev 7454)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/web/controller/performance/controller.xml 2011-09-22 14:32:41 UTC (rev 7489)
@@ -1,138 +0,0 @@
-<!--
- ~ Copyright (C) 2011 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.
- -->
-
-<controller
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.gatein.org/xml/ns/gatein_controller_1_0 http://www.gatein.org/xml/ns/gatein_controller_1_0"
- xmlns="http://www.gatein.org/xml/ns/gatein_controller_1_0"
- separator-escape=":">
-
- <route path="/upload">
- <route-param qname="gtn:handler">
- <value>upload</value>
- </route-param>
- </route>
-
- <route path="/download">
- <route-param qname="gtn:handler">
- <value>download</value>
- </route-param>
- </route>
-
- <!-- The legacy route -->
- <route path="/public">
- <route path="/">
- <route-param qname="gtn:handler">
- <value>default</value>
- </route-param>
- </route>
- <route path="/{gtn:sitename}/{gtn:path}">
- <route-param qname="gtn:handler">
- <value>legacy</value>
- </route-param>
- <path-param qname="gtn:path" encoding="preserve-path">
- <pattern>.*</pattern>
- </path-param>
- </route>
- </route>
- <route path="/private">
- <route path="/">
- <route-param qname="gtn:handler">
- <value>default</value>
- </route-param>
- </route>
- <route path="/{gtn:sitename}/{gtn:path}">
- <route-param qname="gtn:handler">
- <value>legacy</value>
- </route-param>
- <path-param qname="gtn:path" encoding="preserve-path">
- <pattern>.*</pattern>
- </path-param>
- </route>
- </route>
-
- <route path="/{gtn:path}">
- <route-param qname="gtn:handler">
- <value>staticResource</value>
- </route-param>
- <path-param qname="gtn:path" encoding="preserve-path">
- <pattern>.*\.(jpg|png|gif|ico|css)</pattern>
- </path-param>
- </route>
-
- <route path="/">
-
- <!-- The portal handler -->
- <route-param qname="gtn:handler">
- <value>portal</value>
- </route-param>
-
- <!-- Webui parameters -->
- <request-param qname="gtn:componentid" name="portal:componentId"/>
- <request-param qname="gtn:action" name="portal:action"/>
- <request-param qname="gtn:objectid" name="objectId"/>
-
- <!-- The group access -->
- <route path="/groups/{gtn:sitename}/{gtn:path}">
- <request-param qname="gtn:lang" name="lang" value-mapping="never-empty">
- <pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
- </request-param>
- <route-param qname="gtn:sitetype">
- <value>group</value>
- </route-param>
- <path-param qname="gtn:path" encoding="preserve-path">
- <pattern>.*</pattern>
- </path-param>
- </route>
-
- <!-- The user access -->
- <route path="/users/{gtn:sitename}/{gtn:path}">
- <request-param qname="gtn:lang" name="lang" value-mapping="never-empty">
- <pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
- </request-param>
- <route-param qname="gtn:sitetype">
- <value>user</value>
- </route-param>
- <path-param qname="gtn:path" encoding="preserve-path">
- <pattern>.*</pattern>
- </path-param>
- </route>
-
- <!-- The portal access -->
- <route path="/{gtn:lang}/{gtn:sitename}/{gtn:path}">
- <route-param qname="gtn:sitetype">
- <value>portal</value>
- </route-param>
- <path-param qname="gtn:lang" encoding="preserve-path">
- <pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
- </path-param>
- <path-param qname="gtn:path" encoding="preserve-path">
- <pattern>.*</pattern>
- </path-param>
- </route>
-
- </route>
-
- <!-- Default handler -->
- <route path="/">
- <route-param qname="gtn:handler">
- <value>default</value>
- </route-param>
- </route>
-</controller>
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/web/controller/performance/controller.xml (from rev 7454, portal/trunk/component/web/controller/src/test/resources/org/exoplatform/web/controller/performance/controller.xml)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/web/controller/performance/controller.xml (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/test/resources/org/exoplatform/web/controller/performance/controller.xml 2011-09-22 14:32:41 UTC (rev 7489)
@@ -0,0 +1,138 @@
+<!--
+ ~ Copyright (C) 2011 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.
+ -->
+
+<controller
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.gatein.org/xml/ns/gatein_controller_1_0 http://www.gatein.org/xml/ns/gatein_controller_1_0"
+ xmlns="http://www.gatein.org/xml/ns/gatein_controller_1_0"
+ separator-escape=":">
+
+ <route path="/upload">
+ <route-param qname="gtn:handler">
+ <value>upload</value>
+ </route-param>
+ </route>
+
+ <route path="/download">
+ <route-param qname="gtn:handler">
+ <value>download</value>
+ </route-param>
+ </route>
+
+ <!-- The legacy route -->
+ <route path="/public">
+ <route path="/">
+ <route-param qname="gtn:handler">
+ <value>default</value>
+ </route-param>
+ </route>
+ <route path="/{gtn:sitename}/{gtn:path}">
+ <route-param qname="gtn:handler">
+ <value>legacy</value>
+ </route-param>
+ <path-param qname="gtn:path" encoding="preserve-path">
+ <pattern>.*</pattern>
+ </path-param>
+ </route>
+ </route>
+ <route path="/private">
+ <route path="/">
+ <route-param qname="gtn:handler">
+ <value>default</value>
+ </route-param>
+ </route>
+ <route path="/{gtn:sitename}/{gtn:path}">
+ <route-param qname="gtn:handler">
+ <value>legacy</value>
+ </route-param>
+ <path-param qname="gtn:path" encoding="preserve-path">
+ <pattern>.*</pattern>
+ </path-param>
+ </route>
+ </route>
+
+ <route path="/{gtn:path}">
+ <route-param qname="gtn:handler">
+ <value>staticResource</value>
+ </route-param>
+ <path-param qname="gtn:path" encoding="preserve-path">
+ <pattern>.*\.(jpg|png|gif|ico|css)</pattern>
+ </path-param>
+ </route>
+
+ <route path="/">
+
+ <!-- The portal handler -->
+ <route-param qname="gtn:handler">
+ <value>portal</value>
+ </route-param>
+
+ <!-- Webui parameters -->
+ <request-param qname="gtn:componentid" name="portal:componentId"/>
+ <request-param qname="gtn:action" name="portal:action"/>
+ <request-param qname="gtn:objectid" name="objectId"/>
+
+ <!-- The group access -->
+ <route path="/groups/{gtn:sitename}/{gtn:path}">
+ <request-param qname="gtn:lang" name="lang" value-mapping="never-empty">
+ <pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
+ </request-param>
+ <route-param qname="gtn:sitetype">
+ <value>group</value>
+ </route-param>
+ <path-param qname="gtn:path" encoding="preserve-path">
+ <pattern>.*</pattern>
+ </path-param>
+ </route>
+
+ <!-- The user access -->
+ <route path="/users/{gtn:sitename}/{gtn:path}">
+ <request-param qname="gtn:lang" name="lang" value-mapping="never-empty">
+ <pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
+ </request-param>
+ <route-param qname="gtn:sitetype">
+ <value>user</value>
+ </route-param>
+ <path-param qname="gtn:path" encoding="preserve-path">
+ <pattern>.*</pattern>
+ </path-param>
+ </route>
+
+ <!-- The portal access -->
+ <route path="/{gtn:lang}/{gtn:sitename}/{gtn:path}">
+ <route-param qname="gtn:sitetype">
+ <value>portal</value>
+ </route-param>
+ <path-param qname="gtn:lang" encoding="preserve-path">
+ <pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
+ </path-param>
+ <path-param qname="gtn:path" encoding="preserve-path">
+ <pattern>.*</pattern>
+ </path-param>
+ </route>
+
+ </route>
+
+ <!-- Default handler -->
+ <route path="/">
+ <route-param qname="gtn:handler">
+ <value>default</value>
+ </route-param>
+ </route>
+</controller>
Property changes on: epp/portal/branches/EPP_5_2_Branch/wsrp-integration
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/wsrp-integration:5868
/portal/branches/branch-GTNPORTAL-1592/wsrp-integration:4894
/portal/branches/branch-GTNPORTAL-1643/wsrp-integration:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/wsrp-integration:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/wsrp-integration:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/wsrp-integration:5765
/portal/branches/branch-GTNPORTAL-1790/wsrp-integration:5871
/portal/branches/branch-GTNPORTAL-1822/wsrp-integration:5943,5952
/portal/branches/branch-GTNPORTAL-1832/wsrp-integration:6030,6063
/portal/branches/branch-GTNPORTAL-1872/wsrp-integration:6400,6551
/portal/branches/branch-GTNPORTAL-1921/wsrp-integration:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/wsrp-integration:6904,6915-6916
/portal/branches/decoupled-webos/wsrp-integration:6214-6243
/portal/branches/gatein-management/wsrp-integration:6920-6958
/portal/branches/global-portlet-metadata/wsrp-integration:6298-6384
/portal/branches/site-describability/wsrp-integration:6171-6235
/portal/trunk/wsrp-integration:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7186,7198,7239,7262,7308,7326,7331,7359,7367,7433
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/wsrp-integration:5868
/portal/branches/branch-GTNPORTAL-1592/wsrp-integration:4894
/portal/branches/branch-GTNPORTAL-1643/wsrp-integration:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/wsrp-integration:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/wsrp-integration:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/wsrp-integration:5765
/portal/branches/branch-GTNPORTAL-1790/wsrp-integration:5871
/portal/branches/branch-GTNPORTAL-1822/wsrp-integration:5943,5952
/portal/branches/branch-GTNPORTAL-1832/wsrp-integration:6030,6063
/portal/branches/branch-GTNPORTAL-1872/wsrp-integration:6400,6551
/portal/branches/branch-GTNPORTAL-1921/wsrp-integration:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/wsrp-integration:6904,6915-6916
/portal/branches/decoupled-webos/wsrp-integration:6214-6243
/portal/branches/gatein-management/wsrp-integration:6920-6958
/portal/branches/global-portlet-metadata/wsrp-integration:6298-6384
/portal/branches/site-describability/wsrp-integration:6171-6235
/portal/trunk/wsrp-integration:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7186,7198,7239,7262,7308,7326,7331,7359,7367,7433,7454
13 years, 3 months
gatein SVN: r7488 - in epp/portal/branches/EPP_5_2_Branch: component and 5 other directories.
by do-not-reply@jboss.org
Author: theute
Date: 2011-09-22 10:27:37 -0400 (Thu, 22 Sep 2011)
New Revision: 7488
Modified:
epp/portal/branches/EPP_5_2_Branch/
epp/portal/branches/EPP_5_2_Branch/component/
epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org/
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java
epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/WebRequestHandler.java
epp/portal/branches/EPP_5_2_Branch/component/web/server/src/main/java/org/exoplatform/web/handler/DownloadHandler.java
epp/portal/branches/EPP_5_2_Branch/component/web/server/src/main/java/org/exoplatform/web/handler/UploadHandler.java
epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/DefaultRequestHandler.java
epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/LegacyRequestHandler.java
epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java
epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/StaticResourceRequestHandler.java
epp/portal/branches/EPP_5_2_Branch/wsrp-integration/
Log:
JBEPP-1201: WebRequestHandler could relay request handling work to another requesthandler
Property changes on: epp/portal/branches/EPP_5_2_Branch
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795:5868
/portal/branches/branch-GTNPORTAL-1592:4894
/portal/branches/branch-GTNPORTAL-1643:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745:5765
/portal/branches/branch-GTNPORTAL-1790:5871
/portal/branches/branch-GTNPORTAL-1822:5943,5952
/portal/branches/branch-GTNPORTAL-1832:6030,6063
/portal/branches/branch-GTNPORTAL-1872:6400,6551
/portal/branches/branch-GTNPORTAL-1921:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963:6904,6915-6916
/portal/branches/decoupled-webos:6214-6243
/portal/branches/gatein-management:6920-6958
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/trunk:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7186,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795:5868
/portal/branches/branch-GTNPORTAL-1592:4894
/portal/branches/branch-GTNPORTAL-1643:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745:5765
/portal/branches/branch-GTNPORTAL-1790:5871
/portal/branches/branch-GTNPORTAL-1822:5943,5952
/portal/branches/branch-GTNPORTAL-1832:6030,6063
/portal/branches/branch-GTNPORTAL-1872:6400,6551
/portal/branches/branch-GTNPORTAL-1921:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963:6904,6915-6916
/portal/branches/decoupled-webos:6214-6243
/portal/branches/gatein-management:6920-6958
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/trunk:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7186,7239,7262,7308,7326,7331,7359,7367,7433
Property changes on: epp/portal/branches/EPP_5_2_Branch/component
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component:5868
/portal/branches/branch-GTNPORTAL-1592/component:4894
/portal/branches/branch-GTNPORTAL-1643/component:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component:5765
/portal/branches/branch-GTNPORTAL-1790/component:5871
/portal/branches/branch-GTNPORTAL-1822/component:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component:6904,6915-6916
/portal/trunk/component:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7186,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component:5868
/portal/branches/branch-GTNPORTAL-1592/component:4894
/portal/branches/branch-GTNPORTAL-1643/component:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component:5765
/portal/branches/branch-GTNPORTAL-1790/component:5871
/portal/branches/branch-GTNPORTAL-1822/component:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component:6904,6915-6916
/portal/trunk/component:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7186,7239,7262,7308,7326,7331,7359,7367,7433
Property changes on: epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component/portal/src/main/java/org:5868
/portal/branches/branch-GTNPORTAL-1592/component/portal/src/main/java/org:4894
/portal/branches/branch-GTNPORTAL-1643/component/portal/src/main/java/org:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component/portal/src/main/java/org:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component/portal/src/main/java/org:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component/portal/src/main/java/org:5765
/portal/branches/branch-GTNPORTAL-1790/component/portal/src/main/java/org:5871
/portal/branches/branch-GTNPORTAL-1822/component/portal/src/main/java/org:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component/portal/src/main/java/org:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component/portal/src/main/java/org:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component/portal/src/main/java/org:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component/portal/src/main/java/org:6904,6915-6916
/portal/trunk/component/portal/src/main/java/org:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7186,7198,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component/portal/src/main/java/org:5868
/portal/branches/branch-GTNPORTAL-1592/component/portal/src/main/java/org:4894
/portal/branches/branch-GTNPORTAL-1643/component/portal/src/main/java/org:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component/portal/src/main/java/org:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component/portal/src/main/java/org:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component/portal/src/main/java/org:5765
/portal/branches/branch-GTNPORTAL-1790/component/portal/src/main/java/org:5871
/portal/branches/branch-GTNPORTAL-1822/component/portal/src/main/java/org:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component/portal/src/main/java/org:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component/portal/src/main/java/org:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component/portal/src/main/java/org:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component/portal/src/main/java/org:6904,6915-6916
/portal/trunk/component/portal/src/main/java/org:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7186,7198,7239,7262,7308,7326,7331,7359,7367,7433
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java 2011-09-22 14:23:11 UTC (rev 7487)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java 2011-09-22 14:27:37 UTC (rev 7488)
@@ -35,14 +35,13 @@
import org.exoplatform.management.rest.annotations.RESTEndpoint;
import org.exoplatform.web.application.Application;
import org.exoplatform.web.controller.QualifiedName;
+import org.exoplatform.web.controller.metadata.ControllerDescriptor;
import org.exoplatform.web.controller.metadata.DescriptorBuilder;
-import org.exoplatform.web.controller.metadata.ControllerDescriptor;
+import org.exoplatform.web.controller.router.Router;
import org.exoplatform.web.controller.router.RouterConfigException;
-import org.exoplatform.web.controller.router.Router;
import org.gatein.common.http.QueryStringParser;
import org.gatein.common.logging.Logger;
import org.gatein.common.logging.LoggerFactory;
-
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -56,7 +55,6 @@
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
-
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -320,51 +318,57 @@
Iterator<Map<QualifiedName, String>> matcher = router.matcher(portalPath, req.getParameterMap());
//
- Map<QualifiedName, String> parameters = null;
- if (matcher.hasNext())
- {
- parameters = matcher.next();
- }
+ boolean started = false;
+ boolean processed = false;
//
- if (parameters != null)
+ try
{
- String handlerKey = parameters.get(HANDLER_PARAM);
- if (handlerKey != null)
+ while (matcher.hasNext() && !processed)
{
- WebRequestHandler handler = handlers.get(handlerKey);
- if (handler != null)
+ if (!started)
{
- if (debug)
- {
- log.debug("Serving request path=" + portalPath + ", parameters=" + parameters + " with handler " + handler);
- }
-
- //
RequestLifeCycle.begin(ExoContainerContext.getCurrentContainer());
+ started = true;
+ }
- //
- try
+ //
+ Map<QualifiedName, String> parameters = matcher.next();
+ String handlerKey = parameters.get(HANDLER_PARAM);
+ if (handlerKey != null)
+ {
+ WebRequestHandler handler = handlers.get(handlerKey);
+ if (handler != null)
{
- handler.execute(new ControllerContext(this, router, req, res, parameters));
+ if (debug)
+ {
+ log.debug("Serving request path=" + portalPath + ", parameters=" + parameters + " with handler " + handler);
+ }
+
+ //
+ processed = handler.execute(new ControllerContext(this, router, req, res, parameters));
}
- finally
+ else
{
- RequestLifeCycle.end();
+ log.debug("No handler " + handlerKey + " for request path=" + portalPath + ", parameters=" + parameters);
}
}
- else
- {
- log.error("Invalid handler " + handlerKey + " for request path=" + portalPath + ", parameters=" + parameters);
- res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- }
}
}
- else
+ finally
{
- log.error("Could not associate the request path=" + portalPath + ", parameters=" + parameters + " with an handler");
- res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ if (started)
+ {
+ RequestLifeCycle.end();
+ }
}
+
+ //
+ if (!processed)
+ {
+ log.error("Could not associate the request path=" + portalPath + " with an handler");
+ res.sendError(HttpServletResponse.SC_NOT_FOUND);
+ }
}
else
{
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/WebRequestHandler.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/WebRequestHandler.java 2011-09-22 14:23:11 UTC (rev 7487)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/controller/src/main/java/org/exoplatform/web/WebRequestHandler.java 2011-09-22 14:27:37 UTC (rev 7488)
@@ -20,10 +20,6 @@
package org.exoplatform.web;
import org.exoplatform.container.component.BaseComponentPlugin;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.Map;
import javax.servlet.ServletConfig;
/**
@@ -55,8 +51,9 @@
*
* @param context the controller context
* @throws Exception any exception
+ * @return true if the handler was able to handle the request
*/
- abstract public void execute(ControllerContext context) throws Exception;
+ abstract public boolean execute(ControllerContext context) throws Exception;
/**
* Destroy callback.
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/server/src/main/java/org/exoplatform/web/handler/DownloadHandler.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/server/src/main/java/org/exoplatform/web/handler/DownloadHandler.java 2011-09-22 14:23:11 UTC (rev 7487)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/server/src/main/java/org/exoplatform/web/handler/DownloadHandler.java 2011-09-22 14:27:37 UTC (rev 7488)
@@ -49,9 +49,10 @@
}
@Override
- public void execute(ControllerContext context) throws Exception
+ public boolean execute(ControllerContext context) throws Exception
{
execute(context.getController(), context.getRequest(), context.getResponse());
+ return true;
}
public void execute(WebAppController controller, HttpServletRequest req, HttpServletResponse res) throws Exception
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/server/src/main/java/org/exoplatform/web/handler/UploadHandler.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/server/src/main/java/org/exoplatform/web/handler/UploadHandler.java 2011-09-22 14:23:11 UTC (rev 7487)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/server/src/main/java/org/exoplatform/web/handler/UploadHandler.java 2011-09-22 14:27:37 UTC (rev 7488)
@@ -53,9 +53,10 @@
}
@Override
- public void execute(ControllerContext context) throws Exception
+ public boolean execute(ControllerContext context) throws Exception
{
execute(context.getController(), context.getRequest(), context.getResponse());
+ return true;
}
public void execute(WebAppController controller, HttpServletRequest req, HttpServletResponse res) throws Exception
Modified: epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/DefaultRequestHandler.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/DefaultRequestHandler.java 2011-09-22 14:23:11 UTC (rev 7487)
+++ epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/DefaultRequestHandler.java 2011-09-22 14:27:37 UTC (rev 7488)
@@ -56,7 +56,7 @@
}
@Override
- public void execute(ControllerContext context) throws Exception
+ public boolean execute(ControllerContext context) throws Exception
{
String defaultPortal = configService.getDefaultPortal();
PortalURLContext urlContext = new PortalURLContext(context, SiteKey.portal(defaultPortal));
@@ -64,5 +64,6 @@
String s = url.setResource(new NavigationResource(SiteType.PORTAL, defaultPortal, "")).toString();
HttpServletResponse resp = context.getResponse();
resp.sendRedirect(resp.encodeRedirectURL(s));
+ return true;
}
}
Modified: epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/LegacyRequestHandler.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/LegacyRequestHandler.java 2011-09-22 14:23:11 UTC (rev 7487)
+++ epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/LegacyRequestHandler.java 2011-09-22 14:27:37 UTC (rev 7488)
@@ -84,7 +84,7 @@
}
@Override
- public void execute(ControllerContext context) throws Exception
+ public boolean execute(ControllerContext context) throws Exception
{
String requestSiteName = context.getParameter(PortalRequestHandler.REQUEST_SITE_NAME);
String requestPath = context.getParameter(PortalRequestHandler.REQUEST_PATH);
@@ -129,5 +129,6 @@
HttpServletResponse resp = context.getResponse();
resp.sendRedirect(resp.encodeRedirectURL(s));
+ return true;
}
}
Modified: epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java 2011-09-22 14:23:11 UTC (rev 7487)
+++ epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java 2011-09-22 14:27:37 UTC (rev 7488)
@@ -28,7 +28,6 @@
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.web.ControllerContext;
-import org.exoplatform.web.WebAppController;
import org.exoplatform.web.WebRequestHandler;
import org.exoplatform.web.application.ApplicationLifecycle;
import org.exoplatform.web.application.ApplicationRequestPhaseLifecycle;
@@ -37,10 +36,8 @@
import org.exoplatform.web.controller.QualifiedName;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.core.UIApplication;
-
import java.util.List;
import java.util.Locale;
-
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -98,7 +95,7 @@
*/
@SuppressWarnings("unchecked")
@Override
- public void execute(ControllerContext controllerContext) throws Exception
+ public boolean execute(ControllerContext controllerContext) throws Exception
{
HttpServletRequest req = controllerContext.getRequest();
HttpServletResponse res = controllerContext.getResponse();
@@ -126,7 +123,7 @@
if (requestSiteName == null) {
res.sendRedirect(req.getContextPath());
- return;
+ return true;
}
PortalApplication app = controllerContext.getController().getApplication(PortalApplication.PORTAL_APPLICATION_ID);
@@ -137,7 +134,7 @@
PortalConfig persistentPortalConfig = storage.getPortalConfig(requestSiteType, requestSiteName);
if (persistentPortalConfig == null)
{
- context.sendError(HttpServletResponse.SC_NOT_FOUND);
+ return false;
}
else if(req.getRemoteUser() == null)
{
@@ -152,6 +149,7 @@
{
processRequest(context, app);
}
+ return true;
}
@SuppressWarnings("unchecked")
Modified: epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/StaticResourceRequestHandler.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/StaticResourceRequestHandler.java 2011-09-22 14:23:11 UTC (rev 7487)
+++ epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/StaticResourceRequestHandler.java 2011-09-22 14:27:37 UTC (rev 7488)
@@ -39,7 +39,7 @@
}
@Override
- public void execute(ControllerContext context) throws Exception
+ public boolean execute(ControllerContext context) throws Exception
{
PortalContainer portalContainer = PortalContainer.getInstance();
ServletContext mergedContext = portalContainer.getPortalContext();
@@ -47,5 +47,6 @@
HttpServletRequest req = context.getRequest();
HttpServletResponse res = context.getResponse();
mergedContext.getNamedDispatcher("default").forward(req, res);
+ return true;
}
}
Property changes on: epp/portal/branches/EPP_5_2_Branch/wsrp-integration
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/wsrp-integration:5868
/portal/branches/branch-GTNPORTAL-1592/wsrp-integration:4894
/portal/branches/branch-GTNPORTAL-1643/wsrp-integration:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/wsrp-integration:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/wsrp-integration:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/wsrp-integration:5765
/portal/branches/branch-GTNPORTAL-1790/wsrp-integration:5871
/portal/branches/branch-GTNPORTAL-1822/wsrp-integration:5943,5952
/portal/branches/branch-GTNPORTAL-1832/wsrp-integration:6030,6063
/portal/branches/branch-GTNPORTAL-1872/wsrp-integration:6400,6551
/portal/branches/branch-GTNPORTAL-1921/wsrp-integration:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/wsrp-integration:6904,6915-6916
/portal/branches/decoupled-webos/wsrp-integration:6214-6243
/portal/branches/gatein-management/wsrp-integration:6920-6958
/portal/branches/global-portlet-metadata/wsrp-integration:6298-6384
/portal/branches/site-describability/wsrp-integration:6171-6235
/portal/trunk/wsrp-integration:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7186,7198,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/wsrp-integration:5868
/portal/branches/branch-GTNPORTAL-1592/wsrp-integration:4894
/portal/branches/branch-GTNPORTAL-1643/wsrp-integration:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/wsrp-integration:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/wsrp-integration:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/wsrp-integration:5765
/portal/branches/branch-GTNPORTAL-1790/wsrp-integration:5871
/portal/branches/branch-GTNPORTAL-1822/wsrp-integration:5943,5952
/portal/branches/branch-GTNPORTAL-1832/wsrp-integration:6030,6063
/portal/branches/branch-GTNPORTAL-1872/wsrp-integration:6400,6551
/portal/branches/branch-GTNPORTAL-1921/wsrp-integration:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/wsrp-integration:6904,6915-6916
/portal/branches/decoupled-webos/wsrp-integration:6214-6243
/portal/branches/gatein-management/wsrp-integration:6920-6958
/portal/branches/global-portlet-metadata/wsrp-integration:6298-6384
/portal/branches/site-describability/wsrp-integration:6171-6235
/portal/trunk/wsrp-integration:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7186,7198,7239,7262,7308,7326,7331,7359,7367,7433
13 years, 3 months
gatein SVN: r7487 - in epp/portal/branches/EPP_5_2_Branch: component and 6 other directories.
by do-not-reply@jboss.org
Author: theute
Date: 2011-09-22 10:23:11 -0400 (Thu, 22 Sep 2011)
New Revision: 7487
Added:
epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/StaticResourceRequestHandler.java
Modified:
epp/portal/branches/EPP_5_2_Branch/
epp/portal/branches/EPP_5_2_Branch/component/
epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org/
epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/conf/gatein/controller.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/controller-configuration.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/web.xml
epp/portal/branches/EPP_5_2_Branch/wsrp-integration/
Log:
JBEPP-1200
Add request handler for serving static resources in portal.war (jpg,ico,css...)
Property changes on: epp/portal/branches/EPP_5_2_Branch
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795:5868
/portal/branches/branch-GTNPORTAL-1592:4894
/portal/branches/branch-GTNPORTAL-1643:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745:5765
/portal/branches/branch-GTNPORTAL-1790:5871
/portal/branches/branch-GTNPORTAL-1822:5943,5952
/portal/branches/branch-GTNPORTAL-1832:6030,6063
/portal/branches/branch-GTNPORTAL-1872:6400,6551
/portal/branches/branch-GTNPORTAL-1921:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963:6904,6915-6916
/portal/branches/decoupled-webos:6214-6243
/portal/branches/gatein-management:6920-6958
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/trunk:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795:5868
/portal/branches/branch-GTNPORTAL-1592:4894
/portal/branches/branch-GTNPORTAL-1643:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745:5765
/portal/branches/branch-GTNPORTAL-1790:5871
/portal/branches/branch-GTNPORTAL-1822:5943,5952
/portal/branches/branch-GTNPORTAL-1832:6030,6063
/portal/branches/branch-GTNPORTAL-1872:6400,6551
/portal/branches/branch-GTNPORTAL-1921:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963:6904,6915-6916
/portal/branches/decoupled-webos:6214-6243
/portal/branches/gatein-management:6920-6958
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/trunk:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7186,7239,7262,7308,7326,7331,7359,7367
Property changes on: epp/portal/branches/EPP_5_2_Branch/component
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component:5868
/portal/branches/branch-GTNPORTAL-1592/component:4894
/portal/branches/branch-GTNPORTAL-1643/component:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component:5765
/portal/branches/branch-GTNPORTAL-1790/component:5871
/portal/branches/branch-GTNPORTAL-1822/component:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component:6904,6915-6916
/portal/trunk/component:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component:5868
/portal/branches/branch-GTNPORTAL-1592/component:4894
/portal/branches/branch-GTNPORTAL-1643/component:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component:5765
/portal/branches/branch-GTNPORTAL-1790/component:5871
/portal/branches/branch-GTNPORTAL-1822/component:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component:6904,6915-6916
/portal/trunk/component:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7186,7239,7262,7308,7326,7331,7359,7367
Property changes on: epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component/portal/src/main/java/org:5868
/portal/branches/branch-GTNPORTAL-1592/component/portal/src/main/java/org:4894
/portal/branches/branch-GTNPORTAL-1643/component/portal/src/main/java/org:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component/portal/src/main/java/org:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component/portal/src/main/java/org:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component/portal/src/main/java/org:5765
/portal/branches/branch-GTNPORTAL-1790/component/portal/src/main/java/org:5871
/portal/branches/branch-GTNPORTAL-1822/component/portal/src/main/java/org:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component/portal/src/main/java/org:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component/portal/src/main/java/org:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component/portal/src/main/java/org:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component/portal/src/main/java/org:6904,6915-6916
/portal/trunk/component/portal/src/main/java/org:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7198,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component/portal/src/main/java/org:5868
/portal/branches/branch-GTNPORTAL-1592/component/portal/src/main/java/org:4894
/portal/branches/branch-GTNPORTAL-1643/component/portal/src/main/java/org:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component/portal/src/main/java/org:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component/portal/src/main/java/org:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component/portal/src/main/java/org:5765
/portal/branches/branch-GTNPORTAL-1790/component/portal/src/main/java/org:5871
/portal/branches/branch-GTNPORTAL-1822/component/portal/src/main/java/org:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component/portal/src/main/java/org:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component/portal/src/main/java/org:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component/portal/src/main/java/org:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component/portal/src/main/java/org:6904,6915-6916
/portal/trunk/component/portal/src/main/java/org:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7186,7198,7239,7262,7308,7326,7331,7359,7367
Modified: epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/conf/gatein/controller.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/conf/gatein/controller.xml 2011-09-22 13:49:58 UTC (rev 7486)
+++ epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/conf/gatein/controller.xml 2011-09-22 14:23:11 UTC (rev 7487)
@@ -120,6 +120,15 @@
</route>
+ <route path="/{gtn:path}">
+ <route-param qname="gtn:handler">
+ <value>staticResource</value>
+ </route-param>
+ <path-param qname="gtn:path" encoding="preserve-path">
+ <pattern>.*\.(jpg|png|gif|ico|css)</pattern>
+ </path-param>
+ </route>
+
<!-- Default handler -->
<route path="/">
<route-param qname="gtn:handler">
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/controller-configuration.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/controller-configuration.xml 2011-09-22 13:49:58 UTC (rev 7486)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/controller-configuration.xml 2011-09-22 14:23:11 UTC (rev 7487)
@@ -109,6 +109,11 @@
<set-method>register</set-method>
<type>org.exoplatform.portal.application.DefaultRequestHandler</type>
</component-plugin>
+ <component-plugin>
+ <name>StaticResourceRequestHandler</name>
+ <set-method>register</set-method>
+ <type>org.exoplatform.portal.application.StaticResourceRequestHandler</type>
+ </component-plugin>
</external-component-plugins>
</configuration>
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/web.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/web.xml 2011-09-22 13:49:58 UTC (rev 7486)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/web.xml 2011-09-22 14:23:11 UTC (rev 7487)
@@ -292,29 +292,7 @@
<url-pattern>/</url-pattern>
</servlet-mapping>
- <!-- Explicit mappings (due to portal servlet on '/') for UIHomePagePortlet, need to find out how to improve that -->
<servlet-mapping>
- <servlet-name>default</servlet-name>
- <url-pattern>*.jpg</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>default</servlet-name>
- <url-pattern>*.png</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>default</servlet-name>
- <url-pattern>*.gif</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>default</servlet-name>
- <url-pattern>*.ico</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>default</servlet-name>
- <url-pattern>*.css</url-pattern>
- </servlet-mapping>
-
- <servlet-mapping>
<servlet-name>GateInServlet</servlet-name>
<url-pattern>/gateinservlet</url-pattern>
</servlet-mapping>
Copied: epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/StaticResourceRequestHandler.java (from rev 7186, portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/StaticResourceRequestHandler.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/StaticResourceRequestHandler.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/webui/portal/src/main/java/org/exoplatform/portal/application/StaticResourceRequestHandler.java 2011-09-22 14:23:11 UTC (rev 7487)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2011 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.application;
+
+import org.exoplatform.container.PortalContainer;
+import org.exoplatform.web.ControllerContext;
+import org.exoplatform.web.WebRequestHandler;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @author <a href="mailto:phuong.vu@exoplatform.com">Vu Viet Phuong</a>
+ */
+public class StaticResourceRequestHandler extends WebRequestHandler
+{
+ @Override
+ public String getHandlerName()
+ {
+ return "staticResource";
+ }
+
+ @Override
+ public void execute(ControllerContext context) throws Exception
+ {
+ PortalContainer portalContainer = PortalContainer.getInstance();
+ ServletContext mergedContext = portalContainer.getPortalContext();
+
+ HttpServletRequest req = context.getRequest();
+ HttpServletResponse res = context.getResponse();
+ mergedContext.getNamedDispatcher("default").forward(req, res);
+ }
+}
Property changes on: epp/portal/branches/EPP_5_2_Branch/wsrp-integration
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/wsrp-integration:5868
/portal/branches/branch-GTNPORTAL-1592/wsrp-integration:4894
/portal/branches/branch-GTNPORTAL-1643/wsrp-integration:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/wsrp-integration:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/wsrp-integration:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/wsrp-integration:5765
/portal/branches/branch-GTNPORTAL-1790/wsrp-integration:5871
/portal/branches/branch-GTNPORTAL-1822/wsrp-integration:5943,5952
/portal/branches/branch-GTNPORTAL-1832/wsrp-integration:6030,6063
/portal/branches/branch-GTNPORTAL-1872/wsrp-integration:6400,6551
/portal/branches/branch-GTNPORTAL-1921/wsrp-integration:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/wsrp-integration:6904,6915-6916
/portal/branches/decoupled-webos/wsrp-integration:6214-6243
/portal/branches/gatein-management/wsrp-integration:6920-6958
/portal/branches/global-portlet-metadata/wsrp-integration:6298-6384
/portal/branches/site-describability/wsrp-integration:6171-6235
/portal/trunk/wsrp-integration:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7198,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/wsrp-integration:5868
/portal/branches/branch-GTNPORTAL-1592/wsrp-integration:4894
/portal/branches/branch-GTNPORTAL-1643/wsrp-integration:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/wsrp-integration:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/wsrp-integration:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/wsrp-integration:5765
/portal/branches/branch-GTNPORTAL-1790/wsrp-integration:5871
/portal/branches/branch-GTNPORTAL-1822/wsrp-integration:5943,5952
/portal/branches/branch-GTNPORTAL-1832/wsrp-integration:6030,6063
/portal/branches/branch-GTNPORTAL-1872/wsrp-integration:6400,6551
/portal/branches/branch-GTNPORTAL-1921/wsrp-integration:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/wsrp-integration:6904,6915-6916
/portal/branches/decoupled-webos/wsrp-integration:6214-6243
/portal/branches/gatein-management/wsrp-integration:6920-6958
/portal/branches/global-portlet-metadata/wsrp-integration:6298-6384
/portal/branches/site-describability/wsrp-integration:6171-6235
/portal/trunk/wsrp-integration:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7186,7198,7239,7262,7308,7326,7331,7359,7367
13 years, 3 months
gatein SVN: r7486 - in epp/portal/branches/EPP_5_2_Branch: component and 6 other directories.
by do-not-reply@jboss.org
Author: theute
Date: 2011-09-22 09:49:58 -0400 (Thu, 22 Sep 2011)
New Revision: 7486
Added:
epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/main/java/org/exoplatform/portal/resource/CommentBlockHandler.java
epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkipCommentReader.java
epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkipCommentReader.java
epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/test/resources/skin/
epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/test/resources/skin/test_1.css
Removed:
epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/test/resources/skin/test_1.css
Modified:
epp/portal/branches/EPP_5_2_Branch/
epp/portal/branches/EPP_5_2_Branch/component/
epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org/
epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkinService.java
epp/portal/branches/EPP_5_2_Branch/wsrp-integration/
Log:
JBEPP-1199
org.exoplatform.portal.resource.SkinService#processCSSRecursively(Appendable, boolean, Resource, Orientation) parses even commented lines
Property changes on: epp/portal/branches/EPP_5_2_Branch
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795:5868
/portal/branches/branch-GTNPORTAL-1592:4894
/portal/branches/branch-GTNPORTAL-1643:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745:5765
/portal/branches/branch-GTNPORTAL-1790:5871
/portal/branches/branch-GTNPORTAL-1822:5943,5952
/portal/branches/branch-GTNPORTAL-1832:6030,6063
/portal/branches/branch-GTNPORTAL-1872:6400,6551
/portal/branches/branch-GTNPORTAL-1921:6603
/portal/branches/branch-GTNPORTAL-1963:6904,6915-6916
/portal/branches/decoupled-webos:6214-6243
/portal/branches/gatein-management:6920-6958
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/trunk:4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795:5868
/portal/branches/branch-GTNPORTAL-1592:4894
/portal/branches/branch-GTNPORTAL-1643:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745:5765
/portal/branches/branch-GTNPORTAL-1790:5871
/portal/branches/branch-GTNPORTAL-1822:5943,5952
/portal/branches/branch-GTNPORTAL-1832:6030,6063
/portal/branches/branch-GTNPORTAL-1872:6400,6551
/portal/branches/branch-GTNPORTAL-1921:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963:6904,6915-6916
/portal/branches/decoupled-webos:6214-6243
/portal/branches/gatein-management:6920-6958
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/trunk:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
Property changes on: epp/portal/branches/EPP_5_2_Branch/component
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component:5868
/portal/branches/branch-GTNPORTAL-1592/component:4894
/portal/branches/branch-GTNPORTAL-1643/component:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component:5765
/portal/branches/branch-GTNPORTAL-1790/component:5871
/portal/branches/branch-GTNPORTAL-1822/component:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component:6603
/portal/branches/branch-GTNPORTAL-1963/component:6904,6915-6916
/portal/trunk/component:4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component:5868
/portal/branches/branch-GTNPORTAL-1592/component:4894
/portal/branches/branch-GTNPORTAL-1643/component:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component:5765
/portal/branches/branch-GTNPORTAL-1790/component:5871
/portal/branches/branch-GTNPORTAL-1822/component:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component:6904,6915-6916
/portal/trunk/component:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
Property changes on: epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component/portal/src/main/java/org:5868
/portal/branches/branch-GTNPORTAL-1592/component/portal/src/main/java/org:4894
/portal/branches/branch-GTNPORTAL-1643/component/portal/src/main/java/org:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component/portal/src/main/java/org:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component/portal/src/main/java/org:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component/portal/src/main/java/org:5765
/portal/branches/branch-GTNPORTAL-1790/component/portal/src/main/java/org:5871
/portal/branches/branch-GTNPORTAL-1822/component/portal/src/main/java/org:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component/portal/src/main/java/org:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component/portal/src/main/java/org:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component/portal/src/main/java/org:6603
/portal/branches/branch-GTNPORTAL-1963/component/portal/src/main/java/org:6904,6915-6916
/portal/trunk/component/portal/src/main/java/org:4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7198,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component/portal/src/main/java/org:5868
/portal/branches/branch-GTNPORTAL-1592/component/portal/src/main/java/org:4894
/portal/branches/branch-GTNPORTAL-1643/component/portal/src/main/java/org:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component/portal/src/main/java/org:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component/portal/src/main/java/org:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component/portal/src/main/java/org:5765
/portal/branches/branch-GTNPORTAL-1790/component/portal/src/main/java/org:5871
/portal/branches/branch-GTNPORTAL-1822/component/portal/src/main/java/org:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component/portal/src/main/java/org:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component/portal/src/main/java/org:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component/portal/src/main/java/org:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/component/portal/src/main/java/org:6904,6915-6916
/portal/trunk/component/portal/src/main/java/org:4876,4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7198,7239,7262,7308,7326,7331,7359,7367
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/main/java/org/exoplatform/portal/resource/CommentBlockHandler.java (from rev 6772, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/main/java/org/exoplatform/portal/resource/CommentBlockHandler.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/main/java/org/exoplatform/portal/resource/CommentBlockHandler.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/main/java/org/exoplatform/portal/resource/CommentBlockHandler.java 2011-09-22 13:49:58 UTC (rev 7486)
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2011 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.resource;
+
+import java.io.IOException;
+
+/**
+ * Designed to plugged into SkipCommentReader for custom handling of comment block
+ *
+ * @author <a href="hoang281283(a)gmail.com">Minh Hoang TO</a>
+ * @date 6/28/11
+ */
+public abstract class CommentBlockHandler
+{
+
+ public abstract void handle(CharSequence commentBlock, SkipCommentReader reader) throws IOException;
+
+
+ /**
+ * A handler that push back content of comment block into the cache
+ * if content of comment block is
+ *
+ * orientation=lt or orientation=rt
+ */
+ public static class OrientationCommentBlockHandler extends CommentBlockHandler
+ {
+
+ private static final String LT = "orientation=lt";
+
+ private static final String RT = "orientation=rt";
+
+ @Override
+ public void handle(CharSequence commentBlock, SkipCommentReader reader) throws IOException
+ {
+ if(findInterestingContentIn(commentBlock))
+ {
+ reader.pushback(commentBlock);
+ reader.setNumberOfCommingEscapes(commentBlock.length()); /* The comment block won't be skipped */
+ }
+ }
+
+ /**
+ * Return true if content of comment block is either
+ *
+ * orientation=lt or orientation=rt
+ *
+ * @param commentBlock
+ * @return
+ */
+ private boolean findInterestingContentIn(CharSequence commentBlock)
+ {
+
+ int indexOfFirstO = 0;
+
+ while(indexOfFirstO < commentBlock.length())
+ {
+ if(commentBlock.charAt(indexOfFirstO) == 'o')
+ {
+ break;
+ }
+ else
+ {
+ indexOfFirstO++;
+ }
+ }
+
+ if(commentBlock.length() <= (indexOfFirstO + LT.length()))
+ {
+ return false;
+ }
+ for(int i = 0; i < LT.length(); i++)
+ {
+ if(commentBlock.charAt(indexOfFirstO + i) != LT.charAt(i) && i != (LT.length() -2))
+ {
+ return false;
+ }
+ }
+ return commentBlock.charAt(indexOfFirstO + LT.length() - 2) == 'l'
+ || commentBlock.charAt(indexOfFirstO + LT.length() - 2) == 'r';
+ }
+
+ }
+}
Modified: epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkinService.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkinService.java 2011-09-22 12:43:27 UTC (rev 7485)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkinService.java 2011-09-22 13:49:58 UTC (rev 7486)
@@ -66,9 +66,7 @@
import javax.servlet.ServletContext;
@Managed
-@NameTemplate({
- @Property(key = "view", value = "portal"),
- @Property(key = "service", value = "management"),
+@NameTemplate({@Property(key = "view", value = "portal"), @Property(key = "service", value = "management"),
@Property(key = "type", value = "skin")})
@ManagedDescription("Skin service")
@RESTEndpoint(path = "skinservice")
@@ -174,17 +172,12 @@
};
//
- FutureExoCache<String, CachedStylesheet, Orientation> ltCache = new FutureExoCache<String, CachedStylesheet, Orientation>(loader, new ConcurrentFIFOExoCache<String, CachedStylesheet>(200));
- FutureExoCache<String, CachedStylesheet, Orientation> rtCache = new FutureExoCache<String, CachedStylesheet, Orientation>(loader, new ConcurrentFIFOExoCache<String, CachedStylesheet>(200));
-
-
- //
this.compressor = compressor;
portalSkins_ = new LinkedHashMap<SkinKey, SkinConfig>();
skinConfigs_ = new LinkedHashMap<SkinKey, SkinConfig>(20);
availableSkins_ = new HashSet<String>(5);
- this.ltCache = ltCache;
- this.rtCache = rtCache;
+ ltCache = new FutureExoCache<String, CachedStylesheet, Orientation>(loader, new ConcurrentFIFOExoCache<String, CachedStylesheet>(200));
+ rtCache = new FutureExoCache<String, CachedStylesheet, Orientation>(loader, new ConcurrentFIFOExoCache<String, CachedStylesheet>(200));
portletThemes_ = new HashMap<String, Set<String>>();
portalContainerName = context.getPortalContainerName();
mainResolver = new MainResourceResolver(portalContainerName, skinConfigs_);
@@ -278,8 +271,6 @@
log.debug("Adding Portal skin : Bind " + key + " to " + skinConfig);
}
}
-
- //
ltCache.remove(cssPath);
rtCache.remove(cssPath);
}
@@ -480,12 +471,17 @@
/**
*
- * Register the Skin for available portal Skins. Do not replace existing skin.
+ * Register the Skin for available portal Skins. Do not replace existed Skin
*
- * @param module skin module identifier
- * @param skinName skin name
- * @param cssPath path uri to the css file. This is relative to the root context, use leading '/'
- * @param cssData the data
+ * @param module
+ * skin module identifier
+ * @param skinName
+ * skin name
+ * @param cssPath
+ * path uri to the css file. This is relative to the root context,
+ * use leading '/'
+ * @param scontext
+ * the webapp's {@link javax.servlet.ServletContext}
*/
public void addSkin(String module, String skinName, String cssPath, String cssData)
{
@@ -496,8 +492,6 @@
{
skinConfigs_.put(key, new SimpleSkin(this, module, skinName, cssPath));
}
-
- // Evict
ltCache.remove(cssPath);
rtCache.remove(cssPath);
}
@@ -601,6 +595,7 @@
renderer.setExpiration(ONE_HOUR);
}
+
cachedCss.writeTo(renderer.getOutput());
}
else
@@ -620,7 +615,7 @@
*/
public String getMergedCSS(String cssPath)
{
- CachedStylesheet stylesheet = ltCache.get(null, cssPath);
+ CachedStylesheet stylesheet = ltCache.get(Orientation.LT, cssPath);
return stylesheet != null ? stylesheet.getText() : null;
}
@@ -871,7 +866,7 @@
{
throw new RenderingException("No skin resolved for path " + skin.getResourcePath());
}
- BufferedReader reader = new BufferedReader(tmp);
+ BufferedReader reader = new SkipCommentReader(tmp, new CommentBlockHandler.OrientationCommentBlockHandler());
try
{
while ((line = reader.readLine()) != null)
@@ -956,7 +951,7 @@
/**
* Get Suffix of Orientation
- * @param orientation the orientation
+ * @param orientation
* @return Suffix of Orientation
*/
String getSuffix(Orientation orientation)
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkipCommentReader.java (from rev 6772, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkipCommentReader.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkipCommentReader.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkipCommentReader.java 2011-09-22 13:49:58 UTC (rev 7486)
@@ -0,0 +1,232 @@
+/*
+ * Copyright (C) 2011 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.resource;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.Reader;
+
+/**
+ *
+ * A subclass of BufferedReader which skip the comment block
+ *
+ * @author <a href="hoang281283(a)gmail.com">Minh Hoang TO</a>
+ * @date 6/27/11
+ */
+public class SkipCommentReader extends BufferedReader
+{
+
+ private final StringBuilder pushbackCache;
+
+ private final static int EOF = -1;
+
+ private State cursorState;
+
+ private CommentBlockHandler commentBlockHandler;
+
+ /* The number of next comming characters that won't be skipped even if they are in a comment block */
+ private int numberOfCommingEscapes;
+
+ public SkipCommentReader(Reader reader)
+ {
+ this(reader, null);
+ }
+
+ public SkipCommentReader(Reader reader, CommentBlockHandler handler)
+ {
+ super(reader);
+ pushbackCache = new StringBuilder();
+ cursorState = State.ENCOUNTING_ORDINARY_CHARACTER;
+ this.commentBlockHandler = handler;
+ }
+
+ /**
+ * Recursive method that read a single character from underlying reader. Encountered comment block
+ * is escaped automatically.
+ *
+ * @return
+ * @throws IOException
+ */
+ public int readSingleCharacter() throws IOException
+ {
+ int readingChar = readLikePushbackReader();
+ if(readingChar == EOF)
+ {
+ return EOF;
+ }
+
+ if(numberOfCommingEscapes > 0)
+ {
+ numberOfCommingEscapes--;
+ return readingChar;
+ }
+
+ switch (readingChar)
+ {
+ case '/':
+ int nextCharToRead = read();
+ if (nextCharToRead == '*')
+ {
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_COMMENT_BLOCK_OPENING_TAG;
+ advanceToEscapeCommentBlock();
+ return readSingleCharacter();
+ }
+ else
+ {
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_FORWARD_SLASH;
+ pushbackCache.append((char)nextCharToRead);
+ return '/';
+ }
+
+ case '*':
+ if (this.cursorState == SkipCommentReader.State.ENCOUNTING_FORWARD_SLASH)
+ {
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_COMMENT_BLOCK_OPENING_TAG;
+ advanceToEscapeCommentBlock();
+ return readSingleCharacter();
+ }
+ else
+ {
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_ASTERIK;
+ return '*';
+ }
+
+ default:
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_ORDINARY_CHARACTER;
+ return readingChar;
+ }
+
+ }
+
+ /**
+ * Read from the pushback cache first, then underlying reader
+ */
+ private int readLikePushbackReader() throws IOException
+ {
+ if(pushbackCache.length() > 0)
+ {
+ int readingChar = pushbackCache.charAt(0);
+ pushbackCache.deleteCharAt(0);
+ return readingChar;
+ }
+ return read();
+ }
+
+ /**
+ * Advance in comment block until we reach a comment block closing tag
+ */
+ private void advanceToEscapeCommentBlock() throws IOException
+ {
+ if(cursorState != SkipCommentReader.State.ENCOUNTING_COMMENT_BLOCK_OPENING_TAG)
+ {
+ throw new IllegalStateException("This method should be invoked only if we are entering a comment block");
+ }
+
+ int readingChar = read();
+ StringBuilder commentBlock = new StringBuilder("/*");
+
+ LOOP:
+ while(readingChar != EOF)
+ {
+ commentBlock.append((char)readingChar);
+ if(readingChar == '/')
+ {
+ if(this.cursorState == SkipCommentReader.State.ENCOUNTING_ASTERIK)
+ {
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_COMMENT_BLOCK_CLOSING_TAG;
+ break LOOP; //We 've just escaped the comment block
+ }
+ else
+ {
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_FORWARD_SLASH;
+ }
+ }
+ else
+ {
+ this.cursorState = (readingChar == '*')? SkipCommentReader.State.ENCOUNTING_ASTERIK : SkipCommentReader.State.ENCOUNTING_ORDINARY_CHARACTER;
+ }
+ readingChar = read();
+ }
+
+ if(commentBlockHandler != null)
+ {
+ commentBlockHandler.handle(commentBlock, this);
+ }
+ }
+
+ @Override
+ public String readLine() throws IOException
+ {
+ StringBuilder builder = new StringBuilder();
+ int nextChar = readSingleCharacter();
+ if(nextChar == EOF)
+ {
+ return null;
+ }
+
+ while(nextChar != EOF)
+ {
+ if(nextChar == '\n' || nextChar == '\r')
+ {
+ break;
+ }
+ builder.append((char)nextChar);
+ nextChar = readSingleCharacter();
+ }
+
+ return builder.toString().trim();
+ }
+
+ /**
+ * Used for JUnit tests
+ * @return
+ */
+ public State getCursorState()
+ {
+ return this.cursorState;
+ }
+
+ public void setCommentBlockHandler(CommentBlockHandler commentBlockHandler)
+ {
+ this.commentBlockHandler = commentBlockHandler;
+ }
+
+ public void setNumberOfCommingEscapes(int numberOfCommingEscapes)
+ {
+ this.numberOfCommingEscapes = numberOfCommingEscapes;
+ }
+
+ public void pushback(CharSequence sequence)
+ {
+ this.pushbackCache.append(sequence);
+ }
+
+ public enum State
+ {
+ ENCOUNTING_FORWARD_SLASH,
+
+ ENCOUNTING_ASTERIK,
+
+ ENCOUNTING_COMMENT_BLOCK_OPENING_TAG,
+
+ ENCOUNTING_COMMENT_BLOCK_CLOSING_TAG,
+
+ ENCOUNTING_ORDINARY_CHARACTER
+ }
+}
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkipCommentReader.java (from rev 6772, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkipCommentReader.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkipCommentReader.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkipCommentReader.java 2011-09-22 13:49:58 UTC (rev 7486)
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2011 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.resource;
+
+import junit.framework.TestCase;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringReader;
+
+/**
+ * @author <a href="hoang281283(a)gmail.com">Minh Hoang TO</a>
+ * @date 6/28/11
+ */
+public class TestSkipCommentReader extends TestCase
+{
+
+ private SkipCommentReader skipCommentReader;
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ if(skipCommentReader != null)
+ {
+ skipCommentReader.close();
+ }
+ }
+
+ private void initiateReader(String relativePath)
+ {
+ InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(relativePath);
+ skipCommentReader = new SkipCommentReader(new InputStreamReader(in));
+ }
+
+ private void initiateReader(Reader reader)
+ {
+ skipCommentReader = new SkipCommentReader(reader);
+ }
+
+ public void testFirstCSSFile() throws IOException
+ {
+ initiateReader("skin/test_1.css");
+
+ for(int i =0; i < 30; i++)
+ {
+ String line = skipCommentReader.readLine();
+ System.out.println(line);
+ line = skipCommentReader.readLine();
+ }
+ }
+
+ public void testSkipCommentBlock() throws IOException
+ {
+ Reader reader = new StringReader("abcdefgh/* comment block */ijklmn");
+ initiateReader(reader);
+
+ String line = skipCommentReader.readLine();
+ assertEquals("abcdefghijklmn", line);
+ }
+
+ public void testSkipMultipleCommentBlocks() throws IOException
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("1.abcdefgh/* comment block */ijklmn\n");
+ builder.append("2.abcdefgh/* comment block */ijklmn\n");
+ builder.append("3.abcdefgh/* comment block */ijklmn\n");
+ builder.append("4.abcdefgh/* comment block */ijklmn\n");
+
+ Reader reader = new StringReader(builder.toString());
+ initiateReader(reader);
+
+ String line = skipCommentReader.readLine();
+ assertEquals("1.abcdefghijklmn", line);
+
+ line = skipCommentReader.readLine();
+ assertEquals("2.abcdefghijklmn", line);
+
+ line = skipCommentReader.readLine();
+ assertEquals("3.abcdefghijklmn", line);
+
+ line = skipCommentReader.readLine();
+ assertEquals("4.abcdefghijklmn", line);
+ }
+
+ public void testSkipCommentBlocksWithHandler() throws IOException
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("1.abcdefgh/* orientation=lt */ijklmn\n");
+ builder.append("2.abcdefgh/* comment block */ijklmn\n");
+ builder.append("3.abcdefgh/* orientation=rt */ijklmn\n");
+ builder.append("4.abcdefgh/* comment block */ijklmn\n");
+
+ Reader reader = new StringReader(builder.toString());
+ initiateReader(reader);
+ skipCommentReader.setCommentBlockHandler(new CommentBlockHandler.OrientationCommentBlockHandler());
+
+ String line = skipCommentReader.readLine();
+ assertEquals("1.abcdefgh/* orientation=lt */ijklmn", line);
+
+ line = skipCommentReader.readLine();
+ assertEquals("2.abcdefghijklmn", line);
+
+ line = skipCommentReader.readLine();
+ assertEquals("3.abcdefgh/* orientation=rt */ijklmn", line);
+
+ line = skipCommentReader.readLine();
+ assertEquals("4.abcdefghijklmn", line);
+ }
+
+ public void testNumberOfCommingEscapes() throws IOException
+ {
+ String COMMENT_BLOCK = "/*COMMENT BLOCK*/";
+
+ StringBuilder builder = new StringBuilder();
+ builder.append(COMMENT_BLOCK).append("1.abcdefghijklmn\n");
+ builder.append("2.abcdefghijklmn\n");
+ builder.append("3.").append(COMMENT_BLOCK).append("abcdefghijklmn\n");
+
+ Reader reader = new StringReader(builder.toString());
+ initiateReader(reader);
+
+ skipCommentReader.setNumberOfCommingEscapes(COMMENT_BLOCK.length());
+ String firstLine = skipCommentReader.readLine();
+ assertEquals(COMMENT_BLOCK + "1.abcdefghijklmn", firstLine);
+
+ String secondLine = skipCommentReader.readLine();
+ assertEquals("2.abcdefghijklmn", secondLine);
+
+ skipCommentReader.setNumberOfCommingEscapes(2 + COMMENT_BLOCK.length());
+ String thirdLine = skipCommentReader.readLine();
+ assertEquals("3." + COMMENT_BLOCK + "abcdefghijklmn", thirdLine);
+ }
+
+ public void testCursorState() throws IOException
+ {
+ Reader reader = new StringReader("0123456//*xxxx*/*789");
+ initiateReader(reader);
+
+ assertEquals(SkipCommentReader.State.ENCOUNTING_ORDINARY_CHARACTER, skipCommentReader.getCursorState());
+ for(int i = 0; i < 7; i++)
+
+ {
+ int readChar = skipCommentReader.readSingleCharacter();
+ assertEquals(SkipCommentReader.State.ENCOUNTING_ORDINARY_CHARACTER, skipCommentReader.getCursorState());
+ }
+
+ skipCommentReader.readSingleCharacter();
+ assertEquals(SkipCommentReader.State.ENCOUNTING_FORWARD_SLASH, skipCommentReader.getCursorState());
+
+ skipCommentReader.readSingleCharacter();//The comment block is automatically skipped
+ assertEquals(SkipCommentReader.State.ENCOUNTING_ASTERIK, skipCommentReader.getCursorState());
+ }
+}
Deleted: epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/test/resources/skin/test_1.css
===================================================================
--- portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/resources/skin/test_1.css 2011-06-29 01:43:50 UTC (rev 6772)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/test/resources/skin/test_1.css 2011-09-22 13:49:58 UTC (rev 7486)
@@ -1,3320 +0,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.
- */
-
-/*-------------------------- DefaultTheme ---------------------------*/
-
-.DefaultTheme .WindowBarCenter .WindowPortletInfo {
- margin-right: 80px; /* orientation=lt */
- margin-left: 80px; /* orientation=rt */
-}
-
-.DefaultTheme .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 24px;
- height: 17px;
- cursor: pointer;
- background-image: url('background/DefaultTheme.png');
-}
-
-.DefaultTheme .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.DefaultTheme .OverArrowDownIcon {
- background-position: center 116px;
-}
-
-.DefaultTheme .MinimizedIcon {
- background-position: center 44px;
-}
-
-.DefaultTheme .OverMinimizedIcon {
- background-position: center 140px;
-}
-
-.DefaultTheme .MaximizedIcon {
- background-position: center 68px;
-}
-
-.DefaultTheme .OverMaximizedIcon {
- background-position: center 164px;
-}
-
-.DefaultTheme .RestoreIcon {
- background-position: center 92px;
-}
-
-.DefaultTheme .OverRestoreIcon {
- background-position: center 188px;
-}
-
-.DefaultTheme .NormalIcon {
- background-position: center 92px;
-}
-
-.DefaultTheme .OverNormalIcon {
- background-position: center 188px;
-}
-
-.DefaultTheme .Information {
- height: 18px; line-height: 18px;
- vertical-align: middle; font-size: 10px;
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
-}
-
-.DefaultTheme .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
- line-height: 16px;
-}
-
-.DefaultTheme .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.DefaultTheme .WindowBarLeft {
- padding-left: 12px;
- background-image: url('background/DefaultTheme.png');
- background-repeat: no-repeat;
- background-position: left -148px;
-}
-
-.DefaultTheme .WindowBarRight {
- padding-right: 11px;
- background-image: url('background/DefaultTheme.png');
- background-repeat: no-repeat;
- background-position: right -119px;
-}
-
-.DefaultTheme .WindowBarCenter {
- background-image: url('background/DefaultTheme.png');
- background-repeat: repeat-x;
- background-position: left -90px;
-}
-
-.DefaultTheme .WindowBarCenter .FixHeight {
- height: 21px;
- padding-top: 8px;
-}
-
-.DefaultTheme .MiddleDecoratorLeft {
- padding-left: 12px;
- background: url('background/MDefaultTheme.png') repeat-y left;
-}
-
-.DefaultTheme .MiddleDecoratorRight {
- padding-right: 11px;
- background: url('background/MDefaultTheme.png') repeat-y right;
-}
-
-.DefaultTheme .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.DefaultTheme .BottomDecoratorLeft {
- padding-left: 12px;
- background-image: url('background/DefaultTheme.png');
- background-repeat: no-repeat;
- background-position: left -60px;
-}
-
-.DefaultTheme .BottomDecoratorRight {
- padding-right: 11px;
- background-image: url('background/DefaultTheme.png');
- background-repeat: no-repeat;
- background-position: right -30px;
-}
-
-.DefaultTheme .BottomDecoratorCenter {
- background-image: url('background/DefaultTheme.png');
- background-repeat: repeat-x;
- background-position: left top;
-}
-
-.DefaultTheme .BottomDecoratorCenter .FixHeight {
- height: 30px;
-}
-
-/*-------------------------- MacTheme ---------------------------*/
-
-.MacTheme .WindowBarCenter .WindowPortletInfo {
- margin: 0px 70px 0px 0px; /* orientation=lt */
- margin: 0px 0px 0px 70px; /* orientation=rt */
-}
-
-.MacTheme .WindowBarCenter .WindowPortletIcon {
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.MacTheme .WindowBarCenter .PortletName {
- font-weight: bold;
- line-height: 17px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.MacTheme .WindowBarCenter .PortletIcon {
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
-}
-
-.MacTheme .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 21px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/MacTheme.png');
-}
-
-.MacTheme .ArrowDownIcon {
- background-position: center 18px;
-}
-
-.MacTheme .OverArrowDownIcon {
- background-position: center 98px;
-}
-
-.MacTheme .MinimizedIcon {
- background-position: center 37px;
-}
-
-.MacTheme .OverMinimizedIcon {
- background-position: center 118px;
-}
-
-.MacTheme .MaximizedIcon {
- background-position: center 57px;
-}
-
-.MacTheme .OverMaximizedIcon {
- background-position: center 138px;
-}
-
-.MacTheme .NormalIcon {
- background-position: center 78px;
-}
-
-.MacTheme .OverNormalIcon {
- background-position: center 158px;
-}
-
-.MacTheme .RestoreIcon {
- background-position: center 78px;
-}
-
-.MacTheme .OverRestoreIcon {
- background-position: center 158px;
-}
-
-.MacTheme .BackgroundIcon {
- float: left; /* orientation=lt */
- float: right; /* orientation=rt */
- margin: 4px 2px 0px 2px;
-}
-
-.MacTheme .Information {
- height: 16px; line-height: 14px; vertical-align: middle;
- font-size: 10px;
- margin-right: 18px;
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.MacTheme .MiddleDecoratorLeft {
- background: url('background/MMacTheme.png') repeat-y left;
- padding: 0px 0px 0px 5px;
-}
-
-.MacTheme .MiddleDecoratorRight {
- padding: 0px 5px 0px 0px;
- background: url('background/MMacTheme.png') repeat-y right;
-}
-
-.MacTheme .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .MacTheme .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.MacTheme .BottomDecoratorLeft {
- background-image: url('background/MacTheme.png');
- background-repeat: no-repeat;
- background-position: left -46px;
- padding: 0px 0px 0px 5px;
-}
-
-.MacTheme .BottomDecoratorRight {
- background-image: url('background/MacTheme.png');
- background-repeat: no-repeat;
- background-position: right -23px;
- padding: 0px 5px 0px 0px;
-}
-
-.MacTheme .BottomDecoratorCenter {
- background-image: url('background/MacTheme.png');
- background-repeat: repeat-x;
- background-position: center top;
-}
-
-.MacTheme .BottomDecoratorCenter .FixHeight {
- height: 23px; line-height: 23px;
-}
-
-.MacTheme .WindowBarLeft {
- background-image: url('background/MacTheme.png');
- background-repeat: no-repeat;
- background-position: left -115px;
- padding: 0px 0px 0px 12px;
-}
-
-.MacTheme .WindowBarRight {
- background-image: url('background/MacTheme.png');
- background-repeat: no-repeat;
- background-position: right -92px;
- padding: 0px 12px 0px 0px;
-}
-
-.MacTheme .WindowBarCenter {
- background-image: url('background/MacTheme.png');
- background-repeat: repeat-x;
- background-position: center -69px;
-}
-
-.MacTheme .WindowBarCenter .FixHeight {
- height: 19px;
- padding-top: 4px;
-}
-
-/*-------------------------- MacGray ---------------------------*/
-
-.MacGray .WindowBarCenter .WindowPortletInfo {
- margin: 0px 70px 0px 0px; /* orientation=lt */
- margin: 0px 0px 0px 70px; /* orientation=rt */
-}
-
-.MacGray .WindowBarCenter .WindowPortletIcon {
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.MacGray .WindowBarCenter .PortletName {
- font-weight: bold;
- line-height: 17px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.MacGray .WindowBarCenter .PortletIcon {
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
-}
-
-.MacGray .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 21px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/MacGray.png');
-}
-
-.MacGray .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.MacGray .OverArrowDownIcon {
- background-position: center 100px;
-}
-
-.MacGray .MinimizedIcon {
- background-position: center 37px;
-}
-
-.MacGray .OverMinimizedIcon {
- background-position: center 120px;
-}
-
-.MacGray .MaximizedIcon {
- background-position: center 57px;
-}
-
-.MacGray .OverMaximizedIcon {
- background-position: center 140px;
-}
-
-.MacGray .NormalIcon {
- background-position: center 78px;
-}
-
-.MacGray .OverNormalIcon {
- background-position: center 160px;
-}
-
-.MacGray .RestoreIcon {
- background-position: center 78px;
-}
-
-.MacGray .OverRestoreIcon {
- background-position: center 160px;
-}
-
-.MacGray .BackgroundIcon {
- float: left; /* orientation=lt */
- float: right; /* orientation=rt */
- margin: 4px 2px 0px 2px;
-}
-
-.MacGray .Information {
- height: 16px; line-height: 14px; vertical-align: middle;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.MacGray .MiddleDecoratorLeft {
- background: url('background/MMacGray.png') repeat-y left;
- padding: 0px 0px 0px 8px;
-}
-
-.MacGray .MiddleDecoratorRight {
- padding: 0px 8px 0px 0px;
- background: url('background/MMacGray.png') repeat-y right;
-}
-
-.MacGray .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.MacGray .MiddleDecoratorCenter {
- height:100%;
-}
-
-.MacGray .BottomDecoratorLeft {
- background-image: url('background/MacGray.png');
- background-repeat: no-repeat;
- background-position: left -48px;
- padding: 0px 0px 0px 9px;
-}
-
-.MacGray .BottomDecoratorRight {
- padding: 0px 9px 0px 0px;
- background-image: url('background/MacGray.png');
- background-repeat: no-repeat;
- background-position: right -24px;
-}
-
-.MacGray .BottomDecoratorCenter {
- background-image: url('background/MacGray.png');
- background-repeat: repeat-x;
- background-position: left top;
-}
-
-.MacGray .BottomDecoratorCenter .FixHeight {
- height: 24px; line-height: 24px;
-}
-
-.MacGray .WindowBarLeft {
- padding: 0px 0px 0px 9px;
- background-image: url('background/MacGray.png');
- background-repeat: no-repeat;
- background-position: left -118px;
-}
-
-.MacGray .WindowBarRight {
- padding: 0px 9px 0px 0px;
- background-image: url('background/MacGray.png');
- background-repeat: no-repeat;
- background-position: right -95px;
-}
-
-.MacGray .WindowBarCenter {
- background-image: url('background/MacGray.png');
- background-repeat: repeat-x;
- background-position: center -72px;
-}
-
-.MacGray .WindowBarCenter .FixHeight {
- height: 19px;
- padding-top: 4px;
-}
-
-/*-------------------------- MacBlack ---------------------------*/
-
-.MacBlack .WindowBarCenter .WindowPortletInfo {
- margin: 0px 70px 0px 0px; /* orientation=lt */
- margin: 0px 0px 0px 70px; /* orientation=rt */
-}
-
-.MacBlack .WindowBarCenter .WindowPortletIcon {
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.MacBlack .WindowBarCenter .PortletName {
- font-weight: bold;
- line-height: 17px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.MacBlack .WindowBarCenter .PortletIcon {
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
-}
-
-.MacBlack .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 21px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/MacBlack.png');
-}
-
-.MacBlack .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.MacBlack .OverArrowDownIcon {
- background-position: center 100px;
-}
-
-.MacBlack .MinimizedIcon {
- background-position: center 37px;
-}
-
-.MacBlack .OverMinimizedIcon {
- background-position: center 120px;
-}
-
-.MacBlack .MaximizedIcon {
- background-position: center 57px;
-}
-
-.MacBlack .OverMaximizedIcon {
- background-position: center 140px;
-}
-
-.MacBlack .NormalIcon {
- background-position: center 78px;
-}
-
-.MacBlack .OverNormalIcon {
- background-position: center 160px;
-}
-
-.MacBlack .RestoreIcon {
- background-position: center 78px;
-}
-
-.MacBlack .OverRestoreIcon {
- background-position: center 160px;
-}
-
-.MacBlack .BackgroundIcon {
- float: left; /* orientation=lt */
- float: right; /* orientation=rt */
- margin: 4px 2px 0px 2px;
-}
-
-.MacBlack .Information {
- height: 16px; line-height: 14px; vertical-align: middle;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.MacBlack .MiddleDecoratorLeft {
- background: url('background/MMacBlack.png') repeat-y left;
- padding: 0px 0px 0px 8px;
-}
-
-.MacBlack .MiddleDecoratorRight {
- padding: 0px 8px 0px 0px;
- background: url('background/MMacBlack.png') repeat-y right;
-}
-
-.MacBlack .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .MacBlack .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.MacBlack .BottomDecoratorLeft {
- background-image: url('background/MacBlack.png');
- background-repeat: no-repeat;
- background-position: left -48px;
- padding: 0px 0px 0px 9px;
-}
-
-.MacBlack .BottomDecoratorRight {
- padding: 0px 9px 0px 0px;
- background-image: url('background/MacBlack.png');
- background-repeat: no-repeat;
- background-position: right -24px;
-}
-
-.MacBlack .BottomDecoratorCenter {
- background-image: url('background/MacBlack.png');
- background-repeat: repeat-x;
- background-position: left top;
-}
-
-.MacBlack .BottomDecoratorCenter .FixHeight {
- height: 24px; line-height: 24px;
-}
-
-.MacBlack .WindowBarLeft {
- padding: 0px 0px 0px 9px;
- background-image: url('background/MacBlack.png');
- background-repeat: no-repeat;
- background-position: left -118px;
-}
-
-.MacBlack .WindowBarRight {
- padding: 0px 9px 0px 0px;
- background-image: url('background/MacBlack.png');
- background-repeat: no-repeat;
- background-position: right -95px;
-}
-
-.MacBlack .WindowBarCenter {
- background-image: url('background/MacBlack.png');
- background-repeat: repeat-x;
- background-position: center -72px;
-}
-
-.MacBlack .WindowBarCenter .FixHeight {
- height: 19px;
- padding-top: 4px;
-}
-
-/*-------------------------- MacGreenSteel ---------------------------*/
-
-.MacGreenSteel .WindowBarCenter .WindowPortletInfo {
- margin: 0px 70px 0px 0px; /* orientation=lt */
- margin: 0px 0px 0px 70px; /* orientation=rt */
-}
-
-.MacGreenSteel .WindowBarCenter .WindowPortletIcon {
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.MacGreenSteel .WindowBarCenter .PortletName {
- font-weight: bold;
- line-height: 17px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.MacGreenSteel .WindowBarCenter .PortletIcon {
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
-}
-
-.MacGreenSteel .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 21px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/MacGreen.png');
-}
-
-.MacGreenSteel .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.MacGreenSteel .OverArrowDownIcon {
- background-position: center 100px;
-}
-
-.MacGreenSteel .MinimizedIcon {
- background-position: center 37px;
-}
-
-.MacGreenSteel .OverMinimizedIcon {
- background-position: center 120px;
-}
-
-.MacGreenSteel .MaximizedIcon {
- background-position: center 57px;
-}
-
-.MacGreenSteel .OverMaximizedIcon {
- background-position: center 140px;
-}
-
-.MacGreenSteel .NormalIcon {
- background-position: center 78px;
-}
-
-.MacGreenSteel .OverNormalIcon {
- background-position: center 160px;
-}
-
-.MacGreenSteel .RestoreIcon {
- background-position: center 78px;
-}
-
-.MacGreenSteel .OverRestoreIcon {
- background-position: center 160px;
-}
-
-.MacGreenSteel .BackgroundIcon {
- float: left; /* orientation=lt */
- float: right; /* orientation=rt */
- margin: 4px 2px 0px 2px;
-}
-
-.MacGreenSteel .Information {
- height: 16px; line-height: 14px; vertical-align: middle;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.MacGreenSteel .MiddleDecoratorLeft {
- background: url('background/MMacGreen.png') repeat-y left;
- padding: 0px 0px 0px 8px;
-}
-
-.MacGreenSteel .MiddleDecoratorRight {
- padding: 0px 8px 0px 0px;
- background: url('background/MMacGreen.png') repeat-y right;
-}
-
-.MacGreenSteel .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .MacGreenSteel .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.MacGreenSteel .BottomDecoratorLeft {
- background-image: url('background/MacGreen.png');
- background-repeat: no-repeat;
- background-position: left -48px;
- padding: 0px 0px 0px 9px;
-}
-
-.MacGreenSteel .BottomDecoratorRight {
- padding: 0px 9px 0px 0px;
- background-image: url('background/MacGreen.png');
- background-repeat: no-repeat;
- background-position: right -24px;
-}
-
-.MacGreenSteel .BottomDecoratorCenter {
- background-image: url('background/MacGreen.png');
- background-repeat: repeat-x;
- background-position: left top;
-}
-
-.MacGreenSteel .BottomDecoratorCenter .FixHeight {
- height: 24px; line-height: 24px;
-}
-
-.MacGreenSteel .WindowBarLeft {
- padding: 0px 0px 0px 9px;
- background-image: url('background/MacGreen.png');
- background-repeat: no-repeat;
- background-position: left -118px;
-}
-
-.MacGreenSteel .WindowBarRight {
- padding: 0px 9px 0px 0px;
- background-image: url('background/MacGreen.png');
- background-repeat: no-repeat;
- background-position: right -95px;
-}
-
-.MacGreenSteel .WindowBarCenter {
- background-image: url('background/MacGreen.png');
- background-repeat: repeat-x;
- background-position: center -72px;
-}
-
-.MacGreenSteel .WindowBarCenter .FixHeight {
- height: 19px;
- padding-top: 4px;
-}
-
-/*-------------------------------- VistaTheme -----------------------------*/
-
-.VistaTheme .WindowBarCenter .WindowPortletInfo {
- margin-right: 95px; /* orientation=lt */
- margin-left: 95px; /* orientation=rt */
-
-}
-
-.VistaTheme .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 22px;
-}
-
-.VistaTheme .WindowBarCenter .PortletIcon {
- background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon.png') no-repeat left 3px; /* orientation=lt */
- background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon-rt.png') no-repeat right 3px; /* orientation=rt */
-}
-
-.VistaTheme .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 30px;
- height: 20px;
- cursor: pointer;
- background-image: url('background/VistaTheme.png'); /* orientation=lt */
- background-image: url('background/VistaTheme-rt.png'); /* orientation=rt */
-}
-
-.VistaTheme .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.VistaTheme .OverArrowDownIcon {
- background-position: center 100px;
-}
-
-.VistaTheme .MinimizedIcon {
- background-position: center 40px;
-}
-
-.VistaTheme .OverMinimizedIcon {
- background-position: center 120px;
-}
-
-.VistaTheme .MaximizedIcon {
- background-position: center 60px;
-}
-
-.VistaTheme .OverMaximizedIcon {
- background-position: center 140px;
-}
-
-.VistaTheme .NormalIcon {
- background-position: center 80px;
-}
-
-.VistaTheme .OverNormalIcon {
- background-position: center 160px;
-}
-
-.VistaTheme .RestoreIcon {
- background-position: center 80px;
-}
-
-.VistaTheme .OverRestoreIcon {
- background-position: center 160px;
-}
-
-.VistaTheme .Information {
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
- height: 18px; line-height: 18px;
- font-size: 10px;
-}
-
-.VistaTheme .MiddleDecoratorCenter {
- background: #ffffff;
- border: solid 1px #717171;
-}
-
-.VistaTheme .MiddleDecoratorLeft {
- padding-left:12px;
- background: url('background/MVistaTheme.png') repeat-y left;
-}
-
-.VistaTheme .MiddleDecoratorRight {
- padding-right: 13px;
- background: url('background/MVistaTheme.png') repeat-y right;
-}
-
-.UIPageBody .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.VistaTheme .BottomDecoratorLeft {
- background-image: url('background/VistaTheme.png');
- background-repeat: no-repeat;
- background-position: left -48px;
- padding-left: 12px;
-}
-
-.VistaTheme .BottomDecoratorRight {
- background-image: url('background/VistaTheme.png');
- background-repeat: no-repeat;
- background-position: right -24px;
- padding-right: 13px;
-}
-
-.VistaTheme .BottomDecoratorCenter {
- background-image: url('background/VistaTheme.png');
- background-repeat: repeat-x;
- background-position: left top;
-}
-
-.VistaTheme .BottomDecoratorCenter .FixHeight {
- height: 24px;
-}
-
-.VistaTheme .WindowBarCenter .PortletName {
- font-weight: bold;
- line-height: 22px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.VistaTheme .WindowBarLeft {
- background-image: url('background/VistaTheme.png');
- background-repeat: no-repeat;
- background-position: left -130px;
- padding-left: 12px;
-}
-
-.VistaTheme .WindowBarRight {
- background-image: url('background/VistaTheme.png');
- background-repeat: no-repeat;
- background-position: right -101px;
- padding-right: 16px;
-}
-
-.VistaTheme .WindowBarCenter {
- background-image: url('background/VistaTheme.png');
- background-repeat: repeat-x;
- background-position: left -72px;
-}
-
-.VistaTheme .WindowBarCenter .FixHeight {
- height: 24px;
- padding-top: 5px;
-}
-
-/*-------------------------------- VistaBlue -----------------------------*/
-
-.VistaBlue .WindowBarCenter .WindowPortletInfo {
- margin-right: 95px; /* orientation=lt */
- margin-left: 95px; /* orientation=rt */
-
-}
-
-.VistaBlue .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 20px;
-}
-
-.VistaBlue .WindowBarCenter .PortletName {
- font-weight: bold;
- line-height: 22px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.VistaBlue .WindowBarCenter .PortletIcon {
- background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon.png') no-repeat left 3px; /* orientation=lt */
- background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon-rt.png') no-repeat right 3px; /* orientation=rt */
-}
-
-.VistaBlue .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 30px; height: 19px;
- cursor: pointer;
- background-image: url('background/VistaBlue.png');
-}
-
-.VistaBlue .ArrowDownIcon {
- background-position: center 19px;
-}
-
-.VistaBlue .OverArrowDownIcon {
- background-position: center 99px;
-}
-
-.VistaBlue .MinimizedIcon {
- background-position: center 39px;
-}
-
-.VistaBlue .OverMinimizedIcon {
- background-position: center 119px;
-}
-
-.VistaBlue .MaximizedIcon {
- background-position: center 59px;
-}
-
-.VistaBlue .OverMaximizedIcon {
- background-position: center 139px;
-}
-
-.VistaBlue .NormalIcon {
- background-position: center 79px;
-}
-
-.VistaBlue .OverNormalIcon {
- background-position: center 159px;
-}
-
-.VistaBlue .RestoreIcon {
- background-position: center 79px;
-}
-
-.VistaBlue .OverRestoreIcon {
- background-position: center 159px;
-}
-
-.VistaBlue .Information {
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
- height: 18px; line-height: 18px;
- font-size: 10px;
-}
-
-.VistaBlue .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .VistaBlue .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.VistaBlue .MiddleDecoratorLeft {
- padding-left: 15px;
- background: url('background/MVistaBlue.png') repeat-y left;
-}
-
-.VistaBlue .MiddleDecoratorRight {
- padding-right: 18px;
- background: url('background/MVistaBlue.png') repeat-y right;
-}
-
-.UIPortlet .VistaBlue .MiddleDecoratorRight {
- padding-right: 16px;
-}
-
-.VistaBlue .BottomDecoratorLeft {
- background-image: url('background/VistaBlue.png');
- background-repeat: no-repeat;
- background-position: left -54px;
- padding-left: 15px;
-}
-
-.VistaBlue .BottomDecoratorRight {
- background-image: url('background/VistaBlue.png');
- background-repeat: no-repeat;
- background-position: right -27px;
- padding-right: 15px;
-}
-
-.VistaBlue .BottomDecoratorCenter {
- background-image: url('background/VistaBlue.png');
- background-repeat: repeat-x;
- background-position: left top;
-}
-
-.VistaBlue .BottomDecoratorCenter .FixHeight {
- height: 27px;
-}
-
-.VistaBlue .WindowBarLeft {
- background-image: url('background/VistaBlue.png');
- background-repeat: no-repeat;
- background-position: left -151px;
- padding-left: 15px;
-}
-
-.VistaBlue .WindowBarRight {
- background-image: url('background/VistaBlue.png');
- background-repeat: no-repeat;
- background-position: right -116px;
- padding-right: 15px;
-}
-
-.VistaBlue .WindowBarCenter {
- background-image: url('background/VistaBlue.png');
- background-repeat: repeat-x;
- background-position: left -81px;
-}
-
-.VistaBlue .WindowBarCenter .FixHeight {
- height: 27px;
- padding-top: 8px;
-}
-
-/*-------------------------- RoundConerBlue ---------------------------*/
-
-.RoundConerBlue .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-
-}
-
-.RoundConerBlue .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/RoundCornerBlue.png');
-}
-
-.RoundConerBlue .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.RoundConerBlue .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.RoundConerBlue .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 19px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.RoundConerBlue .ArrowDownIcon {
- background-position: center 21px;
-}
-
-.RoundConerBlue .OverArrowDownIcon {
- background-position: center 117px;
-}
-
-.RoundConerBlue .MinimizedIcon {
- background-position: center 45px;
-}
-
-.RoundConerBlue .OverMinimizedIcon {
- background-position: center 141px;
-}
-
-.RoundConerBlue .MaximizedIcon {
- background-position: center 69px;
-}
-
-.RoundConerBlue .OverMaximizedIcon {
- background-position: center 165px;
-}
-
-.RoundConerBlue .RestoreIcon {
- background-position: center 93px;
-}
-
-.RoundConerBlue .OverRestoreIcon {
- background-position: center 189px;
-}
-
-.RoundConerBlue .NormalIcon {
- background-position: center 93px;
-}
-
-.RoundConerBlue .OverNormalIcon {
- background-position: center 189px;
-}
-
-.RoundConerBlue .WindowBarLeft {
- padding-left: 12px;
- background-image: url('background/RoundCornerBlue.png');
- background-repeat: no-repeat;
- background-position: left -154px;
-}
-
-.RoundConerBlue .WindowBarRight {
- padding-right: 12px;
- background-image: url('background/RoundCornerBlue.png');
- background-repeat: no-repeat;
- background-position: right -122px;
-}
-
-.RoundConerBlue .WindowBarCenter {
- background: url('background/RoundCornerBlue.png') repeat-x;
- background-position: left -90px;
-}
-
-.RoundConerBlue .WindowBarCenter .FixHeight {
- height: 22px;
- padding-top: 10px;
-}
-
-.RoundConerBlue .MiddleDecoratorLeft {
- padding-left: 13px;
- background: url('background/MRoundConerBlue.png') repeat-y left;
-}
-
-.RoundConerBlue .MiddleDecoratorRight {
- padding-right: 13px;
- background: url('background/MRoundConerBlue.png') repeat-y right;
-}
-
-.RoundConerBlue .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .RoundConerBlue .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.RoundConerBlue .BottomDecoratorLeft {
- padding-left: 13px;
- background-image: url('background/RoundCornerBlue.png');
- background-repeat: no-repeat;
- background-position: left -60px;
-}
-
-.RoundConerBlue .BottomDecoratorRight {
- padding-right: 13px;
- background-image: url('background/RoundCornerBlue.png');
- background-repeat: no-repeat;
- background-position: right -30px;
-}
-
-.RoundConerBlue .BottomDecoratorCenter {
- background: url('background/RoundCornerBlue.png') repeat-x;
- background-position: top;
-}
-
-.RoundConerBlue .BottomDecoratorCenter .FixHeight {
- height: 30px;
-}
-
-/*------------------ RoundConerViolet -----------------*/
-
-.RoundConerViolet .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-
-}
-
-.RoundConerViolet .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/RoundConerViolet.png');
-}
-
-.RoundConerViolet .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- padding-left: 5px;
- margin-right: 18px;
-}
-
-.RoundConerViolet .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.RoundConerViolet .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 19px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.RoundConerViolet .ArrowDownIcon {
- background-position: center 21px;
-}
-
-.RoundConerViolet .OverArrowDownIcon {
- background-position: center 117px;
-}
-
-.RoundConerViolet .MinimizedIcon {
- background-position: center 45px;
-}
-
-.RoundConerViolet .OverMinimizedIcon {
- background-position: center 141px;
-}
-
-.RoundConerViolet .MaximizedIcon {
- background-position: center 69px;
-}
-
-.RoundConerViolet .OverMaximizedIcon {
- background-position: center 165px;
-}
-
-.RoundConerViolet .RestoreIcon {
- background-position: center 93px;
-}
-
-.RoundConerViolet .OverRestoreIcon {
- background-position: center 189px;
-}
-
-.RoundConerViolet .NormalIcon {
- background-position: center 93px;
-}
-
-.RoundConerViolet .OverNormalIcon {
- background-position: center 189px;
-}
-
-.RoundConerViolet .WindowBarLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerViolet.png');
- background-repeat: no-repeat;
- background-position: left -153px;
-}
-
-.RoundConerViolet .WindowBarRight {
- padding-right: 13px;
- background-image: url('background/RoundConerViolet.png');
- background-repeat: no-repeat;
- background-position: right -121px;
-}
-
-.RoundConerViolet .WindowBarCenter {
- background: url('background/RoundConerViolet.png') repeat-x;
- background-position: left -90px;
-}
-
-.RoundConerViolet .WindowBarCenter .FixHeight {
- height: 22px;
- padding-top: 10px;
-}
-
-.UIPortlet .RoundConerViolet .WindowBarCenter {
- height: 31px;
-}
-
-.RoundConerViolet .MiddleDecoratorLeft {
- padding-left: 13px;
- background: url('background/MRoundConerViolet.png') repeat-y left;
-}
-
-.RoundConerViolet .MiddleDecoratorRight {
- padding-right: 13px;
- background: url('background/MRoundConerViolet.png') repeat-y right;
-}
-
-.RoundConerViolet .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .RoundConerViolet .MiddleDecoratorCenter {
- height:100%;
-}
-
-.RoundConerViolet .BottomDecoratorLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerViolet.png');
- background-repeat: no-repeat;
- background-position: left -60px;
-}
-
-.RoundConerViolet .BottomDecoratorRight {
- padding-right: 13px;
- background-image: url('background/RoundConerViolet.png');
- background-repeat: no-repeat;
- background-position: right -30px;
-}
-
-.RoundConerViolet .BottomDecoratorCenter {
- background: url('background/RoundConerViolet.png') repeat-x;
- background-position: top;
-}
-
-.RoundConerViolet .BottomDecoratorCenter .FixHeight {
- height: 30px;
-}
-
-/*------------------------------- RoundConerOrange ----------------------------------*/
-
-.RoundConerOrange .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.RoundConerOrange .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/RoundConerOrange.png');
-}
-
-.RoundConerOrange .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.RoundConerOrange .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.RoundConerOrange .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 19px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.RoundConerOrange .ArrowDownIcon {
- background-position: center 21px;
-}
-
-.RoundConerOrange .OverArrowDownIcon {
- background-position: center 117px;
-}
-
-.RoundConerOrange .MinimizedIcon {
- background-position: center 45px;
-}
-
-.RoundConerOrange .OverMinimizedIcon {
- background-position: center 141px;
-}
-
-.RoundConerOrange .MaximizedIcon {
- background-position: center 69px;
-}
-
-.RoundConerOrange .OverMaximizedIcon {
- background-position: center 165px;
-}
-
-.RoundConerOrange .RestoreIcon {
- background-position: center 93px;
-}
-
-.RoundConerOrange .OverRestoreIcon {
- background-position: center 189px;
-}
-
-.RoundConerOrange .NormalIcon {
- background-position: center 93px;
-}
-
-.RoundConerOrange .OverNormalIcon {
- background-position: center 189px;
-}
-
-.RoundConerOrange .WindowBarLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerOrange.png');
- background-repeat: no-repeat;
- background-position: left -153px;
-}
-
-.RoundConerOrange .WindowBarRight {
- padding-right: 13px;
- background-image: url('background/RoundConerOrange.png');
- background-repeat: no-repeat;
- background-position: right -121px;
-}
-
-.RoundConerOrange .WindowBarCenter {
- background: url('background/RoundConerOrange.png') repeat-x;
- background-position: left -90px;
-}
-
-.RoundConerOrange .WindowBarCenter .FixHeight {
- height: 22px;
- padding-top: 10px;
-}
-
-.UIPortlet .RoundConerOrange .WindowBarCenter {
- height: 31px;
-}
-
-.RoundConerOrange .MiddleDecoratorLeft {
- padding-left: 13px;
- background: url('background/MRoundConerOrange.png') repeat-y left;
-}
-
-.RoundConerOrange .MiddleDecoratorRight {
- padding-right: 13px;
- background: url('background/MRoundConerOrange.png') repeat-y right;
-}
-
-.RoundConerOrange .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .RoundConerOrange .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.RoundConerOrange .BottomDecoratorLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerOrange.png');
- background-repeat: no-repeat;
- background-position: left -60px;
-}
-
-.RoundConerOrange .BottomDecoratorRight {
- padding-right: 13px;
- background-image: url('background/RoundConerOrange.png');
- background-repeat: no-repeat;
- background-position: right -30px;
-}
-
-.RoundConerOrange .BottomDecoratorCenter {
- background: url('background/RoundConerOrange.png') repeat-x;
- background-position: top;
-}
-
-.RoundConerOrange .BottomDecoratorCenter .FixHeight {
- height: 30px;
-}
-
-/*------------------------------- RoundConerPink ----------------------------------*/
-
-.RoundConerPink .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.RoundConerPink .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/RoundConerPink.png');
-}
-
-.RoundConerPink .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.RoundConerPink .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.RoundConerPink .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 19px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.RoundConerPink .ArrowDownIcon {
- background-position: center 21px;
-}
-
-.RoundConerPink .OverArrowDownIcon {
- background-position: center 117px;
-}
-
-.RoundConerPink .MinimizedIcon {
- background-position: center 45px;
-}
-
-.RoundConerPink .OverMinimizedIcon {
- background-position: center 141px;
-}
-
-.RoundConerPink .MaximizedIcon {
- background-position: center 69px;
-}
-
-.RoundConerPink .OverMaximizedIcon {
- background-position: center 165px;
-}
-
-.RoundConerPink .RestoreIcon {
- background-position: center 93px;
-}
-
-.RoundConerPink .OverRestoreIcon {
- background-position: center 189px;
-}
-
-.RoundConerPink .NormalIcon {
- background-position: center 93px;
-}
-
-.RoundConerPink .OverNormalIcon {
- background-position: center 189px;
-}
-
-.RoundConerPink .WindowBarLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerPink.png');
- background-repeat: no-repeat;
- background-position: left -153px;
-}
-
-.RoundConerPink .WindowBarRight {
- padding-right: 13px;
- background-image: url('background/RoundConerPink.png');
- background-repeat: no-repeat;
- background-position: right -121px;
-}
-
-.RoundConerPink .WindowBarCenter {
- background: url('background/RoundConerPink.png') repeat-x;
- background-position: left -90px;
-}
-
-.RoundConerPink .WindowBarCenter .FixHeight {
- height: 22px;
- padding-top: 10px;
-}
-
-.UIPortlet .RoundConerPink .WindowBarCenter {
- height: 31px;
-}
-
-.RoundConerPink .MiddleDecoratorLeft {
- padding-left: 13px;
- background: url('background/MRoundConerPink.png') repeat-y left;
-}
-
-.RoundConerPink .MiddleDecoratorRight {
- padding-right: 13px;
- background: url('background/MRoundConerPink.png') repeat-y right;
-}
-
-.RoundConerPink .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .RoundConerPink .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.RoundConerPink .BottomDecoratorLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerPink.png');
- background-repeat: no-repeat;
- background-position: left -60px;
-}
-
-.RoundConerPink .BottomDecoratorRight {
- padding-right: 13px;
- background-image: url('background/RoundConerPink.png');
- background-repeat: no-repeat;
- background-position: right -30px;
-}
-
-.RoundConerPink .BottomDecoratorCenter {
- background: url('background/RoundConerPink.png') repeat-x;
- background-position: top;
-}
-
-.RoundConerPink .BottomDecoratorCenter .FixHeight {
- height: 30px;
-}
-
-/*------------------------------- RoundConerGreen ----------------------------------*/
-
-.RoundConerGreen .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.RoundConerGreen .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/RoundConerGreen.png');
-}
-
-.RoundConerGreen .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.RoundConerGreen .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.RoundConerGreen .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 19px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.RoundConerGreen .ArrowDownIcon {
- background-position: center 21px;
-}
-
-.RoundConerGreen .OverArrowDownIcon {
- background-position: center 117px;
-}
-
-.RoundConerGreen .MinimizedIcon {
- background-position: center 45px;
-}
-
-.RoundConerGreen .OverMinimizedIcon {
- background-position: center 141px;
-}
-
-.RoundConerGreen .MaximizedIcon {
- background-position: center 69px;
-}
-
-.RoundConerGreen .OverMaximizedIcon {
- background-position: center 165px;
-}
-
-.RoundConerGreen .RestoreIcon {
- background-position: center 93px;
-}
-
-.RoundConerGreen .OverRestoreIcon {
- background-position: center 189px;
-}
-
-.RoundConerGreen .NormalIcon {
- background-position: center 93px;
-}
-
-.RoundConerGreen .OverNormalIcon {
- background-position: center 189px;
-}
-
-.RoundConerGreen .WindowBarLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerGreen.png');
- background-repeat: no-repeat;
- background-position: left -153px;
-}
-
-.RoundConerGreen .WindowBarRight {
- padding-right: 13px;
- background-image: url('background/RoundConerGreen.png');
- background-repeat: no-repeat;
- background-position: right -121px;
-}
-
-.RoundConerGreen .WindowBarCenter {
- background: url('background/RoundConerGreen.png') repeat-x;
- background-position: left -90px;
-}
-
-.RoundConerGreen .WindowBarCenter .FixHeight {
- height: 22px;
- padding-top: 10px;
-}
-
-.UIPortlet .RoundConerGreen .WindowBarCenter {
- height: 31px;
-}
-
-.RoundConerGreen .MiddleDecoratorLeft {
- padding-left: 13px;
- background: url('background/MRoundConerGreen.png') repeat-y left;
-}
-
-.RoundConerGreen .MiddleDecoratorRight {
- padding-right: 13px;
- background: url('background/MRoundConerGreen.png') repeat-y right;
-}
-
-.RoundConerGreen .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .RoundConerGreen .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.RoundConerGreen .BottomDecoratorLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerGreen.png');
- background-repeat: no-repeat;
- background-position: left -60px;
-}
-
-.RoundConerGreen .BottomDecoratorRight {
- padding-right: 13px;
- background-image: url('background/RoundConerGreen.png');
- background-repeat: no-repeat;
- background-position: right -30px;
-}
-
-.RoundConerGreen .BottomDecoratorCenter {
- background: url('background/RoundConerGreen.png') repeat-x;
- background-position: top;
-}
-
-.RoundConerGreen .BottomDecoratorCenter .FixHeight {
- height: 30px;
-}
-
-/*-------------------------- ShadowBlue ---------------------------*/
-
-.ShadowBlue .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.ShadowBlue .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/ShadowBlue.png');
-}
-
-.ShadowBlue .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.ShadowBlue .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.ShadowBlue .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 16px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.ShadowBlue .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.ShadowBlue .OverArrowDownIcon {
- background-position: center 116px;
-}
-
-.ShadowBlue .MinimizedIcon {
- background-position: center 44px;
-}
-
-.ShadowBlue .OverMinimizedIcon {
- background-position: center 140px;
-}
-
-.ShadowBlue .MaximizedIcon {
- background-position: center 68px;
-}
-
-.ShadowBlue .OverMaximizedIcon {
- background-position: center 164px;
-}
-
-.ShadowBlue .RestoreIcon {
- background-position: center 92px;
-}
-
-.ShadowBlue .OverRestoreIcon {
- background-position: center 188px;
-}
-
-.ShadowBlue .NormalIcon {
- background-position: center 92px;
-}
-
-.ShadowBlue .OverNormalIcon {
- background-position: center 188px;
-}
-
-.ShadowBlue .WindowBarLeft {
- padding-left: 11px;
- background-image: url('background/ShadowBlue.png');
- background-repeat: no-repeat;
- background-position: left -142px;
-}
-
-.ShadowBlue .WindowBarRight {
- padding-right: 10px;
- background-image: url('background/ShadowBlue.png');
- background-repeat: no-repeat;
- background-position: right -113px;
-}
-
-.ShadowBlue .WindowBarCenter {
- background-image: url('background/ShadowBlue.png');
- background-repeat: repeat-x;
- background-position: center -84px;
-}
-
-.ShadowBlue .WindowBarCenter .FixHeight {
- height: 20px;
- padding-top: 9px;
-}
-
-.ShadowBlue .MiddleDecoratorLeft {
- padding-left: 11px;
- background: url('background/MShadowBlue.png') repeat-y left;
-}
-
-.ShadowBlue .MiddleDecoratorRight {
- padding-right: 10px;
- background: url('background/MShadowBlue.png') repeat-y right;
-}
-
-.ShadowBlue .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .ShadowBlue .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.ShadowBlue .BottomDecoratorLeft {
- padding-left: 11px;
- background-image: url('background/ShadowBlue.png');
- background-repeat: no-repeat;
- background-position: left -56px;
-}
-
-.ShadowBlue .BottomDecoratorRight {
- padding-right: 10px;
- background-image: url('background/ShadowBlue.png');
- background-repeat: no-repeat;
- background-position: right -28px;
-}
-
-.ShadowBlue .BottomDecoratorCenter {
- background-image: url('background/ShadowBlue.png');
- background-repeat: repeat-x;
- background-position: center top;
-}
-
-.ShadowBlue .BottomDecoratorCenter .FixHeight {
- height: 28px;
-}
-
-/*------------------------------ ShadowViolet -----------------------------------*/
-
-.ShadowViolet .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.ShadowViolet .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/ShadowViolet.png');
-}
-
-.ShadowViolet .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.ShadowViolet .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.ShadowViolet .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 16px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.ShadowViolet .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.ShadowViolet .OverArrowDownIcon {
- background-position: center 116px;
-}
-
-.ShadowViolet .MinimizedIcon {
- background-position: center 44px;
-}
-
-.ShadowViolet .OverMinimizedIcon {
- background-position: center 140px;
-}
-
-.ShadowViolet .MaximizedIcon {
- background-position: center 68px;
-}
-
-.ShadowViolet .OverMaximizedIcon {
- background-position: center 164px;
-}
-
-.ShadowViolet .RestoreIcon {
- background-position: center 92px;
-}
-
-.ShadowViolet .OverRestoreIcon {
- background-position: center 188px;
-}
-
-.ShadowViolet .NormalIcon {
- background-position: center 92px;
-}
-
-.ShadowViolet .OverNormalIcon {
- background-position: center 188px;
-}
-
-.ShadowViolet .WindowBarLeft {
- padding-left: 11px;
- background-image: url('background/ShadowViolet.png');
- background-repeat: no-repeat;
- background-position: left -142px;
-}
-
-.ShadowViolet .WindowBarRight {
- padding-right: 10px;
- background-image: url('background/ShadowViolet.png');
- background-repeat: no-repeat;
- background-position: right -113px;
-}
-
-.ShadowViolet .WindowBarCenter {
- background-image: url('background/ShadowViolet.png');
- background-repeat: repeat-x;
- background-position: center -84px;
-}
-
-.ShadowViolet .WindowBarCenter .FixHeight {
- height: 20px;
- padding-top: 9px;
-}
-
-.ShadowViolet .MiddleDecoratorLeft {
- padding-left: 11px;
- background: url('background/MShadowViolet.png') repeat-y left;
-}
-
-.ShadowViolet .MiddleDecoratorRight {
- padding-right: 10px;
- background: url('background/MShadowViolet.png') repeat-y right;
-}
-
-.ShadowViolet .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .ShadowViolet .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.ShadowViolet .BottomDecoratorLeft {
- padding-left: 11px;
- background-image: url('background/ShadowViolet.png');
- background-repeat: no-repeat;
- background-position: left -56px;
-}
-
-.ShadowViolet .BottomDecoratorRight {
- padding-right: 10px;
- background-image: url('background/ShadowViolet.png');
- background-repeat: no-repeat;
- background-position: right -28px;
-}
-
-.ShadowViolet .BottomDecoratorCenter {
- background-image: url('background/ShadowViolet.png');
- background-repeat: repeat-x;
- background-position: center top;
-}
-
-.ShadowViolet .BottomDecoratorCenter .FixHeight {
- height: 28px;
-}
-
-/*------------------------------ ShadowOrange -----------------------------------*/
-
-.ShadowOrange .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.ShadowOrange .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/ShadowOrange.png');
-}
-
-.ShadowOrange .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.ShadowOrange .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.ShadowOrange .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 16px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.ShadowOrange .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.ShadowOrange .OverArrowDownIcon {
- background-position: center 116px;
-}
-
-.ShadowOrange .MinimizedIcon {
- background-position: center 44px;
-}
-
-.ShadowOrange .OverMinimizedIcon {
- background-position: center 140px;
-}
-
-.ShadowOrange .MaximizedIcon {
- background-position: center 68px;
-}
-
-.ShadowOrange .OverMaximizedIcon {
- background-position: center 164px;
-}
-
-.ShadowOrange .RestoreIcon {
- background-position: center 92px;
-}
-
-.ShadowOrange .OverRestoreIcon {
- background-position: center 188px;
-}
-
-.ShadowOrange .NormalIcon {
- background-position: center 92px;
-}
-
-.ShadowOrange .OverNormalIcon {
- background-position: center 188px;
-}
-
-.ShadowOrange .WindowBarLeft {
- padding-left: 11px;
- background-image: url('background/ShadowOrange.png');
- background-repeat: no-repeat;
- background-position: left -142px;
-}
-
-.ShadowOrange .WindowBarRight {
- padding-right: 10px;
- background-image: url('background/ShadowOrange.png');
- background-repeat: no-repeat;
- background-position: right -113px;
-}
-
-.ShadowOrange .WindowBarCenter {
- background-image: url('background/ShadowOrange.png');
- background-repeat: repeat-x;
- background-position: center -84px;
-}
-
-.ShadowOrange .WindowBarCenter .FixHeight {
- height: 19px;
- padding-top: 10px;
-}
-
-.ShadowOrange .MiddleDecoratorLeft {
- padding-left: 11px;
- background: url('background/MShadowOrange.png') repeat-y left;
-}
-
-.ShadowOrange .MiddleDecoratorRight {
- padding-right: 10px;
- background: url('background/MShadowOrange.png') repeat-y right;
-}
-
-.ShadowOrange .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .ShadowOrange .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.ShadowOrange .BottomDecoratorLeft {
- padding-left: 11px;
- background-image: url('background/ShadowOrange.png');
- background-repeat: no-repeat;
- background-position: left -56px;
-}
-
-.ShadowOrange .BottomDecoratorRight {
- padding-right: 10px;
- background-image: url('background/ShadowOrange.png');
- background-repeat: no-repeat;
- background-position: right -28px;
-}
-
-.ShadowOrange .BottomDecoratorCenter {
- background-image: url('background/ShadowOrange.png');
- background-repeat: repeat-x;
- background-position: center top;
-}
-
-.ShadowOrange .BottomDecoratorCenter .FixHeight {
- height: 28px;
-}
-
-/*------------------------------ ShadowPink -----------------------------------*/
-
-
-.ShadowPink .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.ShadowPink .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/ShadowPink.png');
-}
-
-.ShadowPink .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.ShadowPink .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.ShadowPink .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 16px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.ShadowPink .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.ShadowPink .OverArrowDownIcon {
- background-position: center 116px;
-}
-
-.ShadowPink .MinimizedIcon {
- background-position: center 44px;
-}
-
-.ShadowPink .OverMinimizedIcon {
- background-position: center 140px;
-}
-
-.ShadowPink .MaximizedIcon {
- background-position: center 68px;
-}
-
-.ShadowPink .OverMaximizedIcon {
- background-position: center 164px;
-}
-
-.ShadowPink .RestoreIcon {
- background-position: center 92px;
-}
-
-.ShadowPink .OverRestoreIcon {
- background-position: center 188px;
-}
-
-.ShadowPink .NormalIcon {
- background-position: center 92px;
-}
-
-.ShadowPink .OverNormalIcon {
- background-position: center 188px;
-}
-
-.ShadowPink .WindowBarLeft {
- padding-left: 11px;
- background-image: url('background/ShadowPink.png');
- background-repeat: no-repeat;
- background-position: left -142px;
-}
-
-.ShadowPink .WindowBarRight {
- padding-right: 10px;
- background-image: url('background/ShadowPink.png');
- background-repeat: no-repeat;
- background-position: right -113px;
-}
-
-.ShadowPink .WindowBarCenter {
- background-image: url('background/ShadowPink.png');
- background-repeat: repeat-x;
- background-position: center -84px;
-}
-
-.ShadowPink .WindowBarCenter .FixHeight {
- height: 19px;
- padding-top: 10px;
-}
-
-.ShadowPink .MiddleDecoratorLeft {
- padding-left: 11px;
- background: url('background/MShadowPink.png') repeat-y left;
-}
-
-.ShadowPink .MiddleDecoratorRight {
- padding-right: 10px;
- background: url('background/MShadowPink.png') repeat-y right;
-}
-
-.ShadowPink .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .ShadowPink .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.ShadowPink .BottomDecoratorLeft {
- padding-left: 11px;
- background-image: url('background/ShadowPink.png');
- background-repeat: no-repeat;
- background-position: left -56px;
-}
-
-.ShadowPink .BottomDecoratorRight {
- padding-right: 10px;
- background-image: url('background/ShadowPink.png');
- background-repeat: no-repeat;
- background-position: right -28px;
-}
-
-.ShadowPink .BottomDecoratorCenter {
- background-image: url('background/ShadowPink.png');
- background-repeat: repeat-x;
- background-position: center top;
-}
-
-.ShadowPink .BottomDecoratorCenter .FixHeight {
- height: 28px;
-}
-
-/*------------------------------ ShadowGreen -----------------------------------*/
-
-
-.ShadowGreen .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.ShadowGreen .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/ShadowGreen.png');
-}
-
-.ShadowGreen .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.ShadowGreen .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.ShadowGreen .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 16px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.ShadowGreen .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.ShadowGreen .OverArrowDownIcon {
- background-position: center 116px;
-}
-
-.ShadowGreen .MinimizedIcon {
- background-position: center 44px;
-}
-
-.ShadowGreen .OverMinimizedIcon {
- background-position: center 140px;
-}
-
-.ShadowGreen .MaximizedIcon {
- background-position: center 68px;
-}
-
-.ShadowGreen .OverMaximizedIcon {
- background-position: center 164px;
-}
-
-.ShadowGreen .RestoreIcon {
- background-position: center 92px;
-}
-
-.ShadowGreen .OverRestoreIcon {
- background-position: center 188px;
-}
-
-.ShadowGreen .NormalIcon {
- background-position: center 92px;
-}
-
-.ShadowGreen .OverNormalIcon {
- background-position: center 188px;
-}
-
-.ShadowGreen .WindowBarLeft {
- padding-left: 11px;
- background-image: url('background/ShadowGreen.png');
- background-repeat: no-repeat;
- background-position: left -142px;
-}
-
-.ShadowGreen .WindowBarRight {
- padding-right: 10px;
- background-image: url('background/ShadowGreen.png');
- background-repeat: no-repeat;
- background-position: right -113px;
-}
-
-.ShadowGreen .WindowBarCenter {
- background-image: url('background/ShadowGreen.png');
- background-repeat: repeat-x;
- background-position: center -84px;
-}
-
-.ShadowGreen .WindowBarCenter .FixHeight {
- height: 20px;
- padding-top: 9px;
-}
-
-.ShadowGreen .MiddleDecoratorLeft {
- padding-left: 11px;
- background: url('background/MShadowGreen.png') repeat-y left;
-}
-
-.ShadowGreen .MiddleDecoratorRight {
- padding-right: 10px;
- background: url('background/MShadowGreen.png') repeat-y right;
-}
-
-.ShadowGreen .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .ShadowGreen .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.ShadowGreen .BottomDecoratorLeft {
- padding-left: 11px;
- background-image: url('background/ShadowGreen.png');
- background-repeat: no-repeat;
- background-position: left -56px;
-}
-
-.ShadowGreen .BottomDecoratorRight {
- padding-right: 10px;
- background-image: url('background/ShadowGreen.png');
- background-repeat: no-repeat;
- background-position: right -28px;
-}
-
-.ShadowGreen .BottomDecoratorCenter {
- background-image: url('background/ShadowGreen.png');
- background-repeat: repeat-x;
- background-position: center top;
-}
-
-.ShadowGreen .BottomDecoratorCenter .FixHeight {
- height: 28px;
-}
-
-/*------------------------------ SimpleBlue -----------------------------------*/
-
-.SimpleBlue .WindowBarCenter .WindowPortletInfo {
- margin-right: 60px; /* orientation=lt */
- margin-left: 60px; /* orientation=rt */
-}
-
-.SimpleBlue .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 16px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
-}
-
-.SimpleBlue .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.SimpleBlue .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.SimpleBlue .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.SimpleBlue .ArrowDownIcon {
- background: url('background/SimpleStyle.gif') left 16px;
-}
-
-.SimpleBlue .OverArrowDownIcon {
- background: url('background/SimpleStyle.gif') right 16px;
-}
-
-.SimpleBlue .MinimizedIcon {
- background: url('background/SimpleStyle.gif') left 32px;
-}
-
-.SimpleBlue .OverMinimizedIcon {
- background: url('background/SimpleStyle.gif') right 32px;
-}
-
-.SimpleBlue .MaximizedIcon {
- background: url('background/SimpleStyle.gif') left 48px;
-}
-
-.SimpleBlue .OverMaximizedIcon {
- background: url('background/SimpleStyle.gif') right 48px;
-}
-
-.SimpleBlue .RestoreIcon {
- background: url('background/SimpleStyle.gif') left 64px;
-}
-
-.SimpleBlue .OverRestoreIcon {
- background: url('background/SimpleStyle.gif') right 64px;
-}
-
-.SimpleBlue .NormalIcon {
- background: url('background/SimpleStyle.gif') left 64px;
-}
-
-.SimpleBlue .OverNormalIcon {
- background: url('background/SimpleStyle.gif') right 64px;
-}
-
-.SimpleBlue .WindowBarLeft {
- border: 1px solid #3d589d;
- border-bottom: none;
-}
-
-.SimpleBlue .WindowBarRight {
- border: 1px solid #d7e5f2;
-}
-
-.SimpleBlue .WindowBarCenter {
- background: #b0c0f5;
-}
-
-.SimpleBlue .WindowBarCenter .FixHeight {
- height: 18px;
- line-height: 18px;
-}
-
-
-.SimpleBlue .MiddleDecoratorLeft {
- border-left: 1px solid #3d589d;
- border-right: 1px solid #3d589d;
-}
-
-.SimpleBlue .MiddleDecoratorRight {
- border: 2px solid #d7e5f2;
- border-top: none;
- border-bottom: none;
-}
-
-.SimpleBlue .MiddleDecoratorCenter {
- border: 1px solid #4a67b1;
- border-bottom: none;
- background: #ffffff;
- padding: 1px;
-}
-
-.SimpleBlue .BottomDecoratorLeft {
- border-left: 1px solid #3d589d;
- border-right: 1px solid #3d589d;
- border-bottom: 1px solid #3d589d;
-}
-
-.SimpleBlue .BottomDecoratorRight {
- border: 2px solid #d7e5f2;
- border-top: none;
-}
-
-.SimpleBlue .BottomDecoratorCenter {
- border: 1px solid #4a67b1;
- border-top: none;
- background: white url('background/BGDecoratorCenter1x18.gif') repeat-x;
-}
-
-.SimpleBlue .BottomDecoratorCenter .FixHeight {
- height: 19px;
-}
-
-/*------------------------------ SimpleViolet -----------------------------------*/
-
-.SimpleViolet .WindowBarCenter .WindowPortletInfo {
- margin-right: 60px; /* orientation=lt */
- margin-left: 60px; /* orientation=rt */
-}
-
-.SimpleViolet .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 16px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
-}
-
-.SimpleViolet .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.SimpleViolet .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.SimpleViolet .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.SimpleViolet .ArrowDownIcon {
- background: url('background/SimpleStyle.gif') left 80px;
-}
-
-.SimpleViolet .OverArrowDownIcon {
- background: url('background/SimpleStyle.gif') right 80px;
-}
-
-.SimpleViolet .MinimizedIcon {
- background: url('background/SimpleStyle.gif') left 96px;
-}
-
-.SimpleViolet .OverMinimizedIcon {
- background: url('background/SimpleStyle.gif') right 96px;
-}
-
-.SimpleViolet .MaximizedIcon {
- background: url('background/SimpleStyle.gif') left 112px;
-}
-
-.SimpleViolet .OverMaximizedIcon {
- background: url('background/SimpleStyle.gif') right 112px;
-}
-
-.SimpleViolet .RestoreIcon {
- background: url('background/SimpleStyle.gif') left 128px;
-}
-
-.SimpleViolet .OverRestoreIcon {
- background: url('background/SimpleStyle.gif') right 128px;
-}
-
-.SimpleViolet .NormalIcon {
- background: url('background/SimpleStyle.gif') left 128px;
-}
-
-.SimpleViolet .OverNormalIcon {
- background: url('background/SimpleStyle.gif') right 128px;
-}
-
-.SimpleViolet .WindowBarLeft {
- border: 1px solid #c41fdc;
- border-bottom: none;
-}
-
-.SimpleViolet .WindowBarRight {
- border: 1px solid #ece7ff;
-}
-
-.SimpleViolet .WindowBarCenter {
- background: #c4a6ff;
-}
-
-.SimpleViolet .WindowBarCenter .FixHeight {
- height: 18px;
- line-height: 18px;
-}
-
-.SimpleViolet .MiddleDecoratorLeft {
- border-left: 1px solid #c41fdc;
- border-right: 1px solid #c41fdc;
-}
-
-.SimpleViolet .MiddleDecoratorRight {
- border: 2px solid #ece7ff;
- border-top: none;
- border-bottom: none;
-}
-
-.SimpleViolet .MiddleDecoratorCenter {
- border: 1px solid #5700a9;
- border-bottom: none;
- background: #ffffff;
- padding: 1px;
-}
-
-.SimpleViolet .BottomDecoratorLeft {
- border: 1px solid #c41fdc;
- border-top: none;
-}
-
-.SimpleViolet .BottomDecoratorRight {
- border: 2px solid #ece7ff;
- border-top: none;
-}
-
-.SimpleViolet .BottomDecoratorCenter {
- border: 1px solid #5700a9;
- border-top: none;
- background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
-}
-
-.SimpleViolet .BottomDecoratorCenter .FixHeight {
- height: 19px;
-}
-
-.UIPortlet .SimpleViolet .BottomDecoratorCenter {
- height: 18px;
-}
-
-/*------------------------------ SimpleOrange -----------------------------------*/
-
-.SimpleOrange .WindowBarCenter .WindowPortletInfo {
- margin-right: 60px; /* orientation=lt */
- margin-left: 60px; /* orientation=rt */
-}
-
-.SimpleOrange .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 16px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
-}
-
-.SimpleOrange .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.SimpleOrange .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.SimpleOrange .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.SimpleOrange .ArrowDownIcon {
- background: url('background/SimpleStyle.gif') left 144px;
-}
-
-.SimpleOrange .OverArrowDownIcon {
- background: url('background/SimpleStyle.gif') right 144px;
-}
-
-.SimpleOrange .MinimizedIcon {
- background: url('background/SimpleStyle.gif') left 160px;
-}
-
-.SimpleOrange .OverMinimizedIcon {
- background: url('background/SimpleStyle.gif') right 160px;
-}
-
-.SimpleOrange .MaximizedIcon {
- background: url('background/SimpleStyle.gif') left 192px;
-}
-
-.SimpleOrange .OverMaximizedIcon {
- background: url('background/SimpleStyle.gif') right 192px;
-}
-
-.SimpleOrange .RestoreIcon {
- background: url('background/SimpleStyle.gif') left 176px;
-}
-
-.SimpleOrange .OverRestoreIcon {
- background: url('background/SimpleStyle.gif') right 176px;
-}
-
-.SimpleOrange .NormalIcon {
- background: url('background/SimpleStyle.gif') left 176px;
-}
-
-.SimpleOrange .OverNormalIcon {
- background: url('background/SimpleStyle.gif') right 176px;
-}
-
-.SimpleOrange .WindowBarLeft {
- border: 1px solid #ffb27f;
- border-bottom: none;
-}
-
-.SimpleOrange .WindowBarRight {
- border: 1px solid #fff1e5;
-}
-
-.SimpleOrange .WindowBarCenter {
- background: #ffd1a8;
-}
-
-.SimpleOrange .WindowBarCenter .FixHeight {
- height: 18px;
- line-height: 18px;
-}
-
-.SimpleOrange .MiddleDecoratorLeft {
- border-left: 1px solid #ffb27f;
- border-right: 1px solid #ffb27f;
-}
-
-.SimpleOrange .MiddleDecoratorRight {
- border: 2px solid #fff1e5;
- border-top: none;
- border-bottom: none;
-}
-
-.SimpleOrange .MiddleDecoratorCenter {
- border: 1px solid #b27a49;
- border-bottom: none;
- background: #ffffff;
- padding: 1px;
-}
-
-.SimpleOrange .BottomDecoratorLeft {
- border: 1px solid #ffb27f;
- border-top: none;
-}
-
-.SimpleOrange .BottomDecoratorRight {
- border: 2px solid #fff1e5;
- border-top: none;
-}
-
-.SimpleOrange .BottomDecoratorCenter {
- border: 1px solid #b27a49;
- border-top: none;
- background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
-}
-
-.SimpleOrange .BottomDecoratorCenter .FixHeight {
- height: 19px;
-}
-
-.UIPortlet .SimpleOrange .BottomDecoratorCenter {
- height: 18px;
-}
-
-/*------------------------------ SimplePink -----------------------------------*/
-
-.SimplePink .WindowBarCenter .WindowPortletInfo {
- margin-right: 60px; /* orientation=lt */
- margin-left: 60px; /* orientation=rt */
-}
-
-.SimplePink .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 16px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
-}
-
-.SimplePink .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.SimplePink .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.SimplePink .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.SimplePink .ArrowDownIcon {
- background: url('background/SimpleStyle.gif') left 208px;
-}
-
-.SimplePink .OverArrowDownIcon {
- background: url('background/SimpleStyle.gif') right 208px;
-}
-
-.SimplePink .MinimizedIcon {
- background: url('background/SimpleStyle.gif') left 224px;
-}
-
-.SimplePink .OverMinimizedIcon {
- background: url('background/SimpleStyle.gif') right 224px;
-}
-
-.SimplePink .MaximizedIcon {
- background: url('background/SimpleStyle.gif') left 240px;
-}
-
-.SimplePink .OverMaximizedIcon {
- background: url('background/SimpleStyle.gif') right 240px;
-}
-
-.SimplePink .RestoreIcon {
- background: url('background/SimpleStyle.gif') left 256px;
-}
-
-.SimplePink .OverRestoreIcon {
- background: url('background/SimpleStyle.gif') right 256px;
-}
-
-.SimplePink .NormalIcon {
- background: url('background/SimpleStyle.gif') left 256px;
-}
-
-.SimplePink .OverNormalIcon {
- background: url('background/SimpleStyle.gif') right 256px;
-}
-
-.SimplePink .WindowBarLeft {
- border: 1px solid #b69db3;
- border-bottom: none;
-}
-
-.SimplePink .WindowBarRight {
- border: 1px solid #fff1fd;
-}
-
-.SimplePink .WindowBarCenter {
- background: #fdd8f9;
-}
-
-.SimplePink .WindowBarCenter .FixHeight {
- height: 18px;
- line-height: 18px;
-}
-
-.SimplePink .MiddleDecoratorLeft {
- border-left: 1px solid #b69db3;
- border-right: 1px solid #b69db3;
-}
-
-.SimplePink .MiddleDecoratorRight {
- border: 2px solid #fff1fd;
- border-top: none;
- border-bottom: none;
-}
-
-.SimplePink .MiddleDecoratorCenter {
- border: 1px solid #9a5591;
- border-bottom: none;
- background: #ffffff;
- padding: 1px;
-}
-
-.SimplePink .BottomDecoratorLeft {
- border: 1px solid #b69db3;
- border-top: none;
-}
-
-.SimplePink .BottomDecoratorRight {
- border: 2px solid #fff1fd;
- border-top: none;
-}
-
-.SimplePink .BottomDecoratorCenter {
- border: 1px solid #9a5591;
- border-top: none;
- background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
-}
-
-.SimplePink .BottomDecoratorCenter .FixHeight {
- height: 19px;
-}
-
-.UIPortlet .SimplePink .BottomDecoratorCenter {
- height: 18px;
-}
-
-/*------------------------------ SimpleGreen -----------------------------------*/
-
-.SimpleGreen .WindowBarCenter .WindowPortletInfo {
- margin-right: 60px; /* orientation=lt */
- margin-left: 60px; /* orientation=rt */
-}
-
-.SimpleGreen .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 16px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
-}
-
-.SimpleGreen .Information {
- line-height: 18px;
- width: 100px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.SimpleGreen .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.SimpleGreen .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.SimpleGreen .ArrowDownIcon {
- background: url('background/SimpleStyle.gif') left 272px;
-}
-
-.SimpleGreen .OverArrowDownIcon {
- background: url('background/SimpleStyle.gif') right 272px;
-}
-
-.SimpleGreen .MinimizedIcon {
- background: url('background/SimpleStyle.gif') left 288px;
-}
-
-.SimpleGreen .OverMinimizedIcon {
- background: url('background/SimpleStyle.gif') right 288px;
-}
-
-.SimpleGreen .MaximizedIcon {
- background: url('background/SimpleStyle.gif') left 304px;
-}
-
-.SimpleGreen .OverMaximizedIcon {
- background: url('background/SimpleStyle.gif') right 304px;
-}
-
-.SimpleGreen .RestoreIcon {
- background: url('background/SimpleStyle.gif') left 320px;
-}
-
-.SimpleGreen .OverRestoreIcon {
- background: url('background/SimpleStyle.gif') right 320px;
-}
-
-.SimpleGreen .NormalIcon {
- background: url('background/SimpleStyle.gif') left 320px;
-}
-
-.SimpleGreen .OverNormalIcon {
- background: url('background/SimpleStyle.gif') right 320px;
-}
-
-.SimpleGreen .WindowBarLeft {
- border: 1px solid #a0b9b6;
- border-bottom: none;
-}
-
-.SimpleGreen .WindowBarRight {
- border: 1px solid #eaf4ff;
-}
-
-.SimpleGreen .WindowBarCenter {
- background: #a3d0ff;
-}
-
-.SimpleGreen .WindowBarCenter .FixHeight {
- height: 18px;
- line-height: 18px;
-}
-
-
-.SimpleGreen .MiddleDecoratorLeft {
- border-left: 1px solid #a0b9b6;
- border-right: 1px solid #a0b9b6;
-}
-
-.SimpleGreen .MiddleDecoratorRight {
- border: 2px solid #eaf4ff;
- border-top: none;
- border-bottom: none;
-}
-
-.SimpleGreen .MiddleDecoratorCenter {
- background: #ffffff;
- border: 1px solid #4c717e;
- border-bottom: none;
- padding: 1px;
-}
-
-.SimpleGreen .BottomDecoratorLeft {
- border: 1px solid #a0b9b6;
- border-top: none;
-}
-
-.SimpleGreen .BottomDecoratorRight {
- background: #eaf4ff;
- padding: 0px 2px 2px 2px;
-}
-
-.SimpleGreen .BottomDecoratorCenter {
- border: 1px solid #4c717e;
- border-top: none;
- background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
-}
-
-.SimpleGreen .BottomDecoratorCenter .FixHeight {
- height: 19px;
-}
-
-.UIPortlet .SimpleGreen .BottomDecoratorCenter {
- height: 18px;
-}
Copied: epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/test/resources/skin/test_1.css (from rev 6772, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/resources/skin/test_1.css)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/test/resources/skin/test_1.css (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/component/web/resources/src/test/resources/skin/test_1.css 2011-09-22 13:49:58 UTC (rev 7486)
@@ -0,0 +1,3320 @@
+/**
+ * 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.
+ */
+
+/*-------------------------- DefaultTheme ---------------------------*/
+
+.DefaultTheme .WindowBarCenter .WindowPortletInfo {
+ margin-right: 80px; /* orientation=lt */
+ margin-left: 80px; /* orientation=rt */
+}
+
+.DefaultTheme .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 24px;
+ height: 17px;
+ cursor: pointer;
+ background-image: url('background/DefaultTheme.png');
+}
+
+.DefaultTheme .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.DefaultTheme .OverArrowDownIcon {
+ background-position: center 116px;
+}
+
+.DefaultTheme .MinimizedIcon {
+ background-position: center 44px;
+}
+
+.DefaultTheme .OverMinimizedIcon {
+ background-position: center 140px;
+}
+
+.DefaultTheme .MaximizedIcon {
+ background-position: center 68px;
+}
+
+.DefaultTheme .OverMaximizedIcon {
+ background-position: center 164px;
+}
+
+.DefaultTheme .RestoreIcon {
+ background-position: center 92px;
+}
+
+.DefaultTheme .OverRestoreIcon {
+ background-position: center 188px;
+}
+
+.DefaultTheme .NormalIcon {
+ background-position: center 92px;
+}
+
+.DefaultTheme .OverNormalIcon {
+ background-position: center 188px;
+}
+
+.DefaultTheme .Information {
+ height: 18px; line-height: 18px;
+ vertical-align: middle; font-size: 10px;
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+}
+
+.DefaultTheme .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+ line-height: 16px;
+}
+
+.DefaultTheme .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.DefaultTheme .WindowBarLeft {
+ padding-left: 12px;
+ background-image: url('background/DefaultTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -148px;
+}
+
+.DefaultTheme .WindowBarRight {
+ padding-right: 11px;
+ background-image: url('background/DefaultTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -119px;
+}
+
+.DefaultTheme .WindowBarCenter {
+ background-image: url('background/DefaultTheme.png');
+ background-repeat: repeat-x;
+ background-position: left -90px;
+}
+
+.DefaultTheme .WindowBarCenter .FixHeight {
+ height: 21px;
+ padding-top: 8px;
+}
+
+.DefaultTheme .MiddleDecoratorLeft {
+ padding-left: 12px;
+ background: url('background/MDefaultTheme.png') repeat-y left;
+}
+
+.DefaultTheme .MiddleDecoratorRight {
+ padding-right: 11px;
+ background: url('background/MDefaultTheme.png') repeat-y right;
+}
+
+.DefaultTheme .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.DefaultTheme .BottomDecoratorLeft {
+ padding-left: 12px;
+ background-image: url('background/DefaultTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -60px;
+}
+
+.DefaultTheme .BottomDecoratorRight {
+ padding-right: 11px;
+ background-image: url('background/DefaultTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -30px;
+}
+
+.DefaultTheme .BottomDecoratorCenter {
+ background-image: url('background/DefaultTheme.png');
+ background-repeat: repeat-x;
+ background-position: left top;
+}
+
+.DefaultTheme .BottomDecoratorCenter .FixHeight {
+ height: 30px;
+}
+
+/*-------------------------- MacTheme ---------------------------*/
+
+.MacTheme .WindowBarCenter .WindowPortletInfo {
+ margin: 0px 70px 0px 0px; /* orientation=lt */
+ margin: 0px 0px 0px 70px; /* orientation=rt */
+}
+
+.MacTheme .WindowBarCenter .WindowPortletIcon {
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.MacTheme .WindowBarCenter .PortletName {
+ font-weight: bold;
+ line-height: 17px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.MacTheme .WindowBarCenter .PortletIcon {
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
+}
+
+.MacTheme .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 21px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/MacTheme.png');
+}
+
+.MacTheme .ArrowDownIcon {
+ background-position: center 18px;
+}
+
+.MacTheme .OverArrowDownIcon {
+ background-position: center 98px;
+}
+
+.MacTheme .MinimizedIcon {
+ background-position: center 37px;
+}
+
+.MacTheme .OverMinimizedIcon {
+ background-position: center 118px;
+}
+
+.MacTheme .MaximizedIcon {
+ background-position: center 57px;
+}
+
+.MacTheme .OverMaximizedIcon {
+ background-position: center 138px;
+}
+
+.MacTheme .NormalIcon {
+ background-position: center 78px;
+}
+
+.MacTheme .OverNormalIcon {
+ background-position: center 158px;
+}
+
+.MacTheme .RestoreIcon {
+ background-position: center 78px;
+}
+
+.MacTheme .OverRestoreIcon {
+ background-position: center 158px;
+}
+
+.MacTheme .BackgroundIcon {
+ float: left; /* orientation=lt */
+ float: right; /* orientation=rt */
+ margin: 4px 2px 0px 2px;
+}
+
+.MacTheme .Information {
+ height: 16px; line-height: 14px; vertical-align: middle;
+ font-size: 10px;
+ margin-right: 18px;
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.MacTheme .MiddleDecoratorLeft {
+ background: url('background/MMacTheme.png') repeat-y left;
+ padding: 0px 0px 0px 5px;
+}
+
+.MacTheme .MiddleDecoratorRight {
+ padding: 0px 5px 0px 0px;
+ background: url('background/MMacTheme.png') repeat-y right;
+}
+
+.MacTheme .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .MacTheme .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.MacTheme .BottomDecoratorLeft {
+ background-image: url('background/MacTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -46px;
+ padding: 0px 0px 0px 5px;
+}
+
+.MacTheme .BottomDecoratorRight {
+ background-image: url('background/MacTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -23px;
+ padding: 0px 5px 0px 0px;
+}
+
+.MacTheme .BottomDecoratorCenter {
+ background-image: url('background/MacTheme.png');
+ background-repeat: repeat-x;
+ background-position: center top;
+}
+
+.MacTheme .BottomDecoratorCenter .FixHeight {
+ height: 23px; line-height: 23px;
+}
+
+.MacTheme .WindowBarLeft {
+ background-image: url('background/MacTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -115px;
+ padding: 0px 0px 0px 12px;
+}
+
+.MacTheme .WindowBarRight {
+ background-image: url('background/MacTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -92px;
+ padding: 0px 12px 0px 0px;
+}
+
+.MacTheme .WindowBarCenter {
+ background-image: url('background/MacTheme.png');
+ background-repeat: repeat-x;
+ background-position: center -69px;
+}
+
+.MacTheme .WindowBarCenter .FixHeight {
+ height: 19px;
+ padding-top: 4px;
+}
+
+/*-------------------------- MacGray ---------------------------*/
+
+.MacGray .WindowBarCenter .WindowPortletInfo {
+ margin: 0px 70px 0px 0px; /* orientation=lt */
+ margin: 0px 0px 0px 70px; /* orientation=rt */
+}
+
+.MacGray .WindowBarCenter .WindowPortletIcon {
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.MacGray .WindowBarCenter .PortletName {
+ font-weight: bold;
+ line-height: 17px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.MacGray .WindowBarCenter .PortletIcon {
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
+}
+
+.MacGray .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 21px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/MacGray.png');
+}
+
+.MacGray .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.MacGray .OverArrowDownIcon {
+ background-position: center 100px;
+}
+
+.MacGray .MinimizedIcon {
+ background-position: center 37px;
+}
+
+.MacGray .OverMinimizedIcon {
+ background-position: center 120px;
+}
+
+.MacGray .MaximizedIcon {
+ background-position: center 57px;
+}
+
+.MacGray .OverMaximizedIcon {
+ background-position: center 140px;
+}
+
+.MacGray .NormalIcon {
+ background-position: center 78px;
+}
+
+.MacGray .OverNormalIcon {
+ background-position: center 160px;
+}
+
+.MacGray .RestoreIcon {
+ background-position: center 78px;
+}
+
+.MacGray .OverRestoreIcon {
+ background-position: center 160px;
+}
+
+.MacGray .BackgroundIcon {
+ float: left; /* orientation=lt */
+ float: right; /* orientation=rt */
+ margin: 4px 2px 0px 2px;
+}
+
+.MacGray .Information {
+ height: 16px; line-height: 14px; vertical-align: middle;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.MacGray .MiddleDecoratorLeft {
+ background: url('background/MMacGray.png') repeat-y left;
+ padding: 0px 0px 0px 8px;
+}
+
+.MacGray .MiddleDecoratorRight {
+ padding: 0px 8px 0px 0px;
+ background: url('background/MMacGray.png') repeat-y right;
+}
+
+.MacGray .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.MacGray .MiddleDecoratorCenter {
+ height:100%;
+}
+
+.MacGray .BottomDecoratorLeft {
+ background-image: url('background/MacGray.png');
+ background-repeat: no-repeat;
+ background-position: left -48px;
+ padding: 0px 0px 0px 9px;
+}
+
+.MacGray .BottomDecoratorRight {
+ padding: 0px 9px 0px 0px;
+ background-image: url('background/MacGray.png');
+ background-repeat: no-repeat;
+ background-position: right -24px;
+}
+
+.MacGray .BottomDecoratorCenter {
+ background-image: url('background/MacGray.png');
+ background-repeat: repeat-x;
+ background-position: left top;
+}
+
+.MacGray .BottomDecoratorCenter .FixHeight {
+ height: 24px; line-height: 24px;
+}
+
+.MacGray .WindowBarLeft {
+ padding: 0px 0px 0px 9px;
+ background-image: url('background/MacGray.png');
+ background-repeat: no-repeat;
+ background-position: left -118px;
+}
+
+.MacGray .WindowBarRight {
+ padding: 0px 9px 0px 0px;
+ background-image: url('background/MacGray.png');
+ background-repeat: no-repeat;
+ background-position: right -95px;
+}
+
+.MacGray .WindowBarCenter {
+ background-image: url('background/MacGray.png');
+ background-repeat: repeat-x;
+ background-position: center -72px;
+}
+
+.MacGray .WindowBarCenter .FixHeight {
+ height: 19px;
+ padding-top: 4px;
+}
+
+/*-------------------------- MacBlack ---------------------------*/
+
+.MacBlack .WindowBarCenter .WindowPortletInfo {
+ margin: 0px 70px 0px 0px; /* orientation=lt */
+ margin: 0px 0px 0px 70px; /* orientation=rt */
+}
+
+.MacBlack .WindowBarCenter .WindowPortletIcon {
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.MacBlack .WindowBarCenter .PortletName {
+ font-weight: bold;
+ line-height: 17px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.MacBlack .WindowBarCenter .PortletIcon {
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
+}
+
+.MacBlack .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 21px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/MacBlack.png');
+}
+
+.MacBlack .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.MacBlack .OverArrowDownIcon {
+ background-position: center 100px;
+}
+
+.MacBlack .MinimizedIcon {
+ background-position: center 37px;
+}
+
+.MacBlack .OverMinimizedIcon {
+ background-position: center 120px;
+}
+
+.MacBlack .MaximizedIcon {
+ background-position: center 57px;
+}
+
+.MacBlack .OverMaximizedIcon {
+ background-position: center 140px;
+}
+
+.MacBlack .NormalIcon {
+ background-position: center 78px;
+}
+
+.MacBlack .OverNormalIcon {
+ background-position: center 160px;
+}
+
+.MacBlack .RestoreIcon {
+ background-position: center 78px;
+}
+
+.MacBlack .OverRestoreIcon {
+ background-position: center 160px;
+}
+
+.MacBlack .BackgroundIcon {
+ float: left; /* orientation=lt */
+ float: right; /* orientation=rt */
+ margin: 4px 2px 0px 2px;
+}
+
+.MacBlack .Information {
+ height: 16px; line-height: 14px; vertical-align: middle;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.MacBlack .MiddleDecoratorLeft {
+ background: url('background/MMacBlack.png') repeat-y left;
+ padding: 0px 0px 0px 8px;
+}
+
+.MacBlack .MiddleDecoratorRight {
+ padding: 0px 8px 0px 0px;
+ background: url('background/MMacBlack.png') repeat-y right;
+}
+
+.MacBlack .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .MacBlack .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.MacBlack .BottomDecoratorLeft {
+ background-image: url('background/MacBlack.png');
+ background-repeat: no-repeat;
+ background-position: left -48px;
+ padding: 0px 0px 0px 9px;
+}
+
+.MacBlack .BottomDecoratorRight {
+ padding: 0px 9px 0px 0px;
+ background-image: url('background/MacBlack.png');
+ background-repeat: no-repeat;
+ background-position: right -24px;
+}
+
+.MacBlack .BottomDecoratorCenter {
+ background-image: url('background/MacBlack.png');
+ background-repeat: repeat-x;
+ background-position: left top;
+}
+
+.MacBlack .BottomDecoratorCenter .FixHeight {
+ height: 24px; line-height: 24px;
+}
+
+.MacBlack .WindowBarLeft {
+ padding: 0px 0px 0px 9px;
+ background-image: url('background/MacBlack.png');
+ background-repeat: no-repeat;
+ background-position: left -118px;
+}
+
+.MacBlack .WindowBarRight {
+ padding: 0px 9px 0px 0px;
+ background-image: url('background/MacBlack.png');
+ background-repeat: no-repeat;
+ background-position: right -95px;
+}
+
+.MacBlack .WindowBarCenter {
+ background-image: url('background/MacBlack.png');
+ background-repeat: repeat-x;
+ background-position: center -72px;
+}
+
+.MacBlack .WindowBarCenter .FixHeight {
+ height: 19px;
+ padding-top: 4px;
+}
+
+/*-------------------------- MacGreenSteel ---------------------------*/
+
+.MacGreenSteel .WindowBarCenter .WindowPortletInfo {
+ margin: 0px 70px 0px 0px; /* orientation=lt */
+ margin: 0px 0px 0px 70px; /* orientation=rt */
+}
+
+.MacGreenSteel .WindowBarCenter .WindowPortletIcon {
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.MacGreenSteel .WindowBarCenter .PortletName {
+ font-weight: bold;
+ line-height: 17px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.MacGreenSteel .WindowBarCenter .PortletIcon {
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
+}
+
+.MacGreenSteel .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 21px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/MacGreen.png');
+}
+
+.MacGreenSteel .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.MacGreenSteel .OverArrowDownIcon {
+ background-position: center 100px;
+}
+
+.MacGreenSteel .MinimizedIcon {
+ background-position: center 37px;
+}
+
+.MacGreenSteel .OverMinimizedIcon {
+ background-position: center 120px;
+}
+
+.MacGreenSteel .MaximizedIcon {
+ background-position: center 57px;
+}
+
+.MacGreenSteel .OverMaximizedIcon {
+ background-position: center 140px;
+}
+
+.MacGreenSteel .NormalIcon {
+ background-position: center 78px;
+}
+
+.MacGreenSteel .OverNormalIcon {
+ background-position: center 160px;
+}
+
+.MacGreenSteel .RestoreIcon {
+ background-position: center 78px;
+}
+
+.MacGreenSteel .OverRestoreIcon {
+ background-position: center 160px;
+}
+
+.MacGreenSteel .BackgroundIcon {
+ float: left; /* orientation=lt */
+ float: right; /* orientation=rt */
+ margin: 4px 2px 0px 2px;
+}
+
+.MacGreenSteel .Information {
+ height: 16px; line-height: 14px; vertical-align: middle;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.MacGreenSteel .MiddleDecoratorLeft {
+ background: url('background/MMacGreen.png') repeat-y left;
+ padding: 0px 0px 0px 8px;
+}
+
+.MacGreenSteel .MiddleDecoratorRight {
+ padding: 0px 8px 0px 0px;
+ background: url('background/MMacGreen.png') repeat-y right;
+}
+
+.MacGreenSteel .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .MacGreenSteel .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.MacGreenSteel .BottomDecoratorLeft {
+ background-image: url('background/MacGreen.png');
+ background-repeat: no-repeat;
+ background-position: left -48px;
+ padding: 0px 0px 0px 9px;
+}
+
+.MacGreenSteel .BottomDecoratorRight {
+ padding: 0px 9px 0px 0px;
+ background-image: url('background/MacGreen.png');
+ background-repeat: no-repeat;
+ background-position: right -24px;
+}
+
+.MacGreenSteel .BottomDecoratorCenter {
+ background-image: url('background/MacGreen.png');
+ background-repeat: repeat-x;
+ background-position: left top;
+}
+
+.MacGreenSteel .BottomDecoratorCenter .FixHeight {
+ height: 24px; line-height: 24px;
+}
+
+.MacGreenSteel .WindowBarLeft {
+ padding: 0px 0px 0px 9px;
+ background-image: url('background/MacGreen.png');
+ background-repeat: no-repeat;
+ background-position: left -118px;
+}
+
+.MacGreenSteel .WindowBarRight {
+ padding: 0px 9px 0px 0px;
+ background-image: url('background/MacGreen.png');
+ background-repeat: no-repeat;
+ background-position: right -95px;
+}
+
+.MacGreenSteel .WindowBarCenter {
+ background-image: url('background/MacGreen.png');
+ background-repeat: repeat-x;
+ background-position: center -72px;
+}
+
+.MacGreenSteel .WindowBarCenter .FixHeight {
+ height: 19px;
+ padding-top: 4px;
+}
+
+/*-------------------------------- VistaTheme -----------------------------*/
+
+.VistaTheme .WindowBarCenter .WindowPortletInfo {
+ margin-right: 95px; /* orientation=lt */
+ margin-left: 95px; /* orientation=rt */
+
+}
+
+.VistaTheme .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 22px;
+}
+
+.VistaTheme .WindowBarCenter .PortletIcon {
+ background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon.png') no-repeat left 3px; /* orientation=lt */
+ background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon-rt.png') no-repeat right 3px; /* orientation=rt */
+}
+
+.VistaTheme .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 30px;
+ height: 20px;
+ cursor: pointer;
+ background-image: url('background/VistaTheme.png'); /* orientation=lt */
+ background-image: url('background/VistaTheme-rt.png'); /* orientation=rt */
+}
+
+.VistaTheme .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.VistaTheme .OverArrowDownIcon {
+ background-position: center 100px;
+}
+
+.VistaTheme .MinimizedIcon {
+ background-position: center 40px;
+}
+
+.VistaTheme .OverMinimizedIcon {
+ background-position: center 120px;
+}
+
+.VistaTheme .MaximizedIcon {
+ background-position: center 60px;
+}
+
+.VistaTheme .OverMaximizedIcon {
+ background-position: center 140px;
+}
+
+.VistaTheme .NormalIcon {
+ background-position: center 80px;
+}
+
+.VistaTheme .OverNormalIcon {
+ background-position: center 160px;
+}
+
+.VistaTheme .RestoreIcon {
+ background-position: center 80px;
+}
+
+.VistaTheme .OverRestoreIcon {
+ background-position: center 160px;
+}
+
+.VistaTheme .Information {
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+}
+
+.VistaTheme .MiddleDecoratorCenter {
+ background: #ffffff;
+ border: solid 1px #717171;
+}
+
+.VistaTheme .MiddleDecoratorLeft {
+ padding-left:12px;
+ background: url('background/MVistaTheme.png') repeat-y left;
+}
+
+.VistaTheme .MiddleDecoratorRight {
+ padding-right: 13px;
+ background: url('background/MVistaTheme.png') repeat-y right;
+}
+
+.UIPageBody .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.VistaTheme .BottomDecoratorLeft {
+ background-image: url('background/VistaTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -48px;
+ padding-left: 12px;
+}
+
+.VistaTheme .BottomDecoratorRight {
+ background-image: url('background/VistaTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -24px;
+ padding-right: 13px;
+}
+
+.VistaTheme .BottomDecoratorCenter {
+ background-image: url('background/VistaTheme.png');
+ background-repeat: repeat-x;
+ background-position: left top;
+}
+
+.VistaTheme .BottomDecoratorCenter .FixHeight {
+ height: 24px;
+}
+
+.VistaTheme .WindowBarCenter .PortletName {
+ font-weight: bold;
+ line-height: 22px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.VistaTheme .WindowBarLeft {
+ background-image: url('background/VistaTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -130px;
+ padding-left: 12px;
+}
+
+.VistaTheme .WindowBarRight {
+ background-image: url('background/VistaTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -101px;
+ padding-right: 16px;
+}
+
+.VistaTheme .WindowBarCenter {
+ background-image: url('background/VistaTheme.png');
+ background-repeat: repeat-x;
+ background-position: left -72px;
+}
+
+.VistaTheme .WindowBarCenter .FixHeight {
+ height: 24px;
+ padding-top: 5px;
+}
+
+/*-------------------------------- VistaBlue -----------------------------*/
+
+.VistaBlue .WindowBarCenter .WindowPortletInfo {
+ margin-right: 95px; /* orientation=lt */
+ margin-left: 95px; /* orientation=rt */
+
+}
+
+.VistaBlue .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 20px;
+}
+
+.VistaBlue .WindowBarCenter .PortletName {
+ font-weight: bold;
+ line-height: 22px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.VistaBlue .WindowBarCenter .PortletIcon {
+ background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon.png') no-repeat left 3px; /* orientation=lt */
+ background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon-rt.png') no-repeat right 3px; /* orientation=rt */
+}
+
+.VistaBlue .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 30px; height: 19px;
+ cursor: pointer;
+ background-image: url('background/VistaBlue.png');
+}
+
+.VistaBlue .ArrowDownIcon {
+ background-position: center 19px;
+}
+
+.VistaBlue .OverArrowDownIcon {
+ background-position: center 99px;
+}
+
+.VistaBlue .MinimizedIcon {
+ background-position: center 39px;
+}
+
+.VistaBlue .OverMinimizedIcon {
+ background-position: center 119px;
+}
+
+.VistaBlue .MaximizedIcon {
+ background-position: center 59px;
+}
+
+.VistaBlue .OverMaximizedIcon {
+ background-position: center 139px;
+}
+
+.VistaBlue .NormalIcon {
+ background-position: center 79px;
+}
+
+.VistaBlue .OverNormalIcon {
+ background-position: center 159px;
+}
+
+.VistaBlue .RestoreIcon {
+ background-position: center 79px;
+}
+
+.VistaBlue .OverRestoreIcon {
+ background-position: center 159px;
+}
+
+.VistaBlue .Information {
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+}
+
+.VistaBlue .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .VistaBlue .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.VistaBlue .MiddleDecoratorLeft {
+ padding-left: 15px;
+ background: url('background/MVistaBlue.png') repeat-y left;
+}
+
+.VistaBlue .MiddleDecoratorRight {
+ padding-right: 18px;
+ background: url('background/MVistaBlue.png') repeat-y right;
+}
+
+.UIPortlet .VistaBlue .MiddleDecoratorRight {
+ padding-right: 16px;
+}
+
+.VistaBlue .BottomDecoratorLeft {
+ background-image: url('background/VistaBlue.png');
+ background-repeat: no-repeat;
+ background-position: left -54px;
+ padding-left: 15px;
+}
+
+.VistaBlue .BottomDecoratorRight {
+ background-image: url('background/VistaBlue.png');
+ background-repeat: no-repeat;
+ background-position: right -27px;
+ padding-right: 15px;
+}
+
+.VistaBlue .BottomDecoratorCenter {
+ background-image: url('background/VistaBlue.png');
+ background-repeat: repeat-x;
+ background-position: left top;
+}
+
+.VistaBlue .BottomDecoratorCenter .FixHeight {
+ height: 27px;
+}
+
+.VistaBlue .WindowBarLeft {
+ background-image: url('background/VistaBlue.png');
+ background-repeat: no-repeat;
+ background-position: left -151px;
+ padding-left: 15px;
+}
+
+.VistaBlue .WindowBarRight {
+ background-image: url('background/VistaBlue.png');
+ background-repeat: no-repeat;
+ background-position: right -116px;
+ padding-right: 15px;
+}
+
+.VistaBlue .WindowBarCenter {
+ background-image: url('background/VistaBlue.png');
+ background-repeat: repeat-x;
+ background-position: left -81px;
+}
+
+.VistaBlue .WindowBarCenter .FixHeight {
+ height: 27px;
+ padding-top: 8px;
+}
+
+/*-------------------------- RoundConerBlue ---------------------------*/
+
+.RoundConerBlue .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+
+}
+
+.RoundConerBlue .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/RoundCornerBlue.png');
+}
+
+.RoundConerBlue .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.RoundConerBlue .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.RoundConerBlue .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 19px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.RoundConerBlue .ArrowDownIcon {
+ background-position: center 21px;
+}
+
+.RoundConerBlue .OverArrowDownIcon {
+ background-position: center 117px;
+}
+
+.RoundConerBlue .MinimizedIcon {
+ background-position: center 45px;
+}
+
+.RoundConerBlue .OverMinimizedIcon {
+ background-position: center 141px;
+}
+
+.RoundConerBlue .MaximizedIcon {
+ background-position: center 69px;
+}
+
+.RoundConerBlue .OverMaximizedIcon {
+ background-position: center 165px;
+}
+
+.RoundConerBlue .RestoreIcon {
+ background-position: center 93px;
+}
+
+.RoundConerBlue .OverRestoreIcon {
+ background-position: center 189px;
+}
+
+.RoundConerBlue .NormalIcon {
+ background-position: center 93px;
+}
+
+.RoundConerBlue .OverNormalIcon {
+ background-position: center 189px;
+}
+
+.RoundConerBlue .WindowBarLeft {
+ padding-left: 12px;
+ background-image: url('background/RoundCornerBlue.png');
+ background-repeat: no-repeat;
+ background-position: left -154px;
+}
+
+.RoundConerBlue .WindowBarRight {
+ padding-right: 12px;
+ background-image: url('background/RoundCornerBlue.png');
+ background-repeat: no-repeat;
+ background-position: right -122px;
+}
+
+.RoundConerBlue .WindowBarCenter {
+ background: url('background/RoundCornerBlue.png') repeat-x;
+ background-position: left -90px;
+}
+
+.RoundConerBlue .WindowBarCenter .FixHeight {
+ height: 22px;
+ padding-top: 10px;
+}
+
+.RoundConerBlue .MiddleDecoratorLeft {
+ padding-left: 13px;
+ background: url('background/MRoundConerBlue.png') repeat-y left;
+}
+
+.RoundConerBlue .MiddleDecoratorRight {
+ padding-right: 13px;
+ background: url('background/MRoundConerBlue.png') repeat-y right;
+}
+
+.RoundConerBlue .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .RoundConerBlue .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.RoundConerBlue .BottomDecoratorLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundCornerBlue.png');
+ background-repeat: no-repeat;
+ background-position: left -60px;
+}
+
+.RoundConerBlue .BottomDecoratorRight {
+ padding-right: 13px;
+ background-image: url('background/RoundCornerBlue.png');
+ background-repeat: no-repeat;
+ background-position: right -30px;
+}
+
+.RoundConerBlue .BottomDecoratorCenter {
+ background: url('background/RoundCornerBlue.png') repeat-x;
+ background-position: top;
+}
+
+.RoundConerBlue .BottomDecoratorCenter .FixHeight {
+ height: 30px;
+}
+
+/*------------------ RoundConerViolet -----------------*/
+
+.RoundConerViolet .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+
+}
+
+.RoundConerViolet .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/RoundConerViolet.png');
+}
+
+.RoundConerViolet .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ padding-left: 5px;
+ margin-right: 18px;
+}
+
+.RoundConerViolet .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.RoundConerViolet .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 19px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.RoundConerViolet .ArrowDownIcon {
+ background-position: center 21px;
+}
+
+.RoundConerViolet .OverArrowDownIcon {
+ background-position: center 117px;
+}
+
+.RoundConerViolet .MinimizedIcon {
+ background-position: center 45px;
+}
+
+.RoundConerViolet .OverMinimizedIcon {
+ background-position: center 141px;
+}
+
+.RoundConerViolet .MaximizedIcon {
+ background-position: center 69px;
+}
+
+.RoundConerViolet .OverMaximizedIcon {
+ background-position: center 165px;
+}
+
+.RoundConerViolet .RestoreIcon {
+ background-position: center 93px;
+}
+
+.RoundConerViolet .OverRestoreIcon {
+ background-position: center 189px;
+}
+
+.RoundConerViolet .NormalIcon {
+ background-position: center 93px;
+}
+
+.RoundConerViolet .OverNormalIcon {
+ background-position: center 189px;
+}
+
+.RoundConerViolet .WindowBarLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerViolet.png');
+ background-repeat: no-repeat;
+ background-position: left -153px;
+}
+
+.RoundConerViolet .WindowBarRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerViolet.png');
+ background-repeat: no-repeat;
+ background-position: right -121px;
+}
+
+.RoundConerViolet .WindowBarCenter {
+ background: url('background/RoundConerViolet.png') repeat-x;
+ background-position: left -90px;
+}
+
+.RoundConerViolet .WindowBarCenter .FixHeight {
+ height: 22px;
+ padding-top: 10px;
+}
+
+.UIPortlet .RoundConerViolet .WindowBarCenter {
+ height: 31px;
+}
+
+.RoundConerViolet .MiddleDecoratorLeft {
+ padding-left: 13px;
+ background: url('background/MRoundConerViolet.png') repeat-y left;
+}
+
+.RoundConerViolet .MiddleDecoratorRight {
+ padding-right: 13px;
+ background: url('background/MRoundConerViolet.png') repeat-y right;
+}
+
+.RoundConerViolet .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .RoundConerViolet .MiddleDecoratorCenter {
+ height:100%;
+}
+
+.RoundConerViolet .BottomDecoratorLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerViolet.png');
+ background-repeat: no-repeat;
+ background-position: left -60px;
+}
+
+.RoundConerViolet .BottomDecoratorRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerViolet.png');
+ background-repeat: no-repeat;
+ background-position: right -30px;
+}
+
+.RoundConerViolet .BottomDecoratorCenter {
+ background: url('background/RoundConerViolet.png') repeat-x;
+ background-position: top;
+}
+
+.RoundConerViolet .BottomDecoratorCenter .FixHeight {
+ height: 30px;
+}
+
+/*------------------------------- RoundConerOrange ----------------------------------*/
+
+.RoundConerOrange .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.RoundConerOrange .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/RoundConerOrange.png');
+}
+
+.RoundConerOrange .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.RoundConerOrange .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.RoundConerOrange .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 19px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.RoundConerOrange .ArrowDownIcon {
+ background-position: center 21px;
+}
+
+.RoundConerOrange .OverArrowDownIcon {
+ background-position: center 117px;
+}
+
+.RoundConerOrange .MinimizedIcon {
+ background-position: center 45px;
+}
+
+.RoundConerOrange .OverMinimizedIcon {
+ background-position: center 141px;
+}
+
+.RoundConerOrange .MaximizedIcon {
+ background-position: center 69px;
+}
+
+.RoundConerOrange .OverMaximizedIcon {
+ background-position: center 165px;
+}
+
+.RoundConerOrange .RestoreIcon {
+ background-position: center 93px;
+}
+
+.RoundConerOrange .OverRestoreIcon {
+ background-position: center 189px;
+}
+
+.RoundConerOrange .NormalIcon {
+ background-position: center 93px;
+}
+
+.RoundConerOrange .OverNormalIcon {
+ background-position: center 189px;
+}
+
+.RoundConerOrange .WindowBarLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerOrange.png');
+ background-repeat: no-repeat;
+ background-position: left -153px;
+}
+
+.RoundConerOrange .WindowBarRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerOrange.png');
+ background-repeat: no-repeat;
+ background-position: right -121px;
+}
+
+.RoundConerOrange .WindowBarCenter {
+ background: url('background/RoundConerOrange.png') repeat-x;
+ background-position: left -90px;
+}
+
+.RoundConerOrange .WindowBarCenter .FixHeight {
+ height: 22px;
+ padding-top: 10px;
+}
+
+.UIPortlet .RoundConerOrange .WindowBarCenter {
+ height: 31px;
+}
+
+.RoundConerOrange .MiddleDecoratorLeft {
+ padding-left: 13px;
+ background: url('background/MRoundConerOrange.png') repeat-y left;
+}
+
+.RoundConerOrange .MiddleDecoratorRight {
+ padding-right: 13px;
+ background: url('background/MRoundConerOrange.png') repeat-y right;
+}
+
+.RoundConerOrange .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .RoundConerOrange .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.RoundConerOrange .BottomDecoratorLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerOrange.png');
+ background-repeat: no-repeat;
+ background-position: left -60px;
+}
+
+.RoundConerOrange .BottomDecoratorRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerOrange.png');
+ background-repeat: no-repeat;
+ background-position: right -30px;
+}
+
+.RoundConerOrange .BottomDecoratorCenter {
+ background: url('background/RoundConerOrange.png') repeat-x;
+ background-position: top;
+}
+
+.RoundConerOrange .BottomDecoratorCenter .FixHeight {
+ height: 30px;
+}
+
+/*------------------------------- RoundConerPink ----------------------------------*/
+
+.RoundConerPink .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.RoundConerPink .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/RoundConerPink.png');
+}
+
+.RoundConerPink .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.RoundConerPink .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.RoundConerPink .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 19px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.RoundConerPink .ArrowDownIcon {
+ background-position: center 21px;
+}
+
+.RoundConerPink .OverArrowDownIcon {
+ background-position: center 117px;
+}
+
+.RoundConerPink .MinimizedIcon {
+ background-position: center 45px;
+}
+
+.RoundConerPink .OverMinimizedIcon {
+ background-position: center 141px;
+}
+
+.RoundConerPink .MaximizedIcon {
+ background-position: center 69px;
+}
+
+.RoundConerPink .OverMaximizedIcon {
+ background-position: center 165px;
+}
+
+.RoundConerPink .RestoreIcon {
+ background-position: center 93px;
+}
+
+.RoundConerPink .OverRestoreIcon {
+ background-position: center 189px;
+}
+
+.RoundConerPink .NormalIcon {
+ background-position: center 93px;
+}
+
+.RoundConerPink .OverNormalIcon {
+ background-position: center 189px;
+}
+
+.RoundConerPink .WindowBarLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerPink.png');
+ background-repeat: no-repeat;
+ background-position: left -153px;
+}
+
+.RoundConerPink .WindowBarRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerPink.png');
+ background-repeat: no-repeat;
+ background-position: right -121px;
+}
+
+.RoundConerPink .WindowBarCenter {
+ background: url('background/RoundConerPink.png') repeat-x;
+ background-position: left -90px;
+}
+
+.RoundConerPink .WindowBarCenter .FixHeight {
+ height: 22px;
+ padding-top: 10px;
+}
+
+.UIPortlet .RoundConerPink .WindowBarCenter {
+ height: 31px;
+}
+
+.RoundConerPink .MiddleDecoratorLeft {
+ padding-left: 13px;
+ background: url('background/MRoundConerPink.png') repeat-y left;
+}
+
+.RoundConerPink .MiddleDecoratorRight {
+ padding-right: 13px;
+ background: url('background/MRoundConerPink.png') repeat-y right;
+}
+
+.RoundConerPink .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .RoundConerPink .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.RoundConerPink .BottomDecoratorLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerPink.png');
+ background-repeat: no-repeat;
+ background-position: left -60px;
+}
+
+.RoundConerPink .BottomDecoratorRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerPink.png');
+ background-repeat: no-repeat;
+ background-position: right -30px;
+}
+
+.RoundConerPink .BottomDecoratorCenter {
+ background: url('background/RoundConerPink.png') repeat-x;
+ background-position: top;
+}
+
+.RoundConerPink .BottomDecoratorCenter .FixHeight {
+ height: 30px;
+}
+
+/*------------------------------- RoundConerGreen ----------------------------------*/
+
+.RoundConerGreen .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.RoundConerGreen .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/RoundConerGreen.png');
+}
+
+.RoundConerGreen .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.RoundConerGreen .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.RoundConerGreen .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 19px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.RoundConerGreen .ArrowDownIcon {
+ background-position: center 21px;
+}
+
+.RoundConerGreen .OverArrowDownIcon {
+ background-position: center 117px;
+}
+
+.RoundConerGreen .MinimizedIcon {
+ background-position: center 45px;
+}
+
+.RoundConerGreen .OverMinimizedIcon {
+ background-position: center 141px;
+}
+
+.RoundConerGreen .MaximizedIcon {
+ background-position: center 69px;
+}
+
+.RoundConerGreen .OverMaximizedIcon {
+ background-position: center 165px;
+}
+
+.RoundConerGreen .RestoreIcon {
+ background-position: center 93px;
+}
+
+.RoundConerGreen .OverRestoreIcon {
+ background-position: center 189px;
+}
+
+.RoundConerGreen .NormalIcon {
+ background-position: center 93px;
+}
+
+.RoundConerGreen .OverNormalIcon {
+ background-position: center 189px;
+}
+
+.RoundConerGreen .WindowBarLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerGreen.png');
+ background-repeat: no-repeat;
+ background-position: left -153px;
+}
+
+.RoundConerGreen .WindowBarRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerGreen.png');
+ background-repeat: no-repeat;
+ background-position: right -121px;
+}
+
+.RoundConerGreen .WindowBarCenter {
+ background: url('background/RoundConerGreen.png') repeat-x;
+ background-position: left -90px;
+}
+
+.RoundConerGreen .WindowBarCenter .FixHeight {
+ height: 22px;
+ padding-top: 10px;
+}
+
+.UIPortlet .RoundConerGreen .WindowBarCenter {
+ height: 31px;
+}
+
+.RoundConerGreen .MiddleDecoratorLeft {
+ padding-left: 13px;
+ background: url('background/MRoundConerGreen.png') repeat-y left;
+}
+
+.RoundConerGreen .MiddleDecoratorRight {
+ padding-right: 13px;
+ background: url('background/MRoundConerGreen.png') repeat-y right;
+}
+
+.RoundConerGreen .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .RoundConerGreen .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.RoundConerGreen .BottomDecoratorLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerGreen.png');
+ background-repeat: no-repeat;
+ background-position: left -60px;
+}
+
+.RoundConerGreen .BottomDecoratorRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerGreen.png');
+ background-repeat: no-repeat;
+ background-position: right -30px;
+}
+
+.RoundConerGreen .BottomDecoratorCenter {
+ background: url('background/RoundConerGreen.png') repeat-x;
+ background-position: top;
+}
+
+.RoundConerGreen .BottomDecoratorCenter .FixHeight {
+ height: 30px;
+}
+
+/*-------------------------- ShadowBlue ---------------------------*/
+
+.ShadowBlue .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.ShadowBlue .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/ShadowBlue.png');
+}
+
+.ShadowBlue .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.ShadowBlue .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.ShadowBlue .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 16px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.ShadowBlue .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.ShadowBlue .OverArrowDownIcon {
+ background-position: center 116px;
+}
+
+.ShadowBlue .MinimizedIcon {
+ background-position: center 44px;
+}
+
+.ShadowBlue .OverMinimizedIcon {
+ background-position: center 140px;
+}
+
+.ShadowBlue .MaximizedIcon {
+ background-position: center 68px;
+}
+
+.ShadowBlue .OverMaximizedIcon {
+ background-position: center 164px;
+}
+
+.ShadowBlue .RestoreIcon {
+ background-position: center 92px;
+}
+
+.ShadowBlue .OverRestoreIcon {
+ background-position: center 188px;
+}
+
+.ShadowBlue .NormalIcon {
+ background-position: center 92px;
+}
+
+.ShadowBlue .OverNormalIcon {
+ background-position: center 188px;
+}
+
+.ShadowBlue .WindowBarLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowBlue.png');
+ background-repeat: no-repeat;
+ background-position: left -142px;
+}
+
+.ShadowBlue .WindowBarRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowBlue.png');
+ background-repeat: no-repeat;
+ background-position: right -113px;
+}
+
+.ShadowBlue .WindowBarCenter {
+ background-image: url('background/ShadowBlue.png');
+ background-repeat: repeat-x;
+ background-position: center -84px;
+}
+
+.ShadowBlue .WindowBarCenter .FixHeight {
+ height: 20px;
+ padding-top: 9px;
+}
+
+.ShadowBlue .MiddleDecoratorLeft {
+ padding-left: 11px;
+ background: url('background/MShadowBlue.png') repeat-y left;
+}
+
+.ShadowBlue .MiddleDecoratorRight {
+ padding-right: 10px;
+ background: url('background/MShadowBlue.png') repeat-y right;
+}
+
+.ShadowBlue .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .ShadowBlue .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.ShadowBlue .BottomDecoratorLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowBlue.png');
+ background-repeat: no-repeat;
+ background-position: left -56px;
+}
+
+.ShadowBlue .BottomDecoratorRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowBlue.png');
+ background-repeat: no-repeat;
+ background-position: right -28px;
+}
+
+.ShadowBlue .BottomDecoratorCenter {
+ background-image: url('background/ShadowBlue.png');
+ background-repeat: repeat-x;
+ background-position: center top;
+}
+
+.ShadowBlue .BottomDecoratorCenter .FixHeight {
+ height: 28px;
+}
+
+/*------------------------------ ShadowViolet -----------------------------------*/
+
+.ShadowViolet .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.ShadowViolet .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/ShadowViolet.png');
+}
+
+.ShadowViolet .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.ShadowViolet .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.ShadowViolet .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 16px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.ShadowViolet .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.ShadowViolet .OverArrowDownIcon {
+ background-position: center 116px;
+}
+
+.ShadowViolet .MinimizedIcon {
+ background-position: center 44px;
+}
+
+.ShadowViolet .OverMinimizedIcon {
+ background-position: center 140px;
+}
+
+.ShadowViolet .MaximizedIcon {
+ background-position: center 68px;
+}
+
+.ShadowViolet .OverMaximizedIcon {
+ background-position: center 164px;
+}
+
+.ShadowViolet .RestoreIcon {
+ background-position: center 92px;
+}
+
+.ShadowViolet .OverRestoreIcon {
+ background-position: center 188px;
+}
+
+.ShadowViolet .NormalIcon {
+ background-position: center 92px;
+}
+
+.ShadowViolet .OverNormalIcon {
+ background-position: center 188px;
+}
+
+.ShadowViolet .WindowBarLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowViolet.png');
+ background-repeat: no-repeat;
+ background-position: left -142px;
+}
+
+.ShadowViolet .WindowBarRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowViolet.png');
+ background-repeat: no-repeat;
+ background-position: right -113px;
+}
+
+.ShadowViolet .WindowBarCenter {
+ background-image: url('background/ShadowViolet.png');
+ background-repeat: repeat-x;
+ background-position: center -84px;
+}
+
+.ShadowViolet .WindowBarCenter .FixHeight {
+ height: 20px;
+ padding-top: 9px;
+}
+
+.ShadowViolet .MiddleDecoratorLeft {
+ padding-left: 11px;
+ background: url('background/MShadowViolet.png') repeat-y left;
+}
+
+.ShadowViolet .MiddleDecoratorRight {
+ padding-right: 10px;
+ background: url('background/MShadowViolet.png') repeat-y right;
+}
+
+.ShadowViolet .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .ShadowViolet .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.ShadowViolet .BottomDecoratorLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowViolet.png');
+ background-repeat: no-repeat;
+ background-position: left -56px;
+}
+
+.ShadowViolet .BottomDecoratorRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowViolet.png');
+ background-repeat: no-repeat;
+ background-position: right -28px;
+}
+
+.ShadowViolet .BottomDecoratorCenter {
+ background-image: url('background/ShadowViolet.png');
+ background-repeat: repeat-x;
+ background-position: center top;
+}
+
+.ShadowViolet .BottomDecoratorCenter .FixHeight {
+ height: 28px;
+}
+
+/*------------------------------ ShadowOrange -----------------------------------*/
+
+.ShadowOrange .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.ShadowOrange .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/ShadowOrange.png');
+}
+
+.ShadowOrange .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.ShadowOrange .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.ShadowOrange .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 16px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.ShadowOrange .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.ShadowOrange .OverArrowDownIcon {
+ background-position: center 116px;
+}
+
+.ShadowOrange .MinimizedIcon {
+ background-position: center 44px;
+}
+
+.ShadowOrange .OverMinimizedIcon {
+ background-position: center 140px;
+}
+
+.ShadowOrange .MaximizedIcon {
+ background-position: center 68px;
+}
+
+.ShadowOrange .OverMaximizedIcon {
+ background-position: center 164px;
+}
+
+.ShadowOrange .RestoreIcon {
+ background-position: center 92px;
+}
+
+.ShadowOrange .OverRestoreIcon {
+ background-position: center 188px;
+}
+
+.ShadowOrange .NormalIcon {
+ background-position: center 92px;
+}
+
+.ShadowOrange .OverNormalIcon {
+ background-position: center 188px;
+}
+
+.ShadowOrange .WindowBarLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowOrange.png');
+ background-repeat: no-repeat;
+ background-position: left -142px;
+}
+
+.ShadowOrange .WindowBarRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowOrange.png');
+ background-repeat: no-repeat;
+ background-position: right -113px;
+}
+
+.ShadowOrange .WindowBarCenter {
+ background-image: url('background/ShadowOrange.png');
+ background-repeat: repeat-x;
+ background-position: center -84px;
+}
+
+.ShadowOrange .WindowBarCenter .FixHeight {
+ height: 19px;
+ padding-top: 10px;
+}
+
+.ShadowOrange .MiddleDecoratorLeft {
+ padding-left: 11px;
+ background: url('background/MShadowOrange.png') repeat-y left;
+}
+
+.ShadowOrange .MiddleDecoratorRight {
+ padding-right: 10px;
+ background: url('background/MShadowOrange.png') repeat-y right;
+}
+
+.ShadowOrange .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .ShadowOrange .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.ShadowOrange .BottomDecoratorLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowOrange.png');
+ background-repeat: no-repeat;
+ background-position: left -56px;
+}
+
+.ShadowOrange .BottomDecoratorRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowOrange.png');
+ background-repeat: no-repeat;
+ background-position: right -28px;
+}
+
+.ShadowOrange .BottomDecoratorCenter {
+ background-image: url('background/ShadowOrange.png');
+ background-repeat: repeat-x;
+ background-position: center top;
+}
+
+.ShadowOrange .BottomDecoratorCenter .FixHeight {
+ height: 28px;
+}
+
+/*------------------------------ ShadowPink -----------------------------------*/
+
+
+.ShadowPink .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.ShadowPink .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/ShadowPink.png');
+}
+
+.ShadowPink .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.ShadowPink .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.ShadowPink .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 16px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.ShadowPink .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.ShadowPink .OverArrowDownIcon {
+ background-position: center 116px;
+}
+
+.ShadowPink .MinimizedIcon {
+ background-position: center 44px;
+}
+
+.ShadowPink .OverMinimizedIcon {
+ background-position: center 140px;
+}
+
+.ShadowPink .MaximizedIcon {
+ background-position: center 68px;
+}
+
+.ShadowPink .OverMaximizedIcon {
+ background-position: center 164px;
+}
+
+.ShadowPink .RestoreIcon {
+ background-position: center 92px;
+}
+
+.ShadowPink .OverRestoreIcon {
+ background-position: center 188px;
+}
+
+.ShadowPink .NormalIcon {
+ background-position: center 92px;
+}
+
+.ShadowPink .OverNormalIcon {
+ background-position: center 188px;
+}
+
+.ShadowPink .WindowBarLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowPink.png');
+ background-repeat: no-repeat;
+ background-position: left -142px;
+}
+
+.ShadowPink .WindowBarRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowPink.png');
+ background-repeat: no-repeat;
+ background-position: right -113px;
+}
+
+.ShadowPink .WindowBarCenter {
+ background-image: url('background/ShadowPink.png');
+ background-repeat: repeat-x;
+ background-position: center -84px;
+}
+
+.ShadowPink .WindowBarCenter .FixHeight {
+ height: 19px;
+ padding-top: 10px;
+}
+
+.ShadowPink .MiddleDecoratorLeft {
+ padding-left: 11px;
+ background: url('background/MShadowPink.png') repeat-y left;
+}
+
+.ShadowPink .MiddleDecoratorRight {
+ padding-right: 10px;
+ background: url('background/MShadowPink.png') repeat-y right;
+}
+
+.ShadowPink .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .ShadowPink .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.ShadowPink .BottomDecoratorLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowPink.png');
+ background-repeat: no-repeat;
+ background-position: left -56px;
+}
+
+.ShadowPink .BottomDecoratorRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowPink.png');
+ background-repeat: no-repeat;
+ background-position: right -28px;
+}
+
+.ShadowPink .BottomDecoratorCenter {
+ background-image: url('background/ShadowPink.png');
+ background-repeat: repeat-x;
+ background-position: center top;
+}
+
+.ShadowPink .BottomDecoratorCenter .FixHeight {
+ height: 28px;
+}
+
+/*------------------------------ ShadowGreen -----------------------------------*/
+
+
+.ShadowGreen .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.ShadowGreen .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/ShadowGreen.png');
+}
+
+.ShadowGreen .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.ShadowGreen .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.ShadowGreen .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 16px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.ShadowGreen .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.ShadowGreen .OverArrowDownIcon {
+ background-position: center 116px;
+}
+
+.ShadowGreen .MinimizedIcon {
+ background-position: center 44px;
+}
+
+.ShadowGreen .OverMinimizedIcon {
+ background-position: center 140px;
+}
+
+.ShadowGreen .MaximizedIcon {
+ background-position: center 68px;
+}
+
+.ShadowGreen .OverMaximizedIcon {
+ background-position: center 164px;
+}
+
+.ShadowGreen .RestoreIcon {
+ background-position: center 92px;
+}
+
+.ShadowGreen .OverRestoreIcon {
+ background-position: center 188px;
+}
+
+.ShadowGreen .NormalIcon {
+ background-position: center 92px;
+}
+
+.ShadowGreen .OverNormalIcon {
+ background-position: center 188px;
+}
+
+.ShadowGreen .WindowBarLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowGreen.png');
+ background-repeat: no-repeat;
+ background-position: left -142px;
+}
+
+.ShadowGreen .WindowBarRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowGreen.png');
+ background-repeat: no-repeat;
+ background-position: right -113px;
+}
+
+.ShadowGreen .WindowBarCenter {
+ background-image: url('background/ShadowGreen.png');
+ background-repeat: repeat-x;
+ background-position: center -84px;
+}
+
+.ShadowGreen .WindowBarCenter .FixHeight {
+ height: 20px;
+ padding-top: 9px;
+}
+
+.ShadowGreen .MiddleDecoratorLeft {
+ padding-left: 11px;
+ background: url('background/MShadowGreen.png') repeat-y left;
+}
+
+.ShadowGreen .MiddleDecoratorRight {
+ padding-right: 10px;
+ background: url('background/MShadowGreen.png') repeat-y right;
+}
+
+.ShadowGreen .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .ShadowGreen .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.ShadowGreen .BottomDecoratorLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowGreen.png');
+ background-repeat: no-repeat;
+ background-position: left -56px;
+}
+
+.ShadowGreen .BottomDecoratorRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowGreen.png');
+ background-repeat: no-repeat;
+ background-position: right -28px;
+}
+
+.ShadowGreen .BottomDecoratorCenter {
+ background-image: url('background/ShadowGreen.png');
+ background-repeat: repeat-x;
+ background-position: center top;
+}
+
+.ShadowGreen .BottomDecoratorCenter .FixHeight {
+ height: 28px;
+}
+
+/*------------------------------ SimpleBlue -----------------------------------*/
+
+.SimpleBlue .WindowBarCenter .WindowPortletInfo {
+ margin-right: 60px; /* orientation=lt */
+ margin-left: 60px; /* orientation=rt */
+}
+
+.SimpleBlue .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 16px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+}
+
+.SimpleBlue .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.SimpleBlue .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.SimpleBlue .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.SimpleBlue .ArrowDownIcon {
+ background: url('background/SimpleStyle.gif') left 16px;
+}
+
+.SimpleBlue .OverArrowDownIcon {
+ background: url('background/SimpleStyle.gif') right 16px;
+}
+
+.SimpleBlue .MinimizedIcon {
+ background: url('background/SimpleStyle.gif') left 32px;
+}
+
+.SimpleBlue .OverMinimizedIcon {
+ background: url('background/SimpleStyle.gif') right 32px;
+}
+
+.SimpleBlue .MaximizedIcon {
+ background: url('background/SimpleStyle.gif') left 48px;
+}
+
+.SimpleBlue .OverMaximizedIcon {
+ background: url('background/SimpleStyle.gif') right 48px;
+}
+
+.SimpleBlue .RestoreIcon {
+ background: url('background/SimpleStyle.gif') left 64px;
+}
+
+.SimpleBlue .OverRestoreIcon {
+ background: url('background/SimpleStyle.gif') right 64px;
+}
+
+.SimpleBlue .NormalIcon {
+ background: url('background/SimpleStyle.gif') left 64px;
+}
+
+.SimpleBlue .OverNormalIcon {
+ background: url('background/SimpleStyle.gif') right 64px;
+}
+
+.SimpleBlue .WindowBarLeft {
+ border: 1px solid #3d589d;
+ border-bottom: none;
+}
+
+.SimpleBlue .WindowBarRight {
+ border: 1px solid #d7e5f2;
+}
+
+.SimpleBlue .WindowBarCenter {
+ background: #b0c0f5;
+}
+
+.SimpleBlue .WindowBarCenter .FixHeight {
+ height: 18px;
+ line-height: 18px;
+}
+
+
+.SimpleBlue .MiddleDecoratorLeft {
+ border-left: 1px solid #3d589d;
+ border-right: 1px solid #3d589d;
+}
+
+.SimpleBlue .MiddleDecoratorRight {
+ border: 2px solid #d7e5f2;
+ border-top: none;
+ border-bottom: none;
+}
+
+.SimpleBlue .MiddleDecoratorCenter {
+ border: 1px solid #4a67b1;
+ border-bottom: none;
+ background: #ffffff;
+ padding: 1px;
+}
+
+.SimpleBlue .BottomDecoratorLeft {
+ border-left: 1px solid #3d589d;
+ border-right: 1px solid #3d589d;
+ border-bottom: 1px solid #3d589d;
+}
+
+.SimpleBlue .BottomDecoratorRight {
+ border: 2px solid #d7e5f2;
+ border-top: none;
+}
+
+.SimpleBlue .BottomDecoratorCenter {
+ border: 1px solid #4a67b1;
+ border-top: none;
+ background: white url('background/BGDecoratorCenter1x18.gif') repeat-x;
+}
+
+.SimpleBlue .BottomDecoratorCenter .FixHeight {
+ height: 19px;
+}
+
+/*------------------------------ SimpleViolet -----------------------------------*/
+
+.SimpleViolet .WindowBarCenter .WindowPortletInfo {
+ margin-right: 60px; /* orientation=lt */
+ margin-left: 60px; /* orientation=rt */
+}
+
+.SimpleViolet .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 16px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+}
+
+.SimpleViolet .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.SimpleViolet .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.SimpleViolet .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.SimpleViolet .ArrowDownIcon {
+ background: url('background/SimpleStyle.gif') left 80px;
+}
+
+.SimpleViolet .OverArrowDownIcon {
+ background: url('background/SimpleStyle.gif') right 80px;
+}
+
+.SimpleViolet .MinimizedIcon {
+ background: url('background/SimpleStyle.gif') left 96px;
+}
+
+.SimpleViolet .OverMinimizedIcon {
+ background: url('background/SimpleStyle.gif') right 96px;
+}
+
+.SimpleViolet .MaximizedIcon {
+ background: url('background/SimpleStyle.gif') left 112px;
+}
+
+.SimpleViolet .OverMaximizedIcon {
+ background: url('background/SimpleStyle.gif') right 112px;
+}
+
+.SimpleViolet .RestoreIcon {
+ background: url('background/SimpleStyle.gif') left 128px;
+}
+
+.SimpleViolet .OverRestoreIcon {
+ background: url('background/SimpleStyle.gif') right 128px;
+}
+
+.SimpleViolet .NormalIcon {
+ background: url('background/SimpleStyle.gif') left 128px;
+}
+
+.SimpleViolet .OverNormalIcon {
+ background: url('background/SimpleStyle.gif') right 128px;
+}
+
+.SimpleViolet .WindowBarLeft {
+ border: 1px solid #c41fdc;
+ border-bottom: none;
+}
+
+.SimpleViolet .WindowBarRight {
+ border: 1px solid #ece7ff;
+}
+
+.SimpleViolet .WindowBarCenter {
+ background: #c4a6ff;
+}
+
+.SimpleViolet .WindowBarCenter .FixHeight {
+ height: 18px;
+ line-height: 18px;
+}
+
+.SimpleViolet .MiddleDecoratorLeft {
+ border-left: 1px solid #c41fdc;
+ border-right: 1px solid #c41fdc;
+}
+
+.SimpleViolet .MiddleDecoratorRight {
+ border: 2px solid #ece7ff;
+ border-top: none;
+ border-bottom: none;
+}
+
+.SimpleViolet .MiddleDecoratorCenter {
+ border: 1px solid #5700a9;
+ border-bottom: none;
+ background: #ffffff;
+ padding: 1px;
+}
+
+.SimpleViolet .BottomDecoratorLeft {
+ border: 1px solid #c41fdc;
+ border-top: none;
+}
+
+.SimpleViolet .BottomDecoratorRight {
+ border: 2px solid #ece7ff;
+ border-top: none;
+}
+
+.SimpleViolet .BottomDecoratorCenter {
+ border: 1px solid #5700a9;
+ border-top: none;
+ background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
+}
+
+.SimpleViolet .BottomDecoratorCenter .FixHeight {
+ height: 19px;
+}
+
+.UIPortlet .SimpleViolet .BottomDecoratorCenter {
+ height: 18px;
+}
+
+/*------------------------------ SimpleOrange -----------------------------------*/
+
+.SimpleOrange .WindowBarCenter .WindowPortletInfo {
+ margin-right: 60px; /* orientation=lt */
+ margin-left: 60px; /* orientation=rt */
+}
+
+.SimpleOrange .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 16px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+}
+
+.SimpleOrange .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.SimpleOrange .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.SimpleOrange .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.SimpleOrange .ArrowDownIcon {
+ background: url('background/SimpleStyle.gif') left 144px;
+}
+
+.SimpleOrange .OverArrowDownIcon {
+ background: url('background/SimpleStyle.gif') right 144px;
+}
+
+.SimpleOrange .MinimizedIcon {
+ background: url('background/SimpleStyle.gif') left 160px;
+}
+
+.SimpleOrange .OverMinimizedIcon {
+ background: url('background/SimpleStyle.gif') right 160px;
+}
+
+.SimpleOrange .MaximizedIcon {
+ background: url('background/SimpleStyle.gif') left 192px;
+}
+
+.SimpleOrange .OverMaximizedIcon {
+ background: url('background/SimpleStyle.gif') right 192px;
+}
+
+.SimpleOrange .RestoreIcon {
+ background: url('background/SimpleStyle.gif') left 176px;
+}
+
+.SimpleOrange .OverRestoreIcon {
+ background: url('background/SimpleStyle.gif') right 176px;
+}
+
+.SimpleOrange .NormalIcon {
+ background: url('background/SimpleStyle.gif') left 176px;
+}
+
+.SimpleOrange .OverNormalIcon {
+ background: url('background/SimpleStyle.gif') right 176px;
+}
+
+.SimpleOrange .WindowBarLeft {
+ border: 1px solid #ffb27f;
+ border-bottom: none;
+}
+
+.SimpleOrange .WindowBarRight {
+ border: 1px solid #fff1e5;
+}
+
+.SimpleOrange .WindowBarCenter {
+ background: #ffd1a8;
+}
+
+.SimpleOrange .WindowBarCenter .FixHeight {
+ height: 18px;
+ line-height: 18px;
+}
+
+.SimpleOrange .MiddleDecoratorLeft {
+ border-left: 1px solid #ffb27f;
+ border-right: 1px solid #ffb27f;
+}
+
+.SimpleOrange .MiddleDecoratorRight {
+ border: 2px solid #fff1e5;
+ border-top: none;
+ border-bottom: none;
+}
+
+.SimpleOrange .MiddleDecoratorCenter {
+ border: 1px solid #b27a49;
+ border-bottom: none;
+ background: #ffffff;
+ padding: 1px;
+}
+
+.SimpleOrange .BottomDecoratorLeft {
+ border: 1px solid #ffb27f;
+ border-top: none;
+}
+
+.SimpleOrange .BottomDecoratorRight {
+ border: 2px solid #fff1e5;
+ border-top: none;
+}
+
+.SimpleOrange .BottomDecoratorCenter {
+ border: 1px solid #b27a49;
+ border-top: none;
+ background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
+}
+
+.SimpleOrange .BottomDecoratorCenter .FixHeight {
+ height: 19px;
+}
+
+.UIPortlet .SimpleOrange .BottomDecoratorCenter {
+ height: 18px;
+}
+
+/*------------------------------ SimplePink -----------------------------------*/
+
+.SimplePink .WindowBarCenter .WindowPortletInfo {
+ margin-right: 60px; /* orientation=lt */
+ margin-left: 60px; /* orientation=rt */
+}
+
+.SimplePink .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 16px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+}
+
+.SimplePink .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.SimplePink .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.SimplePink .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.SimplePink .ArrowDownIcon {
+ background: url('background/SimpleStyle.gif') left 208px;
+}
+
+.SimplePink .OverArrowDownIcon {
+ background: url('background/SimpleStyle.gif') right 208px;
+}
+
+.SimplePink .MinimizedIcon {
+ background: url('background/SimpleStyle.gif') left 224px;
+}
+
+.SimplePink .OverMinimizedIcon {
+ background: url('background/SimpleStyle.gif') right 224px;
+}
+
+.SimplePink .MaximizedIcon {
+ background: url('background/SimpleStyle.gif') left 240px;
+}
+
+.SimplePink .OverMaximizedIcon {
+ background: url('background/SimpleStyle.gif') right 240px;
+}
+
+.SimplePink .RestoreIcon {
+ background: url('background/SimpleStyle.gif') left 256px;
+}
+
+.SimplePink .OverRestoreIcon {
+ background: url('background/SimpleStyle.gif') right 256px;
+}
+
+.SimplePink .NormalIcon {
+ background: url('background/SimpleStyle.gif') left 256px;
+}
+
+.SimplePink .OverNormalIcon {
+ background: url('background/SimpleStyle.gif') right 256px;
+}
+
+.SimplePink .WindowBarLeft {
+ border: 1px solid #b69db3;
+ border-bottom: none;
+}
+
+.SimplePink .WindowBarRight {
+ border: 1px solid #fff1fd;
+}
+
+.SimplePink .WindowBarCenter {
+ background: #fdd8f9;
+}
+
+.SimplePink .WindowBarCenter .FixHeight {
+ height: 18px;
+ line-height: 18px;
+}
+
+.SimplePink .MiddleDecoratorLeft {
+ border-left: 1px solid #b69db3;
+ border-right: 1px solid #b69db3;
+}
+
+.SimplePink .MiddleDecoratorRight {
+ border: 2px solid #fff1fd;
+ border-top: none;
+ border-bottom: none;
+}
+
+.SimplePink .MiddleDecoratorCenter {
+ border: 1px solid #9a5591;
+ border-bottom: none;
+ background: #ffffff;
+ padding: 1px;
+}
+
+.SimplePink .BottomDecoratorLeft {
+ border: 1px solid #b69db3;
+ border-top: none;
+}
+
+.SimplePink .BottomDecoratorRight {
+ border: 2px solid #fff1fd;
+ border-top: none;
+}
+
+.SimplePink .BottomDecoratorCenter {
+ border: 1px solid #9a5591;
+ border-top: none;
+ background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
+}
+
+.SimplePink .BottomDecoratorCenter .FixHeight {
+ height: 19px;
+}
+
+.UIPortlet .SimplePink .BottomDecoratorCenter {
+ height: 18px;
+}
+
+/*------------------------------ SimpleGreen -----------------------------------*/
+
+.SimpleGreen .WindowBarCenter .WindowPortletInfo {
+ margin-right: 60px; /* orientation=lt */
+ margin-left: 60px; /* orientation=rt */
+}
+
+.SimpleGreen .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 16px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+}
+
+.SimpleGreen .Information {
+ line-height: 18px;
+ width: 100px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.SimpleGreen .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.SimpleGreen .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.SimpleGreen .ArrowDownIcon {
+ background: url('background/SimpleStyle.gif') left 272px;
+}
+
+.SimpleGreen .OverArrowDownIcon {
+ background: url('background/SimpleStyle.gif') right 272px;
+}
+
+.SimpleGreen .MinimizedIcon {
+ background: url('background/SimpleStyle.gif') left 288px;
+}
+
+.SimpleGreen .OverMinimizedIcon {
+ background: url('background/SimpleStyle.gif') right 288px;
+}
+
+.SimpleGreen .MaximizedIcon {
+ background: url('background/SimpleStyle.gif') left 304px;
+}
+
+.SimpleGreen .OverMaximizedIcon {
+ background: url('background/SimpleStyle.gif') right 304px;
+}
+
+.SimpleGreen .RestoreIcon {
+ background: url('background/SimpleStyle.gif') left 320px;
+}
+
+.SimpleGreen .OverRestoreIcon {
+ background: url('background/SimpleStyle.gif') right 320px;
+}
+
+.SimpleGreen .NormalIcon {
+ background: url('background/SimpleStyle.gif') left 320px;
+}
+
+.SimpleGreen .OverNormalIcon {
+ background: url('background/SimpleStyle.gif') right 320px;
+}
+
+.SimpleGreen .WindowBarLeft {
+ border: 1px solid #a0b9b6;
+ border-bottom: none;
+}
+
+.SimpleGreen .WindowBarRight {
+ border: 1px solid #eaf4ff;
+}
+
+.SimpleGreen .WindowBarCenter {
+ background: #a3d0ff;
+}
+
+.SimpleGreen .WindowBarCenter .FixHeight {
+ height: 18px;
+ line-height: 18px;
+}
+
+
+.SimpleGreen .MiddleDecoratorLeft {
+ border-left: 1px solid #a0b9b6;
+ border-right: 1px solid #a0b9b6;
+}
+
+.SimpleGreen .MiddleDecoratorRight {
+ border: 2px solid #eaf4ff;
+ border-top: none;
+ border-bottom: none;
+}
+
+.SimpleGreen .MiddleDecoratorCenter {
+ background: #ffffff;
+ border: 1px solid #4c717e;
+ border-bottom: none;
+ padding: 1px;
+}
+
+.SimpleGreen .BottomDecoratorLeft {
+ border: 1px solid #a0b9b6;
+ border-top: none;
+}
+
+.SimpleGreen .BottomDecoratorRight {
+ background: #eaf4ff;
+ padding: 0px 2px 2px 2px;
+}
+
+.SimpleGreen .BottomDecoratorCenter {
+ border: 1px solid #4c717e;
+ border-top: none;
+ background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
+}
+
+.SimpleGreen .BottomDecoratorCenter .FixHeight {
+ height: 19px;
+}
+
+.UIPortlet .SimpleGreen .BottomDecoratorCenter {
+ height: 18px;
+}
Property changes on: epp/portal/branches/EPP_5_2_Branch/wsrp-integration
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/wsrp-integration:5868
/portal/branches/branch-GTNPORTAL-1592/wsrp-integration:4894
/portal/branches/branch-GTNPORTAL-1643/wsrp-integration:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/wsrp-integration:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/wsrp-integration:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/wsrp-integration:5765
/portal/branches/branch-GTNPORTAL-1790/wsrp-integration:5871
/portal/branches/branch-GTNPORTAL-1822/wsrp-integration:5943,5952
/portal/branches/branch-GTNPORTAL-1832/wsrp-integration:6030,6063
/portal/branches/branch-GTNPORTAL-1872/wsrp-integration:6400,6551
/portal/branches/branch-GTNPORTAL-1921/wsrp-integration:6603
/portal/branches/branch-GTNPORTAL-1963/wsrp-integration:6904,6915-6916
/portal/branches/decoupled-webos/wsrp-integration:6214-6243
/portal/branches/gatein-management/wsrp-integration:6920-6958
/portal/branches/global-portlet-metadata/wsrp-integration:6298-6384
/portal/branches/site-describability/wsrp-integration:6171-6235
/portal/trunk/wsrp-integration:4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7198,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/wsrp-integration:5868
/portal/branches/branch-GTNPORTAL-1592/wsrp-integration:4894
/portal/branches/branch-GTNPORTAL-1643/wsrp-integration:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/wsrp-integration:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/wsrp-integration:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/wsrp-integration:5765
/portal/branches/branch-GTNPORTAL-1790/wsrp-integration:5871
/portal/branches/branch-GTNPORTAL-1822/wsrp-integration:5943,5952
/portal/branches/branch-GTNPORTAL-1832/wsrp-integration:6030,6063
/portal/branches/branch-GTNPORTAL-1872/wsrp-integration:6400,6551
/portal/branches/branch-GTNPORTAL-1921/wsrp-integration:6603,6771-6772,6774
/portal/branches/branch-GTNPORTAL-1963/wsrp-integration:6904,6915-6916
/portal/branches/decoupled-webos/wsrp-integration:6214-6243
/portal/branches/gatein-management/wsrp-integration:6920-6958
/portal/branches/global-portlet-metadata/wsrp-integration:6298-6384
/portal/branches/site-describability/wsrp-integration:6171-6235
/portal/trunk/wsrp-integration:4876,4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7198,7239,7262,7308,7326,7331,7359,7367
13 years, 3 months
gatein SVN: r7485 - in components/wsrp/trunk/admin-gui/src: test/java/org/gatein/wsrp/admin/ui and 3 other directories.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2011-09-22 08:43:27 -0400 (Thu, 22 Sep 2011)
New Revision: 7485
Added:
components/wsrp/trunk/admin-gui/src/test/resources/Other.properties
components/wsrp/trunk/admin-gui/src/test/resources/locale/
components/wsrp/trunk/admin-gui/src/test/resources/locale/portlet/
components/wsrp/trunk/admin-gui/src/test/resources/locale/portlet/Resource.properties
Removed:
components/wsrp/trunk/admin-gui/src/test/resources/Resource.properties
Modified:
components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/BeanContext.java
components/wsrp/trunk/admin-gui/src/test/java/org/gatein/wsrp/admin/ui/BeanContextTestCase.java
Log:
- GTNWSRP-192: Improved (and fixed) test cases.
Modified: components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/BeanContext.java
===================================================================
--- components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/BeanContext.java 2011-09-22 12:06:15 UTC (rev 7484)
+++ components/wsrp/trunk/admin-gui/src/main/java/org/gatein/wsrp/admin/ui/BeanContext.java 2011-09-22 12:43:27 UTC (rev 7485)
@@ -44,7 +44,7 @@
protected final static Logger log = LoggerFactory.getLogger(BeanContext.class);
public static final String STATUS = "status";
- private static final String DEFAULT_RESOURCE_NAME = "locale.portlet.Resource";
+ static final String DEFAULT_RESOURCE_NAME = "locale.portlet.Resource";
private static final String UNEXPECTED_ERROR = "bean_support_unexpected_error";
private static final String CAUSE = "bean_support_cause";
private static final String CURRENT_PLACEHOLDER = "###";
Modified: components/wsrp/trunk/admin-gui/src/test/java/org/gatein/wsrp/admin/ui/BeanContextTestCase.java
===================================================================
--- components/wsrp/trunk/admin-gui/src/test/java/org/gatein/wsrp/admin/ui/BeanContextTestCase.java 2011-09-22 12:06:15 UTC (rev 7484)
+++ components/wsrp/trunk/admin-gui/src/test/java/org/gatein/wsrp/admin/ui/BeanContextTestCase.java 2011-09-22 12:43:27 UTC (rev 7485)
@@ -34,14 +34,24 @@
*/
public class BeanContextTestCase extends TestCase
{
- public void testMessageFormatting()
+
+ public void testDefaultMessageFormatting()
{
assertEquals("foo value", BeanContext.getLocalizedMessage("foo", Locale.getDefault()));
- assertEquals("foo value", BeanContext.getLocalizedMessage("foo", Locale.getDefault(), "Resource", "blah"));
- assertEquals("param value: foo", BeanContext.getLocalizedMessage("1param", Locale.getDefault(), "Resource", "foo"));
- assertEquals("param1 value: foo param2 value: bar", BeanContext.getLocalizedMessage("2params", Locale.getDefault(), "Resource", "foo", "bar"));
+ assertEquals("foo value", BeanContext.getLocalizedMessage("foo", Locale.getDefault(), BeanContext.DEFAULT_RESOURCE_NAME, "blah"));
+ assertEquals("param value: foo", BeanContext.getLocalizedMessage("1param", Locale.getDefault(), BeanContext.DEFAULT_RESOURCE_NAME, "foo"));
+ assertEquals("param1 value: foo param2 value: bar", BeanContext.getLocalizedMessage("2params", Locale.getDefault(), BeanContext.DEFAULT_RESOURCE_NAME, "foo", "bar"));
}
+ public void testMessageFormatting()
+ {
+ String resourceName = "Other";
+ assertEquals("other foo value", BeanContext.getLocalizedMessage("foo", Locale.getDefault(), resourceName));
+ assertEquals("other foo value", BeanContext.getLocalizedMessage("foo", Locale.getDefault(), resourceName, "blah"));
+ assertEquals("other param value: foo", BeanContext.getLocalizedMessage("1param", Locale.getDefault(), resourceName, "foo"));
+ assertEquals("other param1 value: foo param2 value: bar", BeanContext.getLocalizedMessage("2params", Locale.getDefault(), resourceName, "foo", "bar"));
+ }
+
public void testErrorMessage()
{
TestBeanContext context = new TestBeanContext();
Added: components/wsrp/trunk/admin-gui/src/test/resources/Other.properties
===================================================================
--- components/wsrp/trunk/admin-gui/src/test/resources/Other.properties (rev 0)
+++ components/wsrp/trunk/admin-gui/src/test/resources/Other.properties 2011-09-22 12:43:27 UTC (rev 7485)
@@ -0,0 +1,26 @@
+#
+# JBoss, a division of Red Hat
+# Copyright 2011, Red Hat Middleware, LLC, and individual
+# contributors as indicated by the @authors tag. See the
+# copyright.txt in the distribution for a full listing of
+# individual contributors.
+#
+# 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.
+#
+
+foo=other foo value
+1param=other param value: {0}
+2params=other param1 value: {0} param2 value: {1}
\ No newline at end of file
Deleted: components/wsrp/trunk/admin-gui/src/test/resources/Resource.properties
===================================================================
--- components/wsrp/trunk/admin-gui/src/test/resources/Resource.properties 2011-09-22 12:06:15 UTC (rev 7484)
+++ components/wsrp/trunk/admin-gui/src/test/resources/Resource.properties 2011-09-22 12:43:27 UTC (rev 7485)
@@ -1,3 +0,0 @@
-foo=foo value
-1param=param value: {0}
-2params=param1 value: {0} param2 value: {1}
\ No newline at end of file
Added: components/wsrp/trunk/admin-gui/src/test/resources/locale/portlet/Resource.properties
===================================================================
--- components/wsrp/trunk/admin-gui/src/test/resources/locale/portlet/Resource.properties (rev 0)
+++ components/wsrp/trunk/admin-gui/src/test/resources/locale/portlet/Resource.properties 2011-09-22 12:43:27 UTC (rev 7485)
@@ -0,0 +1,26 @@
+#
+# JBoss, a division of Red Hat
+# Copyright 2011, Red Hat Middleware, LLC, and individual
+# contributors as indicated by the @authors tag. See the
+# copyright.txt in the distribution for a full listing of
+# individual contributors.
+#
+# 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.
+#
+
+foo=foo value
+1param=param value: {0}
+2params=param1 value: {0} param2 value: {1}
\ No newline at end of file
13 years, 3 months