Advertisement
Guest User

Untitled

a guest
Feb 18th, 2016
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.49 KB | None | 0 0
  1. @RunWith(SpringJUnit4ClassRunner.class)
  2. @ContextHierarchy({
  3. @ContextConfiguration(value = "file:src/main/webapp/WEB-INF/spring/applicationContext-db.xml"),
  4. @ContextConfiguration(value = "file:src/main/webapp/WEB-INF/spring/applicationContext.xml")
  5. })
  6. public class FileServiceImplTest {
  7.  
  8. @Autowired
  9. private FileService fileService;
  10.  
  11. @Test
  12. public void testSaveFolder() {
  13. FolderDTO rootFolder = new FolderDTO();
  14. rootFolder.setName("ROOT");
  15. rootFolder.setParentId(null);
  16. rootFolder.setIdPath("/");
  17. rootFolder.setPath("/");
  18.  
  19. fileService.saveFile(rootFolder);
  20.  
  21. List<AbstractFileDTO> rootFiles = fileService.getRootFiles();
  22.  
  23. assertEquals(1, rootFiles.size());
  24.  
  25. AbstractFileDTO abstractFileDTO = rootFiles.get(0);
  26.  
  27. assertEquals(rootFolder, abstractFileDTO);
  28.  
  29. }
  30.  
  31. }
  32.  
  33. org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
  34. at org.springframework.orm.hibernate5.SpringSessionContext.currentSession(SpringSessionContext.java:132)
  35. at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:697)
  36. at org.sbezgin.p2016.db.dao.impl.FileDAOImpl.getSession(FileDAOImpl.java:69)
  37. at org.sbezgin.p2016.db.dao.impl.FileDAOImpl.saveOrUpdateFile(FileDAOImpl.java:33)
  38. at org.sbezgin.p2016.services.file.impl.FileServiceImpl.saveFile(FileServiceImpl.java:41)
  39. at org.sbezgin.p2016.services.file.impl.FileServiceImplTest.testSaveFolder(FileServiceImplTest.java:35)
  40. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  41. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  42. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  43. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
  44. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  45. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
  46. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  47. at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
  48. at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
  49. at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
  50. at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
  51. at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:254)
  52. at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
  53. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
  54. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
  55. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
  56. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
  57. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
  58. at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
  59. at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
  60. at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
  61. at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:193)
  62. at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
  63. at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67)
  64.  
  65. @Transactional
  66. public class FileServiceImpl implements FileService {
  67. private FileDAO fileDAO;
  68. private BeanTransformer beanTransformer;
  69.  
  70. @Override
  71. public AbstractFileDTO getFileByID(long fileID) {
  72. return null;
  73. }
  74.  
  75. @Override
  76. public FolderDTO getFolder(long folderID) {
  77. return null;
  78. }
  79.  
  80. @Transactional(propagation = Propagation.REQUIRED)
  81. @Override
  82. public void saveFile(AbstractFileDTO file) {
  83. Long id = file.getId();
  84. if (id == null) {
  85. AbstractFile fileEntity = (AbstractFile) beanTransformer.transformDTOToEntity(file);
  86. User user = new User();
  87. user.setId(1);
  88. fileDAO.saveOrUpdateFile(user, fileEntity);
  89. }
  90. }
  91.  
  92. @Override
  93. public void setPermission(long fileD, PermissionDTO perm) {
  94.  
  95. }
  96.  
  97. @Override
  98. public void renameFile(long fileID, String newName) {
  99.  
  100. }
  101.  
  102. @Override
  103. public void deleteFile(long fileID, boolean recursively) {
  104.  
  105. }
  106.  
  107. @Override
  108. public List<AbstractFileDTO> getRootFiles() {
  109. User user = new User();
  110. user.setId(1);
  111. List<AbstractFile> rootFiles = fileDAO.getRootFiles(user);
  112. List<AbstractFileDTO> abstractFileDTOs = new ArrayList<>(rootFiles.size());
  113. abstractFileDTOs.addAll(
  114. rootFiles.stream().map(
  115. rootFile -> (AbstractFileDTO) beanTransformer.transformEntityToDTO(rootFile)
  116. ).collect(Collectors.toList())
  117. );
  118. return abstractFileDTOs;
  119. }
  120.  
  121. @Override
  122. public List<AbstractFileDTO> getChildren(long folderID) {
  123. return null;
  124. }
  125.  
  126. @Override
  127. public List<AbstractFileDTO> getFilesByType(String javaType) {
  128. return null;
  129. }
  130.  
  131.  
  132. public FileDAO getFileDAO() {
  133. return fileDAO;
  134. }
  135.  
  136. public void setFileDAO(FileDAO fileDAO) {
  137. this.fileDAO = fileDAO;
  138. }
  139.  
  140. public BeanTransformer getBeanTransformer() {
  141. return beanTransformer;
  142. }
  143.  
  144. public void setBeanTransformer(BeanTransformer beanTransformer) {
  145. this.beanTransformer = beanTransformer;
  146. }
  147. }
  148.  
  149. public class FileDAOImpl implements FileDAO {
  150.  
  151. private SessionFactory sessionFactory;
  152.  
  153. @Override
  154. public AbstractFile getFileByID(User user, long fileID) {
  155. return null;
  156. }
  157.  
  158. @Override
  159. public Folder getFolder(User user, long folderID) {
  160. return null;
  161. }
  162.  
  163. @Transactional(propagation = Propagation.REQUIRED)
  164. @Override
  165. public void saveOrUpdateFile(User user, AbstractFile file) {
  166. Session session = getSession();
  167. file.setClassName(file.getClass().getCanonicalName());
  168. file.setOwnerID(user.getId());
  169. session.save(file);
  170. }
  171.  
  172. @Override
  173. public void saveOrUpdateFiles(User user, List<AbstractFile> files) {
  174.  
  175. }
  176.  
  177. @Override
  178. public void deleteFile(User user, long fileID, boolean recursively) {
  179.  
  180. }
  181.  
  182. @Override
  183. public List<AbstractFile> getRootFiles(User user) {
  184. Session session = getSession();
  185. Query query = session.createQuery("from AbstractFile as file where file.ownerID = :ownerId and file.parentId is null ");
  186. query.setParameter("ownerId", user.getId());
  187. List list = query.list();
  188. return list;
  189. }
  190.  
  191. @Override
  192. public List<AbstractFile> getChildren(User user, long folderID) {
  193. return null;
  194. }
  195.  
  196. @Override
  197. public List<AbstractFile> getFilesByType(User user, String javaType) {
  198. return null;
  199. }
  200.  
  201. private Session getSession() {
  202. return sessionFactory.getCurrentSession();
  203. }
  204.  
  205. public SessionFactory getSessionFactory() {
  206. return sessionFactory;
  207. }
  208.  
  209. public void setSessionFactory(SessionFactory sessionFactory) {
  210. this.sessionFactory = sessionFactory;
  211. }
  212. }
  213.  
  214. <?xml version="1.0" encoding="UTF-8"?>
  215. <beans xmlns="http://www.springframework.org/schema/beans"
  216. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  217. xmlns:context="http://www.springframework.org/schema/context"
  218. xmlns:tx="http://www.springframework.org/schema/tx"
  219. xmlns:aop="http://www.springframework.org/schema/aop"
  220. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
  221. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
  222. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
  223. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
  224.  
  225. <bean name="dozer" class="org.dozer.DozerBeanMapper" />
  226.  
  227. <bean name="beanTransformer" class="org.sbezgin.p2016.services.impl.BeanTransformerImpl">
  228. <property name="dozerBeanMapper" ref="dozer"/>
  229. <property name="beanMap">
  230. <map>
  231. <entry key="org.sbezgin.p2016.db.dto.file.FolderDTO" value="org.sbezgin.p2016.db.entity.file.Folder"/>
  232. </map>
  233. </property>
  234. </bean>
  235.  
  236. <!-- services -->
  237. <bean name="fileService" class="org.sbezgin.p2016.services.file.impl.FileServiceImpl">
  238. <property name="fileDAO" ref="fileDAO" />
  239. <property name="beanTransformer" ref="beanTransformer"/>
  240. </bean>
  241.  
  242. <!-- dao -->
  243. <bean name="fileDAO" class="org.sbezgin.p2016.db.dao.impl.FileDAOImpl">
  244. <property name="sessionFactory" ref="sessionFactory"/>
  245. </bean>
  246. </beans>
  247.  
  248. <?xml version="1.0" encoding="UTF-8"?>
  249. <beans xmlns="http://www.springframework.org/schema/beans"
  250. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  251. xmlns:context="http://www.springframework.org/schema/context"
  252. xmlns:tx="http://www.springframework.org/schema/tx"
  253. xmlns:aop="http://www.springframework.org/schema/aop"
  254. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
  255. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
  256. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
  257. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
  258.  
  259. <context:property-placeholder location="WEB-INF/hibernate.properties" ignore-unresolvable="false"/>
  260.  
  261. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  262. <property name="driverClassName" value="${jdbc.driverClassName}"/>
  263. <property name="url" value="${jdbc.url}"/>
  264. <property name="username" value="${jdbc.username}"/>
  265. <property name="password" value="${jdbc.password}"/>
  266. </bean>
  267.  
  268. <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
  269. <property name="dataSource" ref="dataSource"/>
  270. <property name="packagesToScan">
  271. <list>
  272. <value>org.sbezgin.p2016.db.entity</value>
  273. </list>
  274. </property>
  275. <property name="hibernateProperties">
  276. <props>
  277. <prop key="hibernate.dialect">${hibernate.dialect}</prop>
  278. <prop key="hibernate.show_sql">${hibernate.show_sql:false}</prop>
  279. <prop key="hibernate.format_sql">${hibernate.format_sql:false}</prop>
  280. <prop key="hibernate.id.new_generator_mappings">${hibernate.id.new_generator_mappings}</prop>
  281. <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
  282. </props>
  283. </property>
  284. </bean>
  285.  
  286. <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
  287. <property name="sessionFactory" ref="sessionFactory"/>
  288. </bean>
  289. <tx:annotation-driven transaction-manager="transactionManager"/>
  290.  
  291. </beans>
  292.  
  293. jdbc.driverClassName = org.hsqldb.jdbcDriver
  294. jdbc.url = jdbc:hsqldb:hsql://localhost:9001/xdb
  295. jdbc.username = sa
  296. jdbc.password =
  297. hibernate.dialect = org.hibernate.dialect.HSQLDialect
  298. hibernate.show_sql = true
  299. hibernate.format_sql = true
  300. hibernate.id.new_generator_mappings = false
  301. hibernate.hbm2ddl.auto = create-drop
  302.  
  303. <dependencies>
  304. <dependency>
  305. <groupId>org.hibernate</groupId>
  306. <artifactId>hibernate-core</artifactId>
  307. <version>5.0.7.Final</version>
  308. </dependency>
  309. <dependency>
  310. <groupId>org.springframework</groupId>
  311. <artifactId>spring-context</artifactId>
  312. <version>4.2.4.RELEASE</version>
  313. </dependency>
  314. <dependency>
  315. <groupId>org.springframework</groupId>
  316. <artifactId>spring-webmvc</artifactId>
  317. <version>4.2.4.RELEASE</version>
  318. </dependency>
  319. <dependency>
  320. <groupId>org.springframework</groupId>
  321. <artifactId>spring-tx</artifactId>
  322. <version>4.2.4.RELEASE</version>
  323. </dependency>
  324. <dependency>
  325. <groupId>org.springframework</groupId>
  326. <artifactId>spring-orm</artifactId>
  327. <version>4.2.4.RELEASE</version>
  328. </dependency>
  329. <dependency>
  330. <groupId>net.sf.dozer</groupId>
  331. <artifactId>dozer</artifactId>
  332. <version>5.5.1</version>
  333. </dependency>
  334. <dependency>
  335. <groupId>mysql</groupId>
  336. <artifactId>mysql-connector-java</artifactId>
  337. <version>5.1.38</version>
  338. </dependency>
  339.  
  340. <dependency>
  341. <groupId>javax.servlet</groupId>
  342. <artifactId>javax.servlet-api</artifactId>
  343. <version>3.0.1</version>
  344. <scope>provided</scope>
  345. </dependency>
  346. <!-- TEST artifacts -->
  347. <dependency>
  348. <groupId>org.mockito</groupId>
  349. <artifactId>mockito-all</artifactId>
  350. <version>1.9.5</version>
  351. </dependency>
  352. <dependency>
  353. <groupId>org.powermock</groupId>
  354. <artifactId>powermock-module-junit4</artifactId>
  355. <version>1.5</version>
  356. <scope>test</scope>
  357. </dependency>
  358. <dependency>
  359. <groupId>org.powermock</groupId>
  360. <artifactId>powermock-api-mockito</artifactId>
  361. <version>1.5</version>
  362. <scope>test</scope>
  363. </dependency>
  364. <dependency>
  365. <groupId>junit</groupId>
  366. <artifactId>junit</artifactId>
  367. <version>4.11</version>
  368. <scope>test</scope>
  369. </dependency>
  370. <dependency>
  371. <groupId>org.springframework</groupId>
  372. <artifactId>spring-test</artifactId>
  373. <version>4.2.4.RELEASE</version>
  374. <scope>test</scope>
  375. </dependency>
  376. <dependency>
  377. <groupId>org.hsqldb</groupId>
  378. <artifactId>hsqldb</artifactId>
  379. <version>2.2.8</version>
  380. <scope>test</scope>
  381. </dependency>
  382. </dependencies>
  383. <build>
  384. <finalName>p2016</finalName>
  385. <plugins>
  386. <plugin>
  387. <!-- current version -->
  388. <groupId>fr.avianey.mojo</groupId>
  389. <artifactId>hsqldb-maven-plugin</artifactId>
  390. <version>1.0.0</version>
  391.  
  392. <!--
  393. default value for in memory jdbc:hsqldb:hsql://localhost/xdb
  394. override only values you want to change
  395. -->
  396. <configuration>
  397. <driver>org.hsqldb.jdbcDriver</driver>
  398. <address>localhost</address>
  399. <port>9001</port>
  400. <name>xdb</name>
  401. <username>sa</username>
  402. <password></password>
  403. <validationQuery>SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS</validationQuery>
  404. </configuration>
  405.  
  406. <!-- call start and stop -->
  407. <executions>
  408. <execution>
  409. <id>start-hsqldb</id>
  410. <phase>process-test-classes</phase>
  411. <goals>
  412. <goal>start</goal>
  413. </goals>
  414. </execution>
  415. <execution>
  416. <id>stop-hsqldb</id>
  417. <phase>post-integration-test</phase>
  418. <goals>
  419. <goal>stop</goal>
  420. </goals>
  421. </execution>
  422. </executions>
  423. </plugin>
  424. <plugin>
  425. <groupId>org.apache.maven.plugins</groupId>
  426. <artifactId>maven-compiler-plugin</artifactId>
  427. <version>3.3</version>
  428. <configuration>
  429. <source>1.8</source>
  430. <target>1.8</target>
  431. </configuration>
  432. </plugin>
  433. </plugins>
  434. </build>
  435. </project>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement