Search in sources :

Example 6 with SubscribeResponse

use of org.apache.cxf.ws.eventing.SubscribeResponse in project cxf by apache.

the class SubscriptionGrantingTest method testExpirationGrantingWithoutBestEffort.

/*    */
/**
 * specification:
 * The expiration time MAY be either a specific time or a duration but MUST
 * be of the same type as the wse:Expires element of the corresponding request.
 * If the corresponding request did not contain a wse:Expires element, this
 * element MUST be a duration (xs:duration).
 *
 * @throws IOException
 */
@Test
public void testExpirationGrantingWithoutBestEffort() throws IOException {
    // we specify a xs:duration
    Subscribe subscribe = new Subscribe();
    ExpirationType exp = new ExpirationType();
    exp.setValue(DurationAndDateUtil.convertToXMLString(DurationAndDateUtil.parseDurationOrTimestamp("PT0S")));
    subscribe.setExpires(exp);
    DeliveryType delivery = new DeliveryType();
    subscribe.setDelivery(delivery);
    subscribe.getDelivery().getContent().add(createDummyNotifyTo());
    SubscribeResponse resp = eventSourceClient.subscribeOp(subscribe);
    Assert.assertTrue("Specification requires that EventSource return a xs:duration " + "expirationType if a xs:duration was requested by client", DurationAndDateUtil.isDuration(resp.getGrantedExpires().getValue()));
    // we specify a xs:dateTime
    subscribe = new Subscribe();
    exp = new ExpirationType();
    XMLGregorianCalendar dateRequest = (XMLGregorianCalendar) DurationAndDateUtil.parseDurationOrTimestamp("2138-06-26T12:23:12.000-01:00");
    exp.setValue(DurationAndDateUtil.convertToXMLString(dateRequest));
    subscribe.setExpires(exp);
    delivery = new DeliveryType();
    subscribe.setDelivery(delivery);
    subscribe.getDelivery().getContent().add(createDummyNotifyTo());
    resp = eventSourceClient.subscribeOp(subscribe);
    Assert.assertTrue("Specification requires that EventSource return a " + "xs:dateTime expirationType if a xs:dateTime was requested by client", DurationAndDateUtil.isXMLGregorianCalendar(resp.getGrantedExpires().getValue()));
    XMLGregorianCalendar returned = DurationAndDateUtil.parseXMLGregorianCalendar(resp.getGrantedExpires().getValue());
    System.out.println("granted expiration: " + returned.normalize().toXMLFormat());
    System.out.println("requested expiration: " + dateRequest.normalize().toXMLFormat());
    Assert.assertTrue("Server should have returned exactly the same date as we requested", returned.equals(dateRequest));
    // we don't specify anything
    subscribe = new Subscribe();
    delivery = new DeliveryType();
    subscribe.setDelivery(delivery);
    subscribe.getDelivery().getContent().add(createDummyNotifyTo());
    resp = eventSourceClient.subscribeOp(subscribe);
    Assert.assertTrue("Specification requires that EventSource return a xs:duration " + "expirationType if no specific expirationType was requested by client", DurationAndDateUtil.isDuration(resp.getGrantedExpires().getValue()));
}
Also used : XMLGregorianCalendar(javax.xml.datatype.XMLGregorianCalendar) ExpirationType(org.apache.cxf.ws.eventing.ExpirationType) Subscribe(org.apache.cxf.ws.eventing.Subscribe) SubscribeResponse(org.apache.cxf.ws.eventing.SubscribeResponse) DeliveryType(org.apache.cxf.ws.eventing.DeliveryType) Test(org.junit.Test) SimpleEventingIntegrationTest(org.apache.cxf.ws.eventing.base.SimpleEventingIntegrationTest)

Example 7 with SubscribeResponse

use of org.apache.cxf.ws.eventing.SubscribeResponse in project cxf by apache.

the class SubscriptionManagementTest method renewWithDateTime.

/**
 * Tests the Renew operation, while specifying an xs:dateTime in the renew request,
 * eg. the subscriber requests to set the subscription expiration to a specific date/time.
 */
