├── .gitignore
├── .idea
├── .name
├── codeStyleSettings.xml
├── copyright
│ ├── Webx_License.xml
│ └── profiles_settings.xml
├── dictionaries
│ └── baobao.xml
├── encodings.xml
├── scopes
│ ├── Webx_Codes.xml
│ └── scope_settings.xml
├── uiDesigner.xml
└── vcs.xml
├── CHANGES.txt
├── CHANGES_SINCE_3.1.0.txt
├── CHANGES_SINCE_3.2.0.txt
├── DEPLOY.txt
├── common
├── expr
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── expr
│ │ │ ├── Expression.java
│ │ │ ├── ExpressionContext.java
│ │ │ ├── ExpressionFactory.java
│ │ │ ├── ExpressionParseException.java
│ │ │ ├── composite
│ │ │ ├── CompositeExpression.java
│ │ │ ├── CompositeExpressionFactory.java
│ │ │ └── ConstantExpression.java
│ │ │ ├── jexl
│ │ │ ├── JexlExpression.java
│ │ │ └── JexlExpressionFactory.java
│ │ │ └── support
│ │ │ ├── ExpressionSupport.java
│ │ │ └── MappedExpressionContext.java
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── expr
│ │ ├── CompositeExpressionTests.java
│ │ └── JexlExpressionTests.java
├── generictype
│ ├── docs
│ │ ├── Supertypes.readme.txt
│ │ ├── generic.png
│ │ └── generic.zargo
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java.working
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── generictype
│ │ │ │ └── introspect
│ │ │ │ ├── IndexedPropertyInfo.java
│ │ │ │ ├── IntrospectionException.java
│ │ │ │ ├── Introspector.java
│ │ │ │ ├── InvalidPropertyPathException.java
│ │ │ │ ├── MappedPropertyInfo.java
│ │ │ │ ├── PropertyEvaluationFailureException.java
│ │ │ │ ├── PropertyException.java
│ │ │ │ ├── PropertyInfo.java
│ │ │ │ ├── PropertyPath.java
│ │ │ │ ├── PropertyUtil.java
│ │ │ │ ├── SimplePropertyInfo.java
│ │ │ │ ├── impl
│ │ │ │ ├── AbstractPropertiesFinder.java
│ │ │ │ ├── AbstractPropertyInfo.java
│ │ │ │ ├── AbstractTypeVisitor.java
│ │ │ │ ├── ArrayPropertiesFinder.java
│ │ │ │ ├── IndexedPropertiesFinder.java
│ │ │ │ ├── IntrospectorImpl.java
│ │ │ │ ├── MapPropertiesFinder.java
│ │ │ │ ├── MappedPropertiesFinder.java
│ │ │ │ ├── PropertiesFinder.java
│ │ │ │ ├── SimplePropertiesFinder.java
│ │ │ │ ├── SinglePropertyFinder.java
│ │ │ │ └── TypeVisitor.java
│ │ │ │ └── package.html
│ │ └── java
│ │ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── generictype
│ │ │ ├── ArrayTypeInfo.java
│ │ │ ├── BoundedTypeInfo.java
│ │ │ ├── ClassTypeInfo.java
│ │ │ ├── FieldInfo.java
│ │ │ ├── FieldNotFoundException.java
│ │ │ ├── GenericDeclarationInfo.java
│ │ │ ├── MethodInfo.java
│ │ │ ├── MethodNotFoundException.java
│ │ │ ├── ParameterizedTypeInfo.java
│ │ │ ├── RawTypeInfo.java
│ │ │ ├── TypeInfo.java
│ │ │ ├── TypeInfoUtil.java
│ │ │ ├── TypeVariableInfo.java
│ │ │ ├── WildcardTypeInfo.java
│ │ │ ├── codegen
│ │ │ ├── CodegenConstant.java
│ │ │ ├── MethodSignature.java
│ │ │ ├── TypeUtil.java
│ │ │ └── asm
│ │ │ │ ├── Method.java
│ │ │ │ ├── Opcodes.java
│ │ │ │ └── Type.java
│ │ │ ├── impl
│ │ │ ├── AbstractBoundedTypeInfo.java
│ │ │ ├── AbstractGenericDeclarationInfo.java
│ │ │ ├── ArrayTypeImpl.java
│ │ │ ├── FieldImpl.java
│ │ │ ├── MethodImpl.java
│ │ │ ├── ParameterizedTypeImpl.java
│ │ │ ├── RawTypeImpl.java
│ │ │ ├── TypeInfoFactory.java
│ │ │ ├── TypeVariableImpl.java
│ │ │ ├── UnknownWildcardTypeImpl.java
│ │ │ └── WildcardTypeImpl.java
│ │ │ └── package.html
│ │ └── test
│ │ ├── java.working
│ │ ├── ClassUtil.java
│ │ ├── Main.java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── generictype
│ │ │ ├── AbstractPropertiesAnalyzerTests.java
│ │ │ ├── ArrayAnalyzerTests.java
│ │ │ ├── IndexedPropertiesAnalyzerTests.java
│ │ │ ├── MappedPropertiesAnalyzerTests.java
│ │ │ ├── PropertyEvaluationTests.java
│ │ │ ├── SimplePropertiesAnalyzerTests.java
│ │ │ └── introspect
│ │ │ └── PropertyPathTests.java
│ │ └── java
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── generictype
│ │ ├── ArrayTypeTests.java
│ │ ├── BaseTypeTests.java
│ │ ├── FieldTests.java
│ │ ├── MethodTests.java
│ │ ├── ParameterizedTypeTests.java
│ │ ├── RawTypeTests.java
│ │ ├── TypeInfoFactoryTests.java
│ │ ├── TypeInfoUtilTests.java
│ │ ├── TypeVariableTests.java
│ │ ├── WildcardTypeTests.java
│ │ └── demo
│ │ ├── dao
│ │ ├── DaoTest.java
│ │ ├── DataObject.java
│ │ ├── GenericDao.java
│ │ ├── Person.java
│ │ └── PersonDao.java
│ │ └── simple
│ │ └── GenericTest.java
├── hessian
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ ├── burlap
│ │ │ └── io
│ │ │ │ └── BurlapRemoteObject.java
│ │ │ └── hessian
│ │ │ ├── HessianException.java
│ │ │ ├── io
│ │ │ ├── AbstractDeserializer.java
│ │ │ ├── AbstractHessianInput.java
│ │ │ ├── AbstractHessianOutput.java
│ │ │ ├── AbstractHessianResolver.java
│ │ │ ├── AbstractListDeserializer.java
│ │ │ ├── AbstractMapDeserializer.java
│ │ │ ├── AbstractSerializer.java
│ │ │ ├── AbstractSerializerFactory.java
│ │ │ ├── AbstractStreamDeserializer.java
│ │ │ ├── AbstractStreamSerializer.java
│ │ │ ├── AbstractStringValueDeserializer.java
│ │ │ ├── AnnotationDeserializer.java
│ │ │ ├── AnnotationInvocationHandler.java
│ │ │ ├── AnnotationSerializer.java
│ │ │ ├── ArrayDeserializer.java
│ │ │ ├── ArraySerializer.java
│ │ │ ├── BasicDeserializer.java
│ │ │ ├── BasicSerializer.java
│ │ │ ├── BeanDeserializer.java
│ │ │ ├── BeanSerializer.java
│ │ │ ├── BeanSerializerFactory.java
│ │ │ ├── BigDecimalDeserializer.java
│ │ │ ├── ByteHandle.java
│ │ │ ├── CalendarHandle.java
│ │ │ ├── CalendarSerializer.java
│ │ │ ├── ClassDeserializer.java
│ │ │ ├── ClassSerializer.java
│ │ │ ├── CollectionDeserializer.java
│ │ │ ├── CollectionSerializer.java
│ │ │ ├── ContextSerializerFactory.java
│ │ │ ├── Deflation.java
│ │ │ ├── Deserializer.java
│ │ │ ├── EnumDeserializer.java
│ │ │ ├── EnumSerializer.java
│ │ │ ├── EnumerationDeserializer.java
│ │ │ ├── EnumerationSerializer.java
│ │ │ ├── EnvelopeFactory.java
│ │ │ ├── ExtSerializerFactory.java
│ │ │ ├── FileDeserializer.java
│ │ │ ├── FloatHandle.java
│ │ │ ├── Hessian2Constants.java
│ │ │ ├── Hessian2Input.java
│ │ │ ├── Hessian2Output.java
│ │ │ ├── Hessian2StreamingInput.java
│ │ │ ├── Hessian2StreamingOutput.java
│ │ │ ├── HessianDebugInputStream.java
│ │ │ ├── HessianDebugOutputStream.java
│ │ │ ├── HessianDebugState.java
│ │ │ ├── HessianEnvelope.java
│ │ │ ├── HessianFactory.java
│ │ │ ├── HessianFieldException.java
│ │ │ ├── HessianHandle.java
│ │ │ ├── HessianInput.java
│ │ │ ├── HessianInputFactory.java
│ │ │ ├── HessianMethodSerializationException.java
│ │ │ ├── HessianOutput.java
│ │ │ ├── HessianProtocolException.java
│ │ │ ├── HessianRemote.java
│ │ │ ├── HessianRemoteObject.java
│ │ │ ├── HessianRemoteResolver.java
│ │ │ ├── HessianSerializerInput.java
│ │ │ ├── HessianSerializerOutput.java
│ │ │ ├── HessianServiceException.java
│ │ │ ├── IOExceptionWrapper.java
│ │ │ ├── InputStreamDeserializer.java
│ │ │ ├── InputStreamSerializer.java
│ │ │ ├── IteratorSerializer.java
│ │ │ ├── JavaDeserializer.java
│ │ │ ├── JavaSerializer.java
│ │ │ ├── LocaleHandle.java
│ │ │ ├── LocaleSerializer.java
│ │ │ ├── MapDeserializer.java
│ │ │ ├── MapSerializer.java
│ │ │ ├── ObjectDeserializer.java
│ │ │ ├── ObjectHandleSerializer.java
│ │ │ ├── ObjectNameDeserializer.java
│ │ │ ├── ObjectSerializer.java
│ │ │ ├── RemoteDeserializer.java
│ │ │ ├── RemoteSerializer.java
│ │ │ ├── Serializer.java
│ │ │ ├── SerializerFactory.java
│ │ │ ├── ShortHandle.java
│ │ │ ├── SqlDateDeserializer.java
│ │ │ ├── SqlDateSerializer.java
│ │ │ ├── StackTraceElementDeserializer.java
│ │ │ ├── StringValueDeserializer.java
│ │ │ ├── StringValueSerializer.java
│ │ │ ├── ThrowableSerializer.java
│ │ │ ├── UnsafeDeserializer.java
│ │ │ ├── UnsafeSerializer.java
│ │ │ ├── ValueDeserializer.java
│ │ │ └── WriteReplaceSerializer.java
│ │ │ └── util
│ │ │ ├── HessianFreeList.java
│ │ │ ├── IdentityIntMap.java
│ │ │ └── IntMap.java
│ │ └── resources
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── hessian
│ │ ├── hessian.license
│ │ └── hessian.version
├── logconfig
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── logconfig
│ │ │ │ ├── LogConfigurator.java
│ │ │ │ ├── LogConfiguratorListener.java
│ │ │ │ ├── log4j
│ │ │ │ ├── DOMConfigurator.java
│ │ │ │ └── Log4jConfigurator.java
│ │ │ │ ├── logback
│ │ │ │ ├── LevelRangeFilter.java
│ │ │ │ └── LogbackConfigurator.java
│ │ │ │ └── support
│ │ │ │ ├── ConfigurableLogger.java
│ │ │ │ └── SecurityLogger.java
│ │ └── resources
│ │ │ ├── META-INF
│ │ │ └── logconfig.providers
│ │ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── logconfig
│ │ │ ├── log4j
│ │ │ ├── log4j-default.xml
│ │ │ └── log4j.dtd
│ │ │ └── logback
│ │ │ └── logback-default.xml
│ │ └── test
│ │ ├── config
│ │ └── WEB-INF
│ │ │ ├── web.xml
│ │ │ └── web2.xml
│ │ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── logconfig
│ │ │ ├── AbstractLogConfiguratorListenerTests.java
│ │ │ ├── AbstractLogConfiguratorTests.java
│ │ │ ├── Log4jConfiguratorTests.java
│ │ │ ├── LogConfiguratorListenerMultiLogSystemsTests.java
│ │ │ ├── LogConfiguratorListenerTests.java
│ │ │ ├── LogConfiguratorTests.java
│ │ │ ├── LogbackConfiguratorTests.java
│ │ │ ├── spi
│ │ │ ├── AbstractLogConfigurator.java
│ │ │ └── MyLogConfigurator.java
│ │ │ └── support
│ │ │ ├── ConfigurableLoggerTests.java
│ │ │ └── SecurityLoggerTests.java
│ │ └── resources
│ │ ├── META-INF
│ │ ├── logconfig.providers
│ │ ├── my-log4j.xml
│ │ └── my-logback.xml
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── logconfig
│ │ └── spi
│ │ └── ok-default.xml
├── servlet
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── javax
│ │ └── servlet
│ │ └── WriteListener.java
├── springext
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── springext
│ │ │ │ ├── ConfigurationPoint.java
│ │ │ │ ├── ConfigurationPointException.java
│ │ │ │ ├── ConfigurationPoints.java
│ │ │ │ ├── Contribution.java
│ │ │ │ ├── ContributionAware.java
│ │ │ │ ├── ContributionType.java
│ │ │ │ ├── Namespaces.java
│ │ │ │ ├── ResourceLoadingExtendable.java
│ │ │ │ ├── ResourceLoadingExtender.java
│ │ │ │ ├── ResourceResolver.java
│ │ │ │ ├── Schema.java
│ │ │ │ ├── Schemas.java
│ │ │ │ ├── SourceInfo.java
│ │ │ │ ├── VersionableSchemas.java
│ │ │ │ ├── export
│ │ │ │ ├── SchemaExporter.java
│ │ │ │ ├── SchemaExporterCLI.java
│ │ │ │ ├── SchemaExporterServlet.java
│ │ │ │ └── SchemaExporterWEB.java
│ │ │ │ ├── impl
│ │ │ │ ├── ConfigurationPointImpl.java
│ │ │ │ ├── ConfigurationPointSettings.java
│ │ │ │ ├── ConfigurationPointsImpl.java
│ │ │ │ ├── ContributionImpl.java
│ │ │ │ ├── ContributionKey.java
│ │ │ │ ├── SchemaBase.java
│ │ │ │ ├── SchemaImpl.java
│ │ │ │ ├── SpringPluggableSchemas.java
│ │ │ │ └── VersionableSchemasImpl.java
│ │ │ │ ├── support
│ │ │ │ ├── BeanSupport.java
│ │ │ │ ├── ClasspathResourceResolver.java
│ │ │ │ ├── ConfigurationPointSchemaSourceInfo.java
│ │ │ │ ├── ConfigurationPointSourceInfo.java
│ │ │ │ ├── ContributionSchemaSourceInfo.java
│ │ │ │ ├── ContributionSourceInfo.java
│ │ │ │ ├── GenericBeanSupport.java
│ │ │ │ ├── SchemaSet.java
│ │ │ │ ├── SchemaUtil.java
│ │ │ │ ├── SourceInfoSupport.java
│ │ │ │ ├── SpringExtSchemaSet.java
│ │ │ │ ├── SpringPluggableSchemaSourceInfo.java
│ │ │ │ ├── SpringSchemasSourceInfo.java
│ │ │ │ ├── context
│ │ │ │ │ ├── AbstractXmlApplicationContext.java
│ │ │ │ │ ├── GetApplicationListeners.java
│ │ │ │ │ ├── InheritableListableBeanFactory.java
│ │ │ │ │ ├── XmlApplicationContext.java
│ │ │ │ │ ├── XmlBeanFactory.java
│ │ │ │ │ └── XmlWebApplicationContext.java
│ │ │ │ ├── parser
│ │ │ │ │ ├── AbstractNamedBeanDefinitionParser.java
│ │ │ │ │ ├── AbstractNamedProxyBeanDefinitionParser.java
│ │ │ │ │ ├── AbstractSingleBeanDefinitionParser.java
│ │ │ │ │ ├── DefaultElementDefinitionParser.java
│ │ │ │ │ └── NamedBeanDefinitionParserMixin.java
│ │ │ │ └── resolver
│ │ │ │ │ ├── ConfigurationPointNamespaceHandlerResolver.java
│ │ │ │ │ ├── SchemaEntityResolver.java
│ │ │ │ │ └── XmlBeanDefinitionReaderProcessor.java
│ │ │ │ └── util
│ │ │ │ ├── ClassCompatibilityAssert.java
│ │ │ │ ├── ConvertToUnqualifiedStyle.java
│ │ │ │ ├── DomUtil.java
│ │ │ │ ├── ProxyTargetFactory.java
│ │ │ │ └── SpringExtUtil.java
│ │ └── resources
│ │ │ ├── META-INF
│ │ │ ├── spring.schemas
│ │ │ ├── springext
│ │ │ │ └── springext-base.xsd
│ │ │ └── web-springext-helper.xml
│ │ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── springext
│ │ │ └── export
│ │ │ ├── close.gif
│ │ │ ├── dir.gif
│ │ │ ├── file.gif
│ │ │ ├── list.htm
│ │ │ ├── na.gif
│ │ │ ├── open.gif
│ │ │ ├── schema-exporter.js
│ │ │ ├── styles-ie.css
│ │ │ └── styles.css
│ │ └── test
│ │ ├── config
│ │ ├── WEB-INF
│ │ │ ├── web.xml
│ │ │ └── web_withRedirect.xml
│ │ ├── beans-autowire-parent.xml
│ │ ├── beans-autowire.xml
│ │ ├── beans-decorators.xml
│ │ ├── beans-default-values.xml
│ │ ├── beans.xml
│ │ ├── my-beans-no-default-name.xml
│ │ ├── my-beans.xml
│ │ ├── schema
│ │ │ ├── a.xsd
│ │ │ ├── all.xsd
│ │ │ ├── b.xsd
│ │ │ ├── ns.xsd
│ │ │ ├── x.xsd
│ │ │ ├── y.xsd
│ │ │ └── z.xsd
│ │ ├── services.xml
│ │ └── test-import-each-other.xml
│ │ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── springext
│ │ │ ├── contrib
│ │ │ ├── ContainerServiceBeanDefinitionParser.java
│ │ │ ├── MyBeanDefinitionDecorator.java
│ │ │ ├── MyBeanDefinitionDecorator2.java
│ │ │ ├── MyBeanDefinitionParser.java
│ │ │ ├── MyBeanDefinitionParser2.java
│ │ │ ├── SimpleDateFormatBeanDefinitionParser.java
│ │ │ ├── deco
│ │ │ │ ├── MyDecoratableClass.java
│ │ │ │ └── MyDecorator.java
│ │ │ └── simple
│ │ │ │ ├── Base.java
│ │ │ │ ├── Test1.java
│ │ │ │ ├── Test2.java
│ │ │ │ ├── Test3.java
│ │ │ │ └── Test4.java
│ │ │ ├── export
│ │ │ ├── SchemaExporterCLITests.java
│ │ │ ├── SchemaExporterTests.java
│ │ │ └── SchemaExporterWEBTests.java
│ │ │ ├── impl
│ │ │ ├── ConfigurationPointTests.java
│ │ │ ├── ConfigurationPointsTests.java
│ │ │ ├── ContributionDecoratorTests.java
│ │ │ ├── ContributionKeyTests.java
│ │ │ ├── ContributionTests.java
│ │ │ ├── SchemaBaseTests.java
│ │ │ ├── SchemasTests.java
│ │ │ ├── SpringPluggableSchemaTests.java
│ │ │ └── UnqualifiedStyleTests.java
│ │ │ ├── support
│ │ │ ├── BeanSupportTests.java
│ │ │ ├── SchemaSetTests.java
│ │ │ ├── SourceInfoSupportTests.java
│ │ │ ├── SpringExtSchemaSetTests.java
│ │ │ ├── context
│ │ │ │ ├── AbstractBeanFactoryTests.java
│ │ │ │ ├── InheritableBeanFactoryTests.java
│ │ │ │ ├── MyClass.java
│ │ │ │ ├── MyResourceLoadingExtender.java
│ │ │ │ ├── MyResourceLoadingExtender2.java
│ │ │ │ ├── ResourceLoadingExtendableTests.java
│ │ │ │ ├── XmlApplicationContextTests.java
│ │ │ │ ├── XmlBeanFactoryTests.java
│ │ │ │ └── XmlWebApplicationContextTests.java
│ │ │ ├── parser
│ │ │ │ ├── MyBean.java
│ │ │ │ ├── MyBeanDefinitionParser.java
│ │ │ │ ├── MyBeanDefinitionParserNoDefaultName.java
│ │ │ │ └── NamedBeanDefinitionParserTests.java
│ │ │ └── resolver
│ │ │ │ ├── EntityResolverTests.java
│ │ │ │ ├── NamespaceHandlerResolverTests.java
│ │ │ │ ├── SchemaTypeTests.java
│ │ │ │ └── SkipValidationDefaultValueTests.java
│ │ │ └── util
│ │ │ ├── DomUtilTests.java
│ │ │ ├── SpringExtUtilTests.java
│ │ │ └── SpringExtUtil_ProxyTests.java
│ │ └── resources
│ │ ├── META-INF
│ │ ├── included-schema.xsd
│ │ ├── my-cp1.bean-definition-parsers
│ │ ├── my-cp2.bean-definition-parsers
│ │ ├── my
│ │ │ ├── cp1
│ │ │ │ ├── test1.xsd
│ │ │ │ └── test2.xsd
│ │ │ └── cp2
│ │ │ │ ├── test3.xsd
│ │ │ │ └── test4.xsd
│ │ ├── services-tools.bean-definition-parsers
│ │ ├── services.bean-definition-decorators
│ │ ├── services.bean-definition-decorators-for-attribute
│ │ ├── services.bean-definition-parsers
│ │ ├── services
│ │ │ ├── container.xsd
│ │ │ ├── my-bean-no-default-name.xsd
│ │ │ ├── my-bean.xsd
│ │ │ ├── my-deco.xsd
│ │ │ └── tools
│ │ │ │ └── dateformat.xsd
│ │ ├── spring.configuration-points
│ │ ├── spring.schemas
│ │ ├── spring.tooling
│ │ ├── springext-base-types.xsd
│ │ └── transports
│ │ │ └── http
│ │ │ ├── configuration
│ │ │ └── http-conf.xsd
│ │ │ └── wsdl
│ │ │ └── http-conf.xsd
│ │ ├── TEST-INF
│ │ ├── test1
│ │ │ └── cps
│ │ ├── test10
│ │ │ ├── cp1.bean-definition-parsers
│ │ │ ├── cps
│ │ │ └── cps2
│ │ ├── test11
│ │ │ ├── cps1
│ │ │ ├── cps2
│ │ │ └── cps3
│ │ ├── test12
│ │ │ ├── cps
│ │ │ ├── my-services.bean-definition-decorators
│ │ │ ├── my-services.bean-definition-parsers
│ │ │ └── my
│ │ │ │ └── services
│ │ │ │ ├── myservice-abc-1.0.xsd
│ │ │ │ ├── myservice-abc-xyz-2.0.xsd
│ │ │ │ ├── myservice-abc-xyz.xsd
│ │ │ │ └── myservice.xsd
│ │ ├── test13
│ │ │ ├── cps
│ │ │ ├── my-services-service1-plugins.bean-definition-parsers
│ │ │ ├── my-services.bean-definition-parsers
│ │ │ └── my
│ │ │ │ └── services
│ │ │ │ ├── service1.xsd
│ │ │ │ └── service1
│ │ │ │ └── plugins
│ │ │ │ └── plugin1.xsd
│ │ ├── test14
│ │ │ ├── a.bean-definition-parsers
│ │ │ ├── a
│ │ │ │ └── a1.xsd
│ │ │ ├── b.bean-definition-parsers
│ │ │ ├── b
│ │ │ │ └── b1.xsd
│ │ │ ├── c.bean-definition-parsers
│ │ │ ├── c
│ │ │ │ └── c1.xsd
│ │ │ ├── cps
│ │ │ ├── d.bean-definition-parsers
│ │ │ ├── d
│ │ │ │ └── d1.xsd
│ │ │ ├── e.bean-definition-parsers
│ │ │ ├── e
│ │ │ │ └── e1.xsd
│ │ │ ├── f.bean-definition-parsers
│ │ │ ├── f
│ │ │ │ ├── f1.xsd
│ │ │ │ └── f2.xsd
│ │ │ ├── g.bean-definition-parsers
│ │ │ ├── g
│ │ │ │ └── g1.xsd
│ │ │ ├── h.bean-definition-parsers
│ │ │ └── h
│ │ │ │ └── h1.xsd
│ │ ├── test15
│ │ │ ├── cps
│ │ │ ├── interceptors.bean-definition-parsers
│ │ │ ├── interceptors
│ │ │ │ ├── i1.xsd
│ │ │ │ └── i2.xsd
│ │ │ ├── services.bean-definition-parsers
│ │ │ └── services
│ │ │ │ ├── s1.xsd
│ │ │ │ ├── s2.xsd
│ │ │ │ └── s3.xsd
│ │ ├── test2
│ │ │ ├── cp1.bean-definition-decorators
│ │ │ ├── cp1.bean-definition-decorators-for-attribute
│ │ │ ├── cp1.bean-definition-parsers
│ │ │ └── cps
│ │ ├── test6
│ │ │ ├── cp1.bean-definition-decorators
│ │ │ ├── cp1.bean-definition-decorators-for-attribute
│ │ │ ├── cp1.bean-definition-parsers
│ │ │ └── cps
│ │ ├── test7
│ │ │ ├── cps
│ │ │ ├── dir-cp1.bean-definition-decorators
│ │ │ ├── dir-cp1.bean-definition-decorators-for-attribute
│ │ │ └── dir-cp1.bean-definition-parsers
│ │ ├── test8
│ │ │ └── cps
│ │ └── test9
│ │ │ ├── cps
│ │ │ ├── my-plugins.bean-definition-parsers
│ │ │ ├── my-services.bean-definition-parsers
│ │ │ └── my
│ │ │ ├── plugins
│ │ │ └── plugin1.xsd
│ │ │ └── services
│ │ │ ├── service1-1.0.xsd
│ │ │ ├── service1.xsd
│ │ │ ├── service2-2.0.xsd
│ │ │ ├── service2.xsd
│ │ │ └── service3.xsd
│ │ └── dummy.txt
└── util
│ ├── pom.xml
│ └── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── util
│ │ │ ├── ArrayUtil.java
│ │ │ ├── Assert.java
│ │ │ ├── BasicConstant.java
│ │ │ ├── ClassInstantiationException.java
│ │ │ ├── ClassLoaderUtil.java
│ │ │ ├── ClassUtil.java
│ │ │ ├── CollectionUtil.java
│ │ │ ├── ExceptionUtil.java
│ │ │ ├── FileUtil.java
│ │ │ ├── HumanReadableSize.java
│ │ │ ├── HumanReadableSizeEditor.java
│ │ │ ├── IllegalPathException.java
│ │ │ ├── MessageUtil.java
│ │ │ ├── ObjectUtil.java
│ │ │ ├── Paginator.java
│ │ │ ├── ServiceNotFoundException.java
│ │ │ ├── ServletUtil.java
│ │ │ ├── StringEscapeUtil.java
│ │ │ ├── StringUtil.java
│ │ │ ├── SystemUtil.java
│ │ │ ├── ToStringBuilder.java
│ │ │ ├── UUID.java
│ │ │ ├── UnexpectedFailureException.java
│ │ │ ├── UnreachableCodeException.java
│ │ │ ├── Utils.java
│ │ │ ├── collection
│ │ │ ├── ArrayHashMap.java
│ │ │ ├── ArrayHashSet.java
│ │ │ ├── DefaultHashMap.java
│ │ │ ├── DefaultMapEntry.java
│ │ │ ├── IntHashMap.java
│ │ │ └── ListMap.java
│ │ │ ├── i18n
│ │ │ ├── CharConvertReader.java
│ │ │ ├── CharConvertWriter.java
│ │ │ ├── CharConverter.java
│ │ │ ├── CharConverterProvider.java
│ │ │ ├── LocaleInfo.java
│ │ │ ├── LocaleUtil.java
│ │ │ └── provider
│ │ │ │ ├── ChineseCharConverterProvider.java
│ │ │ │ ├── SimplifiedToTraditionalChineseProvider.java
│ │ │ │ └── TraditionalToSimplifiedChineseProvider.java
│ │ │ ├── internal
│ │ │ ├── ActionEventUtil.java
│ │ │ ├── DynamicClassBuilder.java
│ │ │ ├── Entities.java
│ │ │ ├── IndentableStringBuilder.java
│ │ │ ├── InterfaceImplementorBuilder.java
│ │ │ ├── LazyLoader.java
│ │ │ ├── MessageFormatter.java
│ │ │ ├── ScreenEventUtil.java
│ │ │ ├── Servlet3Util.java
│ │ │ ├── StaticFunctionDelegatorBuilder.java
│ │ │ ├── apache
│ │ │ │ └── lang
│ │ │ │ │ ├── EqualsBuilder.java
│ │ │ │ │ └── HashCodeBuilder.java
│ │ │ ├── impl
│ │ │ │ └── CitrusMessageFormatter.java
│ │ │ └── webpagelite
│ │ │ │ ├── PageComponent.java
│ │ │ │ ├── PageComponentRegistry.java
│ │ │ │ ├── RequestContext.java
│ │ │ │ ├── RequestProcessor.java
│ │ │ │ └── ServletRequestContext.java
│ │ │ ├── io
│ │ │ ├── ByteArray.java
│ │ │ ├── ByteArrayInputStream.java
│ │ │ ├── ByteArrayOutputStream.java
│ │ │ ├── InputStreamOutputEngine.java
│ │ │ ├── OutputEngine.java
│ │ │ ├── OutputEngineInputStream.java
│ │ │ ├── ReaderOutputEngine.java
│ │ │ └── StreamUtil.java
│ │ │ ├── regex
│ │ │ ├── ClassNameWildcardCompiler.java
│ │ │ ├── MatchResultSubstitution.java
│ │ │ ├── PathNameWildcardCompiler.java
│ │ │ └── Substitution.java
│ │ │ └── templatelite
│ │ │ ├── FallbackTextWriter.java
│ │ │ ├── FallbackToVisitor.java
│ │ │ ├── FallbackVisitor.java
│ │ │ ├── Template.java
│ │ │ ├── TemplateException.java
│ │ │ ├── TemplateParseException.java
│ │ │ ├── TemplateRuntimeException.java
│ │ │ ├── TextWriter.java
│ │ │ └── VisitorInvocationErrorHandler.java
│ └── resources
│ │ ├── META-INF
│ │ └── services
│ │ │ ├── char.converter.SimplifiedToTraditionalChinese
│ │ │ └── char.converter.TraditionalToSimplifiedChinese
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── util
│ │ ├── i18n
│ │ └── provider
│ │ │ ├── SimplifiedToTraditionalChinese.ctable
│ │ │ └── TraditionalToSimplifiedChinese.ctable
│ │ └── internal
│ │ └── webpagelite
│ │ ├── builder.js
│ │ ├── controls.js
│ │ ├── dragdrop.js
│ │ ├── effects.js
│ │ ├── prototype.js
│ │ ├── scriptaculous.js
│ │ ├── slider.js
│ │ ├── sound.js
│ │ └── unittest.js
│ └── test
│ ├── config
│ └── templates
│ │ ├── inc
│ │ └── def.txt
│ │ ├── test01_text_simple.txt
│ │ ├── test02_placeholder_simple.txt
│ │ ├── test02_placeholder_template.txt
│ │ ├── test02_placeholder_template_group.txt
│ │ ├── test02_placeholder_template_group_2.txt
│ │ ├── test03_subtemplate_simple.txt
│ │ ├── test04_include_template_override.txt
│ │ ├── test04_include_template_simple.txt
│ │ ├── test04_include_template_sub.txt
│ │ ├── test05_param_gbk.txt
│ │ ├── test05_param_override.txt
│ │ ├── test05_param_utf8.txt
│ │ ├── test06_real_case.txt
│ │ ├── test06_real_case_2.txt
│ │ ├── test07_predefined_templates.txt
│ │ ├── test07_reload_1.txt
│ │ ├── test07_reload_2.txt
│ │ ├── test07_reload_import.txt
│ │ ├── test08_import.txt
│ │ └── test08_import_notfound.txt
│ ├── java
│ └── com
│ │ └── alibaba
│ │ ├── WrongPrefixMessages.java
│ │ └── citrus
│ │ └── util
│ │ ├── ArrayUtilTests.java
│ │ ├── AssertTests.java
│ │ ├── BasicConstantTests.java
│ │ ├── ClassLoaderUtilTests.java
│ │ ├── ClassUtilTests.java
│ │ ├── CollectionUtilTests.java
│ │ ├── ExceptionUtilTests.java
│ │ ├── FileUtilTests.java
│ │ ├── HumanReadableSizeTests.java
│ │ ├── MessageUtilTests.java
│ │ ├── MyErrorService.java
│ │ ├── MyService.java
│ │ ├── ObjectUtilTests.java
│ │ ├── PaginatorTests.java
│ │ ├── ServletUtilTests.java
│ │ ├── StringEscapeUtilTests.java
│ │ ├── StringUtilTests.java
│ │ ├── SystemUtilTests.java
│ │ ├── ToStringBuilderTests.java
│ │ ├── UUIDTests.java
│ │ ├── UtilsTests.java
│ │ ├── collection
│ │ ├── AbstractListMapTests.java
│ │ ├── AbstractListMapViewTests.java
│ │ ├── AbstractMapTests.java
│ │ ├── AbstractMapViewTests.java
│ │ ├── AbstractTests.java
│ │ ├── ArrayHashMapTests.java
│ │ ├── ArrayHashSetTests.java
│ │ ├── DefaultHashMapTests.java
│ │ ├── DefaultMapEntryTests.java
│ │ └── IntHashMapTests.java
│ │ ├── i18n
│ │ ├── CharConverterTests.java
│ │ ├── LocaleInfoTests.java
│ │ ├── LocaleUtilTests.java
│ │ ├── UnknownCharsetTests.java
│ │ └── tool
│ │ │ ├── CharsetComparator.java
│ │ │ ├── CharsetDumper.java
│ │ │ ├── CharsetLoader.java
│ │ │ ├── CharsetTool.java
│ │ │ └── CodeTableMaker.java
│ │ ├── internal
│ │ ├── AbstractNormalizableStringBuilderTests.java
│ │ ├── ActionEventUtilTests.java
│ │ ├── EntitiesTests.java
│ │ ├── IndentableStringBuilderTests.java
│ │ ├── InterfaceImplementorBuilderTests.java
│ │ ├── LazyLoaderTests.java
│ │ ├── MessageFormatterTests.java
│ │ ├── MyMessages.java
│ │ ├── NormalizableStringBuilderTests.java
│ │ ├── ScreenEventUtilTests.java
│ │ ├── Servlet3UtilTests.java
│ │ ├── StaticFunctionDelegatorBuilderTests.java
│ │ ├── apache
│ │ │ └── lang
│ │ │ │ ├── EqualsBuilderTests.java
│ │ │ │ └── HashCodeBuilderTests.java
│ │ ├── impl
│ │ │ └── CitrusMessageFormatterTests.java
│ │ └── webpagelite
│ │ │ ├── AbstractRequestProcessorTests.java
│ │ │ ├── PageComponentTests.java
│ │ │ ├── myprocessor
│ │ │ ├── LastModifiedTests.java
│ │ │ └── RequestProcessorTests.java
│ │ │ └── simple
│ │ │ └── SimpleComponent.java
│ │ ├── io
│ │ ├── ByteArrayInputStreamTests.java
│ │ ├── ByteArrayOutputStreamTests.java
│ │ ├── ByteArrayTests.java
│ │ ├── OutputEngineTests.java
│ │ └── StreamUtilTests.java
│ │ ├── regex
│ │ ├── RegexpStressTests.java
│ │ ├── SubstitutionTests.java
│ │ └── WildcardCompilerTests.java
│ │ └── templatelite
│ │ ├── AbstractTemplateTests.java
│ │ ├── TemplateInputSourceTests.java
│ │ ├── TemplateParserTests.java
│ │ ├── TemplateTests.java
│ │ └── TemplateVisitTests.java
│ └── resources
│ ├── META-INF
│ └── services
│ │ ├── localeNotifiers
│ │ ├── myservice
│ │ ├── myservice.err
│ │ └── myservice.notfound
│ └── com
│ └── alibaba
│ └── citrus
│ ├── messages
│ └── util_internal_impl_CitrusMessageFormatterTests$MyCitrus.properties
│ └── util
│ ├── MessageUtilTests.properties
│ └── internal
│ ├── MyMessages.properties
│ ├── MyMessages_zh_CN.properties
│ └── webpagelite
│ ├── dummy2.txt
│ ├── myprocessor
│ ├── dummy.txt
│ └── style.txt.tpl
│ └── simple
│ ├── simple.css
│ ├── simple.htm
│ └── test.gif
├── dist
├── springext
│ └── pom.xml
├── test
│ └── pom.xml
└── webx
│ └── pom.xml
├── pom.xml
├── resources
├── logo_webx.psd
└── logo_webx_110_80.png
├── service
├── base
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── AbstractService.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ └── spring.configuration-points
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── service
│ │ └── BaseServiceTests.java
├── configuration
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── configuration
│ │ │ │ ├── Configuration.java
│ │ │ │ ├── ProductionModeAware.java
│ │ │ │ ├── impl
│ │ │ │ ├── PropertyEditorRegistrarsDefinitionParser.java
│ │ │ │ ├── PropertyPlaceholderConfigurerDefinitionParser.java
│ │ │ │ ├── SimpleConfigurationDefinitionParser.java
│ │ │ │ └── SimpleConfigurationImpl.java
│ │ │ │ └── support
│ │ │ │ ├── AbstractConfigurationDefinitionParser.java
│ │ │ │ ├── CustomDateRegistrar.java
│ │ │ │ ├── ProductionModeAwarePostProcessor.java
│ │ │ │ ├── PropertiesConfigurationSupport.java
│ │ │ │ ├── PropertyEditorRegistrarsSupport.java
│ │ │ │ └── PropertyPlaceholderConfigurer.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services.bean-definition-parsers
│ │ │ └── services
│ │ │ ├── property-editor-registrars.xsd
│ │ │ ├── property-placeholder.xsd
│ │ │ └── simple-configuration.xsd
│ │ └── test
│ │ ├── config
│ │ ├── my-configuration-global.xml
│ │ ├── my-configuration-wrong.xml
│ │ ├── my-configuration.xml
│ │ ├── property-placeholder-1.xml
│ │ ├── property-placeholder-2.xml
│ │ ├── property-placeholder-3.xml
│ │ ├── property-placeholder-4.xml
│ │ ├── property-placeholder-5.xml
│ │ ├── property-placeholder-6.xml
│ │ ├── property-placeholder-7.xml
│ │ ├── property-placeholder.xml
│ │ ├── registrars.xml
│ │ ├── simple-configuration-skip-validation.xml
│ │ └── simple-configuration.xml
│ │ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── service
│ │ │ └── configuration
│ │ │ ├── MyBean.java
│ │ │ ├── MyBean1.java
│ │ │ ├── MyBean2.java
│ │ │ ├── MyBean3.java
│ │ │ ├── MyConfiguration.java
│ │ │ ├── MyConfigurationTests.java
│ │ │ ├── PropertyEditorRegistrarsTests.java
│ │ │ ├── PropertyPlaceholderSkipValidationTests.java
│ │ │ ├── PropertyPlaceholderTests.java
│ │ │ ├── SimpleConfigurationSkipValidationTests.java
│ │ │ ├── SimpleConfigurationTests.java
│ │ │ └── impl
│ │ │ ├── MyConfigurationDefinitionParser.java
│ │ │ └── MyConfigurationImpl.java
│ │ └── resources
│ │ ├── META-INF
│ │ ├── services.bean-definition-parsers
│ │ └── services
│ │ │ └── my-configuration.xsd
│ │ ├── test1.props
│ │ ├── test2.props
│ │ └── test3.props
├── dataresolver
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── dataresolver
│ │ │ │ ├── DataResolver.java
│ │ │ │ ├── DataResolverContext.java
│ │ │ │ ├── DataResolverException.java
│ │ │ │ ├── DataResolverFactory.java
│ │ │ │ ├── DataResolverNotFoundException.java
│ │ │ │ ├── DataResolverService.java
│ │ │ │ └── impl
│ │ │ │ ├── DataResolverServiceDefinitionParser.java
│ │ │ │ └── DataResolverServiceImpl.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services.bean-definition-parsers
│ │ │ ├── services
│ │ │ └── data-resolver.xsd
│ │ │ └── spring.configuration-points
│ │ └── test
│ │ ├── config
│ │ └── services.xml
│ │ └── java
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── service
│ │ └── dataresolver
│ │ ├── AbstractDataResolverTests.java
│ │ ├── DataResolverContextTests.java
│ │ ├── DataResolverServiceTests.java
│ │ └── data
│ │ ├── Action.java
│ │ ├── ContextAwareResolver.java
│ │ ├── DerivedAction.java
│ │ ├── MapResolverFactory.java
│ │ ├── Param.java
│ │ └── RequestResolverFactory.java
├── form
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── form
│ │ │ │ ├── Condition.java
│ │ │ │ ├── CustomErrorNotFoundException.java
│ │ │ │ ├── CustomErrors.java
│ │ │ │ ├── Field.java
│ │ │ │ ├── Form.java
│ │ │ │ ├── FormConstant.java
│ │ │ │ ├── FormService.java
│ │ │ │ ├── FormServiceException.java
│ │ │ │ ├── Group.java
│ │ │ │ ├── InvalidGroupStateException.java
│ │ │ │ ├── MessageContext.java
│ │ │ │ ├── Validator.java
│ │ │ │ ├── configuration
│ │ │ │ ├── FieldConfig.java
│ │ │ │ ├── FormConfig.java
│ │ │ │ └── GroupConfig.java
│ │ │ │ ├── impl
│ │ │ │ ├── FieldImpl.java
│ │ │ │ ├── FormImpl.java
│ │ │ │ ├── FormParameters.java
│ │ │ │ ├── FormServiceDefinitionParser.java
│ │ │ │ ├── FormServiceImpl.java
│ │ │ │ ├── GroupImpl.java
│ │ │ │ ├── MessageContextFactory.java
│ │ │ │ ├── ValidatorContextImpl.java
│ │ │ │ ├── condition
│ │ │ │ │ └── JexlCondition.java
│ │ │ │ ├── configuration
│ │ │ │ │ ├── AbstractConfig.java
│ │ │ │ │ ├── FieldConfigImpl.java
│ │ │ │ │ ├── FormConfigImpl.java
│ │ │ │ │ └── GroupConfigImpl.java
│ │ │ │ └── validation
│ │ │ │ │ ├── DateValidator.java
│ │ │ │ │ ├── MailAddressValidator.java
│ │ │ │ │ ├── MultiValuesCountValidator.java
│ │ │ │ │ ├── NoopValidator.java
│ │ │ │ │ ├── NumberCompareValidator.java
│ │ │ │ │ ├── NumberValidator.java
│ │ │ │ │ ├── RegexpValidator.java
│ │ │ │ │ ├── RequiredValidator.java
│ │ │ │ │ ├── StringByteLengthValidator.java
│ │ │ │ │ ├── StringCompareValidator.java
│ │ │ │ │ ├── StringLengthValidator.java
│ │ │ │ │ ├── UploadedFileValidator.java
│ │ │ │ │ └── composite
│ │ │ │ │ ├── AllOfValidator.java
│ │ │ │ │ ├── AllOfValuesValidator.java
│ │ │ │ │ ├── AnyOfValidator.java
│ │ │ │ │ ├── AnyOfValuesValidator.java
│ │ │ │ │ ├── ChooseValidator.java
│ │ │ │ │ ├── IfValidator.java
│ │ │ │ │ ├── NoneOfValidator.java
│ │ │ │ │ └── NoneOfValuesValidator.java
│ │ │ │ └── support
│ │ │ │ ├── AbstractCompositeValidator.java
│ │ │ │ ├── AbstractCompositeValidatorDefinitionParser.java
│ │ │ │ ├── AbstractCondition.java
│ │ │ │ ├── AbstractConditionDefinitionParser.java
│ │ │ │ ├── AbstractMultiValuesValidator.java
│ │ │ │ ├── AbstractNumberValidator.java
│ │ │ │ ├── AbstractOptionalValidator.java
│ │ │ │ ├── AbstractRegexpValidator.java
│ │ │ │ ├── AbstractSimpleCompositeValidator.java
│ │ │ │ ├── AbstractValidator.java
│ │ │ │ ├── AbstractValidatorDefinitionParser.java
│ │ │ │ ├── CompareOperator.java
│ │ │ │ ├── FormTool.java
│ │ │ │ └── NumberSupport.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services-form-conditions.bean-definition-parsers
│ │ │ ├── services-form-validators.bean-definition-parsers
│ │ │ ├── services-pull-factories.bean-definition-parsers
│ │ │ ├── services.bean-definition-parsers
│ │ │ ├── services
│ │ │ ├── form.xsd
│ │ │ ├── form
│ │ │ │ ├── conditions
│ │ │ │ │ └── jexl-condition.xsd
│ │ │ │ └── validators
│ │ │ │ │ ├── all-of-values.xsd
│ │ │ │ │ ├── all-of.xsd
│ │ │ │ │ ├── any-of-values.xsd
│ │ │ │ │ ├── any-of.xsd
│ │ │ │ │ ├── choose.xsd
│ │ │ │ │ ├── custom-error.xsd
│ │ │ │ │ ├── date-validator.xsd
│ │ │ │ │ ├── if.xsd
│ │ │ │ │ ├── mail-address-validator.xsd
│ │ │ │ │ ├── multi-values-count-validator.xsd
│ │ │ │ │ ├── none-of-values.xsd
│ │ │ │ │ ├── none-of.xsd
│ │ │ │ │ ├── number-compare-validator.xsd
│ │ │ │ │ ├── number-validator.xsd
│ │ │ │ │ ├── regexp-validator.xsd
│ │ │ │ │ ├── required-validator.xsd
│ │ │ │ │ ├── string-byte-length-validator.xsd
│ │ │ │ │ ├── string-compare-validator.xsd
│ │ │ │ │ ├── string-length-validator.xsd
│ │ │ │ │ └── uploaded-file-validator.xsd
│ │ │ └── pull
│ │ │ │ └── factories
│ │ │ │ └── form-tool.xsd
│ │ │ └── spring.configuration-points
│ │ └── test
│ │ ├── config
│ │ ├── data
│ │ │ ├── file1.txt
│ │ │ ├── file2.txt
│ │ │ ├── file3.txt
│ │ │ ├── file4.gif
│ │ │ ├── file4_1.GIF
│ │ │ ├── file5.jpg
│ │ │ ├── file6.jpg
│ │ │ ├── file6_1.JPG
│ │ │ └── file7
│ │ ├── myform.properties
│ │ ├── myform_zh_CN.properties
│ │ ├── myform_zh_TW.properties
│ │ ├── services-base-with-upload.xml
│ │ ├── services-base-without-upload.xml
│ │ ├── services-form-config.xml
│ │ ├── services-form-no-request.xml
│ │ ├── services-form-validators.xml
│ │ ├── services-form-with-message-source.xml
│ │ ├── services-form.xml
│ │ └── services-skip-validation.xml
│ │ └── java
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── service
│ │ └── form
│ │ ├── AbstractFormServiceTests.java
│ │ ├── FieldTests.java
│ │ ├── FormServiceSkipValidationTests.java
│ │ ├── FormServiceTests.java
│ │ ├── FormTests.java
│ │ ├── FormToolTests.java
│ │ ├── GroupTests.java
│ │ ├── MessageSourceTests.java
│ │ ├── UncompressedFieldKeyTests.java
│ │ ├── configuration
│ │ ├── AbstractConfigTests.java
│ │ ├── FieldConfigTests.java
│ │ ├── FormConfigTests.java
│ │ ├── FormServiceConfigTests.java
│ │ └── GroupConfigTests.java
│ │ ├── impl
│ │ ├── MessageContextTests.java
│ │ ├── MyPropertyEditorRegistrar.java
│ │ ├── condition
│ │ │ └── JexlConditionTests.java
│ │ └── validation
│ │ │ ├── AbstractNumberValidatorTests.java
│ │ │ ├── AbstractValidatorTests.java
│ │ │ ├── DateValidatorTests.java
│ │ │ ├── MailAddressValidatorTests.java
│ │ │ ├── MultiFieldsValidator.java
│ │ │ ├── MultiValuesCountValidatorTests.java
│ │ │ ├── MyValidator.java
│ │ │ ├── MyValidator2.java
│ │ │ ├── NoMessageValidator.java
│ │ │ ├── NumberCompareValidatorTests.java
│ │ │ ├── NumberValidatorTests.java
│ │ │ ├── RegexpValidatorTests.java
│ │ │ ├── RequiredValidatorTests.java
│ │ │ ├── StringByteLengthValidatorTests.java
│ │ │ ├── StringCompareValidatorTests.java
│ │ │ ├── StringLengthValidatorTests.java
│ │ │ ├── UploadedFileValidatorTests.java
│ │ │ └── composite
│ │ │ ├── AbstractCompositeValidatorTests.java
│ │ │ ├── AbstractSimpleCompositeValidatorTests.java
│ │ │ ├── AllOfValidatorTests.java
│ │ │ ├── AllOfValuesValidatorTests.java
│ │ │ ├── AnyOfValidatorTests.java
│ │ │ ├── AnyOfValuesValidatorTests.java
│ │ │ ├── ChooseValidatorTests.java
│ │ │ ├── IfValidatorTests.java
│ │ │ ├── NoneOfValidatorTests.java
│ │ │ └── NoneOfValuesValidatorTests.java
│ │ └── support
│ │ ├── CompareOperatorTests.java
│ │ └── NumberSupportTests.java
├── freemarker
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── freemarker
│ │ │ │ ├── FreeMarkerConfiguration.java
│ │ │ │ ├── FreeMarkerEngine.java
│ │ │ │ ├── FreeMarkerPlugin.java
│ │ │ │ ├── impl
│ │ │ │ ├── FreeMarkerConfigurationImpl.java
│ │ │ │ ├── FreeMarkerEngineDefinitionParser.java
│ │ │ │ ├── FreeMarkerEngineImpl.java
│ │ │ │ ├── SpringResourceLoaderAdapter.java
│ │ │ │ └── TemplateContextAdapter.java
│ │ │ │ └── support
│ │ │ │ ├── DefaultBeansWrapper.java
│ │ │ │ └── RenderableModel.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services-template-engines.bean-definition-parsers
│ │ │ ├── services
│ │ │ └── template
│ │ │ │ └── engines
│ │ │ │ └── freemarker-engine.xsd
│ │ │ └── spring.configuration-points
│ │ └── test
│ │ ├── config
│ │ ├── services-skip-validation.xml
│ │ ├── services.xml
│ │ ├── services_dev.xml
│ │ ├── services_empty_property.xml
│ │ └── templates
│ │ │ ├── test.ftl
│ │ │ ├── test2.ftl
│ │ │ ├── test3.ftl
│ │ │ ├── test_html_escape.ftl
│ │ │ ├── test_render.ftl
│ │ │ ├── test_render_error.ftl
│ │ │ ├── test_renderable.ftl
│ │ │ └── test_url_encode.ftl
│ │ └── java
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── service
│ │ └── freemarker
│ │ ├── FreeMarkerEngineSkipValidationTests.java
│ │ ├── FreeMarkerEngineTests.java
│ │ ├── SpringResourceLoaderAdapterTests.java
│ │ ├── TemplateContextAdapterTests.java
│ │ └── impl
│ │ └── MyPlugin.java
├── jsp
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── jsp
│ │ │ │ ├── JspEngine.java
│ │ │ │ └── impl
│ │ │ │ ├── JspEngineDefinitionParser.java
│ │ │ │ ├── JspEngineImpl.java
│ │ │ │ ├── JspResponse.java
│ │ │ │ └── TemplateContextAdapter.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services-template-engines.bean-definition-parsers
│ │ │ └── services
│ │ │ └── template
│ │ │ └── engines
│ │ │ └── jsp-engine.xsd
│ │ └── test
│ │ ├── config
│ │ ├── webapp
│ │ │ ├── WEB-INF
│ │ │ │ └── web.xml
│ │ │ ├── services-skip-validation.xml
│ │ │ ├── services.xml
│ │ │ └── templates
│ │ │ │ ├── test.jsp
│ │ │ │ └── test.jspx
│ │ ├── webapp1
│ │ │ ├── WEB-INF
│ │ │ │ └── web.xml
│ │ │ ├── mytemplates
│ │ │ │ └── mytemplate.jsp
│ │ │ └── services.xml
│ │ └── webapp2
│ │ │ ├── WEB-INF-2
│ │ │ └── web.xml
│ │ │ ├── mytemplates
│ │ │ └── mytemplate.jsp
│ │ │ └── services.xml
│ │ └── java
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── service
│ │ └── jsp
│ │ ├── AbstractJspEngineTests.java
│ │ ├── JspEngineSkipValidationTests.java
│ │ ├── JspEngineTests.java
│ │ ├── JspResponseTests.java
│ │ └── TemplateContextAdapterTests.java
├── mail
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── mail
│ │ │ │ ├── MailConstant.java
│ │ │ │ ├── MailException.java
│ │ │ │ ├── MailNotFoundException.java
│ │ │ │ ├── MailService.java
│ │ │ │ ├── MailSettings.java
│ │ │ │ ├── MailStoreNotFoundException.java
│ │ │ │ ├── MailTransportNotFoundException.java
│ │ │ │ ├── builder
│ │ │ │ ├── InvalidAddressException.java
│ │ │ │ ├── MailAddressType.java
│ │ │ │ ├── MailBuilder.java
│ │ │ │ ├── MailBuilderException.java
│ │ │ │ ├── MailContent.java
│ │ │ │ ├── Multipart.java
│ │ │ │ └── content
│ │ │ │ │ ├── AbstractContent.java
│ │ │ │ │ ├── AlternativeMultipartContent.java
│ │ │ │ │ ├── AttachmentContent.java
│ │ │ │ │ ├── HTMLTemplateContent.java
│ │ │ │ │ ├── MixedMultipartContent.java
│ │ │ │ │ ├── MultipartContent.java
│ │ │ │ │ ├── TemplateContent.java
│ │ │ │ │ ├── TextContent.java
│ │ │ │ │ └── TextTemplateContent.java
│ │ │ │ ├── impl
│ │ │ │ ├── MailBuilderFactory.java
│ │ │ │ ├── MailServiceDefinitionParser.java
│ │ │ │ ├── MailServiceImpl.java
│ │ │ │ └── content
│ │ │ │ │ ├── AbstractMultipartContentDefinitionParser.java
│ │ │ │ │ ├── AlternativeContentDefinitionParser.java
│ │ │ │ │ ├── AttachmentContentDefinitionParser.java
│ │ │ │ │ ├── HTMLTemplateContentDefinitionParser.java
│ │ │ │ │ ├── MixedContentDefinitionParser.java
│ │ │ │ │ ├── TextContentDefinitionParser.java
│ │ │ │ │ └── TextTemplateContentDefinitionParser.java
│ │ │ │ ├── session
│ │ │ │ ├── MailSession.java
│ │ │ │ ├── MailStore.java
│ │ │ │ ├── MailStoreHandler.java
│ │ │ │ ├── MailTransport.java
│ │ │ │ └── MailTransportHandler.java
│ │ │ │ ├── support
│ │ │ │ ├── AbstractDataSource.java
│ │ │ │ ├── DefaultMailStoreHandler.java
│ │ │ │ ├── DefaultMailTransportHandler.java
│ │ │ │ └── ResourceDataSource.java
│ │ │ │ └── util
│ │ │ │ └── MailUtil.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services-mails-contents.bean-definition-parsers
│ │ │ ├── services.bean-definition-parsers
│ │ │ ├── services
│ │ │ ├── mails.xsd
│ │ │ └── mails
│ │ │ │ └── contents
│ │ │ │ ├── alternative-content.xsd
│ │ │ │ ├── attachment-content.xsd
│ │ │ │ ├── html-template-content.xsd
│ │ │ │ ├── mixed-content.xsd
│ │ │ │ ├── text-content.xsd
│ │ │ │ └── text-template-content.xsd
│ │ │ └── spring.configuration-points
│ │ └── test
│ │ ├── config
│ │ ├── emptyfile
│ │ ├── java.gif
│ │ ├── services.xml
│ │ ├── services_import_null.xml
│ │ ├── subdir
│ │ │ └── bible.jpg
│ │ ├── templates
│ │ │ └── mail
│ │ │ │ ├── complexhtml.ftl
│ │ │ │ ├── complexhtml.vm
│ │ │ │ ├── dup_fileNames.vm
│ │ │ │ ├── imageNotFound.vm
│ │ │ │ ├── mytemplate.ftl
│ │ │ │ ├── mytemplate.vm
│ │ │ │ └── streamOnlyResource.vm
│ │ ├── testfile.txt
│ │ ├── welcome.eml
│ │ └── welcome_utf8.eml
│ │ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── service
│ │ │ └── mail
│ │ │ ├── AbstractMailBuilderTests.java
│ │ │ ├── AbstractTemplateContentTests.java
│ │ │ ├── AttachmentContentTests.java
│ │ │ ├── HTMLTemplateContentTests.java
│ │ │ ├── IntegrationMailBuilderTests.java
│ │ │ ├── MailBuilderTests.java
│ │ │ ├── MailContentBasicTests.java
│ │ │ ├── MailServiceTests.java
│ │ │ ├── MultipartContentTests.java
│ │ │ ├── TextContentTests.java
│ │ │ ├── TextTemplateContentTests.java
│ │ │ ├── mock
│ │ │ ├── MyMockStore.java
│ │ │ └── MyMockTransport.java
│ │ │ ├── session
│ │ │ ├── AbstractMailSessionTests.java
│ │ │ ├── MailStoreTests.java
│ │ │ └── MailTransportTests.java
│ │ │ ├── support
│ │ │ └── ResourceDataSourceTests.java
│ │ │ └── util
│ │ │ └── MailUtilTests.java
│ │ └── resources
│ │ └── META-INF
│ │ └── javamail.providers
├── mappingrule
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── mappingrule
│ │ │ │ ├── MappingRule.java
│ │ │ │ ├── MappingRuleException.java
│ │ │ │ ├── MappingRuleNotFoundException.java
│ │ │ │ ├── MappingRuleService.java
│ │ │ │ ├── impl
│ │ │ │ ├── MappingRuleServiceDefinitionParser.java
│ │ │ │ ├── MappingRuleServiceImpl.java
│ │ │ │ └── rule
│ │ │ │ │ ├── DirectModuleMappingRule.java
│ │ │ │ │ ├── DirectTemplateMappingRule.java
│ │ │ │ │ ├── ExtensionMappingRule.java
│ │ │ │ │ ├── FallbackIterator.java
│ │ │ │ │ ├── FallbackModuleMappingRule.java
│ │ │ │ │ └── FallbackTemplateMappingRule.java
│ │ │ │ └── support
│ │ │ │ ├── AbstractMappingRule.java
│ │ │ │ ├── AbstractMappingRuleDefinitionParser.java
│ │ │ │ ├── AbstractModuleMappingRule.java
│ │ │ │ ├── AbstractModuleMappingRuleDefinitionParser.java
│ │ │ │ ├── AbstractTemplateMappingRule.java
│ │ │ │ └── AbstractTemplateMappingRuleDefinitionParser.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services-mapping-rules.bean-definition-parsers
│ │ │ ├── services.bean-definition-parsers
│ │ │ ├── services
│ │ │ ├── mapping-rules.xsd
│ │ │ └── mapping-rules
│ │ │ │ ├── direct-module-rule.xsd
│ │ │ │ ├── direct-template-rule.xsd
│ │ │ │ ├── extension-rule.xsd
│ │ │ │ ├── fallback-module-rule.xsd
│ │ │ │ └── fallback-template-rule.xsd
│ │ │ └── spring.configuration-points
│ │ └── test
│ │ ├── config
│ │ ├── services-parent.xml
│ │ ├── services-skip-validation.xml
│ │ ├── services.xml
│ │ └── templates
│ │ │ ├── myprefix.locale
│ │ │ ├── aaa
│ │ │ │ ├── bbb
│ │ │ │ │ ├── default.vm
│ │ │ │ │ ├── default_zh_TW.jsp
│ │ │ │ │ └── myOtherModule_zh.vm
│ │ │ │ ├── default.vm
│ │ │ │ └── default_zh.jsp
│ │ │ └── ccc
│ │ │ │ └── default_zh.vm
│ │ │ └── myprefix
│ │ │ ├── aaa
│ │ │ ├── bbb
│ │ │ │ ├── default.jsp
│ │ │ │ ├── default.vm
│ │ │ │ └── myOtherModule.vm
│ │ │ ├── default.jsp
│ │ │ └── default.vm
│ │ │ └── ccc
│ │ │ └── default.vm
│ │ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ ├── app1
│ │ │ └── module
│ │ │ │ └── screen
│ │ │ │ ├── MyDefaultModule.java
│ │ │ │ ├── aaa
│ │ │ │ ├── Default.java
│ │ │ │ └── bbb
│ │ │ │ │ ├── Default.java
│ │ │ │ │ └── MyOtherModule.java
│ │ │ │ └── ccc
│ │ │ │ └── Default.java
│ │ │ └── citrus
│ │ │ └── service
│ │ │ └── mappingrule
│ │ │ ├── AbstractMappingRuleServiceTests.java
│ │ │ ├── AbstractMappingRuleTests.java
│ │ │ ├── DirectModuleTests.java
│ │ │ ├── DirectTemplateTests.java
│ │ │ ├── ExtensionTests.java
│ │ │ ├── FallbackModuleTests.java
│ │ │ ├── FallbackTemplateTests.java
│ │ │ ├── MappingRuleServiceSkipValidationTests.java
│ │ │ ├── MappingRuleServiceTests.java
│ │ │ └── impl
│ │ │ ├── SimpleEngine.java
│ │ │ └── rule
│ │ │ └── FallbackIteratorTests.java
│ │ └── resources
│ │ └── app1
│ │ ├── Failure.groovy
│ │ └── module
│ │ ├── action
│ │ └── myprod
│ │ │ └── MyAction.groovy
│ │ ├── control
│ │ └── myprod
│ │ │ └── MyControl.groovy
│ │ └── screens
│ │ ├── AbstractScreen.groovy
│ │ └── MyScreen.groovy
├── moduleloader
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── moduleloader
│ │ │ │ ├── Module.java
│ │ │ │ ├── ModuleAdapterFactory.java
│ │ │ │ ├── ModuleEvent.java
│ │ │ │ ├── ModuleEventException.java
│ │ │ │ ├── ModuleEventNotFoundException.java
│ │ │ │ ├── ModuleFactory.java
│ │ │ │ ├── ModuleInfo.java
│ │ │ │ ├── ModuleLoaderException.java
│ │ │ │ ├── ModuleLoaderService.java
│ │ │ │ ├── ModuleNotFoundException.java
│ │ │ │ ├── ModuleReturningValue.java
│ │ │ │ ├── SkipModuleExecutionException.java
│ │ │ │ ├── UnadaptableModuleException.java
│ │ │ │ └── impl
│ │ │ │ ├── ModuleKey.java
│ │ │ │ ├── ModuleLoaderServiceDefinitionParser.java
│ │ │ │ ├── ModuleLoaderServiceImpl.java
│ │ │ │ ├── adapter
│ │ │ │ ├── AbstractDataBindingAdapter.java
│ │ │ │ ├── AbstractDataBindingAdapterFactory.java
│ │ │ │ ├── AbstractDataBindingAdapterFactoryDefinitionParser.java
│ │ │ │ ├── AbstractModuleEventAdapter.java
│ │ │ │ ├── AbstractModuleEventAdapterFactory.java
│ │ │ │ ├── ActionEventAdapter.java
│ │ │ │ ├── ActionEventAdapterFactory.java
│ │ │ │ ├── ActionEventAdapterFactoryDefinitionParser.java
│ │ │ │ ├── DataBindingAdapter.java
│ │ │ │ ├── DataBindingAdapterFactory.java
│ │ │ │ ├── DataBindingAdapterFactoryDefinitionParser.java
│ │ │ │ ├── MethodInvoker.java
│ │ │ │ ├── ScreenEventAdapter.java
│ │ │ │ ├── ScreenEventAdapterFactory.java
│ │ │ │ └── ScreenEventAdapterFactoryDefinitionParser.java
│ │ │ │ └── factory
│ │ │ │ ├── AbstractBeanFactoryBasedModuleFactory.java
│ │ │ │ ├── AbstractModuleFactoryDefinitionParser.java
│ │ │ │ ├── ClassModuleFactory.java
│ │ │ │ ├── ClassModuleFactoryDefinitionParser.java
│ │ │ │ ├── ModuleInfo.java
│ │ │ │ ├── ScriptModuleFactory.java
│ │ │ │ └── ScriptModuleFactoryDefinitionParser.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services-module-loader-adapters.bean-definition-parsers
│ │ │ ├── services-module-loader-factories.bean-definition-parsers
│ │ │ ├── services.bean-definition-parsers
│ │ │ ├── services
│ │ │ ├── module-loader.xsd
│ │ │ └── module-loader
│ │ │ │ ├── adapters
│ │ │ │ ├── action-event-adapter.xsd
│ │ │ │ ├── data-binding-adapter.xsd
│ │ │ │ └── screen-event-adapter.xsd
│ │ │ │ └── factories
│ │ │ │ ├── class-modules.xsd
│ │ │ │ ├── factories-base.xsd
│ │ │ │ └── script-modules.xsd
│ │ │ ├── spring.configuration-points
│ │ │ └── spring.schemas
│ │ └── test
│ │ ├── config
│ │ ├── adapter
│ │ │ ├── services-lazyinit.xml
│ │ │ └── services.xml
│ │ ├── base-dev.xml
│ │ ├── base-production.xml
│ │ ├── base-root.xml
│ │ ├── dataresolver
│ │ │ ├── services-no-dataresolver.xml
│ │ │ ├── services-with-dataresolver-default-adapters.xml
│ │ │ ├── services-with-dataresolver-defined-adapters-default-resolver-ref.xml
│ │ │ └── services-with-dataresolver-defined-adapters.xml
│ │ ├── factory
│ │ │ ├── services-class-modules-wrong.xml
│ │ │ ├── services-class-modules.xml
│ │ │ ├── services-script-modules-wrong.xml
│ │ │ └── services-script-modules.xml
│ │ ├── services-module-loader.xml
│ │ └── services-skip-validation.xml
│ │ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ ├── citrus
│ │ │ └── service
│ │ │ │ ├── AbstractWebTests.java
│ │ │ │ └── moduleloader
│ │ │ │ ├── AbstractModuleLoaderTests.java
│ │ │ │ ├── ModuleKeyTests.java
│ │ │ │ ├── ModuleLoaderServiceSkipValidationTests.java
│ │ │ │ ├── ModuleLoaderServiceTests.java
│ │ │ │ ├── MyScreen.java
│ │ │ │ └── impl
│ │ │ │ ├── adapter
│ │ │ │ ├── ActionEventTests.java
│ │ │ │ ├── DataBindingTests.java
│ │ │ │ ├── ScreenEventTests.java
│ │ │ │ └── SimpleModuleTests.java
│ │ │ │ ├── dataresolver
│ │ │ │ └── ParamBindingTests.java
│ │ │ │ └── factory
│ │ │ │ ├── ClassModuleFactoryTests.java
│ │ │ │ └── ScriptModuleFactoryTests.java
│ │ │ ├── test
│ │ │ └── app1
│ │ │ │ ├── Failure.java
│ │ │ │ ├── module
│ │ │ │ ├── action
│ │ │ │ │ └── myprod
│ │ │ │ │ │ ├── MyAction.java
│ │ │ │ │ │ ├── MyActionFailure.java
│ │ │ │ │ │ └── MyActionNoRunData.java
│ │ │ │ ├── control
│ │ │ │ │ ├── InvalidControl.java
│ │ │ │ │ └── myprod
│ │ │ │ │ │ ├── MyControl.java
│ │ │ │ │ │ └── MyControl2.java
│ │ │ │ └── screens
│ │ │ │ │ ├── AbstractScreen.java
│ │ │ │ │ └── MyScreen.java
│ │ │ │ └── module2
│ │ │ │ └── screen
│ │ │ │ ├── MyEventScreen.java
│ │ │ │ ├── MyEventScreenFailure.java
│ │ │ │ ├── MyEventScreenHybrid.java
│ │ │ │ └── MyEventScreenWithDefaultHandler.java
│ │ │ ├── test2
│ │ │ ├── dataresolver
│ │ │ │ ├── MapResolverFactory.java
│ │ │ │ ├── Param.java
│ │ │ │ ├── RequestResolverFactory.java
│ │ │ │ ├── Skip.java
│ │ │ │ └── SkipModuleResolverFactory.java
│ │ │ └── module
│ │ │ │ ├── action
│ │ │ │ ├── MyAction.java
│ │ │ │ ├── MyParameterizedAction.java
│ │ │ │ ├── MySkippableAction.java
│ │ │ │ └── MySkippableAction2.java
│ │ │ │ └── screen
│ │ │ │ ├── MyParameterizedScreen.java
│ │ │ │ ├── MyScreen.java
│ │ │ │ ├── MySkippableScreen.java
│ │ │ │ └── MySkippableScreen2.java
│ │ │ └── test3
│ │ │ └── app2
│ │ │ ├── Reloadable.java
│ │ │ ├── filter
│ │ │ └── MyTypeFilter.java
│ │ │ └── module
│ │ │ ├── action
│ │ │ ├── FirstAction.java
│ │ │ ├── SecondAction.java
│ │ │ └── ThirdAction.java
│ │ │ └── screen
│ │ │ ├── FirstScreen.java
│ │ │ ├── SecondScreen.java
│ │ │ └── ThirdScreen.java
│ │ └── resources
│ │ └── app1
│ │ ├── Failure.groovy
│ │ └── module
│ │ ├── action
│ │ └── myprod
│ │ │ └── MyAction.groovy
│ │ ├── control
│ │ └── myprod
│ │ │ └── MyControl.groovy
│ │ └── screens
│ │ ├── AbstractScreen.groovy
│ │ └── MyScreen.groovy
├── pipeline
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── pipeline
│ │ │ │ ├── Condition.java
│ │ │ │ ├── LabelNotDefinedException.java
│ │ │ │ ├── Pipeline.java
│ │ │ │ ├── PipelineContext.java
│ │ │ │ ├── PipelineException.java
│ │ │ │ ├── PipelineInvocationHandle.java
│ │ │ │ ├── PipelineStates.java
│ │ │ │ ├── TooManyLoopsException.java
│ │ │ │ ├── Valve.java
│ │ │ │ ├── impl
│ │ │ │ ├── PipelineDefinitionParser.java
│ │ │ │ ├── PipelineImpl.java
│ │ │ │ ├── condition
│ │ │ │ │ ├── AllOf.java
│ │ │ │ │ ├── AnyOf.java
│ │ │ │ │ ├── JexlCondition.java
│ │ │ │ │ └── NoneOf.java
│ │ │ │ └── valve
│ │ │ │ │ ├── BreakIfValve.java
│ │ │ │ │ ├── BreakUnlessValve.java
│ │ │ │ │ ├── BreakValve.java
│ │ │ │ │ ├── ChooseValve.java
│ │ │ │ │ ├── ExitValve.java
│ │ │ │ │ ├── IfValve.java
│ │ │ │ │ ├── LoopValve.java
│ │ │ │ │ ├── SubPipelineValve.java
│ │ │ │ │ ├── TryCatchFinallyValve.java
│ │ │ │ │ └── WhileLoopValve.java
│ │ │ │ └── support
│ │ │ │ ├── AbstractCompositeCondition.java
│ │ │ │ ├── AbstractCompositeConditionDefinitionParser.java
│ │ │ │ ├── AbstractCondition.java
│ │ │ │ ├── AbstractConditionDefinitionParser.java
│ │ │ │ ├── AbstractValve.java
│ │ │ │ └── AbstractValveDefinitionParser.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services-pipeline-conditions.bean-definition-parsers
│ │ │ ├── services-pipeline-valves.bean-definition-parsers
│ │ │ ├── services.bean-definition-parsers
│ │ │ ├── services
│ │ │ ├── pipeline.xsd
│ │ │ └── pipeline
│ │ │ │ ├── conditions
│ │ │ │ ├── all-of.xsd
│ │ │ │ ├── any-of.xsd
│ │ │ │ ├── jexl-condition.xsd
│ │ │ │ └── none-of.xsd
│ │ │ │ └── valves
│ │ │ │ ├── break-if.xsd
│ │ │ │ ├── break-unless.xsd
│ │ │ │ ├── break.xsd
│ │ │ │ ├── choose.xsd
│ │ │ │ ├── exit.xsd
│ │ │ │ ├── if.xsd
│ │ │ │ ├── loop.xsd
│ │ │ │ ├── sub-pipeline.xsd
│ │ │ │ ├── try-catch-finally.xsd
│ │ │ │ └── while.xsd
│ │ │ └── spring.configuration-points
│ │ └── test
│ │ ├── config
│ │ ├── services-conditions.xml
│ │ ├── services-pipeline.xml
│ │ └── services-valves.xml
│ │ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── service
│ │ │ └── pipeline
│ │ │ ├── AbstractPipelineTests.java
│ │ │ ├── PipelineServiceTests.java
│ │ │ ├── PipelineTests.java
│ │ │ ├── condition
│ │ │ ├── AbstractCompositeConditionTests.java
│ │ │ ├── AbstractConditionTests.java
│ │ │ ├── AllOfConditionTests.java
│ │ │ ├── AnyOfConditionTests.java
│ │ │ ├── JexlConditionTests.java
│ │ │ ├── MyCondition.java
│ │ │ └── NoneOfConditionTests.java
│ │ │ └── valve
│ │ │ ├── AbstractBreakValveTests.java
│ │ │ ├── AbstractLoopValveTests.java
│ │ │ ├── AbstractValveTests.java
│ │ │ ├── BreakIfValveTests.java
│ │ │ ├── BreakUnlessTests.java
│ │ │ ├── BreakValveTests.java
│ │ │ ├── ChooseValveTests.java
│ │ │ ├── ExecutionLog.java
│ │ │ ├── ExitValveTests.java
│ │ │ ├── IfValveTests.java
│ │ │ ├── LogAndBreakValve.java
│ │ │ ├── LogAndInvokeSubValve.java
│ │ │ ├── LogAndReturnValve.java
│ │ │ ├── LogValve.java
│ │ │ ├── LoopValveTests.java
│ │ │ ├── RecoveryValve.java
│ │ │ ├── SubPipelineValveTests.java
│ │ │ ├── TryCatchFinallyValveTests.java
│ │ │ ├── WhileLoopValveTests.java
│ │ │ └── WrongValve.java
│ │ └── resources
│ │ └── META-INF
│ │ ├── services-pipeline-valves.bean-definition-parsers
│ │ └── services
│ │ └── pipeline
│ │ └── valves
│ │ └── log.xsd
├── pull
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── pull
│ │ │ │ ├── PullContext.java
│ │ │ │ ├── PullException.java
│ │ │ │ ├── PullService.java
│ │ │ │ ├── RuntimeToolSetFactory.java
│ │ │ │ ├── ToolFactory.java
│ │ │ │ ├── ToolNameAware.java
│ │ │ │ ├── ToolSetFactory.java
│ │ │ │ ├── impl
│ │ │ │ ├── PullServiceDefinitionParser.java
│ │ │ │ └── PullServiceImpl.java
│ │ │ │ └── support
│ │ │ │ ├── BeanTool.java
│ │ │ │ ├── ConstantTool.java
│ │ │ │ ├── ConstantToolSet.java
│ │ │ │ ├── ContextExposerToolSet.java
│ │ │ │ ├── MixinTool.java
│ │ │ │ └── UtilToolSet.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services-pull-factories.bean-definition-parsers
│ │ │ ├── services.bean-definition-parsers
│ │ │ ├── services
│ │ │ ├── pull.xsd
│ │ │ └── pull
│ │ │ │ └── factories
│ │ │ │ ├── bean-tool.xsd
│ │ │ │ ├── constants.xsd
│ │ │ │ ├── context-exposer.xsd
│ │ │ │ ├── mixin.xsd
│ │ │ │ └── utils.xsd
│ │ │ └── spring.configuration-points
│ │ └── test
│ │ ├── config
│ │ ├── logback.xml
│ │ ├── pull
│ │ │ ├── services-pull-names.xml
│ │ │ ├── services-pull-parent.xml
│ │ │ ├── services-pull-sub.xml
│ │ │ ├── services-pull-tool.xml
│ │ │ ├── services-pull-wrong-dup-id.xml
│ │ │ ├── services-pull-wrong-no-id-1.xml
│ │ │ ├── services-pull-wrong-no-id-2.xml
│ │ │ └── services-pull.xml
│ │ └── services-skip-validation.xml
│ │ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── service
│ │ │ └── pull
│ │ │ ├── AbstractPullServiceConfigTests.java
│ │ │ ├── PullServiceConfigTests.java
│ │ │ ├── PullServiceSkipValidationTests.java
│ │ │ ├── impl
│ │ │ ├── AbstractPullServiceTests.java
│ │ │ ├── PullServiceBasicTests.java
│ │ │ ├── PullServiceTests.java
│ │ │ └── ToolNameTests.java
│ │ │ ├── support
│ │ │ ├── BeanToolTests.java
│ │ │ ├── ContextExposerToolSetTests.java
│ │ │ ├── MixinToolTests.java
│ │ │ └── UtilToolSetTests.java
│ │ │ └── tool
│ │ │ ├── BaseFactory.java
│ │ │ ├── ObjectRuntimeToolSet.java
│ │ │ ├── ObjectTool.java
│ │ │ ├── ObjectToolSet.java
│ │ │ ├── SimpleTool.java
│ │ │ └── SimpleToolSet.java
│ │ └── resources
│ │ └── META-INF
│ │ ├── services-pull-factories.bean-definition-parsers
│ │ └── services
│ │ └── pull
│ │ └── factories
│ │ └── my-inner-tool.xsd
├── requestcontext
│ ├── docs
│ │ └── orders.txt
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── requestcontext
│ │ │ │ ├── RequestContext.java
│ │ │ │ ├── RequestContextChainingService.java
│ │ │ │ ├── RequestContextException.java
│ │ │ │ ├── RequestContextFactory.java
│ │ │ │ ├── RequestContextInfo.java
│ │ │ │ ├── TwoPhaseCommitRequestContext.java
│ │ │ │ ├── basic
│ │ │ │ ├── BasicRequestContext.java
│ │ │ │ ├── CookieHeaderValueInterceptor.java
│ │ │ │ ├── CookieInterceptor.java
│ │ │ │ ├── CookieRejectedException.java
│ │ │ │ ├── HeaderNameInterceptor.java
│ │ │ │ ├── HeaderValueInterceptor.java
│ │ │ │ ├── RedirectLocationInterceptor.java
│ │ │ │ ├── RedirectLocationRejectedException.java
│ │ │ │ ├── RequestContextLifecycleInterceptor.java
│ │ │ │ ├── ResponseHeaderInterceptor.java
│ │ │ │ ├── ResponseHeaderRejectedException.java
│ │ │ │ ├── StatusMessageInterceptor.java
│ │ │ │ └── impl
│ │ │ │ │ ├── BasicRequestContextFactoryDefinitionParser.java
│ │ │ │ │ ├── BasicRequestContextFactoryImpl.java
│ │ │ │ │ ├── BasicRequestContextImpl.java
│ │ │ │ │ ├── BasicResponseImpl.java
│ │ │ │ │ └── ResponseHeaderSecurityFilter.java
│ │ │ │ ├── buffered
│ │ │ │ ├── BufferCommitFailedException.java
│ │ │ │ ├── BufferedRequestContext.java
│ │ │ │ └── impl
│ │ │ │ │ ├── BufferedRequestContextFactoryDefinitionParser.java
│ │ │ │ │ ├── BufferedRequestContextFactoryImpl.java
│ │ │ │ │ ├── BufferedRequestContextImpl.java
│ │ │ │ │ └── BufferedResponseImpl.java
│ │ │ │ ├── impl
│ │ │ │ ├── CommitMonitor.java
│ │ │ │ ├── CommittingAwarePrintWriter.java
│ │ │ │ ├── CommittingAwareResponse.java
│ │ │ │ ├── CommittingAwareServletOutputStream.java
│ │ │ │ ├── HeaderCommitter.java
│ │ │ │ ├── RequestContextBeanFactoryPostProcessor.java
│ │ │ │ ├── RequestContextChainingServiceDefinitionParser.java
│ │ │ │ ├── RequestContextChainingServiceImpl.java
│ │ │ │ └── SimpleRequestContext.java
│ │ │ │ ├── lazycommit
│ │ │ │ ├── LazyCommitFailedException.java
│ │ │ │ ├── LazyCommitRequestContext.java
│ │ │ │ └── impl
│ │ │ │ │ ├── LazyCommitRequestContextFactoryDefinitionParser.java
│ │ │ │ │ ├── LazyCommitRequestContextFactoryImpl.java
│ │ │ │ │ └── LazyCommitRequestContextImpl.java
│ │ │ │ ├── locale
│ │ │ │ ├── SetLocaleRequestContext.java
│ │ │ │ └── impl
│ │ │ │ │ ├── SetLocaleOverrider.java
│ │ │ │ │ ├── SetLocaleRequestContextFactoryDefinitionParser.java
│ │ │ │ │ ├── SetLocaleRequestContextFactoryImpl.java
│ │ │ │ │ └── SetLocaleRequestContextImpl.java
│ │ │ │ ├── parser
│ │ │ │ ├── AbstractValueParser.java
│ │ │ │ ├── CookieParser.java
│ │ │ │ ├── ParameterParser.java
│ │ │ │ ├── ParameterParserFilter.java
│ │ │ │ ├── ParameterValueFilter.java
│ │ │ │ ├── ParserRequestContext.java
│ │ │ │ ├── UploadedFileFilter.java
│ │ │ │ ├── ValueParser.java
│ │ │ │ ├── filter
│ │ │ │ │ ├── HTMLInputFilter.java
│ │ │ │ │ ├── HTMLParameterValueFilter.java
│ │ │ │ │ └── UploadedFileExtensionWhitelist.java
│ │ │ │ └── impl
│ │ │ │ │ ├── CookieParserImpl.java
│ │ │ │ │ ├── ParameterParserImpl.java
│ │ │ │ │ ├── ParserRequestContextFactoryDefinitionParser.java
│ │ │ │ │ ├── ParserRequestContextFactoryImpl.java
│ │ │ │ │ └── ParserRequestContextImpl.java
│ │ │ │ ├── rewrite
│ │ │ │ ├── RewriteContext.java
│ │ │ │ ├── RewriteException.java
│ │ │ │ ├── RewriteRequestContext.java
│ │ │ │ ├── RewriteSubstitutionContext.java
│ │ │ │ ├── RewriteSubstitutionHandler.java
│ │ │ │ ├── impl
│ │ │ │ │ ├── Flags.java
│ │ │ │ │ ├── RewriteCondition.java
│ │ │ │ │ ├── RewriteConditionBeanInfo.java
│ │ │ │ │ ├── RewriteRequestContextFactoryDefinitionParser.java
│ │ │ │ │ ├── RewriteRequestContextFactoryImpl.java
│ │ │ │ │ ├── RewriteRequestContextImpl.java
│ │ │ │ │ ├── RewriteRule.java
│ │ │ │ │ ├── RewriteSubstitution.java
│ │ │ │ │ ├── RewriteSubstitutionBeanInfo.java
│ │ │ │ │ └── RewriteUtil.java
│ │ │ │ └── support
│ │ │ │ │ └── UrlNormalizer.java
│ │ │ │ ├── rundata
│ │ │ │ ├── RunData.java
│ │ │ │ ├── User.java
│ │ │ │ └── impl
│ │ │ │ │ ├── RunDataFactoryDefinitionParser.java
│ │ │ │ │ ├── RunDataFactoryImpl.java
│ │ │ │ │ └── RunDataImpl.java
│ │ │ │ ├── session
│ │ │ │ ├── ExactMatchesOnlySessionStore.java
│ │ │ │ ├── HttpHeaderSessionStore.java
│ │ │ │ ├── SessionAttributeInterceptor.java
│ │ │ │ ├── SessionConfig.java
│ │ │ │ ├── SessionFrameworkException.java
│ │ │ │ ├── SessionIDGenerator.java
│ │ │ │ ├── SessionInterceptor.java
│ │ │ │ ├── SessionLifecycleListener.java
│ │ │ │ ├── SessionModel.java
│ │ │ │ ├── SessionModelEncoder.java
│ │ │ │ ├── SessionRequestContext.java
│ │ │ │ ├── SessionStore.java
│ │ │ │ ├── encoder
│ │ │ │ │ ├── AbstractSerializationEncoder.java
│ │ │ │ │ ├── SessionEncoder.java
│ │ │ │ │ ├── SessionEncoderException.java
│ │ │ │ │ └── impl
│ │ │ │ │ │ └── SerializationEncoder.java
│ │ │ │ ├── encrypter
│ │ │ │ │ ├── AbstractJceEncrypter.java
│ │ │ │ │ ├── Encrypter.java
│ │ │ │ │ ├── SessionEncrypterException.java
│ │ │ │ │ └── impl
│ │ │ │ │ │ └── AesEncrypter.java
│ │ │ │ ├── idgen
│ │ │ │ │ ├── random
│ │ │ │ │ │ └── impl
│ │ │ │ │ │ │ ├── RandomIDGenerator.java
│ │ │ │ │ │ │ └── RandomIDGeneratorDefinitionParser.java
│ │ │ │ │ └── uuid
│ │ │ │ │ │ └── impl
│ │ │ │ │ │ ├── UUIDGenerator.java
│ │ │ │ │ │ └── UUIDGeneratorDefinitionParser.java
│ │ │ │ ├── impl
│ │ │ │ │ ├── SessionAttribute.java
│ │ │ │ │ ├── SessionImpl.java
│ │ │ │ │ ├── SessionModelEncoderImpl.java
│ │ │ │ │ ├── SessionModelImpl.java
│ │ │ │ │ ├── SessionRequestContextFactoryDefinitionParser.java
│ │ │ │ │ ├── SessionRequestContextFactoryImpl.java
│ │ │ │ │ └── SessionRequestContextImpl.java
│ │ │ │ ├── interceptor
│ │ │ │ │ ├── AbstractSessionAttributeAccessController.java
│ │ │ │ │ ├── SessionAttributeWhitelist.java
│ │ │ │ │ └── SessionLifecycleLogger.java
│ │ │ │ ├── serializer
│ │ │ │ │ ├── Serializer.java
│ │ │ │ │ └── impl
│ │ │ │ │ │ ├── HessianSerializer.java
│ │ │ │ │ │ └── JavaSerializer.java
│ │ │ │ ├── store
│ │ │ │ │ ├── SessionStoreException.java
│ │ │ │ │ ├── cookie
│ │ │ │ │ │ ├── AbstractCookieStore.java
│ │ │ │ │ │ ├── CookieStore.java
│ │ │ │ │ │ └── impl
│ │ │ │ │ │ │ ├── CookieStoreDefinitionParser.java
│ │ │ │ │ │ │ ├── CookieStoreImpl.java
│ │ │ │ │ │ │ ├── SingleValuedCookieStoreDefinitionParser.java
│ │ │ │ │ │ │ └── SingleValuedCookieStoreImpl.java
│ │ │ │ │ └── simple
│ │ │ │ │ │ └── impl
│ │ │ │ │ │ ├── SimpleMemoryStoreDefinitionParser.java
│ │ │ │ │ │ └── SimpleMemoryStoreImpl.java
│ │ │ │ └── valueencoder
│ │ │ │ │ ├── AbstractSessionValueEncoder.java
│ │ │ │ │ ├── SessionValueEncoder.java
│ │ │ │ │ ├── SessionValueEncoderException.java
│ │ │ │ │ └── impl
│ │ │ │ │ ├── MappedValuesEncoder.java
│ │ │ │ │ └── SimpleValueEncoder.java
│ │ │ │ ├── support
│ │ │ │ ├── AbstractRequestContextFactory.java
│ │ │ │ ├── AbstractRequestContextWrapper.java
│ │ │ │ ├── AbstractRequestWrapper.java
│ │ │ │ ├── AbstractResponseWrapper.java
│ │ │ │ └── ValueListSupport.java
│ │ │ │ └── util
│ │ │ │ ├── CookieSupport.java
│ │ │ │ ├── QueryStringParser.java
│ │ │ │ ├── RequestContextUtil.java
│ │ │ │ ├── ValueList.java
│ │ │ │ └── tomcat
│ │ │ │ └── ServerCookie.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services-request-contexts-basic-interceptors.bean-definition-parsers
│ │ │ ├── services-request-contexts-parser-filters.bean-definition-parsers
│ │ │ ├── services-request-contexts-session-encoders.bean-definition-parsers
│ │ │ ├── services-request-contexts-session-encrypters.bean-definition-parsers
│ │ │ ├── services-request-contexts-session-idgens.bean-definition-parsers
│ │ │ ├── services-request-contexts-session-interceptors.bean-definition-parsers
│ │ │ ├── services-request-contexts-session-model-encoders.bean-definition-parsers
│ │ │ ├── services-request-contexts-session-serializers.bean-definition-parsers
│ │ │ ├── services-request-contexts-session-stores.bean-definition-parsers
│ │ │ ├── services-request-contexts-session-value-encoders.bean-definition-parsers
│ │ │ ├── services-request-contexts.bean-definition-parsers
│ │ │ ├── services.bean-definition-parsers
│ │ │ ├── services
│ │ │ ├── request-contexts.xsd
│ │ │ └── request-contexts
│ │ │ │ ├── basic.xsd
│ │ │ │ ├── basic
│ │ │ │ └── interceptors
│ │ │ │ │ └── response-header-security-filter.xsd
│ │ │ │ ├── buffered.xsd
│ │ │ │ ├── lazy-commit.xsd
│ │ │ │ ├── parser.xsd
│ │ │ │ ├── parser
│ │ │ │ └── filters
│ │ │ │ │ └── uploaded-file-whitelist.xsd
│ │ │ │ ├── rewrite.xsd
│ │ │ │ ├── rundata.xsd
│ │ │ │ ├── session.xsd
│ │ │ │ ├── session
│ │ │ │ ├── encoders
│ │ │ │ │ └── serialization-encoder.xsd
│ │ │ │ ├── encrypters
│ │ │ │ │ └── aes-encrypter.xsd
│ │ │ │ ├── idgens
│ │ │ │ │ ├── random-id-generator.xsd
│ │ │ │ │ └── uuid-generator.xsd
│ │ │ │ ├── interceptors
│ │ │ │ │ ├── attribute-whitelist.xsd
│ │ │ │ │ └── lifecycle-logger.xsd
│ │ │ │ ├── model-encoders
│ │ │ │ │ └── default-session-model-encoder.xsd
│ │ │ │ ├── serializers
│ │ │ │ │ ├── hessian-serializer.xsd
│ │ │ │ │ └── java-serializer.xsd
│ │ │ │ ├── stores
│ │ │ │ │ ├── cookie-store.xsd
│ │ │ │ │ ├── simple-memory-store.xsd
│ │ │ │ │ └── single-valued-cookie-store.xsd
│ │ │ │ └── value-encoders
│ │ │ │ │ ├── mapped-values-encoder.xsd
│ │ │ │ │ └── simple-value-encoder.xsd
│ │ │ │ └── set-locale.xsd
│ │ │ └── spring.configuration-points
│ │ └── test
│ │ ├── config
│ │ ├── WEB-INF
│ │ │ └── web.xml
│ │ ├── empty.xml
│ │ ├── encoders.xml
│ │ ├── form.html
│ │ ├── form2.html
│ │ ├── logback.xml
│ │ ├── services-basic.xml
│ │ ├── services-buffered.xml
│ │ ├── services-lazycommit.xml
│ │ ├── services-locale.xml
│ │ ├── services-parser.xml
│ │ ├── services-rewrite.xml
│ │ ├── services-rundata.xml
│ │ ├── services-session-cookie-stores.xml
│ │ ├── services-session-interceptors.xml
│ │ ├── services-session-single-valued-cookie-stores.xml
│ │ ├── services-session.xml
│ │ ├── services-skip-validation.xml
│ │ ├── services.xml
│ │ ├── smallfile
│ │ ├── smallfile.gif
│ │ ├── smallfile.txt
│ │ └── smallfile_.JPG
│ │ └── java
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── service
│ │ └── requestcontext
│ │ ├── AbstractRequestContextsTests.java
│ │ ├── GlobalRequestObjectsTests.java
│ │ ├── RequestContextAsyncTests.java
│ │ ├── RequestContextChainingServiceTests.java
│ │ ├── RequestContextSkipValidationTests.java
│ │ ├── RequestContextWrapperTests.java
│ │ ├── RequestWrapperTests.java
│ │ ├── ResponseWrapperTests.java
│ │ ├── basic
│ │ ├── AbstractBasicResponseTests.java
│ │ ├── BasicRequestContextTests.java
│ │ ├── CookieInterceptorTests.java
│ │ ├── HeaderNameInterceptorTests.java
│ │ ├── HeaderValueInterceptorTests.java
│ │ ├── RedirectLocationInterceptorTests.java
│ │ ├── RequestContextLifecycleInterceptorTests.java
│ │ ├── ResponseHeaderSecurityFilterTests.java
│ │ ├── StatusMessageInterceptorTests.java
│ │ └── impl
│ │ │ └── BasicResponseImplTests.java
│ │ ├── buffered
│ │ └── BufferedRequestContextTests.java
│ │ ├── dummy
│ │ └── DummyRequestContextFactoryImpl.java
│ │ ├── impl
│ │ ├── AbstractCommittingAwareTests.java
│ │ ├── CommittingAwarePrintWriterTests.java
│ │ ├── CommittingAwareResponseTests.java
│ │ ├── CommittingAwareServletOutputStreamTests.java
│ │ ├── RequestContextCommitTests.java
│ │ └── SimpleRequestContextTests.java
│ │ ├── lazycommit
│ │ └── LazyCommitRequestContextTests.java
│ │ ├── locale
│ │ ├── AbstractSetLocaleRequestContextTests.java
│ │ ├── SetLocaleOverriderTests.java
│ │ ├── SetLocaleRequestContextOverrideTests.java
│ │ ├── SetLocaleRequestContextParamsTests.java
│ │ └── SetLocaleRequestContextTests.java
│ │ ├── parser
│ │ ├── ParserRequestContextParamsTests.java
│ │ ├── ParserRequestContextTests.java
│ │ ├── ValueParserTests.java
│ │ └── filter
│ │ │ └── HTMLInputFilterTests.java
│ │ ├── rewrite
│ │ ├── RewriteRequestContextTests.java
│ │ └── impl
│ │ │ ├── FlagsTests.java
│ │ │ └── RewriteUtilTests.java
│ │ ├── rundata
│ │ ├── BufferedRunDataTests.java
│ │ └── RunDataTests.java
│ │ ├── session
│ │ ├── CookieStoreTests.java
│ │ ├── SessionInterceptorTests.java
│ │ ├── SessionRequestContextTests.java
│ │ ├── SessionTests.java
│ │ ├── encoder
│ │ │ └── SessionEncoderTests.java
│ │ ├── encrypter
│ │ │ ├── AbstractEncrypterTests.java
│ │ │ └── impl
│ │ │ │ └── AesEncrypterTests.java
│ │ ├── idgen
│ │ │ ├── AbstractIDGeneratorTests.java
│ │ │ ├── random
│ │ │ │ └── impl
│ │ │ │ │ └── RandomSessionIDGeneratorTests.java
│ │ │ └── uuid
│ │ │ │ └── impl
│ │ │ │ └── UUIDGeneratorTests.java
│ │ ├── impl
│ │ │ ├── AbstractSessionModelEncoderTests.java
│ │ │ ├── SessionModelEncoderTests.java
│ │ │ └── StoreMappingTests.java
│ │ ├── interceptor
│ │ │ ├── AbstractSessionListenerTests.java
│ │ │ ├── AttributeWhitelistTests.java
│ │ │ └── LifecycleLoggerListenerTests.java
│ │ └── valueencoder
│ │ │ ├── AbstractSingleValueEncoderTests.java
│ │ │ ├── MappedValuesEncoderTests.java
│ │ │ └── SimpleValueEncoderTests.java
│ │ ├── support
│ │ └── ValueListSupportTests.java
│ │ └── util
│ │ ├── CookieSupportTests.java
│ │ ├── QueryStringParserTests.java
│ │ └── RequestContextUtilTests.java
├── resource
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── resource
│ │ │ │ ├── Resource.java
│ │ │ │ ├── ResourceFilter.java
│ │ │ │ ├── ResourceFilterChain.java
│ │ │ │ ├── ResourceLister.java
│ │ │ │ ├── ResourceListerContext.java
│ │ │ │ ├── ResourceLoader.java
│ │ │ │ ├── ResourceLoaderContext.java
│ │ │ │ ├── ResourceLoadingException.java
│ │ │ │ ├── ResourceLoadingOption.java
│ │ │ │ ├── ResourceLoadingService.java
│ │ │ │ ├── ResourceMatchResult.java
│ │ │ │ ├── ResourceNotFoundException.java
│ │ │ │ ├── ResourceTrace.java
│ │ │ │ ├── ResourceTraceElement.java
│ │ │ │ ├── filter
│ │ │ │ ├── XsltResourceFilter.java
│ │ │ │ └── impl
│ │ │ │ │ └── XsltResourceFilterDefinitionParser.java
│ │ │ │ ├── impl
│ │ │ │ ├── AbstractResourceLoadingContext.java
│ │ │ │ ├── ResourceAlias.java
│ │ │ │ ├── ResourceFilterMapping.java
│ │ │ │ ├── ResourceListerContextImpl.java
│ │ │ │ ├── ResourceLoaderContextImpl.java
│ │ │ │ ├── ResourceLoaderMapping.java
│ │ │ │ ├── ResourceLoadingServiceDefinitionParser.java
│ │ │ │ ├── ResourceLoadingServiceImpl.java
│ │ │ │ ├── ResourceMapping.java
│ │ │ │ └── ResourcePattern.java
│ │ │ │ ├── loader
│ │ │ │ ├── ClasspathResourceLoader.java
│ │ │ │ ├── FileResourceLoader.java
│ │ │ │ ├── SuperResourceLoader.java
│ │ │ │ ├── WebappResourceLoader.java
│ │ │ │ └── impl
│ │ │ │ │ ├── ClasspathResourceLoaderDefinitionParser.java
│ │ │ │ │ ├── FileResourceLoaderDefinitionParser.java
│ │ │ │ │ ├── SuperResourceLoaderDefinitionParser.java
│ │ │ │ │ └── WebappResourceLoaderDefinitionParser.java
│ │ │ │ └── support
│ │ │ │ ├── ByteArrayResource.java
│ │ │ │ ├── FileResource.java
│ │ │ │ ├── InputStreamResource.java
│ │ │ │ ├── ResourceAdapter.java
│ │ │ │ ├── ResourceLoadingSupport.java
│ │ │ │ ├── URLResource.java
│ │ │ │ └── context
│ │ │ │ ├── ResourceLoadingXmlApplicationContext.java
│ │ │ │ └── ResourceLoadingXmlWebApplicationContext.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services-resource-loading-filters.bean-definition-parsers
│ │ │ ├── services-resource-loading-loaders.bean-definition-parsers
│ │ │ ├── services.bean-definition-parsers
│ │ │ ├── services
│ │ │ ├── resource-loading.xsd
│ │ │ └── resource-loading
│ │ │ │ ├── filters
│ │ │ │ └── xslt-filter.xsd
│ │ │ │ └── loaders
│ │ │ │ ├── classpath-loader.xsd
│ │ │ │ ├── file-loader.xsd
│ │ │ │ ├── super-loader.xsd
│ │ │ │ └── webapp-loader.xsd
│ │ │ └── spring.configuration-points
│ │ └── test
│ │ ├── config
│ │ ├── WEB-INF
│ │ │ ├── aaa
│ │ │ │ ├── bbb
│ │ │ │ │ └── abc.txt
│ │ │ │ └── ccc
│ │ │ │ │ └── def.txt
│ │ │ ├── resources.xml
│ │ │ └── web.xml
│ │ ├── app1
│ │ │ └── templates
│ │ │ │ └── layout
│ │ │ │ └── default.vm
│ │ ├── appcontext
│ │ │ ├── services-parent.xml
│ │ │ ├── services1.xml
│ │ │ └── services2.xml
│ │ ├── beans.xml
│ │ ├── common
│ │ │ └── templates
│ │ │ │ └── layout
│ │ │ │ └── login.vm
│ │ ├── filter
│ │ │ └── xslt-filter.xml
│ │ ├── loader
│ │ │ ├── classpath-loader.xml
│ │ │ ├── file-loader.xml
│ │ │ ├── super-loader-parent.xml
│ │ │ ├── super-loader.xml
│ │ │ └── webapp-loader.xml
│ │ ├── logback.xml
│ │ ├── myfolder
│ │ │ ├── abc.txt
│ │ │ ├── def.txt
│ │ │ ├── test.result
│ │ │ ├── test.xml
│ │ │ ├── test.xsl
│ │ │ ├── test2.xml
│ │ │ └── testres.txt
│ │ ├── resources-root.xml
│ │ ├── resources-skip-validation.xml
│ │ └── test.txt
│ │ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── service
│ │ │ └── resource
│ │ │ ├── AbstractResourceLoadingTests.java
│ │ │ ├── ResourceLoadingServiceListTests.java
│ │ │ ├── ResourceLoadingServiceSkipValidationTests.java
│ │ │ ├── ResourceLoadingServiceStressTests.java
│ │ │ ├── ResourceLoadingServiceTests.java
│ │ │ ├── ResourceLoadingServiceTraceTests.java
│ │ │ ├── SpringIntegrationTests.java
│ │ │ ├── filter
│ │ │ └── XsltFilterTests.java
│ │ │ ├── loader
│ │ │ ├── AbstractResourceLoaderTests.java
│ │ │ ├── ClasspathLoaderIntegratingTests.java
│ │ │ ├── ClasspathLoaderTests.java
│ │ │ ├── FileLoaderIntegratingTests.java
│ │ │ ├── FileLoaderTests.java
│ │ │ ├── SuperLoaderIntegratingTests.java
│ │ │ ├── WebappLoaderIntegratingTests.java
│ │ │ └── WebappLoaderTests.java
│ │ │ └── support
│ │ │ ├── AbstractResourceTests.java
│ │ │ ├── ByteArrayResourceTests.java
│ │ │ ├── FileResourceTests.java
│ │ │ ├── InputStreamResourceTests.java
│ │ │ ├── URLResourceTests.java
│ │ │ └── context
│ │ │ └── ResourceLoadingXmlApplicationContextTests.java
│ │ └── resources
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── service
│ │ └── resource
│ │ └── support
│ │ └── largeData.txt
├── template
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── template
│ │ │ │ ├── Renderable.java
│ │ │ │ ├── TemplateContext.java
│ │ │ │ ├── TemplateEngine.java
│ │ │ │ ├── TemplateException.java
│ │ │ │ ├── TemplateNotFoundException.java
│ │ │ │ ├── TemplateService.java
│ │ │ │ ├── impl
│ │ │ │ ├── DefaultExtensionStrategy.java
│ │ │ │ ├── SearchExtensionsStrategy.java
│ │ │ │ ├── SearchLocalizedTemplatesStrategy.java
│ │ │ │ ├── TemplateKey.java
│ │ │ │ ├── TemplateMatchResult.java
│ │ │ │ ├── TemplateMatchResultImpl.java
│ │ │ │ ├── TemplateMatcher.java
│ │ │ │ ├── TemplateSearchingStrategy.java
│ │ │ │ ├── TemplateServiceDefinitionParser.java
│ │ │ │ └── TemplateServiceImpl.java
│ │ │ │ └── support
│ │ │ │ └── MappedTemplateContext.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services.bean-definition-parsers
│ │ │ ├── services
│ │ │ └── template.xsd
│ │ │ └── spring.configuration-points
│ │ └── test
│ │ ├── config
│ │ ├── template-cache.xml
│ │ ├── template-dupExtensions.xml
│ │ ├── template-noEngineName.xml
│ │ ├── template-noExtension.xml
│ │ ├── template.xml
│ │ └── templates
│ │ │ ├── dir1
│ │ │ ├── template1.vm
│ │ │ ├── template2.vm
│ │ │ └── template2_zh_CN.vm
│ │ │ └── dir2
│ │ │ ├── template1.jsp
│ │ │ └── template3_zh.jhtml
│ │ └── java
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── service
│ │ └── template
│ │ ├── impl
│ │ ├── SimpleEngine.java
│ │ ├── TemplateKeyTests.java
│ │ └── TemplateServiceTests.java
│ │ └── support
│ │ └── MappedTemplateContextTests.java
├── upload
│ ├── .cvsignore
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── upload
│ │ │ │ ├── UploadConfiguration.java
│ │ │ │ ├── UploadException.java
│ │ │ │ ├── UploadParameters.java
│ │ │ │ ├── UploadService.java
│ │ │ │ ├── UploadSizeLimitExceededException.java
│ │ │ │ ├── impl
│ │ │ │ ├── UploadServiceDefinitionParser.java
│ │ │ │ ├── UploadServiceImpl.java
│ │ │ │ └── cfu
│ │ │ │ │ ├── AbstractFileItem.java
│ │ │ │ │ ├── DiskFileItem.java
│ │ │ │ │ ├── DiskFileItemFactory.java
│ │ │ │ │ ├── InMemoryFormFieldItem.java
│ │ │ │ │ ├── ServletFileUpload.java
│ │ │ │ │ └── ServletRequestContext.java
│ │ │ │ └── support
│ │ │ │ └── StringFileItemEditor.java
│ │ └── resources
│ │ │ ├── META-INF
│ │ │ ├── services.bean-definition-parsers
│ │ │ └── services
│ │ │ │ ├── upload-examples.xml
│ │ │ │ └── upload.xsd
│ │ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── service
│ │ │ └── upload
│ │ │ └── impl
│ │ │ └── cfu
│ │ │ └── package.html
│ │ └── test
│ │ ├── config
│ │ ├── form.html
│ │ ├── services-skip-validation.xml
│ │ ├── services.xml
│ │ └── smallfile.txt
│ │ └── java
│ │ └── com
│ │ ├── alibaba
│ │ └── citrus
│ │ │ └── service
│ │ │ └── upload
│ │ │ ├── UploadServiceSkipValidationTests.java
│ │ │ └── UploadServiceTests.java
│ │ └── meterware
│ │ └── servletunit
│ │ └── UploadServletRunner.java
├── uribroker
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── alibaba
│ │ │ │ └── citrus
│ │ │ │ └── service
│ │ │ │ └── uribroker
│ │ │ │ ├── URIBrokerService.java
│ │ │ │ ├── URIBrokerServiceException.java
│ │ │ │ ├── impl
│ │ │ │ ├── URIBrokerServiceDefinitionParser.java
│ │ │ │ ├── URIBrokerServiceImpl.java
│ │ │ │ ├── interceptor
│ │ │ │ │ └── RandomizeHandlerDefinitionParser.java
│ │ │ │ └── uri
│ │ │ │ │ ├── ContentURIBrokerDefinitionParser.java
│ │ │ │ │ ├── GenericServletURIBrokerDefinitionParser.java
│ │ │ │ │ ├── GenericURIBrokerDefinitionParser.java
│ │ │ │ │ ├── ServletContentURIBrokerDefinitionParser.java
│ │ │ │ │ └── TurbineClassicURIBrokerDefinitionParser.java
│ │ │ │ ├── interceptor
│ │ │ │ ├── Randomize.java
│ │ │ │ ├── URIBrokerInterceptor.java
│ │ │ │ └── URIBrokerPathInterceptor.java
│ │ │ │ ├── support
│ │ │ │ ├── AbstractURIBrokerDefinitionParser.java
│ │ │ │ └── URIBrokerTool.java
│ │ │ │ └── uri
│ │ │ │ ├── ContentURIBroker.java
│ │ │ │ ├── GenericServletURIBroker.java
│ │ │ │ ├── GenericURIBroker.java
│ │ │ │ ├── ServletContentURIBroker.java
│ │ │ │ ├── ServletURIBroker.java
│ │ │ │ ├── TurbineClassicURIBroker.java
│ │ │ │ ├── URIBroker.java
│ │ │ │ ├── URIBrokerFeatures.java
│ │ │ │ └── WebAppURIBroker.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── services-pull-factories.bean-definition-parsers
│ │ │ ├── services-uris-interceptors.bean-definition-parsers
│ │ │ ├── services-uris.bean-definition-parsers
│ │ │ ├── services.bean-definition-parsers
│ │ │ ├── services
│ │ │ ├── pull
│ │ │ │ └── factories
│ │ │ │ │ └── uris-tool.xsd
│ │ │ ├── uris.xsd
│ │ │ └── uris
│ │ │ │ ├── content-uri.xsd
│ │ │ │ ├── interceptors
│ │ │ │ └── randomize.xsd
│ │ │ │ ├── servlet-content-uri.xsd
│ │ │ │ ├── servlet-uri.xsd
│ │ │ │ ├── turbine-classic-uri.xsd
│ │ │ │ ├── uri-bean.xsd
│ │ │ │ ├── uri.xsd
│ │ │ │ └── uris-base.xsd
│ │ │ ├── spring.configuration-points
│ │ │ └── spring.schemas
│ │ └── test
│ │ ├── config
│ │ ├── WEB-INF
│ │ │ └── web.xml
│ │ ├── services-root.xml
│ │ ├── services-uri-skip-validation.xml
│ │ ├── services.xml
│ │ └── services2.xml
│ │ └── java
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── service
│ │ └── uribroker
│ │ ├── AbstractURIBrokerServiceTests.java
│ │ ├── ContentURIBrokerConfigTests.java
│ │ ├── ServletContentURIBrokerConfigTests.java
│ │ ├── ServletURIBrokerConfigTests.java
│ │ ├── TurbineClassicURIBrokerConfigTests.java
│ │ ├── URIBrokerConfigTests.java
│ │ ├── URIBrokerSkipValidationTests.java
│ │ ├── impl
│ │ └── URIBrokerServiceTests.java
│ │ ├── interceptor
│ │ ├── InterceptorForkTests.java
│ │ ├── MyInterceptor.java
│ │ ├── MyPathInterceptor.java
│ │ └── RandomizeTests.java
│ │ ├── support
│ │ └── URIBrokerToolTests.java
│ │ └── uri
│ │ ├── AbstractURIBrokerFeaturesTests.java
│ │ ├── ContentURIBrokerTests.java
│ │ ├── GenericServletURIBrokerTests.java
│ │ ├── GenericURIBrokerTests.java
│ │ ├── ServletContentURIBrokerTests.java
│ │ ├── TurbineClassicURIBrokerTests.java
│ │ └── URIBrokerPrerenderingPerformanceTests.java
└── velocity
│ ├── pom.xml
│ └── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── service
│ │ │ └── velocity
│ │ │ ├── FastCloneable.java
│ │ │ ├── VelocityConfiguration.java
│ │ │ ├── VelocityEngine.java
│ │ │ ├── VelocityPlugin.java
│ │ │ ├── impl
│ │ │ ├── AbstractResourceLoader.java
│ │ │ ├── CloneableEventCartridge.java
│ │ │ ├── CustomizedUberspectImpl.java
│ │ │ ├── EscapeSupportDefinitionParser.java
│ │ │ ├── PreloadedResourceLoader.java
│ │ │ ├── RenderableHandlerDefinitionParser.java
│ │ │ ├── Slf4jLogChute.java
│ │ │ ├── SpringResourceLoaderAdapter.java
│ │ │ ├── TemplateContextAdapter.java
│ │ │ ├── VelocityConfigurationImpl.java
│ │ │ ├── VelocityEngineDefinitionParser.java
│ │ │ ├── VelocityEngineImpl.java
│ │ │ ├── VelocityRuntimeInstance.java
│ │ │ └── parser
│ │ │ │ ├── ASTStringLiteralEnhanced.java
│ │ │ │ └── SimpleNodeUtil.java
│ │ │ └── support
│ │ │ ├── EscapeSupport.java
│ │ │ ├── InterpolationUtil.java
│ │ │ └── RenderableHandler.java
│ └── resources
│ │ ├── META-INF
│ │ ├── services-template-engines-velocity-plugins.bean-definition-parsers
│ │ ├── services-template-engines.bean-definition-parsers
│ │ ├── services
│ │ │ └── template
│ │ │ │ └── engines
│ │ │ │ ├── velocity-engine.xsd
│ │ │ │ └── velocity
│ │ │ │ └── plugins
│ │ │ │ ├── escape-support.xsd
│ │ │ │ └── renderable-support.xsd
│ │ └── spring.configuration-points
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── service
│ │ └── velocity
│ │ └── support
│ │ └── escape_macros.vm
│ └── test
│ ├── config
│ ├── services-skip-validation.xml
│ ├── services.xml
│ ├── services_dev.xml
│ ├── services_empty_property.xml
│ ├── services_escape.xml
│ ├── services_renderable.xml
│ ├── templates
│ │ ├── escape
│ │ │ ├── test_escape.vm
│ │ │ ├── test_escape_all_types.vm
│ │ │ ├── test_escape_define.vm
│ │ │ ├── test_escape_interpolation.vm
│ │ │ ├── test_escape_macros.vm
│ │ │ ├── test_escape_object_noescape.vm
│ │ │ ├── test_escape_parse.vm
│ │ │ ├── test_escape_parse_sub.vm
│ │ │ ├── test_escape_rules.vm
│ │ │ ├── test_escape_wrong_args_0.vm
│ │ │ ├── test_escape_wrong_args_1.vm
│ │ │ ├── test_escape_wrong_args_2.vm
│ │ │ └── test_escape_wrong_type.vm
│ │ ├── macros
│ │ │ ├── hello.vm
│ │ │ ├── inner
│ │ │ │ └── hello.vm
│ │ │ └── world.vm
│ │ ├── test.vm
│ │ ├── test2.vm
│ │ ├── test_handlers.vm
│ │ ├── test_local_context.vm
│ │ ├── test_macros.vm
│ │ ├── test_pluginMacros.vm
│ │ ├── test_render.vm
│ │ ├── test_render_error.vm
│ │ ├── test_renderable.vm
│ │ └── test_set_null.vm
│ └── templates_with_macros
│ │ ├── VM_global_library.vm
│ │ └── test_macros.vm
│ ├── java
│ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── service
│ │ └── velocity
│ │ ├── AbstractResourceLoaderTests.java
│ │ ├── AbstractVelocityEngineTests.java
│ │ ├── CloneableEventCartridgeTests.java
│ │ ├── CustomizedUberspectTests.java
│ │ ├── PreloadedResourceLoaderTests.java
│ │ ├── Slf4jLogChuteTests.java
│ │ ├── SpringResourceLoaderAdapterTests.java
│ │ ├── TemplateContextAdapaterTests.java
│ │ ├── VelocityEngineTests.java
│ │ ├── VelocitySkipValidationTests.java
│ │ ├── impl
│ │ ├── ConditionalEscapeHandler.java
│ │ └── PluginDelegator.java
│ │ └── support
│ │ ├── EscapeTests.java
│ │ └── RenderableTests.java
│ └── resources
│ └── com
│ └── alibaba
│ └── citrus
│ └── service
│ └── velocity
│ └── impl
│ ├── plugin_macro1.vm
│ └── plugin_macro2.vm
├── test
├── util
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ ├── alibaba
│ │ │ │ └── citrus
│ │ │ │ │ └── test
│ │ │ │ │ ├── ExceptionMatcher.java
│ │ │ │ │ ├── RegexMatcher.java
│ │ │ │ │ ├── TestEnv.java
│ │ │ │ │ ├── TestEnvStatic.java
│ │ │ │ │ ├── TestUtil.java
│ │ │ │ │ └── runner
│ │ │ │ │ ├── Prototyped.java
│ │ │ │ │ └── TestNameAware.java
│ │ │ │ └── meterware
│ │ │ │ ├── httpunit
│ │ │ │ └── cookies
│ │ │ │ │ └── PatchedCookieJar.java
│ │ │ │ └── servletunit
│ │ │ │ ├── PatchedInvocationContextImpl.java
│ │ │ │ ├── PatchedServletContext.java
│ │ │ │ ├── PatchedServletRunner.java
│ │ │ │ ├── PatchedServletUnitWebResponse.java
│ │ │ │ └── PatchedWebApplication.java
│ │ └── resources
│ │ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── test
│ │ │ └── logback-test-default.xml
│ │ └── test
│ │ ├── config
│ │ └── dummy.txt
│ │ └── java
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── test
│ │ ├── PrototypedTests.java
│ │ ├── TestEnvStaticTests.java
│ │ ├── TestEnvTests.java
│ │ ├── TestNameAwareTests.java
│ │ └── TestUtilTests.java
└── webx
│ ├── pom.xml
│ └── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── test
│ │ │ ├── context
│ │ │ ├── AbstractContextLoader.java
│ │ │ └── SpringextContextLoader.java
│ │ │ └── util
│ │ │ └── ServletTestContainer.java
│ └── resources
│ │ ├── META-INF
│ │ ├── services.bean-definition-parsers
│ │ └── services
│ │ │ └── servlet-test-container.xsd
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── test
│ │ └── context
│ │ ├── context-template.xml
│ │ └── test-resources.xml
│ └── test
│ ├── config
│ ├── springextContextLoaderTests-context.xml
│ └── springextWebContextLoaderTests-context.xml
│ └── java
│ └── com
│ └── alibaba
│ └── citrus
│ └── test
│ └── context
│ ├── MyBean.java
│ ├── MyServlet.java
│ ├── SpringextContextLoaderTests.java
│ └── SpringextWebContextLoaderTests.java
└── webx
├── async
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── async
│ │ │ ├── AsyncCallback.java
│ │ │ └── pipeline
│ │ │ └── valve
│ │ │ ├── AsyncCallbackAdapter.java
│ │ │ ├── DoPerformRunnableValve.java
│ │ │ └── PerformRunnableAsyncValve.java
│ └── resources
│ │ └── META-INF
│ │ ├── services-pipeline-valves.bean-definition-parsers
│ │ └── services
│ │ └── pipeline
│ │ └── valves
│ │ ├── doPerformRunnable.xsd
│ │ └── performRunnableAsync.xsd
│ └── test
│ ├── config
│ ├── doPerformRunnableValve.xml
│ ├── doPerformRunnableValveConfig.xml
│ ├── performRunnableAsyncValve.xml
│ ├── performRunnableAsyncValveConfig-noExecutor.xml
│ └── performRunnableAsyncValveConfig.xml
│ └── java
│ └── com
│ └── alibaba
│ └── citrus
│ └── async
│ ├── AbstractAsyncTests.java
│ ├── DoPerformRunnableValveConfigTests.java
│ ├── DoPerformRunnableValveTests.java
│ ├── PerformRunnableAsyncValveConfigTests.java
│ ├── PerformRunnableAsyncValveTests.java
│ └── support
│ ├── FakeAsyncExecutor.java
│ ├── GetScreenResult.java
│ ├── RequestProxyTester.java
│ └── SetScreenResult.java
├── dev
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── dev
│ │ └── handler
│ │ ├── component
│ │ ├── AccessControlComponent.java
│ │ ├── DomComponent.java
│ │ └── TabsComponent.java
│ │ ├── impl
│ │ ├── AbstractExplorerHandler.java
│ │ ├── ExplorerHandler.java
│ │ └── visitor
│ │ │ ├── AbstractFallbackVisitor.java
│ │ │ ├── BeansVisitor.java
│ │ │ ├── ConfigurationsVisitor.java
│ │ │ ├── PullToolsVisitor.java
│ │ │ ├── ResolvableDepsVisitor.java
│ │ │ ├── ResourcesVisitor.java
│ │ │ └── UrisVisitor.java
│ │ └── util
│ │ ├── AnchorValue.java
│ │ ├── Attribute.java
│ │ ├── BeanDefinitionReverseEngine.java
│ │ ├── ClassValue.java
│ │ ├── ConfigurationFile.java
│ │ ├── ConfigurationFileReader.java
│ │ ├── DomUtil.java
│ │ ├── Element.java
│ │ ├── RawValue.java
│ │ ├── RefValue.java
│ │ ├── ReflectionUtil.java
│ │ ├── StyledValue.java
│ │ └── TextValue.java
│ └── resources
│ ├── META-INF
│ └── webx.internal-request-handlers
│ └── com
│ └── alibaba
│ └── citrus
│ └── dev
│ └── handler
│ ├── component
│ ├── accessControl.css
│ ├── accessControl.htm
│ ├── dom.css
│ ├── dom.htm
│ ├── dom.js
│ ├── images
│ │ ├── arrow_tab.gif
│ │ ├── close.png
│ │ └── open.png
│ ├── tabs.css
│ └── tabs.htm
│ └── impl
│ ├── explorer.css
│ ├── explorer.htm
│ ├── explorer.js
│ ├── images
│ ├── close.png
│ └── open.png
│ └── inc
│ ├── beans.htm
│ ├── configurations.htm
│ ├── deps.htm
│ ├── pullTools.htm
│ ├── resources.htm
│ └── uris.htm
├── framework
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── alibaba
│ │ │ └── citrus
│ │ │ └── webx
│ │ │ ├── BadRequestException.java
│ │ │ ├── ResourceNotFoundException.java
│ │ │ ├── WebxComponent.java
│ │ │ ├── WebxComponents.java
│ │ │ ├── WebxConstant.java
│ │ │ ├── WebxController.java
│ │ │ ├── WebxException.java
│ │ │ ├── WebxRootController.java
│ │ │ ├── config
│ │ │ ├── WebxConfiguration.java
│ │ │ └── impl
│ │ │ │ ├── WebxConfigurationDefinitionParser.java
│ │ │ │ └── WebxConfigurationImpl.java
│ │ │ ├── context
│ │ │ ├── WebxApplicationContext.java
│ │ │ ├── WebxComponentContext.java
│ │ │ ├── WebxComponentsContext.java
│ │ │ ├── WebxComponentsLoader.java
│ │ │ └── WebxContextLoaderListener.java
│ │ │ ├── handler
│ │ │ ├── ErrorHandlerMapping.java
│ │ │ ├── RequestHandler.java
│ │ │ ├── RequestHandlerContext.java
│ │ │ ├── RequestHandlerMapping.java
│ │ │ ├── RequestHandlerNameAware.java
│ │ │ ├── component
│ │ │ │ ├── EnvironmentVariablesComponent.java
│ │ │ │ ├── ExceptionComponent.java
│ │ │ │ ├── FooterComponent.java
│ │ │ │ ├── KeyValuesComponent.java
│ │ │ │ ├── MenuComponent.java
│ │ │ │ ├── RequestComponent.java
│ │ │ │ ├── SystemInfoComponent.java
│ │ │ │ └── SystemPropertiesComponent.java
│ │ │ ├── impl
│ │ │ │ ├── MainHandler.java
│ │ │ │ ├── SchemaExporterHandler.java
│ │ │ │ ├── error
│ │ │ │ │ ├── DetailedErrorHandler.java
│ │ │ │ │ ├── PipelineErrorHandler.java
│ │ │ │ │ └── SendErrorHandler.java
│ │ │ │ └── info
│ │ │ │ │ ├── EnvironmentVariablesHandler.java
│ │ │ │ │ ├── RequestInfoHandler.java
│ │ │ │ │ ├── SystemInfoHandler.java
│ │ │ │ │ └── SystemPropertiesHandler.java
│ │ │ └── support
│ │ │ │ ├── AbstractVisitor.java
│ │ │ │ ├── AutowiredRequestProcessor.java
│ │ │ │ └── LayoutRequestProcessor.java
│ │ │ ├── impl
│ │ │ ├── WebxControllerImpl.java
│ │ │ └── WebxRootControllerImpl.java
│ │ │ ├── servlet
│ │ │ ├── FilterBean.java
│ │ │ ├── PassThruSupportable.java
│ │ │ ├── SetLoggingContextFilter.java
│ │ │ └── WebxFrameworkFilter.java
│ │ │ ├── support
│ │ │ ├── AbstractWebxController.java
│ │ │ └── AbstractWebxRootController.java
│ │ │ └── util
│ │ │ ├── ErrorHandlerHelper.java
│ │ │ ├── RequestURIFilter.java
│ │ │ ├── SetLoggingContextHelper.java
│ │ │ └── WebxUtil.java
│ └── resources
│ │ ├── META-INF
│ │ ├── services.bean-definition-parsers
│ │ ├── services
│ │ │ └── webx-configuration.xsd
│ │ └── webx.internal-request-handlers
│ │ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── webx
│ │ └── handler
│ │ ├── component
│ │ ├── environmentVariables.css
│ │ ├── environmentVariables.htm
│ │ ├── exception.css
│ │ ├── exception.htm
│ │ ├── exception.js
│ │ ├── footer.css
│ │ ├── footer.htm
│ │ ├── images
│ │ │ ├── arrow_h.gif
│ │ │ ├── arrow_h_active.gif
│ │ │ ├── arrow_v.gif
│ │ │ ├── arrow_v_active.gif
│ │ │ ├── close.gif
│ │ │ ├── home1.gif
│ │ │ ├── home2.gif
│ │ │ ├── open.gif
│ │ │ └── webx3.gif
│ │ ├── keyValues.css
│ │ ├── keyValues.htm
│ │ ├── keyValues.js
│ │ ├── menu.css
│ │ ├── menu.htm
│ │ ├── request.css
│ │ ├── request.htm
│ │ ├── systemInfo.css
│ │ ├── systemInfo.htm
│ │ ├── systemProperties.css
│ │ └── systemProperties.htm
│ │ ├── impl
│ │ ├── error
│ │ │ └── detailedError.htm
│ │ ├── head.htm
│ │ ├── info
│ │ │ ├── environmentVariables.htm
│ │ │ ├── requestInfo.htm
│ │ │ ├── systemInfo.htm
│ │ │ └── systemProperties.htm
│ │ └── main.htm
│ │ └── support
│ │ ├── layout.htm
│ │ └── styles.css
│ └── test
│ ├── config
│ ├── WEB-INF
│ │ ├── web.xml
│ │ ├── webx-app1.xml
│ │ ├── webx-app2.xml
│ │ ├── webx-app3.xml
│ │ ├── webx-app4.xml
│ │ ├── webx-app5.xml
│ │ └── webx.xml
│ ├── app1
│ │ └── plaintext.txt
│ ├── app2
│ │ └── WEB-INF
│ │ │ ├── web.xml
│ │ │ └── webx.xml
│ ├── app3
│ │ └── WEB-INF
│ │ │ ├── web.xml
│ │ │ └── webx.xml
│ ├── app4
│ │ └── WEB-INF
│ │ │ ├── web.xml
│ │ │ └── webx.xml
│ ├── my
│ │ └── app5
│ │ │ └── plaintext.txt
│ ├── plaintext.txt
│ ├── webx-configuration-skip-validation.xml
│ └── webx-configuration.xml
│ ├── java
│ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── webx
│ │ ├── AbstractWebxTests.java
│ │ ├── config
│ │ ├── MyBean.java
│ │ ├── WebxConfigurationSkipValidationTests.java
│ │ └── WebxConfigurationTests.java
│ │ ├── handler
│ │ ├── ErrorHandlerTests.java
│ │ ├── Handler1.java
│ │ ├── Handler2.java
│ │ ├── Handler3.java
│ │ ├── InfoHandlerTests.java
│ │ ├── MainHandlerTests.java
│ │ └── SchemaRequestHandlerTests.java
│ │ ├── pipeline
│ │ ├── TestExceptionValve.java
│ │ ├── TestValve.java
│ │ └── ValveRunner.java
│ │ ├── servlet
│ │ ├── FilterBeanTests.java
│ │ ├── WebxClasspathTests.java
│ │ ├── WebxFrameworkFilterTests.java
│ │ └── WebxRootControllerTests.java
│ │ └── util
│ │ ├── ErrorHandlerHelperTests.java
│ │ ├── RequestURIFilterTests.java
│ │ ├── SetLoggingContextHelperTests.java
│ │ └── WebxUtilTests.java
│ └── resources
│ └── META-INF
│ ├── internal-request-handlers-test-1
│ └── mycomponent
│ ├── a.xml
│ └── b.xml
└── turbine
├── pom.xml
└── src
├── main
├── java
│ └── com
│ │ └── alibaba
│ │ └── citrus
│ │ └── turbine
│ │ ├── Context.java
│ │ ├── ControlParameters.java
│ │ ├── Navigator.java
│ │ ├── TurbineConstant.java
│ │ ├── TurbineRunData.java
│ │ ├── TurbineRunDataInternal.java
│ │ ├── auth
│ │ ├── PageAuthorizationService.java
│ │ └── impl
│ │ │ ├── AuthActionPattern.java
│ │ │ ├── AuthGrant.java
│ │ │ ├── AuthMatch.java
│ │ │ ├── AuthPattern.java
│ │ │ ├── AuthTargetPattern.java
│ │ │ ├── PageAuthorizationServiceDefinitionParser.java
│ │ │ └── PageAuthorizationServiceImpl.java
│ │ ├── dataresolver
│ │ ├── ContextValue.java
│ │ ├── FormData.java
│ │ ├── FormField.java
│ │ ├── FormFields.java
│ │ ├── FormGroup.java
│ │ ├── FormGroups.java
│ │ ├── Param.java
│ │ ├── Params.java
│ │ └── impl
│ │ │ ├── AbstractDataResolver.java
│ │ │ ├── DataResolverUtil.java
│ │ │ ├── FormResolverFactory.java
│ │ │ ├── ParameterResolverFactory.java
│ │ │ └── TurbineRunDataResolverFactory.java
│ │ ├── form
│ │ └── impl
│ │ │ └── validation
│ │ │ └── CsrfFormValidator.java
│ │ ├── pipeline
│ │ ├── condition
│ │ │ ├── AbstractTurbineCondition.java
│ │ │ ├── PathCondition.java
│ │ │ ├── TargetCondition.java
│ │ │ └── TargetExtensionCondition.java
│ │ └── valve
│ │ │ ├── AbstractInputOutputValve.java
│ │ │ ├── AnalyzeURLValve.java
│ │ │ ├── BreakUnlessTargetRedirectedValve.java
│ │ │ ├── CheckCsrfTokenValve.java
│ │ │ ├── ExportControlValve.java
│ │ │ ├── GetResourceValve.java
│ │ │ ├── HandleExceptionValve.java
│ │ │ ├── PageAuthorizationValve.java
│ │ │ ├── PerformActionValve.java
│ │ │ ├── PerformScreenValve.java
│ │ │ ├── PerformTemplateScreenValve.java
│ │ │ ├── PrepareForTurbineValve.java
│ │ │ ├── RenderResultAsJsonValve.java
│ │ │ ├── RenderTemplateValve.java
│ │ │ ├── RequestHandlerValve.java
│ │ │ ├── SetBufferingValve.java
│ │ │ └── SetLoggingContextValve.java
│ │ ├── support
│ │ ├── AbstractContext.java
│ │ ├── ContextAdapter.java
│ │ ├── MappedContext.java
│ │ ├── PullableMappedContext.java
│ │ └── TurbineRunDataImpl.java
│ │ ├── uribroker
│ │ └── uri
│ │ │ ├── TurbineContentURIBroker.java
│ │ │ ├── TurbineURIBroker.java
│ │ │ ├── WebxURIBroker.java
│ │ │ └── impl
│ │ │ ├── TurbineContentURIBrokerDefinitionParser.java
│ │ │ └── TurbineURIBrokerDefinitionParser.java
│ │ └── util
│ │ ├── ControlTool.java
│ │ ├── CsrfToken.java
│ │ ├── CsrfTokenCheckException.java
│ │ ├── HtmlPageAttributeTool.java
│ │ ├── TurbineRunDataTool.java
│ │ └── TurbineUtil.java
└── resources
│ └── META-INF
│ ├── services-data-resolver-factories.bean-definition-parsers
│ ├── services-form-validators.bean-definition-parsers
│ ├── services-pipeline-conditions.bean-definition-parsers
│ ├── services-pipeline-valves.bean-definition-parsers
│ ├── services-pull-factories.bean-definition-parsers
│ ├── services-uris.bean-definition-parsers
│ ├── services.bean-definition-parsers
│ └── services
│ ├── data-resolver
│ └── factories
│ │ ├── form-resolver.xsd
│ │ ├── parameter-resolver.xsd
│ │ └── turbine-rundata-resolver.xsd
│ ├── form
│ └── validators
│ │ └── csrf-validator.xsd
│ ├── page-authorization.xsd
│ ├── pipeline
│ ├── conditions
│ │ ├── path-condition.xsd
│ │ ├── target-condition.xsd
│ │ └── target-extension-condition.xsd
│ └── valves
│ │ ├── analyzeURL.xsd
│ │ ├── breakUnlessTargetRedirected.xsd
│ │ ├── checkCsrfToken.xsd
│ │ ├── exportControl.xsd
│ │ ├── getResource.xsd
│ │ ├── handleException.xsd
│ │ ├── pageAuthorization.xsd
│ │ ├── performAction.xsd
│ │ ├── performScreen.xsd
│ │ ├── performTemplateScreen.xsd
│ │ ├── prepareForTurbine.xsd
│ │ ├── renderResultAsJson.xsd
│ │ ├── renderTemplate.xsd
│ │ ├── requestHandler.xsd
│ │ ├── setBuffering.xsd
│ │ └── setLoggingContext.xsd
│ ├── pull
│ └── factories
│ │ ├── control-tool.xsd
│ │ ├── csrfToken.xsd
│ │ ├── page-tool.xsd
│ │ └── rundata-tool.xsd
│ └── uris
│ ├── turbine-content-uri.xsd
│ └── turbine-uri.xsd
└── test
├── config
├── WEB-INF
│ ├── web.xml
│ ├── webx-app1.xml
│ ├── webx-app2.xml
│ ├── webx-app3.xml
│ └── webx.xml
├── dataresolver
│ └── services-dataresolver.xml
├── page-auth.xml
├── services-uris-no-mappings.xml
├── services-uris.xml
├── templates
│ ├── app2
│ │ └── control
│ │ │ ├── control_set.vm
│ │ │ └── myControl.vm
│ ├── control
│ │ ├── control_nest.vm
│ │ ├── control_set.vm
│ │ ├── myControl.vm
│ │ ├── myOtherControl.vm
│ │ └── nestedControl.vm
│ ├── mylayout
│ │ ├── aaa
│ │ │ ├── bbb
│ │ │ │ ├── default.vm
│ │ │ │ ├── myModule.vm
│ │ │ │ └── myOtherModule.vm
│ │ │ └── default.vm
│ │ └── ccc
│ │ │ └── default.vm
│ ├── myprefix.locale
│ │ ├── aaa
│ │ │ ├── bbb
│ │ │ │ ├── default.vm
│ │ │ │ ├── default_zh_TW.jsp
│ │ │ │ └── myOtherModule_zh.vm
│ │ │ ├── default.vm
│ │ │ └── default_zh.jsp
│ │ └── ccc
│ │ │ └── default_zh.vm
│ └── myscreen
│ │ └── aaa
│ │ └── bbb
│ │ └── myModule.vm
└── test.txt
├── java
└── com
│ └── alibaba
│ ├── citrus
│ └── turbine
│ │ ├── AbstractWebTests.java
│ │ ├── AbstractWebxTests.java
│ │ ├── auth
│ │ ├── AuthActionPatternTests.java
│ │ ├── AuthGrantTests.java
│ │ ├── AuthMatchTests.java
│ │ ├── AuthTargetPatternTests.java
│ │ ├── PageAuthorizationConfigTests.java
│ │ └── PageAuthorizationServiceTests.java
│ │ ├── dataresolver
│ │ ├── AbstractDataResolverTests.java
│ │ ├── ContextValueResolverTests.java
│ │ ├── FormFieldResolverTests.java
│ │ ├── FormFieldsResolverTests.java
│ │ ├── FormGroupResolverTests.java
│ │ ├── FormGroupsResolverTests.java
│ │ ├── FormResolverTests.java
│ │ ├── ParameterResolverTests.java
│ │ ├── ParametersResolverTests.java
│ │ ├── TurbineRunDataResolverTests.java
│ │ └── impl
│ │ │ └── DataResolverUtilTests.java
│ │ ├── pipeline
│ │ ├── PipelineSkipValidationTests.java
│ │ └── valve
│ │ │ ├── AbstractValveTests.java
│ │ │ ├── AnalyzeURLValveTests.java
│ │ │ ├── CheckCsrfTokenValveTests.java
│ │ │ ├── HandleExceptionValveTests.java
│ │ │ ├── InputOutputValveTests.java
│ │ │ ├── MySpringHandler.java
│ │ │ ├── MyValve.java
│ │ │ ├── PageAuthorizationValveTests.java
│ │ │ ├── PathConditionTests.java
│ │ │ ├── PerformActionValveTests.java
│ │ │ ├── PerformScreenValveTests.java
│ │ │ ├── PerformTemplateScreenValveTests.java
│ │ │ ├── PrepareForTurbineValveTests.java
│ │ │ ├── RenderResultAsJsonValveTests.java
│ │ │ ├── RenderTemplateValveTests.java
│ │ │ ├── RequestHandlerValveTests.java
│ │ │ ├── SetBufferingValveTests.java
│ │ │ └── TargetConditionTests.java
│ │ ├── support
│ │ ├── HierarchicalContextTests.java
│ │ ├── MappedContextTests.java
│ │ ├── NavigatorTests.java
│ │ ├── PullableMappedContextTests.java
│ │ └── TurbineRunDataTests.java
│ │ ├── uribroker
│ │ └── uri
│ │ │ └── impl
│ │ │ ├── TurbineContentURIBrokerTests.java
│ │ │ └── TurbineURIBrokerTests.java
│ │ └── util
│ │ ├── AbstractPullToolTests.java
│ │ ├── ControlToolExportAllTests.java
│ │ ├── ControlToolProductionModeTests.java
│ │ ├── ControlToolTests.java
│ │ ├── CsrfTokenTests.java
│ │ ├── PageToolTests.java
│ │ └── RunDataToolTests.java
│ ├── test
│ ├── app1
│ │ ├── Failure.java
│ │ └── module
│ │ │ ├── action
│ │ │ └── aaa
│ │ │ │ └── bbb
│ │ │ │ ├── Default.java
│ │ │ │ └── MyOtherAction.java
│ │ │ ├── control
│ │ │ ├── MyControl.java
│ │ │ ├── MyControlChangingTemplate.java
│ │ │ ├── MyControlContextValue.java
│ │ │ ├── MyControlNoTemplate.java
│ │ │ └── MyControlWithError.java
│ │ │ └── screen
│ │ │ ├── MyJsonScreen.java
│ │ │ ├── aaa
│ │ │ ├── Default.java
│ │ │ └── bbb
│ │ │ │ ├── Default.java
│ │ │ │ └── MyOtherModule.java
│ │ │ ├── ccc
│ │ │ └── Default.java
│ │ │ └── ddd
│ │ │ └── eee
│ │ │ ├── MyEventScreen.java
│ │ │ └── MyScreen.java
│ ├── app2
│ │ └── module
│ │ │ └── control
│ │ │ ├── MyControl.java
│ │ │ └── MyControlNoTemplate.java
│ └── module
│ │ └── screen
│ │ ├── AbstractModule.java
│ │ └── MyDefaultModule.java
│ └── test2
│ └── module
│ ├── action
│ ├── context
│ │ ├── MyAction.java
│ │ └── MyActionWrong.java
│ ├── form
│ │ ├── MyAction.java
│ │ ├── MyActionWrongType.java
│ │ ├── MyData.java
│ │ ├── field
│ │ │ └── MyAction.java
│ │ ├── fields
│ │ │ └── MyAction.java
│ │ ├── group
│ │ │ ├── MyAction.java
│ │ │ └── MyActionErrorNoName.java
│ │ └── groups
│ │ │ ├── MyAction.java
│ │ │ └── MyActionErrorNoName.java
│ ├── param
│ │ ├── MyAction.java
│ │ ├── MyActionErrorDefaultValueAndDefaultValues.java
│ │ └── MyActionErrorNoName.java
│ ├── params
│ │ ├── MyAction.java
│ │ └── MyActionAbstract.java
│ └── rundata
│ │ └── MyAction.java
│ ├── control
│ └── rundata
│ │ └── MyControl.java
│ └── screen
│ └── form
│ ├── MyScreen.java
│ ├── field
│ ├── MyScreen.java
│ └── MyScreenGetFieldInstanceValue.java
│ ├── fields
│ ├── MyScreen.java
│ └── MyScreenGetFieldsBeans.java
│ ├── group
│ ├── MyScreen.java
│ └── MyScreenGetGroupInstanceBean.java
│ └── groups
│ ├── MyScreen.java
│ └── MyScreenGetGroupsBeans.java
└── resources
└── app1
├── Failure.groovy
└── module
├── action
└── myprod
│ └── MyAction.groovy
├── control
└── myprod
│ └── MyControl.groovy
└── screens
├── AbstractScreen.groovy
└── MyScreen.groovy
/.gitignore:
--------------------------------------------------------------------------------
1 | bin
2 | target
3 | dependency-reduced-pom.xml
4 | .settings
5 | .project
6 | .classpath
7 | .svn
8 |
9 | *.iml
10 | /out
11 | /.idea/ant.xml
12 | /.idea/misc.xml
13 | /.idea/workspace.xml
14 | /.idea/modules.xml
15 | /.idea/compiler.xml
16 | /.idea/libraries/Maven*.xml
17 | /.idea/artifacts/*.xml
18 | /*.iws
19 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | citrus
--------------------------------------------------------------------------------
/.idea/dictionaries/baobao.xml:
--------------------------------------------------------------------------------
1 |
Package com.alibaba.citrus.generictype.introspect
中,包含了分析类型内部结构的工具,例如,取得类型的properties。
Package com.alibaba.citrus.generictype
中,包含了分析generic类型的工具。
Schemas
同时实现这个接口,那么可以从中取得所有的namespace列表。
7 | *
8 | * @author Michael Zhou
9 | */
10 | public interface Namespaces {
11 | Set8 | Patch包中包含了对Apache commons-fileupload中部分类的补丁。本补丁遵行Apache License 2.0。 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /service/upload/src/test/config/form.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webx/citrus/adfceaab120661e78ee7608f3335eaf863693a38/service/upload/src/test/config/form.html -------------------------------------------------------------------------------- /service/upload/src/test/config/services-skip-validation.xml: -------------------------------------------------------------------------------- 1 | 2 |
9 |
10 |
11 |
13 |
14 |