DATACMNS-330, DATACMNS-331 - Advanced web integration.

Added PagedResourcesAssembler to easily convert Page instances into a PagedResource instance and automatically build the required previous/next links based on the PageableHandlerMethodArgumentResolver present in the MVC configuration. The assembler can either be injected into a Spring MVC controller or a controller method. The latter will then assume the controller methods URI to be used as pagination link base.

Added @EnableSpringDataWebSupport to automatically register HandlerMethodArgumentResolvers for Pageable and Sort as well as a DomainClassConverter that will allow the usage of domain types being managed by Spring Data repositories in controller method signatures. In case Spring HATEOAS is present on the classpath, we'll also register a PagedResourcesAssembler for injection as well as the appropriate HandlerMethodArgumentResolver for injection into controller methods.

Adapted Sonargraph configuration accordingly. Upgraded to Spring HATEOAS 0.6.0.BUILD-SNAPSHOT.
This commit is contained in:
Oliver Gierke
2013-05-08 14:07:13 +02:00
parent a741651672
commit a93c2bff94
15 changed files with 1179 additions and 295 deletions

View File

@@ -1,424 +1,430 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<context version="7.1.7.187">
<scope name="spring-data-commons" type="Project">
<context version="7.1.9.205">
<scope type="Project" name="spring-data-commons">
<architecture>
<element name="Web" type="Layer">
<element name="Assignment" type="TypeFilter">
<element name="**.web.**" type="IncludeTypePattern"/>
<element type="Layer" name="Web">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.web.**"/>
</element>
<dependency type="AllowedDependency" toName="External|External"/>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Application"/>
<dependency type="AllowedDependency" toName="External|External::Subsystem|Java Beans"/>
<dependency type="AllowedDependency" toName="External|External::Subsystem|Reflection"/>
<dependency type="AllowedDependency" toName="External|External::Subsystem|Servlet API"/>
<dependency type="AllowedDependency" toName="External|External::Subsystem|Spring"/>
<element type="Subsystem" name="Config">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.config.**"/>
</element>
<dependency toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Support" type="AllowedDependency"/>
</element>
<dependency toName="External|External" type="AllowedDependency"/>
<dependency toName="Project|spring-data-commons::Layer|Application" type="AllowedDependency"/>
<dependency toName="External|External::Subsystem|Java Beans" type="AllowedDependency"/>
<dependency toName="External|External::Subsystem|Reflection" type="AllowedDependency"/>
<dependency toName="External|External::Subsystem|Servlet API" type="AllowedDependency"/>
<dependency toName="External|External::Subsystem|Spring" type="AllowedDependency"/>
</element>
<element name="Repositories" type="Layer">
<element name="Assignment" type="TypeFilter">
<element name="**.repository.**" type="IncludeTypePattern"/>
<element type="Layer" name="Repositories">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.repository.**"/>
</element>
<element name="API" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.repository.*" type="IncludeTypePattern"/>
<element type="Subsystem" name="API">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.repository.*"/>
</element>
<stereotype name="Public"/>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain"/>
<dependency toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain" type="AllowedDependency"/>
</element>
<element name="Core" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.util.**" type="IncludeTypePattern"/>
<element name="**.core.*" type="IncludeTypePattern"/>
<element type="Subsystem" name="Core">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.util.**"/>
<element type="IncludeTypePattern" name="**.core.*"/>
</element>
</element>
<element name="Query" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.query.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Query">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.query.**"/>
</element>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain"/>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Core"/>
<dependency toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain" type="AllowedDependency"/>
<dependency toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Core" type="AllowedDependency"/>
</element>
<element name="Implementation" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.core.support.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Implementation">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.core.support.**"/>
</element>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain"/>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Core"/>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Query"/>
<dependency toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain" type="AllowedDependency"/>
<dependency toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Core" type="AllowedDependency"/>
<dependency toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Query" type="AllowedDependency"/>
</element>
<element name="Support" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.support.**" type="WeakTypePattern"/>
<element type="Subsystem" name="Support">
<element type="TypeFilter" name="Assignment">
<element type="WeakTypePattern" name="**.support.**"/>
</element>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Core"/>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Implementation"/>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Query"/>
<dependency toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Core" type="AllowedDependency"/>
<dependency toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Implementation" type="AllowedDependency"/>
<dependency toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Query" type="AllowedDependency"/>
</element>
<element name="History" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.history.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="History">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.history.**"/>
</element>
</element>
<element name="CDI" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.cdi.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="CDI">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.cdi.**"/>
</element>
<dependency type="AllowedDependency" toName="External|External::Subsystem|JavaEE"/>
<dependency type="AllowedDependency" toName="External|External::Subsystem|Logging"/>
<dependency type="AllowedDependency" toName="External|External::Subsystem|Reflection"/>
<dependency type="AllowedDependency" toName="External|External::Subsystem|Spring"/>
<dependency toName="External|External::Subsystem|JavaEE" type="AllowedDependency"/>
<dependency toName="External|External::Subsystem|Logging" type="AllowedDependency"/>
<dependency toName="External|External::Subsystem|Reflection" type="AllowedDependency"/>
<dependency toName="External|External::Subsystem|Spring" type="AllowedDependency"/>
</element>
<element name="Init" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.init.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Init">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.init.**"/>
</element>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Support"/>
<dependency toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Support" type="AllowedDependency"/>
</element>
<element name="Configuration" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.config.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Configuration">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.config.**"/>
</element>
<stereotype name="Unrestricted"/>
</element>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Application"/>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Core"/>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Mapping"/>
<dependency toName="Project|spring-data-commons::Layer|Application" type="AllowedDependency"/>
<dependency toName="Project|spring-data-commons::Layer|Core" type="AllowedDependency"/>
<dependency toName="Project|spring-data-commons::Layer|Mapping" type="AllowedDependency"/>
</element>
<element name="Conversion" type="Layer">
<element name="Assignment" type="TypeFilter">
<element name="**.convert.**" type="IncludeTypePattern"/>
<element type="Layer" name="Conversion">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.convert.**"/>
</element>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Core"/>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Mapping"/>
<dependency toName="Project|spring-data-commons::Layer|Core" type="AllowedDependency"/>
<dependency toName="Project|spring-data-commons::Layer|Mapping" type="AllowedDependency"/>
</element>
<element name="Mapping" type="Layer">
<element name="Assignment" type="TypeFilter">
<element name="**.mapping.**" type="IncludeTypePattern"/>
<element type="Layer" name="Mapping">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.mapping.**"/>
</element>
<element name="Model" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.model.**" type="IncludeTypePattern"/>
<element name="**.mapping.*" type="IncludeTypePattern"/>
<element type="Subsystem" name="Model">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.model.**"/>
<element type="IncludeTypePattern" name="**.mapping.*"/>
</element>
</element>
<element name="Context" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.context.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Context">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.context.**"/>
</element>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Mapping::Subsystem|Model"/>
<dependency toName="Project|spring-data-commons::Layer|Mapping::Subsystem|Model" type="AllowedDependency"/>
</element>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Core"/>
<dependency toName="Project|spring-data-commons::Layer|Core" type="AllowedDependency"/>
</element>
<element name="Core" type="Layer">
<element name="Assignment" type="TypeFilter"/>
<element name="Types" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.util.**" type="WeakTypePattern"/>
<element type="Layer" name="Core">
<element type="TypeFilter" name="Assignment"/>
<element type="Subsystem" name="Types">
<element type="TypeFilter" name="Assignment">
<element type="WeakTypePattern" name="**.util.**"/>
</element>
<stereotype name="Public"/>
</element>
<element name="Annotations" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.annotation.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Annotations">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.annotation.**"/>
</element>
</element>
<element name="Authentication" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.authentication.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Authentication">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.authentication.**"/>
</element>
</element>
<element name="Configuration" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.config.**" type="WeakTypePattern"/>
<element type="Subsystem" name="Configuration">
<element type="TypeFilter" name="Assignment">
<element type="WeakTypePattern" name="**.config.**"/>
</element>
<stereotype name="Unrestricted"/>
</element>
<element name="History" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.history.**" type="WeakTypePattern"/>
<element type="Subsystem" name="History">
<element type="TypeFilter" name="Assignment">
<element type="WeakTypePattern" name="**.history.**"/>
</element>
</element>
<element name="Support" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.support.**" type="WeakTypePattern"/>
<element type="Subsystem" name="Support">
<element type="TypeFilter" name="Assignment">
<element type="WeakTypePattern" name="**.support.**"/>
</element>
</element>
<element name="Auditing" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.auditing.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Auditing">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.auditing.**"/>
</element>
<stereotype name="Unrestricted"/>
</element>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Application"/>
<dependency toName="Project|spring-data-commons::Layer|Application" type="AllowedDependency"/>
</element>
<element name="Application" type="Layer">
<element name="Assignment" type="TypeFilter"/>
<element name="Domain" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.domain.**" type="WeakTypePattern"/>
<element type="Layer" name="Application">
<element type="TypeFilter" name="Assignment"/>
<element type="Subsystem" name="Domain">
<element type="TypeFilter" name="Assignment">
<element type="WeakTypePattern" name="**.domain.**"/>
</element>
</element>
<element name="JAXB" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.domain.jaxb.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="JAXB">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.domain.jaxb.**"/>
</element>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain"/>
<dependency type="AllowedDependency" toName="External|External::Subsystem|JAXB"/>
<dependency type="AllowedDependency" toName="External|External::Subsystem|Spring"/>
<dependency toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain" type="AllowedDependency"/>
<dependency toName="External|External::Subsystem|JAXB" type="AllowedDependency"/>
<dependency toName="External|External::Subsystem|Spring" type="AllowedDependency"/>
</element>
<element name="Querydsl" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.querydsl.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Querydsl">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.querydsl.**"/>
</element>
<dependency type="AllowedDependency" toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain"/>
<dependency toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain" type="AllowedDependency"/>
</element>
<element name="Cross store" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.crossstore.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Cross store">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.crossstore.**"/>
</element>
</element>
</element>
</architecture>
<workspace>
<element name="src/main/java" type="JavaRootDirectory">
<element type="JavaRootDirectory" name="src/main/java">
<reference name="Project|spring-data-commons::BuildUnit|spring-data-commons"/>
</element>
<element name="target/classes" type="JavaRootDirectory">
<element type="JavaRootDirectory" name="target/classes">
<reference name="Project|spring-data-commons::BuildUnit|spring-data-commons"/>
</element>
</workspace>
<itemDefinition>
<item type="IgnoreWarningFilterItem">
<property name="AttributeId" value="NoAttachedSourceFile"/>
<property name="Comment" value="Ignore generated classes"/>
<property name="Date" value="2013-01-29 10:28:36"/>
<property name="ElementType" value="Class"/>
<property name="Pattern" value="org.springframework.data.querydsl.QSimpleEntityPathResolverUnitTests_Sample"/>
<property value="NoAttachedSourceFile" name="AttributeId"/>
<property value="Ignore generated classes" name="Comment"/>
<property value="2013-01-29 10:28:36" name="Date"/>
<property value="Class" name="ElementType"/>
<property value="org.springframework.data.querydsl.QSimpleEntityPathResolverUnitTests_Sample" name="Pattern"/>
</item>
<item type="IgnoreWarningFilterItem">
<property name="AttributeId" value="NoAttachedSourceFile"/>
<property name="Comment" value="Ignore generated classes"/>
<property name="Date" value="2013-01-29 10:28:36"/>
<property name="ElementType" value="Class"/>
<property name="Pattern" value="org.springframework.data.querydsl.QUser"/>
<property value="NoAttachedSourceFile" name="AttributeId"/>
<property value="Ignore generated classes" name="Comment"/>
<property value="2013-01-29 10:28:36" name="Date"/>
<property value="Class" name="ElementType"/>
<property value="org.springframework.data.querydsl.QUser" name="Pattern"/>
</item>
<item type="IgnoreWarningFilterItem">
<property name="AttributeId" value="NoAttachedSourceFile"/>
<property name="Comment" value="Ignore generated classes"/>
<property name="Date" value="2013-01-29 10:28:36"/>
<property name="ElementType" value="Class"/>
<property name="Pattern" value="org.springframework.data.querydsl.QSimpleEntityPathResolverUnitTests_NamedUser"/>
<property value="NoAttachedSourceFile" name="AttributeId"/>
<property value="Ignore generated classes" name="Comment"/>
<property value="2013-01-29 10:28:36" name="Date"/>
<property value="Class" name="ElementType"/>
<property value="org.springframework.data.querydsl.QSimpleEntityPathResolverUnitTests_NamedUser" name="Pattern"/>
</item>
</itemDefinition>
<physical>
<element name="spring-data-commons" type="BuildUnit"/>
<element type="BuildUnit" name="spring-data-commons"/>
</physical>
</scope>
<scope name="External" type="External">
<element name="Filter" type="TypeFilter">
<element name="**" type="IncludeTypePattern"/>
<element name="java.io.*" type="ExcludeTypePattern"/>
<element name="java.lang.*" type="ExcludeTypePattern"/>
<element name="java.lang.annotation.*" type="ExcludeTypePattern"/>
<element name="java.lang.ref.*" type="ExcludeTypePattern"/>
<element name="java.math.*" type="ExcludeTypePattern"/>
<element name="java.nio.*" type="ExcludeTypePattern"/>
<element name="java.nio.channels.*" type="ExcludeTypePattern"/>
<element name="java.nio.channels.spi.*" type="ExcludeTypePattern"/>
<element name="java.nio.charset.*" type="ExcludeTypePattern"/>
<element name="java.nio.charset.spi.*" type="ExcludeTypePattern"/>
<element name="java.text.*" type="ExcludeTypePattern"/>
<element name="java.util.*" type="ExcludeTypePattern"/>
<element name="java.util.jar.*" type="ExcludeTypePattern"/>
<element name="java.util.prefs.*" type="ExcludeTypePattern"/>
<element name="java.util.regex.*" type="ExcludeTypePattern"/>
<element name="java.util.zip.*" type="ExcludeTypePattern"/>
<element name="java.util.concurrent.**" type="ExcludeTypePattern"/>
<scope type="External" name="External">
<element type="TypeFilter" name="Filter">
<element type="IncludeTypePattern" name="**"/>
<element type="ExcludeTypePattern" name="java.io.*"/>
<element type="ExcludeTypePattern" name="java.lang.*"/>
<element type="ExcludeTypePattern" name="java.lang.annotation.*"/>
<element type="ExcludeTypePattern" name="java.lang.ref.*"/>
<element type="ExcludeTypePattern" name="java.math.*"/>
<element type="ExcludeTypePattern" name="java.nio.*"/>
<element type="ExcludeTypePattern" name="java.nio.channels.*"/>
<element type="ExcludeTypePattern" name="java.nio.channels.spi.*"/>
<element type="ExcludeTypePattern" name="java.nio.charset.*"/>
<element type="ExcludeTypePattern" name="java.nio.charset.spi.*"/>
<element type="ExcludeTypePattern" name="java.text.*"/>
<element type="ExcludeTypePattern" name="java.util.*"/>
<element type="ExcludeTypePattern" name="java.util.jar.*"/>
<element type="ExcludeTypePattern" name="java.util.prefs.*"/>
<element type="ExcludeTypePattern" name="java.util.regex.*"/>
<element type="ExcludeTypePattern" name="java.util.zip.*"/>
<element type="ExcludeTypePattern" name="java.util.concurrent.**"/>
</element>
<architecture>
<element name="Querydsl" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="com.mysema.query.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Querydsl">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="com.mysema.query.**"/>
</element>
</element>
<element name="Servlet API" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="javax.servlet.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Servlet API">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="javax.servlet.**"/>
</element>
</element>
<element name="Java Beans" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="java.beans.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Java Beans">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="java.beans.**"/>
</element>
</element>
<element name="Reflection" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="java.lang.reflect.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Reflection">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="java.lang.reflect.**"/>
</element>
</element>
<element name="JodaTime" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="**.joda.time.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="JodaTime">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="**.joda.time.**"/>
</element>
</element>
<element name="Spring" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="org.springframework.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Spring">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="org.springframework.**"/>
</element>
</element>
<element name="XML" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="org.w3c.dom.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="XML">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="org.w3c.dom.**"/>
</element>
</element>
<element name="Logging" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="org.slf4j.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Logging">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="org.slf4j.**"/>
</element>
</element>
<element name="AOP" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="org.aopalliance.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="AOP">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="org.aopalliance.**"/>
</element>
</element>
<element name="JavaEE" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="javax.enterprise.**" type="IncludeTypePattern"/>
<element name="javax.inject.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="JavaEE">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="javax.enterprise.**"/>
<element type="IncludeTypePattern" name="javax.inject.**"/>
</element>
</element>
<element name="JAXB" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="javax.xml.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="JAXB">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="javax.xml.**"/>
</element>
</element>
<element name="Jackson" type="Subsystem">
<element name="Assignment" type="TypeFilter">
<element name="org.codehaus.jackson.**" type="IncludeTypePattern"/>
<element type="Subsystem" name="Jackson">
<element type="TypeFilter" name="Assignment">
<element type="IncludeTypePattern" name="org.codehaus.jackson.**"/>
</element>
</element>
</architecture>
</scope>
<scope name="Global" type="Global">
<element name="Configuration" type="Configuration"/>
<element name="Filter" type="TypeFilter">
<element name="**" type="IncludeTypePattern"/>
<scope type="Global" name="Global">
<element type="Configuration" name="Configuration"/>
<element type="TypeFilter" name="Filter">
<element type="IncludeTypePattern" name="**"/>
</element>
<itemDefinition>
<item type="ThresholdItem">
<property name="AttributeId" value="NumberOfNotAssignedTypes"/>
<property name="LowerValue" value=""/>
<property name="NamedElementGroup" value="Project"/>
<property name="UpperValue" value="0"/>
<property value="NumberOfNotAssignedTypes" name="AttributeId"/>
<property value="" name="LowerValue"/>
<property value="Project" name="NamedElementGroup"/>
<property value="0" name="UpperValue"/>
</item>
<item type="ThresholdItem">
<property name="AttributeId" value="NumberOfParameters"/>
<property name="LowerValue" value=""/>
<property name="NamedElementGroup" value="Method"/>
<property name="UpperValue" value="7"/>
<property value="NumberOfParameters" name="AttributeId"/>
<property value="" name="LowerValue"/>
<property value="Method" name="NamedElementGroup"/>
<property value="7" name="UpperValue"/>
</item>
<item type="ThresholdItem">
<property name="AttributeId" value="NumberOfAccessibleTypes"/>
<property name="LowerValue" value=""/>
<property name="NamedElementGroup" value="Namespace"/>
<property name="UpperValue" value="30"/>
<property value="NumberOfAccessibleTypes" name="AttributeId"/>
<property value="" name="LowerValue"/>
<property value="Namespace" name="NamedElementGroup"/>
<property value="30" name="UpperValue"/>
</item>
<item type="ThresholdItem">
<property name="AttributeId" value="NormalizedCumulativeComponentDependency"/>
<property name="LowerValue" value=""/>
<property name="NamedElementGroup" value="Project"/>
<property name="UpperValue" value="7"/>
<property value="NormalizedCumulativeComponentDependency" name="AttributeId"/>
<property value="" name="LowerValue"/>
<property value="Project" name="NamedElementGroup"/>
<property value="7" name="UpperValue"/>
</item>
<item type="ThresholdItem">
<property name="AttributeId" value="LinesOfCode"/>
<property name="LowerValue" value=""/>
<property name="NamedElementGroup" value="SourceFile"/>
<property name="UpperValue" value="700"/>
<property value="LinesOfCode" name="AttributeId"/>
<property value="" name="LowerValue"/>
<property value="SourceFile" name="NamedElementGroup"/>
<property value="700" name="UpperValue"/>
</item>
<item type="ThresholdItem">
<property name="AttributeId" value="NumberOfInternalTypes"/>
<property name="LowerValue" value=""/>
<property name="NamedElementGroup" value="Namespace"/>
<property name="UpperValue" value="50"/>
<property value="NumberOfInternalTypes" name="AttributeId"/>
<property value="" name="LowerValue"/>
<property value="Namespace" name="NamedElementGroup"/>
<property value="50" name="UpperValue"/>
</item>
<item type="ThresholdItem">
<property name="AttributeId" value="NumberOfMethods"/>
<property name="LowerValue" value=""/>
<property name="NamedElementGroup" value="Type"/>
<property name="UpperValue" value="50"/>
<property value="NumberOfMethods" name="AttributeId"/>
<property value="" name="LowerValue"/>
<property value="Type" name="NamedElementGroup"/>
<property value="50" name="UpperValue"/>
</item>
<item type="ThresholdItem">
<property name="AttributeId" value="ModifiedCyclomaticComplexity"/>
<property name="LowerValue" value=""/>
<property name="NamedElementGroup" value="Method"/>
<property name="UpperValue" value="20"/>
<property value="ModifiedCyclomaticComplexity" name="AttributeId"/>
<property value="" name="LowerValue"/>
<property value="Method" name="NamedElementGroup"/>
<property value="20" name="UpperValue"/>
</item>
</itemDefinition>
</scope>
<itemDefinition>
<item type="MoveTypeItem">
<property name="AssignedTo" value=""/>
<property name="Comment" value=""/>
<property name="Date" value="2013-01-29 09:59:22"/>
<property name="Priority" value="Medium"/>
<property name="SourceScope" value="spring-data-commons"/>
<property name="TargetNamespace" value="org.springframework.data.mapping.context"/>
<property name="TargetScope" value="spring-data-commons"/>
<property name="Type" value="org.springframework.data.mapping.model.MappingContextIsNewStrategyFactory"/>
<property value="" name="AssignedTo"/>
<property value="" name="Comment"/>
<property value="2013-01-29 09:59:22" name="Date"/>
<property value="Medium" name="Priority"/>
<property value="spring-data-commons" name="SourceScope"/>
<property value="org.springframework.data.mapping.context" name="TargetNamespace"/>
<property value="spring-data-commons" name="TargetScope"/>
<property value="org.springframework.data.mapping.model.MappingContextIsNewStrategyFactory" name="Type"/>
</item>
</itemDefinition>
<attributeConfiguration type="AttributeConfiguration">
<property name="ExtendedCyclomaticComplexity" value="disabled"/>
<property name="MaxExtendedCyclomaticComplexityPerMethod" value="disabled"/>
<property name="NumberOfWarnings" value="disabled"/>
<property name="AverageCyclomaticComplexityPerMethod" value="disabled"/>
<property name="NumberOfAbstractTypes" value="disabled"/>
<property name="JdkVersion" value="disabled"/>
<property name="NumberOfCyclicDirectories" value="disabled"/>
<property name="CyclomaticComplexity" value="disabled"/>
<property name="NumberOfMethodsWithImplementation" value="disabled"/>
<property name="NumberOfIgnoredWarnings" value="disabled"/>
<property name="NumberOfNamedInterfaces" value="disabled"/>
<property name="NumberOfCyclicProjects" value="disabled"/>
<property name="NumberOfRefactorings" value="disabled"/>
<property name="DependsUpon" value="disabled"/>
<property name="NumberOfVerticalSliceGroups" value="disabled"/>
<property name="DistributedOverPathContainers" value="disabled"/>
<property name="AverageExtendedCyclomaticComplexityPerMethod" value="disabled"/>
<property name="AverageTypeDependency" value="disabled"/>
<property name="NumberOfDuplicateCodeBlocksWarnings" value="disabled"/>
<property name="RelativeAverageTypeDependency" value="disabled"/>
<property name="AverageAccumulatedExtendedCyclomaticComplexityPerType" value="disabled"/>
<property name="NumberOfLayerGroups" value="disabled"/>
<property name="NumberOfIgnoredViolations" value="disabled"/>
<property name="NumberOfFixWarnings" value="disabled"/>
<property name="NumberOfExcludedSourceFiles" value="disabled"/>
<property name="NumberOfVerticalSlices" value="disabled"/>
<property name="AverageAccumulatedCyclomaticComplexityPerType" value="disabled"/>
<property name="Timestamp" value="disabled"/>
<property name="AverageAssertionUsage" value="disabled"/>
<property name="NumberOfCyclicSubsystems" value="disabled"/>
<property name="NumberOfCyclicNamespaces" value="disabled"/>
<property name="NumberOfExcludedTargetFiles" value="disabled"/>
<property name="NumberOfCyclicVerticalSliceGroups" value="disabled"/>
<property name="AccumulatedExtendedCyclomaticComplexity" value="disabled"/>
<property name="NumberOfLayers" value="disabled"/>
<property name="NumberOfCyclicSourceFiles" value="disabled"/>
<property name="MaxAccumulatedCyclomaticComplexityPerType" value="disabled"/>
<property name="MaxAccumulatedExtendedCyclomaticComplexityPerType" value="disabled"/>
<property name="NumberOfCyclicLayerGroups" value="disabled"/>
<property name="NumberOfAssertions" value="disabled"/>
<property name="NumberOfCyclicVerticalSlices" value="disabled"/>
<property name="NormalizedCumulativeTypeDependency" value="disabled"/>
<property name="AccumulatedCyclomaticComplexity" value="disabled"/>
<property name="NumberOfMetricWarnings" value="disabled"/>
<property name="NumberOfNameParts" value="disabled"/>
<property name="NumberOfTasks" value="disabled"/>
<property name="NumberOfWorkspaceWarnings" value="disabled"/>
<property name="NumberOfAbstractMethods" value="disabled"/>
<property name="NumberOfTypesWithImplementation" value="disabled"/>
<property name="Level" value="disabled"/>
<property name="NumberOfSubsystems" value="disabled"/>
<property name="NumberOfCyclicLayers" value="disabled"/>
<property name="MaxCyclomaticComplexityPerMethod" value="disabled"/>
<property value="disabled" name="ExtendedCyclomaticComplexity"/>
<property value="disabled" name="MaxExtendedCyclomaticComplexityPerMethod"/>
<property value="disabled" name="NumberOfWarnings"/>
<property value="disabled" name="AverageCyclomaticComplexityPerMethod"/>
<property value="disabled" name="NumberOfAbstractTypes"/>
<property value="disabled" name="JdkVersion"/>
<property value="disabled" name="NumberOfCyclicDirectories"/>
<property value="disabled" name="CyclomaticComplexity"/>
<property value="disabled" name="NumberOfMethodsWithImplementation"/>
<property value="disabled" name="NumberOfIgnoredWarnings"/>
<property value="disabled" name="NumberOfNamedInterfaces"/>
<property value="disabled" name="NumberOfCyclicProjects"/>
<property value="disabled" name="NumberOfRefactorings"/>
<property value="disabled" name="DependsUpon"/>
<property value="disabled" name="NumberOfVerticalSliceGroups"/>
<property value="disabled" name="DistributedOverPathContainers"/>
<property value="disabled" name="AverageExtendedCyclomaticComplexityPerMethod"/>
<property value="disabled" name="AverageTypeDependency"/>
<property value="disabled" name="NumberOfDuplicateCodeBlocksWarnings"/>
<property value="disabled" name="RelativeAverageTypeDependency"/>
<property value="disabled" name="AverageAccumulatedExtendedCyclomaticComplexityPerType"/>
<property value="disabled" name="NumberOfLayerGroups"/>
<property value="disabled" name="NumberOfIgnoredViolations"/>
<property value="disabled" name="NumberOfFixWarnings"/>
<property value="disabled" name="NumberOfExcludedSourceFiles"/>
<property value="disabled" name="NumberOfVerticalSlices"/>
<property value="disabled" name="AverageAccumulatedCyclomaticComplexityPerType"/>
<property value="disabled" name="Timestamp"/>
<property value="disabled" name="AverageAssertionUsage"/>
<property value="disabled" name="NumberOfCyclicSubsystems"/>
<property value="disabled" name="NumberOfCyclicNamespaces"/>
<property value="disabled" name="NumberOfExcludedTargetFiles"/>
<property value="disabled" name="NumberOfCyclicVerticalSliceGroups"/>
<property value="disabled" name="AccumulatedExtendedCyclomaticComplexity"/>
<property value="disabled" name="NumberOfLayers"/>
<property value="disabled" name="NumberOfCyclicSourceFiles"/>
<property value="disabled" name="MaxAccumulatedCyclomaticComplexityPerType"/>
<property value="disabled" name="MaxAccumulatedExtendedCyclomaticComplexityPerType"/>
<property value="disabled" name="NumberOfCyclicLayerGroups"/>
<property value="disabled" name="NumberOfAssertions"/>
<property value="disabled" name="NumberOfCyclicVerticalSlices"/>
<property value="disabled" name="NormalizedCumulativeTypeDependency"/>
<property value="disabled" name="AccumulatedCyclomaticComplexity"/>
<property value="disabled" name="NumberOfMetricWarnings"/>
<property value="disabled" name="NumberOfNameParts"/>
<property value="disabled" name="NumberOfTasks"/>
<property value="disabled" name="NumberOfWorkspaceWarnings"/>
<property value="disabled" name="NumberOfAbstractMethods"/>
<property value="disabled" name="NumberOfTypesWithImplementation"/>
<property value="disabled" name="Level"/>
<property value="disabled" name="NumberOfSubsystems"/>
<property value="disabled" name="NumberOfCyclicLayers"/>
<property value="disabled" name="MaxCyclomaticComplexityPerMethod"/>
</attributeConfiguration>
</context>