Changeset 30071

Show
Ignore:
Timestamp:
02/12/08 15:20:48 (9 months ago)
Author:
bstefanescu
Message:

merged 28198 from trunk - security domain serialization

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • org.nuxeo.runtime/branches/1.4/nuxeo-runtime/src/main/java/org/nuxeo/runtime/api/login/SecurityDomain.java

    r27651 r30071  
    2020package org.nuxeo.runtime.api.login; 
    2121 
     22import java.io.IOException; 
     23import java.io.ObjectInputStream; 
     24import java.io.ObjectOutputStream; 
     25import java.io.Serializable; 
    2226import java.util.ArrayList; 
     27import java.util.HashMap; 
    2328import java.util.List; 
     29import java.util.Map; 
    2430 
    2531import javax.security.auth.Subject; 
     
    3945 */ 
    4046@XObject("domain") 
    41 public class SecurityDomain { 
     47public class SecurityDomain implements Serializable { 
     48 
     49    private static final long serialVersionUID = 5770889355854831093L; 
    4250 
    4351    @XNode("@name") 
    4452    private String name; 
    4553 
    46     private AppConfigurationEntry[] entries; 
     54    private transient AppConfigurationEntry[] entries; 
    4755 
    4856    public SecurityDomain() { 
     
    154162    } 
    155163 
     164 
     165    @SuppressWarnings("unchecked") 
     166    private void readObject(ObjectInputStream in) 
     167            throws ClassNotFoundException, IOException { 
     168        in.defaultReadObject(); 
     169        // read app config entries 
     170        int size = in.readInt(); 
     171        entries = new AppConfigurationEntry[size]; 
     172        for (int i=0; i<size; i++) { 
     173            String name = (String)in.readObject(); 
     174            String ctrlFlag = (String)in.readObject(); 
     175            LoginModuleControlFlag flag = controlFlagFromString(ctrlFlag); 
     176            Map<String, ?> opts = (Map<String, ?>)in.readObject(); 
     177            entries[i] = new AppConfigurationEntry(name, flag, opts); 
     178        } 
     179    } 
     180 
     181    private void writeObject(ObjectOutputStream out) throws IOException { 
     182        out.defaultWriteObject(); 
     183        // write app config entries 
     184        if (entries == null) { 
     185           out.writeInt(0); 
     186        } else { 
     187            out.writeInt(entries.length); 
     188            for (int i=0; i<entries.length; i++) { 
     189                AppConfigurationEntry entry = entries[i]; 
     190                out.writeObject(entry.getLoginModuleName()); 
     191                out.writeObject(controlFlagToString(entry.getControlFlag())); 
     192                Map<String,?> opts = entry.getOptions(); 
     193                if (!(opts instanceof Serializable)) { 
     194                    opts = new HashMap<String, Object>(opts); 
     195                } 
     196                out.writeObject(opts); 
     197            } 
     198        } 
     199    } 
     200 
    156201}