@Test
public void renewWithDateTime() throws IOException {
    Subscribe subscribe = new Subscribe();
    ExpirationType exp = new ExpirationType();
    exp.setValue(DurationAndDateUtil.convertToXMLString(DurationAndDateUtil.parseDurationOrTimestamp(// 5 minutes
    "2018-10-21T14:52:46.826+02:00")));
    subscribe.setExpires(exp);
    DeliveryType delivery = new DeliveryType();
    subscribe.setDelivery(delivery);
    subscribe.getDelivery().getContent().add(createDummyNotifyTo());
    SubscribeResponse resp = eventSourceClient.subscribeOp(subscribe);
    SubscriptionManagerEndpoint client = createSubscriptionManagerClient(resp.getSubscriptionManager().getReferenceParameters());
    GetStatusResponse response = client.getStatusOp(new GetStatus());
    String expirationBefore = response.getGrantedExpires().getValue();
    System.out.println("EXPIRES before renew: " + expirationBefore);
    Assert.assertTrue(expirationBefore.length() > 0);
    Renew renewRequest = new Renew();
    ExpirationType renewExp = new ExpirationType();
    renewExp.setValue(DurationAndDateUtil.convertToXMLString(DurationAndDateUtil.parseDurationOrTimestamp(// 10 minutes
    "2056-10-21T14:54:46.826+02:00")));
    renewRequest.setExpires(renewExp);
    client.renewOp(renewRequest);
    response = client.getStatusOp(new GetStatus());
    String expirationAfter = response.getGrantedExpires().getValue();
    System.out.println("EXPIRES after renew: " + expirationAfter);
    Assert.assertFalse("Renew request should change the expiration time at least a bit", expirationAfter.equals(expirationBefore));
}
Also used : GetStatusResponse(org.apache.cxf.ws.eventing.GetStatusResponse) ExpirationType(org.apache.cxf.ws.eventing.ExpirationType) SubscriptionManagerEndpoint(org.apache.cxf.ws.eventing.manager.SubscriptionManagerEndpoint) Subscribe(org.apache.cxf.ws.eventing.Subscribe) SubscribeResponse(org.apache.cxf.ws.eventing.SubscribeResponse) Renew(org.apache.cxf.ws.eventing.Renew) DeliveryType(org.apache.cxf.ws.eventing.DeliveryType) GetStatus(org.apache.cxf.ws.eventing.GetStatus) Test(org.junit.Test) SimpleEventingIntegrationTest(org.apache.cxf.ws.eventing.base.SimpleEventingIntegrationTest)

Example 8 with SubscribeResponse

use of org.apache.cxf.ws.eventing.SubscribeResponse in project cxf by apache.

the class SubscriptionManagementTest method renewWithDuration.

/**
 * Tests the Renew operation, while specifying an xs:duration in the renew request,
 * eg. the subscriber requests to prolong the subscription by a specific amount of time.
 */
@Test
public void renewWithDuration() throws IOException {
    Subscribe subscribe = new Subscribe();
    ExpirationType exp = new ExpirationType();
    exp.setValue(DurationAndDateUtil.convertToXMLString(// 5 minutes
    DurationAndDateUtil.parseDurationOrTimestamp("PT5M0S")));
    subscribe.setExpires(exp);
    DeliveryType delivery = new DeliveryType();
    subscribe.setDelivery(delivery);
    subscribe.getDelivery().getContent().add(createDummyNotifyTo());
    SubscribeResponse resp = eventSourceClient.subscribeOp(subscribe);
    SubscriptionManagerEndpoint client = createSubscriptionManagerClient(resp.getSubscriptionManager().getReferenceParameters());
    GetStatusResponse response = client.getStatusOp(new GetStatus());
    String expirationBefore = response.getGrantedExpires().getValue();
    System.out.println("EXPIRES before renew: " + expirationBefore);
    Assert.assertTrue(expirationBefore.length() > 0);
    Renew renewRequest = new Renew();
    ExpirationType renewExp = new ExpirationType();
    renewExp.setValue(DurationAndDateUtil.convertToXMLString(// 10 minutes
    DurationAndDateUtil.parseDurationOrTimestamp("PT10M0S")));
    renewRequest.setExpires(renewExp);
    client.renewOp(renewRequest);
    response = client.getStatusOp(new GetStatus());
    String expirationAfter = response.getGrantedExpires().getValue();
    System.out.println("EXPIRES after renew: " + expirationAfter);
    Assert.assertFalse("Renew request should change the expiration time at least a bit", expirationAfter.equals(expirationBefore));
}
Also used : GetStatusResponse(org.apache.cxf.ws.eventing.GetStatusResponse) ExpirationType(org.apache.cxf.ws.eventing.ExpirationType) SubscriptionManagerEndpoint(org.apache.cxf.ws.eventing.manager.SubscriptionManagerEndpoint) Subscribe(org.apache.cxf.ws.eventing.Subscribe) SubscribeResponse(org.apache.cxf.ws.eventing.SubscribeResponse) Renew(org.apache.cxf.ws.eventing.Renew) DeliveryType(org.apache.cxf.ws.eventing.DeliveryType) GetStatus(org.apache.cxf.ws.eventing.GetStatus) Test(org.junit.Test) SimpleEventingIntegrationTest(org.apache.cxf.ws.eventing.base.SimpleEventingIntegrationTest)

