DATACMNS-227 - Renamed repository resource populator location attribute to locations.
Tightened test cases to check correct population more strictly. Upgraded to Hamcrest 1.3 as test dependency on the way.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
http\://www.springframework.org/schema/data/repository/spring-repository-1.0.xsd=org/springframework/data/repository/config/spring-repository-1.0.xsd
|
||||
http\://www.springframework.org/schema/data/repository/spring-repository-1.4.xsd=org/springframework/data/repository/config/spring-repository-1.4.xsd
|
||||
http\://www.springframework.org/schema/data/repository/spring-repository.xsd=org/springframework/data/repository/config/spring-repository-1.4.xsd
|
||||
http\://www.springframework.org/schema/data/repository/spring-repository-1.5.xsd=org/springframework/data/repository/config/spring-repository-1.5.xsd
|
||||
http\://www.springframework.org/schema/data/repository/spring-repository.xsd=org/springframework/data/repository/config/spring-repository-1.5.xsd
|
||||
|
||||
@@ -0,0 +1,187 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xsd:schema xmlns="http://www.springframework.org/schema/data/repository"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:tool="http://www.springframework.org/schema/tool"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
targetNamespace="http://www.springframework.org/schema/data/repository"
|
||||
elementFormDefault="qualified" attributeFormDefault="unqualified">
|
||||
|
||||
<xsd:import namespace="http://www.springframework.org/schema/tool" />
|
||||
<xsd:import namespace="http://www.springframework.org/schema/context"
|
||||
schemaLocation="http://www.springframework.org/schema/context/spring-context.xsd" />
|
||||
|
||||
<xsd:complexType name="repositories">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="include-filter" type="context:filterType"
|
||||
minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
Controls which eligible types to include for component scanning.
|
||||
]]></xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
<xsd:element name="exclude-filter" type="context:filterType" minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
Controls which eligible types to exclude for component scanning.
|
||||
]]></xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="base-package" type="xsd:string" use="required">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
Defines the base package where the DAO interface will be tried to be detected.
|
||||
]]></xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:attribute>
|
||||
<xsd:attribute name="named-queries-location" type="xsd:string">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
Defines the location to look for a Properties file containing externally defined queries.
|
||||
]]></xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:attribute>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="populator">
|
||||
<xsd:attribute name="locations" type="xsd:string" use="required">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Where to find the files to read the objects from the repository shall be populated with.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:attribute>
|
||||
<xsd:attribute name="id" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
|
||||
<!-- XML (Unmarshaller) initializer -->
|
||||
|
||||
<xsd:element name="unmarshaller-populator">
|
||||
<xsd:complexType>
|
||||
<xsd:complexContent>
|
||||
<xsd:extension base="populator">
|
||||
<xsd:attribute name="unmarshaller-ref" type="unmarshallerRefType" use="required" />
|
||||
</xsd:extension>
|
||||
</xsd:complexContent>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:simpleType name="unmarshallerRefType">
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<tool:expected-type type="org.springframework.oxm.Unmarshaller" />
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
<xsd:union memberTypes="xsd:string" />
|
||||
</xsd:simpleType>
|
||||
|
||||
<!-- JSON (Jackson) initializer -->
|
||||
|
||||
<xsd:element name="jackson-populator">
|
||||
<xsd:complexType>
|
||||
<xsd:complexContent>
|
||||
<xsd:extension base="populator">
|
||||
<xsd:attribute name="object-mapper-ref" type="objectMapperType" />
|
||||
</xsd:extension>
|
||||
</xsd:complexContent>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:simpleType name="objectMapperType">
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<tool:expected-type type="org.codehaus.jackson.map.ObjectMapper" />
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
<xsd:union memberTypes="xsd:string" />
|
||||
</xsd:simpleType>
|
||||
|
||||
<xsd:attributeGroup name="repository-attributes">
|
||||
<xsd:attribute name="repository-impl-postfix" type="xsd:string"/>
|
||||
<xsd:attribute name="query-lookup-strategy" type="query-strategy"/>
|
||||
<xsd:attribute name="factory-class" type="classType"/>
|
||||
</xsd:attributeGroup>
|
||||
|
||||
<xsd:attributeGroup name="transactional-repository-attributes">
|
||||
<xsd:attributeGroup ref="repository-attributes"/>
|
||||
<xsd:attribute name="transaction-manager-ref" type="transactionManagerRef"/>
|
||||
</xsd:attributeGroup>
|
||||
|
||||
<xsd:simpleType name="query-strategy">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
Determines the way query methods are being executed.
|
||||
]]></xsd:documentation>
|
||||
</xsd:annotation>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:enumeration value="create-if-not-found">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
Tries to find a named query but creates a custom query if
|
||||
none can be found. (Default)
|
||||
]]></xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="create">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
Creates a query from the query method's name.
|
||||
]]></xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
<xsd:enumeration value="use-declared-query">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
Uses a declared query to execute. Fails if no
|
||||
declared query (either through named query or through @Query)
|
||||
is defined.
|
||||
]]></xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:enumeration>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
|
||||
<xsd:simpleType name="customImplementationReference">
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<tool:annotation kind="ref"/>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
<xsd:union memberTypes="xsd:string"/>
|
||||
</xsd:simpleType>
|
||||
|
||||
<xsd:simpleType name="entityManagerFactoryRef">
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<tool:annotation kind="ref">
|
||||
<tool:assignable-to type="org.springframework.orm.jpa.AbstractEntityManagerFactoryBean"/>
|
||||
</tool:annotation>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
<xsd:union memberTypes="xsd:string"/>
|
||||
</xsd:simpleType>
|
||||
|
||||
<xsd:simpleType name="transactionManagerRef">
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<tool:annotation kind="ref">
|
||||
<tool:assignable-to type="org.springframework.transaction.PlatformTransactionManager"/>
|
||||
</tool:annotation>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
<xsd:union memberTypes="xsd:string"/>
|
||||
</xsd:simpleType>
|
||||
|
||||
<xsd:simpleType name="classType">
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
<tool:annotation kind="direct">
|
||||
<tool:expected-type type="java.lang.Class"/>
|
||||
</tool:annotation>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
<xsd:union memberTypes="xsd:string"/>
|
||||
</xsd:simpleType>
|
||||
|
||||
</xsd:schema>
|
||||
@@ -15,9 +15,11 @@
|
||||
*/
|
||||
package org.springframework.data.repository.config;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.hamcrest.Matchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
||||
@@ -53,6 +55,9 @@ public class ResourceReaderRepositoryPopulatorBeanDefinitionParserIntegrationTes
|
||||
assertThat(bean, is(instanceOf(ResourceReaderRepositoryPopulator.class)));
|
||||
Object resourceReader = ReflectionTestUtils.getField(bean, "reader");
|
||||
assertThat(resourceReader, is(instanceOf(JacksonResourceReader.class)));
|
||||
|
||||
Object resources = ReflectionTestUtils.getField(bean, "resources");
|
||||
assertIsListOfClasspathResourcesWithPath(resources, "org/springframework/data/repository/init/data.json");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -74,5 +79,19 @@ public class ResourceReaderRepositoryPopulatorBeanDefinitionParserIntegrationTes
|
||||
assertThat(resourceReader, is(instanceOf(UnmarshallingResourceReader.class)));
|
||||
Object unmarshaller = ReflectionTestUtils.getField(resourceReader, "unmarshaller");
|
||||
assertThat(unmarshaller, is(instanceOf(Jaxb2Marshaller.class)));
|
||||
|
||||
Object resources = ReflectionTestUtils.getField(bean, "resources");
|
||||
assertIsListOfClasspathResourcesWithPath(resources, "org/springframework/data/repository/init/data.xml");
|
||||
}
|
||||
|
||||
private void assertIsListOfClasspathResourcesWithPath(Object source, String path) {
|
||||
|
||||
assertThat(source, is(instanceOf(List.class)));
|
||||
List<?> list = (List<?>) source;
|
||||
assertThat(list, is(not(empty())));
|
||||
Object element = list.get(0);
|
||||
assertThat(element, is(instanceOf(ClassPathResource.class)));
|
||||
ClassPathResource resource = (ClassPathResource) element;
|
||||
assertThat(resource.getPath(), is(path));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||
|
||||
<repository:jackson-populator id="jackson-populator"
|
||||
location="classpath:org/springframework/data/repository/init/data.json" />
|
||||
locations="classpath:org/springframework/data/repository/init/data.json" />
|
||||
|
||||
<repository:unmarshaller-populator
|
||||
id="xml-populator" location="classpath:org/springframework/data/repository/init/data.xml"
|
||||
id="xml-populator" locations="classpath:org/springframework/data/repository/init/data.xml"
|
||||
unmarshaller-ref="unmarshaller" />
|
||||
|
||||
<oxm:jaxb2-marshaller id="unmarshaller" contextPath="org.springframework.data.repository.config" />
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<org.springframework.version.30>3.0.7.RELEASE</org.springframework.version.30>
|
||||
<org.springframework.version>3.1.2.RELEASE</org.springframework.version>
|
||||
<org.springframework.hateoas.version>0.3.0.RELEASE</org.springframework.hateoas.version>
|
||||
<org.hamcrest.version>1.2.1</org.hamcrest.version>
|
||||
<org.hamcrest.version>1.3</org.hamcrest.version>
|
||||
<bundlor.failOnWarnings>true</bundlor.failOnWarnings>
|
||||
</properties>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user