I want to use hibernate in warp
this is my pojo
package com.ergal.test.po;
/**
*
* @author ohergal
* @hibernate.class table="T_BLOG" dynamic-update="true" dynamic-
insert="true" lazy="true"
*/
public class Blog {
private String id;
private String subject;
private String text;
/**
* @
hibernate.id generator-class="uuid.hex"
* @hibernate.column name="SYS_ID" sql-type="VARCHAR2" length="50"
* @return the id
*/
public String getId() {
return id;
}
/**
* @hibernate.property type="string" length="50"
* @hibernate.column name="SUBJECT" sql-type="VARCHAR2" length="50"
* @return the subject
*/
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
/**
* @hibernate.property type="string" length="50"
* @hibernate.column name="TEXT" sql-type="VARCHAR2" length="50"
* @return the text
*/
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public void setId(String id) {
this.id = id;
}
// rest of the getters/setters + equals() + hashCode()
}
my module
package com.test;
import org.hibernate.cfg.Configuration;
import com.google.inject.AbstractModule;
import com.wideplay.warp.Warp;
import com.wideplay.warp.persist.PersistenceService;
import com.wideplay.warp.persist.UnitOfWork;
public class MyGuiceModule extends AbstractModule {
@Override
protected void configure() {
// TODO Auto-generated method stub
bind(Configuration.class).toInstance(new
Configuration().configure("hibernate.cfg.xml"));
}
public void configure(Warp warp) {
// TODO Auto-generated method stub
warp.install(PersistenceService.usingHibernate().across(UnitOfWork.TRANSACTION).buildModule());
warp.addStartupListener(MyWarpStartup.class);
}
}
MyWarpStartup
package com.test;
import com.google.inject.Inject;
import com.wideplay.warp.StartupListener;
import com.wideplay.warp.persist.PersistenceService;
public class MyWarpStartup implements StartupListener {
@Inject private PersistenceService service;
public void onStartup() {
//start persistence service
service.start();
}
}
my service
package com.test;
import org.hibernate.Session;
import com.ergal.test.po.Blog;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.wideplay.warp.persist.Transactional;
public class MyService {
@Inject
Provider<Session> session;
@Transactional
public void createNewPerson() {
session.get().saveOrUpdate(new Blog());
}
}
and my unit test
package com.ergal.test;
import org.junit.Before;
import org.junit.Test;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.test.MyGuiceModule;
import com.test.MyService;
public class ConnectionTest{
private MyGuiceModule m;
//private Client client;
private MyService s;
@Before
public void setup(){
//client = new Client();
m = new MyGuiceModule();
s = new MyService();
}
@Test
public void testMyService(){
Injector in = Guice.createInjector(m);
in.injectMembers(s);
s.createNewBlog();
}
}
but when I run the test
com.google.inject.ConfigurationException: Error at
com.test.MyService.session(MyService.java:10) Binding to
com.google.inject.Provider<org.hibernate.Session> not found. No
bindings to that type were found.
at com.google.inject.BinderImpl
$RuntimeErrorHandler.handle(BinderImpl.java:426)
at
com.google.inject.AbstractErrorHandler.handle(AbstractErrorHandler.java:
30)
at
com.google.inject.ErrorMessages.handleMissingBinding(ErrorMessages.java:
46)
at
com.google.inject.InjectorImpl.getInternalFactory(InjectorImpl.java:
192)
at com.google.inject.InjectorImpl
$SingleFieldInjector.<init>(InjectorImpl.java:461)
at com.google.inject.InjectorImpl$6.create(InjectorImpl.java:371)
at com.google.inject.InjectorImpl$6.create(InjectorImpl.java:369)
at
com.google.inject.InjectorImpl.addInjectorsForMembers(InjectorImpl.java:
384)
at
com.google.inject.InjectorImpl.addSingleInjectorsForFields(InjectorImpl.java:
367)
at com.google.inject.InjectorImpl.addInjectors(InjectorImpl.java:350)
at com.google.inject.InjectorImpl$4.create(InjectorImpl.java:332)
at com.google.inject.InjectorImpl$4.create(InjectorImpl.java:329)
at com.google.inject.util.ReferenceCache.create(ReferenceCache.java:
53)
at
com.google.inject.util.AbstractReferenceCache.internalCreate(AbstractReferenceCache.java:
59)
at
com.google.inject.util.AbstractReferenceCache.get(AbstractReferenceCache.java:
116)
at com.google.inject.InjectorImpl.injectMembers(InjectorImpl.java:
672)
at com.google.inject.InjectorImpl$8.call(InjectorImpl.java:682)
at com.google.inject.InjectorImpl$8.call(InjectorImpl.java:681)
at com.google.inject.InjectorImpl.callInContext(InjectorImpl.java:
747)
at com.google.inject.InjectorImpl.injectMembers(InjectorImpl.java:
680)
at com.ergal.test.ConnectionTest.testMyService(ConnectionTest.java:
29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
at
org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:
98)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:
79)
at
org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:
87)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:
77)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
at
org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:
88)
at
org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:
51)
at org.junit.internal.runners.JUnit4ClassRunner
$1.run(JUnit4ClassRunner.java:44)
at
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:
27)
at
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:
37)
at
org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:
42)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:
38)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
460)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
386)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:
196)