jmstransactionmanagertests.java

来自「spring,z几 塞积极 决撒 积极上经济歼击机就 将计就计经济年毫毫毫毫毫毫」· Java 代码 · 共 446 行 · 第 1/2 页

JAVA
446
字号
		}
		catch (UnexpectedRollbackException ex) {
			// expected
		}

		sessionControl.verify();
		conControl.verify();
		cfControl.verify();
	}

	public void testSuspendedTransaction() throws JMSException {
		MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
		final ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
		MockControl conControl = MockControl.createControl(Connection.class);
		Connection con = (Connection) conControl.getMock();
		MockControl sessionControl = MockControl.createControl(Session.class);
		final Session session = (Session) sessionControl.getMock();
		MockControl session2Control = MockControl.createControl(Session.class);
		final Session session2 = (Session) session2Control.getMock();

		cf.createConnection();
		cfControl.setReturnValue(con, 2);
		con.createSession(true, Session.AUTO_ACKNOWLEDGE);
		conControl.setReturnValue(session, 1);
		con.createSession(false, Session.AUTO_ACKNOWLEDGE);
		conControl.setReturnValue(session2, 1);
		session.commit();
		sessionControl.setVoidCallable(1);
		session.close();
		sessionControl.setVoidCallable(1);
		session2.close();
		session2Control.setVoidCallable(1);
		con.close();
		conControl.setVoidCallable(2);

		sessionControl.replay();
		conControl.replay();
		cfControl.replay();

		JmsTransactionManager tm = new JmsTransactionManager(cf);
		TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
		final JmsTemplate jt = new JmsTemplate(cf);
		jt.execute(new SessionCallback() {
			public Object doInJms(Session sess) {
				assertTrue(sess == session);
				return null;
			}
		});
		TransactionTemplate tt = new TransactionTemplate(tm);
		tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NOT_SUPPORTED);
		tt.execute(new TransactionCallbackWithoutResult() {
			protected void doInTransactionWithoutResult(TransactionStatus status) {
				jt.execute(new SessionCallback() {
					public Object doInJms(Session sess) {
						assertTrue(sess != session);
						return null;
					}
				});
			}
		});
		jt.execute(new SessionCallback() {
			public Object doInJms(Session sess) {
				assertTrue(sess == session);
				return null;
			}
		});
		tm.commit(ts);

		sessionControl.verify();
		conControl.verify();
		cfControl.verify();
	}

	public void testNestedTransaction() throws JMSException {
		MockControl cfControl = MockControl.createControl(ConnectionFactory.class);
		final ConnectionFactory cf = (ConnectionFactory) cfControl.getMock();
		MockControl conControl = MockControl.createControl(Connection.class);
		Connection con = (Connection) conControl.getMock();
		MockControl sessionControl = MockControl.createControl(Session.class);
		final Session session = (Session) sessionControl.getMock();
		MockControl session2Control = MockControl.createControl(Session.class);
		final Session session2 = (Session) session2Control.getMock();

		cf.createConnection();
		cfControl.setReturnValue(con, 2);
		con.createSession(true, Session.AUTO_ACKNOWLEDGE);
		conControl.setReturnValue(session, 1);
		con.createSession(true, Session.AUTO_ACKNOWLEDGE);
		conControl.setReturnValue(session2, 1);
		session.commit();
		sessionControl.setVoidCallable(1);
		session2.commit();
		session2Control.setVoidCallable(1);
		session.close();
		sessionControl.setVoidCallable(1);
		session2.close();
		session2Control.setVoidCallable(1);
		con.close();
		conControl.setVoidCallable(2);

		sessionControl.replay();
		conControl.replay();
		cfControl.replay();

		JmsTransactionManager tm = new JmsTransactionManager(cf);
		TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
		final JmsTemplate jt = new JmsTemplate(cf);
		jt.execute(new SessionCallback() {
			public Object doInJms(Session sess) {
				assertTrue(sess == session);
				return null;
			}
		});
		TransactionTemplate tt = new TransactionTemplate(tm);
		tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
		tt.execute(new TransactionCallbackWithoutResult() {
			protected void doInTransactionWithoutResult(TransactionStatus status) {
				jt.execute(new SessionCallback() {
					public Object doInJms(Session sess) {
						assertTrue(sess != session);
						return null;
					}
				});
			}
		});
		jt.execute(new SessionCallback() {
			public Object doInJms(Session sess) {
				assertTrue(sess == session);
				return null;
			}
		});
		tm.commit(ts);

		sessionControl.verify();
		conControl.verify();
		cfControl.verify();
	}

	public void testTransactionCommit102WithQueue() throws JMSException {
		MockControl cfControl = MockControl.createControl(QueueConnectionFactory.class);
		QueueConnectionFactory cf = (QueueConnectionFactory) cfControl.getMock();
		MockControl conControl = MockControl.createControl(QueueConnection.class);
		QueueConnection con = (QueueConnection) conControl.getMock();
		MockControl sessionControl = MockControl.createControl(QueueSession.class);
		final QueueSession session = (QueueSession) sessionControl.getMock();

		cf.createQueueConnection();
		cfControl.setReturnValue(con, 1);
		con.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
		conControl.setReturnValue(session, 1);
		session.commit();
		sessionControl.setVoidCallable(1);
		session.close();
		sessionControl.setVoidCallable(1);
		con.close();
		conControl.setVoidCallable(1);

		sessionControl.replay();
		conControl.replay();
		cfControl.replay();

		JmsTransactionManager tm = new JmsTransactionManager102(cf, false);
		TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
		JmsTemplate jt = new JmsTemplate102(cf, false);
		jt.execute(new SessionCallback() {
			public Object doInJms(Session sess) {
				assertTrue(sess == session);
				return null;
			}
		});
		tm.commit(ts);

		sessionControl.verify();
		conControl.verify();
		cfControl.verify();
	}

	public void testTransactionCommit102WithTopic() throws JMSException {
		MockControl cfControl = MockControl.createControl(TopicConnectionFactory.class);
		TopicConnectionFactory cf = (TopicConnectionFactory) cfControl.getMock();
		MockControl conControl = MockControl.createControl(TopicConnection.class);
		TopicConnection con = (TopicConnection) conControl.getMock();
		MockControl sessionControl = MockControl.createControl(TopicSession.class);
		final TopicSession session = (TopicSession) sessionControl.getMock();

		cf.createTopicConnection();
		cfControl.setReturnValue(con, 1);
		con.createTopicSession(true, Session.AUTO_ACKNOWLEDGE);
		conControl.setReturnValue(session, 1);
		session.commit();
		sessionControl.setVoidCallable(1);
		session.close();
		sessionControl.setVoidCallable(1);
		con.close();
		conControl.setVoidCallable(1);

		sessionControl.replay();
		conControl.replay();
		cfControl.replay();

		JmsTransactionManager tm = new JmsTransactionManager102(cf, true);
		TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition());
		JmsTemplate jt = new JmsTemplate102(cf, true);
		jt.execute(new SessionCallback() {
			public Object doInJms(Session sess) {
				assertTrue(sess == session);
				return null;
			}
		});
		tm.commit(ts);

		sessionControl.verify();
		conControl.verify();
		cfControl.verify();
	}

	protected void tearDown() {
		assertTrue(TransactionSynchronizationManager.getResourceMap().isEmpty());
		assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?