DATAGRAPH-228 update examples to neo4j 1.7-SNAPSHOT

This commit is contained in:
Michael Hunger
2012-04-27 10:47:28 +02:00
parent 72e8661e49
commit 7200a208fb
20 changed files with 268 additions and 73 deletions

View File

@@ -13,6 +13,7 @@
<module>spring-data-neo4j-parent</module>
<module>spring-data-neo4j</module>
<module>spring-data-neo4j-rest</module>
<module>spring-data-neo4j-tx</module>
<module>spring-data-neo4j-aspects</module>
<module>spring-data-neo4j-cross-store</module>
</modules>

View File

@@ -40,6 +40,10 @@
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>

View File

@@ -293,6 +293,11 @@
<artifactId>spring-data-neo4j-aspects</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j-tx</artifactId>
<version>${project.version}</version>
</dependency>
<!-- Logging -->
<dependency>
@@ -300,12 +305,14 @@
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j.version}</version>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
@@ -493,18 +500,6 @@
<version>1.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.ow2.jotm</groupId>
<artifactId>jotm-core</artifactId>
<version>2.1.9</version>
</dependency>
<dependency>
<groupId>org.ow2.spec.ee</groupId>
<artifactId>ow2-connector-1.5-spec</artifactId>
<version>1.0-M1</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>

View File

