Security Manager
Java 1.1 Frame Source
Security Manager Class
File Dialog Class
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class Editor extends Frame implements ActionListener
{
TextField messages = new TextField();
TextArea text = new TextArea();
MenuItem load, save, saas, quit;
String file, savefile;
Editor()
{
super("Editor");
setLayout(new BorderLayout());
add ("North", messages);
messages.setEditable(false);
add ("Center", text);
Menu menu = new Menu ("File");
menu.add (load = new MenuItem("Load ..."));
menu.add (save = new MenuItem("Save"));
menu.add (saas = new MenuItem("Save As..."));
menu.add (quit = new MenuItem("Quit"));
MenuBar mb = new MenuBar();
mb.add(menu);
setMenuBar (mb);
setSize(600,440);
show();
load.addActionListener(this);
save.addActionListener(this);
saas.addActionListener(this);
quit.addActionListener(this);
messages.setText("Editing Clean Slate");
}
public void actionPerformed (ActionEvent e)
{
if (e.getSource() == load) loadFile();
else
if (e.getSource() == saas) saveFile();
else
if (e.getSource() == save) saveIt();
else
if (e.getSource() == quit) dispose();
}
public void loadFile()
{
FileDialog fd;
try
{
fd = new FileDialog (this, "Load The File", FileDialog.LOAD);
fd.show();
if ((file = fd.getFile()) == null) return;
savefile = fd.getFile();
}
catch (Exception e)
{
messages.setText(String.valueOf(e));
savefile = "abcd";
}
try
{
FileInputStream fis = new FileInputStream (savefile);
byte data[] = new byte[fis.available()];
fis.read(data);
text.setText(new String(data));
messages.setText("Editing file "+savefile);
}
catch (Exception e)
{
messages.setText("Editing new file");
}
}
public void saveFile()
{
FileDialog fd;
try
{
fd = new FileDialog(this, "Save the File", FileDialog.SAVE);
fd.show();
if ((file = fd.getFile()) == null) return;
savefile = fd.getFile();
}
catch (Exception e)
{
messages.setText(String.valueOf(e));
savefile = "abcd";
}
try
{
FileOutputStream fos = new FileOutputStream (savefile);
String out = text.getText();
byte data[] = new byte[out.length()];
for (int i=0 ; i < out.length() ; i++)
data[i] = (byte)out.charAt(i);
fos.write(data);
messages.setText("Contents saved to "+savefile);
}
catch (SecurityException ee)
{
messages.setText(String.valueOf(ee));
}
catch (Exception e)
{
messages.setText("Cannot write to file - read only?");
}
}
public void saveIt()
{
if (savefile == null)
{
messages.setText("No File To SAVE!!! Use Save As...");
return;
}
try
{
FileOutputStream fos = new FileOutputStream (savefile);
String out = text.getText();
byte data[] = new byte[out.length()];
for (int i=0 ; i < out.length() ; i++)
data[i] = (byte)out.charAt(i);
fos.write(data);
messages.setText("Contents saved to "+savefile);
}
catch (SecurityException se)
{
messages.setText(String.valueOf(se));
return;
}
catch (Exception e)
{
messages.setText("Cannot write to file "+savefile+" - read only?");
}
}
}
class SmallFrame extends Frame implements ActionListener
{
Button go;
TextField messages;
SmallFrame ()
{
add ("Center", go = new Button("Activate Security"));
add ("South", messages = new TextField());
go.addActionListener(this);
setSize(300,120);
show();
}
public void actionPerformed (ActionEvent e)
{
try
{
if (e.getSource() == go)
System.setSecurityManager(new MySecurityManager(messages));
}
catch (Exception se)
{
messages.setText(String.valueOf(se));
}
}
}
class MySecurityManager extends SecurityManager
{
TextField messages;
MySecurityManager (TextField messages)
{
this.messages = messages;
}
public void checkRead (String s)
{
messages.setText("Checkread: "+s);
}
public void checkWrite (String s)
{
messages.setText("CheckWrite: "+s);
throw new SecurityException ("Security violation on "+s);
}
}
public class SecurityApplet
{
public static void main (String args[])
{
new SmallFrame();
new Editor();
}
}