From 1d044810f952deb45594e37946ce161d91898c20 Mon Sep 17 00:00:00 2001 From: Martin Goik <goik@hdm-stuttgart.de> Date: Thu, 8 Jan 2015 14:30:58 +0100 Subject: [PATCH] Change of project name, schema for ehcache.xml --- Sda2/P/Jpa/HibernateCacheDemo/pom.xml | 4 +- .../src/main/resources/ehcache.xml | 3 +- .../src/main/resources/ehcache.xsd | 422 ++++++++++++++++++ 3 files changed, 427 insertions(+), 2 deletions(-) create mode 100644 Sda2/P/Jpa/HibernateCacheDemo/src/main/resources/ehcache.xsd diff --git a/Sda2/P/Jpa/HibernateCacheDemo/pom.xml b/Sda2/P/Jpa/HibernateCacheDemo/pom.xml index b3183ab89..b017ee5b6 100644 --- a/Sda2/P/Jpa/HibernateCacheDemo/pom.xml +++ b/Sda2/P/Jpa/HibernateCacheDemo/pom.xml @@ -3,8 +3,10 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mastertheboss</groupId> - <artifactId>EclipseJPAExample</artifactId> + <artifactId>HibernateCacheDemo</artifactId> <version>1.0-SNAPSHOT</version> + + <name>HibernateCacheDemo</name> <repositories> <repository> <id>EclipseLink Repo</id> diff --git a/Sda2/P/Jpa/HibernateCacheDemo/src/main/resources/ehcache.xml b/Sda2/P/Jpa/HibernateCacheDemo/src/main/resources/ehcache.xml index fbc01fcfd..7769aa8bf 100644 --- a/Sda2/P/Jpa/HibernateCacheDemo/src/main/resources/ehcache.xml +++ b/Sda2/P/Jpa/HibernateCacheDemo/src/main/resources/ehcache.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> -<ehcache> +<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="ehcache.xsd"> <diskStore path="/tmp/ehcache"/> <defaultCache maxElementsInMemory="10000" eternal="false" diff --git a/Sda2/P/Jpa/HibernateCacheDemo/src/main/resources/ehcache.xsd b/Sda2/P/Jpa/HibernateCacheDemo/src/main/resources/ehcache.xsd new file mode 100644 index 000000000..25fb48109 --- /dev/null +++ b/Sda2/P/Jpa/HibernateCacheDemo/src/main/resources/ehcache.xsd @@ -0,0 +1,422 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.7"> + + <xs:element name="ehcache"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="1" minOccurs="0" ref="diskStore"/> + <xs:element maxOccurs="1" minOccurs="0" ref="sizeOfPolicy"/> + <xs:element maxOccurs="1" minOccurs="0" ref="transactionManagerLookup"/> + <xs:element maxOccurs="1" minOccurs="0" ref="cacheManagerEventListenerFactory"/> + <xs:element maxOccurs="1" minOccurs="0" ref="managementRESTService"/> + <xs:element maxOccurs="unbounded" minOccurs="0" ref="cacheManagerPeerProviderFactory"/> + <xs:element maxOccurs="unbounded" minOccurs="0" ref="cacheManagerPeerListenerFactory"/> + <xs:element maxOccurs="1" minOccurs="0" ref="terracottaConfig"/> + <xs:element maxOccurs= "1" minOccurs="0" ref="defaultCache"/> + <xs:element maxOccurs="unbounded" minOccurs="0" ref="cache"/> + </xs:sequence> + <xs:attribute name="name" use="optional"/> + <xs:attribute default="true" name="updateCheck" type="xs:boolean" use="optional"/> + <xs:attribute default="autodetect" name="monitoring" type="monitoringType" use="optional"/> + <xs:attribute default="true" name="dynamicConfig" type="xs:boolean" use="optional"/> + <xs:attribute default="15" name="defaultTransactionTimeoutInSeconds" type="xs:integer" use="optional"/> + <xs:attribute default="0" name="maxBytesLocalHeap" type="memoryUnitOrPercentage" use="optional"/> + <xs:attribute default="0" name="maxBytesLocalOffHeap" type="memoryUnit" use="optional"/> + <xs:attribute default="0" name="maxBytesLocalDisk" type="memoryUnit" use="optional"/> + </xs:complexType> + </xs:element> + <xs:element name="managementRESTService"> + <xs:complexType> + <xs:attribute name="enabled" type="xs:boolean" use="optional"/> + <xs:attribute name="bind" use="optional"/> + <xs:attribute name="securityServiceLocation" use="optional"/> + <xs:attribute name="securityServiceTimeout" use="optional" type="xs:integer"/> + <xs:attribute name="sslEnabled" use="optional" type="xs:boolean"/> + <xs:attribute name="needClientAuth" use="optional" type="xs:boolean"/> + <xs:attribute name="sampleHistorySize" use="optional" type="xs:integer"/> + <xs:attribute name="sampleIntervalSeconds" use="optional" type="xs:integer"/> + <xs:attribute name="sampleSearchIntervalSeconds" use="optional" type="xs:integer"/> + </xs:complexType> + </xs:element> + <xs:element name="diskStore"> + <xs:complexType> + <xs:attribute name="path" use="optional"/> + </xs:complexType> + </xs:element> + <xs:element name="transactionManagerLookup"> + <xs:complexType> + <xs:attribute name="class" use="required"/> + <xs:attribute name="properties" use="optional"/> + <xs:attribute name="propertySeparator" use="optional"/> + </xs:complexType> + </xs:element> + <xs:element name="cacheManagerEventListenerFactory"> + <xs:complexType> + <xs:attribute name="class" use="required"/> + <xs:attribute name="properties" use="optional"/> + <xs:attribute name="propertySeparator" use="optional"/> + </xs:complexType> + </xs:element> + <xs:element name="cacheManagerPeerProviderFactory"> + <xs:complexType> + <xs:attribute name="class" use="required"/> + <xs:attribute name="properties" use="optional"/> + <xs:attribute name="propertySeparator" use="optional"/> + </xs:complexType> + </xs:element> + <xs:element name="cacheManagerPeerListenerFactory"> + <xs:complexType> + <xs:attribute name="class" use="required"/> + <xs:attribute name="properties" use="optional"/> + <xs:attribute name="propertySeparator" use="optional"/> + </xs:complexType> + </xs:element> + <xs:element name="terracottaConfig"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="1" minOccurs="0" name="tc-config"> + <xs:complexType> + <xs:sequence> + <xs:any maxOccurs="unbounded" minOccurs="0" processContents="skip"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute default="localhost:9510" name="url" use="optional"/> + <xs:attribute name="rejoin" type="xs:boolean" use="optional" default="false"/> + <xs:attribute name="wanEnabledTSA" type="xs:boolean" use="optional" default="false"/> + </xs:complexType> + </xs:element> + <!-- add clone support for addition of cacheExceptionHandler. Important! --> + <xs:element name="defaultCache"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheEventListenerFactory"/> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheExtensionFactory"/> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheLoaderFactory"/> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheDecoratorFactory"/> + <xs:element minOccurs="0" maxOccurs="1" ref="bootstrapCacheLoaderFactory"/> + <xs:element minOccurs="0" maxOccurs="1" ref="cacheExceptionHandlerFactory"/> + <xs:element minOccurs="0" maxOccurs="1" ref="pinning"/> + <xs:element minOccurs="0" maxOccurs="1" ref="terracotta"/> + <xs:element minOccurs="0" maxOccurs="1" ref="cacheWriter"/> + <xs:element minOccurs="0" maxOccurs="1" ref="copyStrategy"/> + <xs:element minOccurs="0" maxOccurs="1" ref="elementValueComparator"/> + <xs:element minOccurs="0" maxOccurs="1" ref="sizeOfPolicy"/> + <xs:element minOccurs="0" maxOccurs="1" ref="persistence"/> + </xs:sequence> + <xs:attribute name="diskExpiryThreadIntervalSeconds" type="xs:integer" use="optional"/> + <xs:attribute name="diskSpoolBufferSizeMB" type="xs:integer" use="optional"/> + <xs:attribute name="diskPersistent" type="xs:boolean" use="optional"/> + <xs:attribute name="diskAccessStripes" type="xs:integer" use="optional" default="1"/> + <xs:attribute name="eternal" type="xs:boolean" use="optional" default="false"/> + <xs:attribute name="maxElementsInMemory" type="xs:nonNegativeInteger" use="optional"/> + <xs:attribute name="maxEntriesLocalHeap" type="xs:nonNegativeInteger" use="optional"/> + <xs:attribute name="clearOnFlush" type="xs:boolean" use="optional"/> + <xs:attribute name="memoryStoreEvictionPolicy" type="xs:string" use="optional"/> + <xs:attribute name="overflowToDisk" type="xs:boolean" use="optional"/> + <xs:attribute name="timeToIdleSeconds" type="xs:nonNegativeInteger" use="optional"/> + <xs:attribute name="timeToLiveSeconds" type="xs:nonNegativeInteger" use="optional"/> + <xs:attribute name="maxElementsOnDisk" type="xs:nonNegativeInteger" use="optional"/> + <xs:attribute name="maxEntriesLocalDisk" type="xs:nonNegativeInteger" use="optional"/> + <xs:attribute name="transactionalMode" type="transactionalMode" use="optional" default="off"/> + <xs:attribute name="statistics" type="xs:boolean" use="optional" default="false"/> + <xs:attribute name="copyOnRead" type="xs:boolean" use="optional" default="false"/> + <xs:attribute name="copyOnWrite" type="xs:boolean" use="optional" default="false"/> + <xs:attribute name="cacheLoaderTimeoutMillis" type="xs:integer" use="optional" default="0"/> + <xs:attribute name="overflowToOffHeap" type="xs:boolean" use="optional" default="false"/> + <xs:attribute name="maxMemoryOffHeap" type="xs:string" use="optional"/> + </xs:complexType> + </xs:element> + <xs:element name="cache"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheEventListenerFactory"/> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheExtensionFactory"/> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheLoaderFactory"/> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="cacheDecoratorFactory"/> + <xs:element minOccurs="0" maxOccurs="1" ref="bootstrapCacheLoaderFactory"/> + <xs:element minOccurs="0" maxOccurs="1" ref="cacheExceptionHandlerFactory"/> + <xs:element minOccurs="0" maxOccurs="1" ref="pinning"/> + <xs:element minOccurs="0" maxOccurs="1" ref="terracotta"/> + <xs:element minOccurs="0" maxOccurs="1" ref="cacheWriter"/> + <xs:element minOccurs="0" maxOccurs="1" ref="copyStrategy"/> + <xs:element minOccurs="0" maxOccurs="1" ref="searchable"/> + <xs:element minOccurs="0" maxOccurs="1" ref="elementValueComparator"/> + <xs:element minOccurs="0" maxOccurs="1" ref="sizeOfPolicy"/> + <xs:element minOccurs="0" maxOccurs="1" ref="persistence"/> + </xs:sequence> + <xs:attribute name="diskExpiryThreadIntervalSeconds" type="xs:integer" use="optional"/> + <xs:attribute name="diskSpoolBufferSizeMB" type="xs:integer" use="optional"/> + <xs:attribute name="diskPersistent" type="xs:boolean" use="optional"/> + <xs:attribute name="diskAccessStripes" type="xs:integer" use="optional" default="1"/> + <xs:attribute name="eternal" type="xs:boolean" use="optional" default="false"/> + <xs:attribute name="maxElementsInMemory" type="xs:nonNegativeInteger" use="optional"/> + <xs:attribute name="maxEntriesLocalHeap" type="xs:nonNegativeInteger" use="optional"/> + <xs:attribute name="memoryStoreEvictionPolicy" type="xs:string" use="optional"/> + <xs:attribute name="clearOnFlush" type="xs:boolean" use="optional"/> + <xs:attribute name="name" type="xs:string" use="required"/> + <xs:attribute name="overflowToDisk" type="xs:boolean" use="optional"/> + <xs:attribute name="timeToIdleSeconds" type="xs:nonNegativeInteger" use="optional"/> + <xs:attribute name="timeToLiveSeconds" type="xs:nonNegativeInteger" use="optional"/> + <xs:attribute name="maxElementsOnDisk" type="xs:nonNegativeInteger" use="optional"/> + <xs:attribute name="maxEntriesLocalDisk" type="xs:nonNegativeInteger" use="optional"/> + <xs:attribute name="maxEntriesInCache" type="xs:nonNegativeInteger" use="optional"/> + <xs:attribute name="transactionalMode" type="transactionalMode" use="optional" default="off" /> + <xs:attribute name="statistics" type="xs:boolean" use="optional" default="false"/> + <xs:attribute name="copyOnRead" type="xs:boolean" use="optional" default="false"/> + <xs:attribute name="copyOnWrite" type="xs:boolean" use="optional" default="false"/> + <xs:attribute name="logging" type="xs:boolean" use="optional" default="false"/> + <xs:attribute name="cacheLoaderTimeoutMillis" type="xs:integer" use="optional" default="0"/> + <xs:attribute name="overflowToOffHeap" type="xs:boolean" use="optional" default="false"/> + <xs:attribute name="maxMemoryOffHeap" type="xs:string" use="optional"/> + <xs:attribute default="0" name="maxBytesLocalHeap" type="memoryUnitOrPercentage" use="optional"/> + <xs:attribute default="0" name="maxBytesLocalOffHeap" type="memoryUnitOrPercentage" use="optional"/> + <xs:attribute default="0" name="maxBytesLocalDisk" type="memoryUnitOrPercentage" use="optional"/> + </xs:complexType> + </xs:element> + <xs:element name="cacheEventListenerFactory"> + <xs:complexType> + <xs:attribute name="class" use="required"/> + <xs:attribute name="properties" use="optional"/> + <xs:attribute name="propertySeparator" use="optional"/> + <xs:attribute name="listenFor" use="optional" type="notificationScope" default="all"/> + </xs:complexType> + </xs:element> + <xs:element name="bootstrapCacheLoaderFactory"> + <xs:complexType> + <xs:attribute name="class" use="required"/> + <xs:attribute name="properties" use="optional"/> + <xs:attribute name="propertySeparator" use="optional"/> + </xs:complexType> + </xs:element> + <xs:element name="cacheExtensionFactory"> + <xs:complexType> + <xs:attribute name="class" use="required"/> + <xs:attribute name="properties" use="optional"/> + <xs:attribute name="propertySeparator" use="optional"/> + </xs:complexType> + </xs:element> + <xs:element name="cacheExceptionHandlerFactory"> + <xs:complexType> + <xs:attribute name="class" use="required"/> + <xs:attribute name="properties" use="optional"/> + <xs:attribute name="propertySeparator" use="optional"/> + </xs:complexType> + </xs:element> + <xs:element name="cacheLoaderFactory"> + <xs:complexType> + <xs:attribute name="class" use="required"/> + <xs:attribute name="properties" use="optional"/> + <xs:attribute name="propertySeparator" use="optional"/> + </xs:complexType> + </xs:element> + <xs:element name="cacheDecoratorFactory"> + <xs:complexType> + <xs:attribute name="class" use="required"/> + <xs:attribute name="properties" use="optional"/> + <xs:attribute name="propertySeparator" use="optional"/> + </xs:complexType> + </xs:element> + <xs:element name="searchAttribute"> + <xs:complexType> + <xs:attribute name="name" use="required" type="xs:string" /> + <xs:attribute name="expression" type="xs:string" /> + <xs:attribute name="class" type="xs:string" /> + <xs:attribute name="type" type="xs:string" use="optional"/> + <xs:attribute name="properties" use="optional" /> + <xs:attribute name="propertySeparator" use="optional" /> + </xs:complexType> + </xs:element> + + <xs:element name="searchable"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="unbounded" ref="searchAttribute"/> + </xs:sequence> + <xs:attribute name="keys" use="optional" type="xs:boolean" default="true"/> + <xs:attribute name="values" use="optional" type="xs:boolean" default="true"/> + <xs:attribute name="allowDynamicIndexing" use="optional" type="xs:boolean" default="false"/> + </xs:complexType> + </xs:element> + + <xs:element name="pinning"> + <xs:complexType> + <xs:attribute name="store" use="required" type="pinningStoreType"/> + </xs:complexType> + </xs:element> + + <xs:element name="terracotta"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="1" ref="nonstop"/> + </xs:sequence> + <xs:attribute name="clustered" use="optional" type="xs:boolean" default="true"/> + <xs:attribute name="coherentReads" use="optional" type="xs:boolean" default="true"/> + <xs:attribute name="localKeyCache" use="optional" type="xs:boolean" default="false"/> + <xs:attribute name="localKeyCacheSize" use="optional" type="xs:positiveInteger" default="300000"/> + <xs:attribute name="orphanEviction" use="optional" type="xs:boolean" default="true"/> + <xs:attribute name="orphanEvictionPeriod" use="optional" type="xs:positiveInteger" default="4"/> + <xs:attribute name="copyOnRead" use="optional" type="xs:boolean" default="false"/> + <xs:attribute name="coherent" use="optional" type="xs:boolean" default="false"/> + <xs:attribute name="consistency" use="optional" type="consistencyType" default="eventual"/> + <xs:attribute name="synchronousWrites" use="optional" type="xs:boolean" default="false"/> + <xs:attribute name="concurrency" use="optional" type="xs:nonNegativeInteger" default="0"/> + <xs:attribute name="localCacheEnabled" use="optional" type="xs:boolean" default="true"/> + <xs:attribute name="compressionEnabled" use="optional" type="xs:boolean" default="false"/> + </xs:complexType> + </xs:element> + <xs:simpleType name="consistencyType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="strong" /> + <xs:enumeration value="eventual" /> + </xs:restriction> + </xs:simpleType> + <xs:element name="nonstop"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" maxOccurs="1" ref="timeoutBehavior"/> + </xs:sequence> + <xs:attribute name="enabled" use="optional" type="xs:boolean" default="true"/> + <xs:attribute name="immediateTimeout" use="optional" type="xs:boolean" default="false"/> + <xs:attribute name="timeoutMillis" use="optional" type="xs:positiveInteger" default="30000"/> + <xs:attribute name="searchTimeoutMillis" use="optional" type="xs:positiveInteger" default="30000"/> + </xs:complexType> + </xs:element> + <xs:element name="timeoutBehavior"> + <xs:complexType> + <xs:attribute name="type" use="optional" type="timeoutBehaviorType" default="exception"/> + <xs:attribute name="properties" use="optional" default=""/> + <xs:attribute name="propertySeparator" use="optional" default=","/> + </xs:complexType> + </xs:element> + <xs:simpleType name="timeoutBehaviorType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="noop" /> + <xs:enumeration value="exception" /> + <xs:enumeration value="localReads" /> + <xs:enumeration value="localReadsAndExceptionOnWrite" /> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="monitoringType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="autodetect"/> + <xs:enumeration value="on"/> + <xs:enumeration value="off"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="pinningStoreType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="localMemory" /> + <xs:enumeration value="inCache" /> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="terracottaCacheValueType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="serialization" /> + <xs:enumeration value="identity" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="transactionalMode"> + <xs:restriction base="xs:string"> + <xs:enumeration value="off"/> + <xs:enumeration value="xa_strict"/> + <xs:enumeration value="xa"/> + <xs:enumeration value="local"/> + </xs:restriction> + </xs:simpleType> + + <xs:element name="cacheWriter"> + <xs:complexType> + <xs:sequence > + <xs:element minOccurs="0" maxOccurs="1" ref="cacheWriterFactory"/> + </xs:sequence> + <xs:attribute name="writeMode" use="optional" type="writeModeType" default="write-through"/> + <xs:attribute name="notifyListenersOnException" use="optional" type="xs:boolean" default="false"/> + <xs:attribute name="minWriteDelay" use="optional" type="xs:nonNegativeInteger" default="1"/> + <xs:attribute name="maxWriteDelay" use="optional" type="xs:nonNegativeInteger" default="1"/> + <xs:attribute name="rateLimitPerSecond" use="optional" type="xs:nonNegativeInteger" default="0"/> + <xs:attribute name="writeCoalescing" use="optional" type="xs:boolean" default="false"/> + <xs:attribute name="writeBatching" use="optional" type="xs:boolean" default="false"/> + <xs:attribute name="writeBatchSize" use="optional" type="xs:positiveInteger" default="1"/> + <xs:attribute name="retryAttempts" use="optional" type="xs:nonNegativeInteger" default="0"/> + <xs:attribute name="retryAttemptDelaySeconds" use="optional" type="xs:nonNegativeInteger" default="1"/> + <xs:attribute name="writeBehindConcurrency" use="optional" type="xs:nonNegativeInteger" default="1"/> + <xs:attribute name="writeBehindMaxQueueSize" use="optional" type="xs:nonNegativeInteger" default="0"/> + </xs:complexType> + </xs:element> + <xs:simpleType name="writeModeType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="write-through" /> + <xs:enumeration value="write-behind" /> + </xs:restriction> + </xs:simpleType> + <xs:element name="cacheWriterFactory"> + <xs:complexType> + <xs:attribute name="class" use="required"/> + <xs:attribute name="properties" use="optional"/> + <xs:attribute name="propertySeparator" use="optional"/> + </xs:complexType> + </xs:element> + + <xs:element name="copyStrategy"> + <xs:complexType> + <xs:attribute name="class" use="required" type="xs:string" /> + </xs:complexType> + </xs:element> + + <xs:element name="elementValueComparator"> + <xs:complexType> + <xs:attribute name="class" use="required" type="xs:string" /> + </xs:complexType> + </xs:element> + + <xs:element name="sizeOfPolicy"> + <xs:complexType> + <xs:attribute name="maxDepth" use="required" type="xs:integer" /> + <xs:attribute name="maxDepthExceededBehavior" use="optional" default="continue" type="maxDepthExceededBehavior" /> + </xs:complexType> + </xs:element> + + <xs:element name="persistence"> + <xs:complexType> + <xs:attribute name="strategy" use="required" type="persistenceStrategy"/> + <xs:attribute name="synchronousWrites" use="optional" default="false" type="xs:boolean"/> + </xs:complexType> + </xs:element> + + <xs:simpleType name="persistenceStrategy"> + <xs:restriction base="xs:string"> + <xs:enumeration value="localTempSwap"/> + <xs:enumeration value="localRestartable"/> + <xs:enumeration value="none"/> + <xs:enumeration value="distributed"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="maxDepthExceededBehavior"> + <xs:restriction base="xs:string"> + <xs:enumeration value="continue"/> + <xs:enumeration value="abort"/> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="notificationScope"> + <xs:restriction base="xs:string"> + <xs:enumeration value="local"/> + <xs:enumeration value="remote"/> + <xs:enumeration value="all"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="memoryUnit"> + <xs:restriction base="xs:token"> + <xs:pattern value="[0-9]+[bBkKmMgG]?"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="memoryUnitOrPercentage"> + <xs:restriction base="xs:token"> + <xs:pattern value="([0-9]+[bBkKmMgG]?|100%|[0-9]{1,2}%)"/> + </xs:restriction> + </xs:simpleType> +</xs:schema> -- GitLab