com.eviware.soapui.impl.wsdl.support.wss.entries.AddTimestampEntry.java Source code

Java tutorial

Introduction

Here is the source code for com.eviware.soapui.impl.wsdl.support.wss.entries.AddTimestampEntry.java

Source

/*
 *  soapUI, copyright (C) 2004-2011 eviware.com 
 *
 *  soapUI is free software; you can redistribute it and/or modify it under the 
 *  terms of version 2.1 of the GNU Lesser General Public License as published by 
 *  the Free Software Foundation.
 *
 *  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 
 *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 *  See the GNU Lesser General Public License for more details at gnu.org.
 */

package com.eviware.soapui.impl.wsdl.support.wss.entries;

import javax.swing.JComponent;

import org.apache.ws.security.WSSConfig;
import org.apache.ws.security.message.WSSecHeader;
import org.apache.ws.security.message.WSSecTimestamp;
import org.w3c.dom.Document;

import com.eviware.soapui.config.WSSEntryConfig;
import com.eviware.soapui.impl.wsdl.support.wss.OutgoingWss;
import com.eviware.soapui.model.propertyexpansion.PropertyExpansionContext;
import com.eviware.soapui.support.components.SimpleBindingForm;
import com.eviware.soapui.support.xml.XmlObjectConfigurationBuilder;
import com.eviware.soapui.support.xml.XmlObjectConfigurationReader;
import com.jgoodies.binding.PresentationModel;

public class AddTimestampEntry extends WssEntryBase {
    public static final String TYPE = "Timestamp";

    private int timeToLive;
    private boolean strictTimestamp;

    public void init(WSSEntryConfig config, OutgoingWss container) {
        super.init(config, container, TYPE);
    }

    @Override
    protected JComponent buildUI() {
        SimpleBindingForm form = new SimpleBindingForm(new PresentationModel<AddTimestampEntry>(this));
        form.addSpace(5);
        form.appendTextField("timeToLive", "Time To Live", "Sets the TimeToLive value for the Timestamp Token");
        form.appendCheckBox("strictTimestamp", "Millisecond Precision",
                "Sets precision of timestamp to milliseconds");

        return form.getPanel();
    }

    @Override
    protected void load(XmlObjectConfigurationReader reader) {
        timeToLive = reader.readInt("timeToLive", 0);
        strictTimestamp = reader.readBoolean("strictTimestamp", true);
    }

    @Override
    protected void save(XmlObjectConfigurationBuilder builder) {
        builder.add("timeToLive", timeToLive);
        builder.add("strictTimestamp", strictTimestamp);
    }

    public void process(WSSecHeader secHeader, Document doc, PropertyExpansionContext context) {
        if (timeToLive <= 0)
            return;

        WSSecTimestamp timestamp = new WSSecTimestamp();
        timestamp.setTimeToLive(timeToLive);

        if (!strictTimestamp) {
            WSSConfig wsc = WSSConfig.getNewInstance();
            wsc.setPrecisionInMilliSeconds(false);
            wsc.setTimeStampStrict(false);
            timestamp.setWsConfig(wsc);
        }

        timestamp.build(doc, secHeader);
    }

    public String getTimeToLive() {
        return String.valueOf(timeToLive);
    }

    public boolean isStrictTimestamp() {
        return strictTimestamp;
    }

    public void setStrictTimestamp(boolean strictTimestamp) {
        this.strictTimestamp = strictTimestamp;
        saveConfig();
    }

    public void setTimeToLive(String timeToLive) {
        try {
            this.timeToLive = Integer.valueOf(timeToLive);
            saveConfig();
        } catch (Exception e) {
        }
    }
}