Changeset 1986 for trunk


Ignore:
Timestamp:
07/06/15 12:08:02 (9 years ago)
Author:
sherbold
Message:
  • EqualSOAPDataMap now serializable
Location:
trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-plugin-http/src/main/java/de/ugoe/cs/autoquest/plugin/http/eventcore/EqualSOAPDataMap.java

    r1985 r1986  
    1515package de.ugoe.cs.autoquest.plugin.http.eventcore; 
    1616 
     17import java.io.IOException; 
     18import java.io.ObjectInputStream; 
     19import java.io.ObjectOutputStream; 
     20import java.io.Serializable; 
    1721import java.util.Collections; 
    1822import java.util.HashMap; 
     
    3034 * @author Steffen Herbold 
    3135 */ 
    32 public class EqualSOAPDataMap { 
     36public class EqualSOAPDataMap implements Serializable { 
    3337     
     38    /**  */ 
     39    private static final long serialVersionUID = 1L; 
     40 
    3441    /** 
    3542     * Singleton. Handle to only instance of this class 
    3643     */ 
    37     public final static EqualSOAPDataMap INSTANCE = new EqualSOAPDataMap(); 
     44    transient private static EqualSOAPDataMap INSTANCE = new EqualSOAPDataMap(); 
    3845     
    3946    /** 
    4047     * Map with all soapRequestBodies for all equal {@link SimpleSOAPEventType}s 
    4148     */ 
    42     private final Map<SimpleSOAPEventType, ListOrderedSet<String>> soapRequestBodies = new HashMap<>(); 
     49    private Map<SimpleSOAPEventType, ListOrderedSet<String>> soapRequestBodies = new HashMap<>(); 
    4350     
    4451    /** 
    4552     * random number generator for picking a random request body 
    4653     */ 
    47     private final Random random = new Random(1); // TODO static seed for testing 
     54    transient private final Random random; 
     55     
     56    /** 
     57     * <p> 
     58     * return the instance of the class 
     59     * </p> 
     60     * 
     61     * @return 
     62     */ 
     63    public static EqualSOAPDataMap getInstance() { 
     64        return INSTANCE; 
     65    } 
    4866     
    4967    private EqualSOAPDataMap() { 
    5068        // private constructor to avoid initialization 
     69        random = new Random(); 
     70    } 
     71     
     72    /** 
     73     * <p> 
     74     * Manual serialization of the object. Necessary to guarantee the singleton 
     75     * property. 
     76     * </p> 
     77     *  
     78     * @param s 
     79     *            output stream for the serialization 
     80     * @throws IOException 
     81     *             thrown if there is problem writing to the output stream 
     82     */ 
     83    private void writeObject(ObjectOutputStream s) throws IOException { 
     84            s.defaultWriteObject(); 
     85            s.writeObject(soapRequestBodies); 
     86    } 
     87 
     88    /** 
     89     * <p> 
     90     * Manual de-serialization of the object. Necessary to guarantee the 
     91     * singleton property. 
     92     *  
     93     * @param s 
     94     *            input stream for the de-serialization 
     95     * @throws IOException 
     96     *             thrown if there is problem reading from the input stream 
     97     * @throws ClassNotFoundException 
     98     *             thrown if there is a problem reading from the input stream 
     99     */ 
     100    @SuppressWarnings("unchecked") 
     101    private void readObject(ObjectInputStream s) throws IOException, 
     102                    ClassNotFoundException { 
     103            s.defaultReadObject(); 
     104            if (INSTANCE == null) { 
     105                INSTANCE = new EqualSOAPDataMap(); 
     106            } 
     107            INSTANCE.soapRequestBodies = (Map<SimpleSOAPEventType, ListOrderedSet<String>>) s.readObject(); 
     108    } 
     109 
     110    /** 
     111     * <p> 
     112     * Manual de-serialization to guarantee the singleton property. 
     113     * </p> 
     114     *  
     115     * @return instance of the container 
     116     */ 
     117    private Object readResolve() { 
     118            return INSTANCE; 
    51119    } 
    52120 
     
    97165        return requestBodySet.get(random.nextInt(requestBodySet.size())); 
    98166    } 
     167     
     168    /** 
     169     * <p> 
     170     * resets the internal map by creating new one 
     171     * </p> 
     172     * 
     173     */ 
     174    public void reset() { 
     175        soapRequestBodies = new HashMap<>(); 
     176    } 
    99177} 
  • trunk/autoquest-plugin-http/src/main/java/de/ugoe/cs/autoquest/plugin/http/eventcore/SimpleSOAPEventType.java

    r1985 r1986  
    9999        this.clientName = clientName; 
    100100        this.soapRequestBody = SOAPUtils.getSerialization(soapRequestBody); 
    101         EqualSOAPDataMap.INSTANCE.add(this, this.soapRequestBody); 
     101        EqualSOAPDataMap.getInstance().add(this, this.soapRequestBody); 
    102102    } 
    103103 
     
    150150                break; 
    151151            case RANDOM: 
    152                 requestBody = EqualSOAPDataMap.INSTANCE.getRandom(this); 
     152                requestBody = EqualSOAPDataMap.getInstance().getRandom(this); 
    153153                break; 
    154154            default: 
     
    157157        if( requestBody==null ) { 
    158158            System.err.println("foobar" + this); 
    159             System.err.println(EqualSOAPDataMap.INSTANCE.getAll(this)); 
     159            System.err.println(EqualSOAPDataMap.getInstance().getAll(this)); 
    160160        } 
    161161        try { 
Note: See TracChangeset for help on using the changeset viewer.