@@ -0,0 +1,176 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j-parent</artifactId>
<version>2.1.0.BUILD-SNAPSHOT</version>
<relativePath>../spring-data-neo4j-parent/pom.xml</relativePath>
</parent>
<artifactId>spring-data-neo4j-tx</artifactId>
<packaging>jar</packaging>
<name>Neo4j Spring XA Transaction Integration</name>
<description><![CDATA[Integration of external XA-Transaction-Managers configured in Spring with Neo4j, via the "tx_manager_impl=spring-jta" config setting.
]]></description>
<url>http://neo4j.org</url>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-kernel</artifactId>
<version>${neo4j.version}</version>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-lucene-index</artifactId>
<version>${neo4j.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-kernel</artifactId>
<version>${neo4j.version}</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.ow2.jotm</groupId>
<artifactId>jotm-core</artifactId>
<version>2.1.9</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.ow2.spec.ee</groupId>
<artifactId>ow2-connector-1.5-spec</artifactId>
<version>1.0-M1</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2</version>
</dependency>
<!-- JPA annotations for spring-aspects compilation which uses @Transactional -->
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.0.Final</version>
<optional>true</optional>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.2</version>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
<configuration>
<!--aspectDirectory>src/main/java</aspectDirectory>
<testAspectDirectory>src/test/java</testAspectDirectory-->
<!--weaveDependencies>
<weaveDependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>
<type>test-jar</type>
</weaveDependency>
</weaveDependencies-->
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<!--includes>
<include>org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect</include>
</includes-->
</aspectLibrary>
</aspectLibraries>
<source>1.6</source>
<target>1.6</target>
</configuration>
<executions>
<execution>
<id>default-compile</id>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- the eclipse plugin interacts with the aspectj-maven-plugin
BUT ONLY if the ajdtVersion config value is set (remove it and it won't) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.8</version>
<configuration>
<!-- The ajdtVersion configuration parameter is optional. The valid values are none, 1.4, and 1.5. none indicates that AJDT should not be enabled even though Aspectj is enabled in maven. 1.4 generates the org.eclipse.ajdt.ui.prefs file in the .settings directory. 1.5 (or later) includes the configuration into the .classpath file and is the default value. -->
<ajdtVersion>1.5</ajdtVersion>
<additionalProjectnatures>
<projectnature>org.eclipse.ajdt.ui.ajnature</projectnature>
<projectnature>org.eclipse.jdt.core.javanature</projectnature>
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
</additionalProjectnatures>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,3 @@
Manifest-Version: 1.0
Class-Path:

View File

@@ -17,9 +17,9 @@
package org.springframework.data.neo4j.transaction;
import org.neo4j.kernel.impl.transaction.AbstractTransactionManager;
import org.neo4j.kernel.impl.transaction.XaDataSourceManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.jta.JtaTransactionManager;
import javax.transaction.*;
@@ -30,8 +30,7 @@ import javax.transaction.*;
@Configurable
class SpringServiceImpl extends AbstractTransactionManager
{
@Autowired
private JtaTransactionManager jtaTransactionManager;
private PlatformTransactionManager transactionManager;
private TransactionManager delegate;
@@ -41,7 +40,11 @@ class SpringServiceImpl extends AbstractTransactionManager
@Override
public void init() throws Throwable {
delegate = jtaTransactionManager.getTransactionManager();
if (transactionManager instanceof JtaTransactionManager) {
delegate = ((JtaTransactionManager) transactionManager).getTransactionManager();
} else {
throw new IllegalStateException("Injected transaction manager is not of type JtaTransactionManager but "+ transactionManager.getClass().getName());
}
}
@Override
@@ -108,4 +111,13 @@ class SpringServiceImpl extends AbstractTransactionManager
{
// Currently a no-op
}
public PlatformTransactionManager getTransactionManager() {
return transactionManager;
}
@Autowired
public void setTransactionManager(PlatformTransactionManager transactionManager) {
this.transactionManager = transactionManager;
}
}

View File

@@ -17,8 +17,8 @@
package org.springframework.data.neo4j.transaction;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
@@ -27,7 +27,6 @@ import org.neo4j.kernel.AbstractGraphDatabase;
import org.neo4j.kernel.configuration.Config;
import org.objectweb.jotm.Current;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.data.neo4j.support.node.Neo4jHelper;
import org.springframework.transaction.jta.JtaTransactionManager;
import org.springframework.transaction.jta.ManagedTransactionAdapter;
@@ -43,7 +42,6 @@ import static org.junit.Assert.assertNotNull;
* @since 21.02.11
*/
@Ignore("TODO")
public class JOTMIntegrationTest {
private ClassPathXmlApplicationContext ctx;
private GraphDatabaseService gds;
@@ -52,7 +50,6 @@ public class JOTMIntegrationTest {
public void setUp() throws Exception {
ctx = new ClassPathXmlApplicationContext("classpath:spring-tx-text-context.xml");
gds = ctx.getBean(GraphDatabaseService.class);
Neo4jHelper.cleanDb(gds);
}
@After
@@ -72,11 +69,11 @@ public class JOTMIntegrationTest {
transaction.finish();
}
Node readBackOutsideOfTx = gds.getNodeById(node.getId());
assertEquals(node, readBackOutsideOfTx);
Assert.assertEquals(node, readBackOutsideOfTx);
try {
transaction = gds.beginTx();
Node readBackInsideOfTx = gds.getNodeById(node.getId());
assertEquals(node, readBackInsideOfTx);
Assert.assertEquals(node, readBackInsideOfTx);
transaction.success();
} finally {
transaction.finish();
@@ -95,7 +92,7 @@ public class JOTMIntegrationTest {
transaction.finish();
}
Node retrievedNode = gds.index().forNodes("node").get("name", "value").getSingle();
assertEquals(node,retrievedNode);
Assert.assertEquals(node, retrievedNode);
}
@Test(expected = NotFoundException.class)
@@ -115,12 +112,12 @@ public class JOTMIntegrationTest {
@Test
public void databaseConfiguredWithSpringJtaShouldUseJtaTransactionManager() throws SystemException, NotSupportedException {
final Config config = ((AbstractGraphDatabase) gds).getConfig();
assertEquals("spring-jta", config.getParams().get(Config.TXMANAGER_IMPLEMENTATION));
Assert.assertEquals("spring-jta", config.getParams().get(Config.TXMANAGER_IMPLEMENTATION));
JtaTransactionManager tm = ctx.getBean("transactionManager", JtaTransactionManager.class);
Transaction transaction = tm.createTransaction("jotm", 1000);
assertEquals(ManagedTransactionAdapter.class, transaction.getClass());
Assert.assertEquals(ManagedTransactionAdapter.class, transaction.getClass());
assertEquals(Current.class, ((ManagedTransactionAdapter) transaction).getTransactionManager().getClass());
}
}

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<context:spring-configured/>
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager">
<bean id="jotm" class="org.springframework.data.neo4j.transaction.JotmFactoryBean"/>
</property>
</bean>
<bean class="org.neo4j.test.ImpermanentGraphDatabase" destroy-method="shutdown">
<constructor-arg>
<map>
<entry key="tx_manager_impl" value="spring-jta"/>
</map>
</constructor-arg>
</bean>
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/>
</beans>

View File

@@ -0,0 +1,26 @@
Bundle-SymbolicName: org.springframework.data.neo4j.transaction
Bundle-Name: Neo4j Spring XA Transaction Integration
Bundle-Vendor: SpringSource
Bundle-ManifestVersion: 2
Import-Template:
org.springframework.beans.*;version="[3.0.0, 4.0.0)",
org.springframework.context.*;version="[3.0.0, 4.0.0)",
org.springframework.core.*;version="[3.0.0, 4.0.0)",
org.springframework.stereotype.*;version="[3.0.0, 4.0.0)",
org.springframework.transaction.*;version="[3.0.0, 4.0.0)",
org.springframework.util.*;version="[3.0.0, 4.0.0)",
org.neo4j.*;version="0",
org.aspectj.*;version="[1.6.5, 2.0.0)",
org.apache.commons.configuration.*;version="0",
org.objectweb.jotm.*;version="0",
org.apache.lucene.*;version="0",
org.slf4j.*;version="0",
javax.persistence.*;version="[1.0.0, 3.0.0)";resolution:=optional,
javax.transaction.*;version="[1.0.1, 2.0.0)";resolution:=optional,
javax.naming.*;version="[1.0.1, 2.0.0)";resolution:=optional
Import-Package:
sun.reflect;version="0";resolution:=optional,
net.sf.cglib.proxy;version="[2.2.0,3.0.0)",
net.sf.cglib.core;version="[2.2.0,3.0.0)",
net.sf.cglib.reflect;version="[2.2.0,3.0.0)"
DynamicImport-Package: *

View File

@@ -38,17 +38,6 @@
<artifactId>spring-data-commons-core</artifactId>
</dependency>
<dependency>
<groupId>org.ow2.jotm</groupId>
<artifactId>jotm-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.ow2.spec.ee</groupId>
<artifactId>ow2-connector-1.5-spec</artifactId>
<scope>provided</scope>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
@@ -222,6 +211,7 @@
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.0.Final</version>
<optional>true</optional>
</dependency>
<!-- For Tests -->

View File

@@ -1,37 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<context:spring-configured/>
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager">
<bean id="jotm" class="org.springframework.data.neo4j.transaction.JotmFactoryBean"/>
</property>
</bean>
<bean class="org.neo4j.kernel.EmbeddedGraphDatabase" destroy-method="shutdown">
<constructor-arg value="target/test-db"/>
<constructor-arg>
<map>
<entry key="tx_manager_impl" value="spring-jta"/>
</map>
</constructor-arg>
</bean>
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/>
<!--context:load-time-weaver aspectj-weaving="autodetect"/-->
</beans>