Example 9 with SubscribeResponse

use of org.apache.cxf.ws.eventing.SubscribeResponse in project cxf by apache.

the class SubscriptionManagementTest method unsubscribeAndThenGetStatus.

/**
 * Tries to create a subscription, then cancel it, then obtain its status.
 * The last mentioned operation should fail.
 */
@Test
public void unsubscribeAndThenGetStatus() throws Exception {
    Subscribe subscribe = new Subscribe();
    ExpirationType exp = new ExpirationType();
    exp.setValue(DurationAndDateUtil.convertToXMLString(DurationAndDateUtil.parseDurationOrTimestamp("PT0S")));
    subscribe.setExpires(exp);
    DeliveryType delivery = new DeliveryType();
    subscribe.setDelivery(delivery);
    subscribe.getDelivery().getContent().add(createDummyNotifyTo());
    SubscribeResponse subscribeResponse = eventSourceClient.subscribeOp(subscribe);
    SubscriptionManagerEndpoint client = createSubscriptionManagerClient(subscribeResponse.getSubscriptionManager().getReferenceParameters());
    UnsubscribeResponse unsubscribeResponse = client.unsubscribeOp(new Unsubscribe());
    Assert.assertNotNull(unsubscribeResponse);
    try {
        client.getStatusOp(new GetStatus());
    } catch (javax.xml.ws.soap.SOAPFaultException ex) {
        Assert.assertTrue(ex.getFault().getFaultCode().contains(UnknownSubscription.LOCAL_PART));
        Assert.assertTrue(ex.getFault().getTextContent().contains(UnknownSubscription.REASON));
        return;
    }
    Assert.fail("The subscription manager should have refused to send status of a cancelled subscription");
}
Also used : ExpirationType(org.apache.cxf.ws.eventing.ExpirationType) SubscriptionManagerEndpoint(org.apache.cxf.ws.eventing.manager.SubscriptionManagerEndpoint) Subscribe(org.apache.cxf.ws.eventing.Subscribe) SubscribeResponse(org.apache.cxf.ws.eventing.SubscribeResponse) UnsubscribeResponse(org.apache.cxf.ws.eventing.UnsubscribeResponse) Unsubscribe(org.apache.cxf.ws.eventing.Unsubscribe) DeliveryType(org.apache.cxf.ws.eventing.DeliveryType) GetStatus(org.apache.cxf.ws.eventing.GetStatus) Test(org.junit.Test) SimpleEventingIntegrationTest(org.apache.cxf.ws.eventing.base.SimpleEventingIntegrationTest)

Aggregations

SubscribeResponse (org.apache.cxf.ws.eventing.SubscribeResponse)9 Subscribe (org.apache.cxf.ws.eventing.Subscribe)8 DeliveryType (org.apache.cxf.ws.eventing.DeliveryType)7 SimpleEventingIntegrationTest (org.apache.cxf.ws.eventing.base.SimpleEventingIntegrationTest)7 Test (org.junit.Test)7 ExpirationType (org.apache.cxf.ws.eventing.ExpirationType)6 GetStatus (org.apache.cxf.ws.eventing.GetStatus)4 SubscriptionManagerEndpoint (org.apache.cxf.ws.eventing.manager.SubscriptionManagerEndpoint)4 GetStatusResponse (org.apache.cxf.ws.eventing.GetStatusResponse)3 XMLGregorianCalendar (javax.xml.datatype.XMLGregorianCalendar)2 Renew (org.apache.cxf.ws.eventing.Renew)2 IOException (java.io.IOException)1 ServletException (javax.servlet.ServletException)1 JAXBElement (javax.xml.bind.JAXBElement)1 JAXBException (javax.xml.bind.JAXBException)1 DatatypeConfigurationException (javax.xml.datatype.DatatypeConfigurationException)1 QName (javax.xml.namespace.QName)1 Server (org.apache.cxf.endpoint.Server)1 JaxWsProxyFactoryBean (org.apache.cxf.jaxws.JaxWsProxyFactoryBean)1 AttributedURIType (org.apache.cxf.ws.addressing.AttributedURIType)1