001         package com.croftsoft.core.applet;
002    
003         import java.applet.*;
004         import java.io.*;
005    
006         import com.croftsoft.core.io.SerializableLib;
007         import com.croftsoft.core.lang.NullArgumentException;
008    
009         /*********************************************************************
010         * Static library methods for manipulating Applets.
011         *
012         * @version
013         *   $Id: AppletLib.java,v 1.3 2008/09/28 21:50:42 croft Exp $
014         * @since
015         *   2002-12-22
016         * @author
017         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
018         *********************************************************************/
019    
020         public final class  AppletLib
021         //////////////////////////////////////////////////////////////////////
022         //////////////////////////////////////////////////////////////////////
023         {
024    
025         /*********************************************************************
026         * Loads GZIP compressed data.
027         *********************************************************************/
028         public static Serializable  loadSerializableUsingAppletPersistence (
029           Applet  applet,
030           String  key )
031           throws ClassNotFoundException, IOException,
032             UnsupportedOperationException
033         //////////////////////////////////////////////////////////////////////
034         {
035           NullArgumentException.check ( applet, "null applet" );
036    
037           NullArgumentException.check ( key, "null key" );
038    
039           AppletContext  appletContext = null;
040    
041           try
042           {
043             appletContext = applet.getAppletContext ( );
044           }
045           catch ( NullPointerException  ex )
046           {
047             // ignore
048           }
049    
050           if ( appletContext == null )
051           {
052             throw new UnsupportedOperationException ( "null AppletContext" );
053           }
054    
055           InputStream  inputStream = appletContext.getStream ( key );
056    
057           if ( inputStream == null )
058           {
059             return null;
060           }
061    
062           return SerializableLib.load ( inputStream );
063         }
064    
065         /*********************************************************************
066         * Saves data using GZIP compression.
067         *********************************************************************/
068         public static void  saveSerializableUsingAppletPersistence (
069           Applet        applet,
070           String        key,
071           Serializable  serializable )
072           throws IOException, UnsupportedOperationException
073         //////////////////////////////////////////////////////////////////////
074         {
075           NullArgumentException.check ( applet, "null applet" );
076    
077           NullArgumentException.check ( key, "null key" );
078    
079           NullArgumentException.check ( serializable, "null serializable" );
080    
081           AppletContext  appletContext = null;
082    
083           try
084           {
085             appletContext = applet.getAppletContext ( );
086           }
087           catch ( NullPointerException  ex )
088           {
089             // ignore
090           }
091    
092           if ( appletContext == null )
093           {
094             throw new UnsupportedOperationException ( "null AppletContext" );
095           }
096    
097           InputStream  inputStream = new ByteArrayInputStream (
098             SerializableLib.compress ( serializable ) );
099    
100           appletContext.setStream ( key, inputStream );
101         }
102    
103         //////////////////////////////////////////////////////////////////////
104         //////////////////////////////////////////////////////////////////////
105    
106         private  AppletLib ( ) { /* empty */ }
107    
108         //////////////////////////////////////////////////////////////////////
109         //////////////////////////////////////////////////////////////////////
110         }