use of org.apache.cxf.ws.rm.manager.SourcePolicyType in project cxf by apache.
the class RMManager method setSourcePolicy.
/**
* @param sp The sourcePolicy to set.
*/
public void setSourcePolicy(SourcePolicyType sp) {
if (null == sp) {
sp = new SourcePolicyType();
}
if (sp.getSequenceTerminationPolicy() == null) {
SequenceTerminationPolicyType term = new SequenceTerminationPolicyType();
term.setTerminateOnShutdown(true);
sp.setSequenceTerminationPolicy(term);
}
sourcePolicy = sp;
}
use of org.apache.cxf.ws.rm.manager.SourcePolicyType in project cxf by apache.
the class ProxyTest method testCreateSequence.
@SuppressWarnings("unchecked")
private void testCreateSequence(boolean isServer) throws NoSuchMethodException, RMException {
Method m = Proxy.class.getDeclaredMethod("invoke", new Class[] { OperationInfo.class, ProtocolVariation.class, Object[].class, Map.class, Exchange.class });
Proxy proxy = EasyMock.createMockBuilder(Proxy.class).addMockedMethod(m).createMock(control);
proxy.setReliableEndpoint(rme);
RMManager manager = control.createMock(RMManager.class);
EasyMock.expect(rme.getManager()).andReturn(manager).anyTimes();
SourcePolicyType sp = control.createMock(SourcePolicyType.class);
EasyMock.expect(manager.getSourcePolicy()).andReturn(sp).anyTimes();
EasyMock.expect(sp.getAcksTo()).andReturn(null).anyTimes();
Duration d = DatatypeFactory.createDuration("PT12H");
EasyMock.expect(sp.getSequenceExpiration()).andReturn(d).anyTimes();
EasyMock.expect(sp.isIncludeOffer()).andReturn(Boolean.TRUE).anyTimes();
Duration dOffered = DatatypeFactory.createDuration("PT24H");
EasyMock.expect(sp.getOfferedSequenceExpiration()).andReturn(dOffered).anyTimes();
Source source = control.createMock(Source.class);
EasyMock.expect(rme.getSource()).andReturn(source).anyTimes();
Identifier offeredId = control.createMock(Identifier.class);
EasyMock.expect(source.generateSequenceIdentifier()).andReturn(offeredId).anyTimes();
Endpoint endpoint = control.createMock(Endpoint.class);
EasyMock.expect(rme.getEndpoint(ProtocolVariation.RM10WSA200408)).andReturn(endpoint).anyTimes();
EndpointInfo epi = control.createMock(EndpointInfo.class);
EasyMock.expect(endpoint.getEndpointInfo()).andReturn(epi).anyTimes();
ServiceInfo si = control.createMock(ServiceInfo.class);
EasyMock.expect(epi.getService()).andReturn(si).anyTimes();
InterfaceInfo ii = control.createMock(InterfaceInfo.class);
EasyMock.expect(si.getInterface()).andReturn(ii).anyTimes();
OperationInfo oi = control.createMock(OperationInfo.class);
org.apache.cxf.ws.rm.v200502.CreateSequenceResponseType csr = null;
if (isServer) {
EasyMock.expect(ii.getOperation(RM10Constants.CREATE_SEQUENCE_ONEWAY_QNAME)).andReturn(oi).anyTimes();
Endpoint ae = control.createMock(Endpoint.class);
EasyMock.expect(rme.getApplicationEndpoint()).andReturn(ae).anyTimes();
EasyMock.expect(ae.getExecutor()).andReturn(SynchronousExecutor.getInstance()).anyTimes();
} else {
EasyMock.expect(ii.getOperation(RM10Constants.CREATE_SEQUENCE_QNAME)).andReturn(oi).anyTimes();
csr = new org.apache.cxf.ws.rm.v200502.CreateSequenceResponseType();
}
ExchangeImpl exchange = new ExchangeImpl();
EasyMock.expect(proxy.invoke(EasyMock.same(oi), EasyMock.isA(ProtocolVariation.class), EasyMock.isA(Object[].class), EasyMock.isA(Map.class), EasyMock.isA(Exchange.class))).andReturn(csr).anyTimes();
EndpointReferenceType defaultAcksTo = control.createMock(EndpointReferenceType.class);
AttributedURIType aut = control.createMock(AttributedURIType.class);
EasyMock.expect(aut.getValue()).andReturn("here").anyTimes();
EasyMock.expect(defaultAcksTo.getAddress()).andReturn(aut).anyTimes();
RelatesToType relatesTo = control.createMock(RelatesToType.class);
control.replay();
Map<String, Object> context = new HashMap<>();
if (isServer) {
assertNull(proxy.createSequence(defaultAcksTo, relatesTo, isServer, ProtocolVariation.RM10WSA200408, exchange, context));
} else {
assertNotNull(proxy.createSequence(defaultAcksTo, relatesTo, isServer, ProtocolVariation.RM10WSA200408, exchange, context));
}
}
use of org.apache.cxf.ws.rm.manager.SourcePolicyType in project cxf by apache.
the class RMManagerTest method testCustom.
@Test
public void testCustom() {
Bus bus = new SpringBusFactory().createBus("org/apache/cxf/ws/rm/custom-rmmanager.xml", false);
manager = bus.getExtension(RMManager.class);
assertNotNull("sourcePolicy is not set.", manager.getSourcePolicy());
assertNotNull("destinationPolicy is not set.", manager.getDestinationPolicy());
manager.initialise();
RMConfiguration cfg = manager.getConfiguration();
assertNotNull("RMConfiguration is not set.", cfg);
assertNotNull("deliveryAssurance is not set.", cfg.getDeliveryAssurance());
assertFalse(cfg.isExponentialBackoff());
assertEquals(10000L, cfg.getBaseRetransmissionInterval().longValue());
assertEquals(10000L, cfg.getAcknowledgementIntervalTime());
assertNull(cfg.getInactivityTimeout());
SourcePolicyType sp = manager.getSourcePolicy();
assertEquals(0L, sp.getSequenceExpiration().getTimeInMillis(new Date()));
assertEquals(0L, sp.getOfferedSequenceExpiration().getTimeInMillis(new Date()));
assertNull(sp.getAcksTo());
assertTrue(sp.isIncludeOffer());
SequenceTerminationPolicyType stp = sp.getSequenceTerminationPolicy();
assertEquals(0, stp.getMaxRanges());
assertEquals(0, stp.getMaxUnacknowledged());
assertFalse(stp.isTerminateOnShutdown());
assertEquals(0, stp.getMaxLength());
DestinationPolicyType dp = manager.getDestinationPolicy();
assertNotNull(dp.getAcksPolicy());
assertEquals(dp.getAcksPolicy().getIntraMessageThreshold(), 0);
}
use of org.apache.cxf.ws.rm.manager.SourcePolicyType in project cxf by apache.
the class RetransmissionQueueTest method testOnewayFaultHandlingWithoutRetry.
@Test
public void testOnewayFaultHandlingWithoutRetry() throws Exception {
SpringBusFactory bf = new SpringBusFactory();
bus = bf.createBus("/org/apache/cxf/systest/ws/rm/message-loss.xml");
BusFactory.setDefaultBus(bus);
LoggingInInterceptor in = new LoggingInInterceptor();
bus.getInInterceptors().add(in);
bus.getInFaultInterceptors().add(in);
LoggingOutInterceptor out = new LoggingOutInterceptor();
bus.getOutInterceptors().add(out);
bus.getExtension(RMManager.class).getConfiguration().setBaseRetransmissionInterval(new Long(4000));
SourcePolicyType sourcePolicy = new SourcePolicyType();
RetryPolicyType retryP = new RetryPolicyType();
retryP.setMaxRetries(0);
sourcePolicy.setRetryPolicy(retryP);
bus.getExtension(RMManager.class).setSourcePolicy(sourcePolicy);
// an interceptor to simulate a transmission error
MessageLossSimulator loser = new MessageLossSimulator();
bus.getOutInterceptors().add(loser);
bus.getOutFaultInterceptors().add(out);
GreeterService gs = new GreeterService();
final Greeter greeter = gs.getGreeterPort();
updateAddressPort(greeter, PORT);
LOG.fine("Created greeter client.");
ConnectionHelper.setKeepAliveConnection(greeter, true);
loser.setMode(-1);
loser.setThrowsException(true);
try {
greeter.greetMeOneWay("oneway");
fail("no retransmission so catch an Exception");
} catch (Exception e) {
assertEquals("simulated transmission exception", e.getMessage());
}
Thread.sleep(6000);
RMManager manager = bus.getExtension(RMManager.class);
boolean empty = manager.getRetransmissionQueue().isEmpty();
assertFalse("RetransmissionQueue is empty", empty);
}
Aggregations