static {
   Wsnb4ServUtils.initModelFactories(
       new WsrfbfModelFactoryImpl(),
       new WsrfrModelFactoryImpl(),
       new WsrfrlModelFactoryImpl(),
       new WsrfrpModelFactoryImpl(),
       new WstopModelFactoryImpl(),
       new WsnbModelFactoryImpl());
 }
  /*
   * (non-Javadoc)
   *
   * @see
   * com.ebmwebsourcing.wsstar.wsnb.services.ISubscriptionManager#renew(com
   * .ebmwebsourcing.wsstar.basenotification.datatypes.api.abstraction.Renew)
   */
  public RenewResponse renew(Renew renew) throws WsnbException, AbsWSStarFault {
    if (logger.isLoggable(Level.FINE)) {
      logger.fine("Sending renew message to " + endpoint);
    }

    if (renew == null) {
      throw new WsnbException("renew message can not be null");
    }

    final Document payload = Wsnb4ServUtils.getWsnbWriter().writeRenewAsDOM(renew);

    Client client = new org.petalslink.dsb.service.client.saaj.Client();
    Message response = null;
    try {
      response =
          client.sendReceive(
              new Message() {

                public QName getService() {
                  return null;
                }

                public Map<String, String> getProperties() {
                  return null;
                }

                public Document getPayload() {
                  return payload;
                }

                public QName getOperation() {
                  return WsnbConstants.RENEW_QNAME;
                }

                public QName getInterface() {
                  return null;
                }

                public Map<String, Document> getHeaders() {
                  return null;
                }

                public String getEndpoint() {
                  return endpoint;
                }

                public String getProperty(String name) {
                  // TODO Auto-generated method stub
                  return null;
                }

                public void setProperty(String name, String value) {
                  // TODO Auto-generated method stub

                }

                public void setEndpoint(String endpoint) {
                  // TODO Auto-generated method stub

                }

                public void setInterface(QName interfaceQName) {
                  // TODO Auto-generated method stub

                }

                public void setService(QName service) {
                  // TODO Auto-generated method stub

                }

                public void setPayload(Document payload) {
                  // TODO Auto-generated method stub

                }

                public void setOperation(QName operation) {
                  // TODO Auto-generated method stub

                }
              });
    } catch (ClientException e) {
      e.printStackTrace();
      throw new WsnbException(e.getMessage());
    }
    if (response == null || response.getPayload() == null) {
      throw new WsnbException("Can not get any response from service");
    }

    if (logger.isLoggable(Level.FINE)) {
      logger.fine("renew response : ");
      try {
        logger.fine(XMLHelper.createStringFromDOMDocument(response.getPayload()));
      } catch (TransformerException e) {
      }
    }
    return Wsnb4ServUtils.getWsnbReader().readRenewResponse(response.getPayload());
  }