Presentation is loading. Please wait.

Presentation is loading. Please wait.

Persistence & Bean Properties

Similar presentations


Presentation on theme: "Persistence & Bean Properties"— Presentation transcript:

1 Persistence & Bean Properties
Properties in Beans Accessors & Mutators Indexed & Bound properties Constrained properties Examples… Persistence in JavaBeans Java Object Serialization The java.io.Serializable Interface Versioning Validating Objects The java.io.Externalizable Interface The topics of Persistence and Properties in JavaBeans is considered . The subtopics in each of them is listed. November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

2 CS6704: Design Patterns & Component Frameworks, Spring 2002
What is a Property? Named attributes / characteristics that define the behavior & state of the object (bean) How is it different from a variable? Bean Bean Properties Bean actions tied to properties November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

3 Design Patterns (coding convention)
Why? Accessors function to get value of a variable, no params. <property type> <property name>; <property type> get<property name>( ) ; Example: public class Temperature { protected double currentTemperature = 25; public double getCurrentTemperature() { return currentTemperature; } public boolean is<PropertyName>( ); November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

4 CS6704: Design Patterns & Component Frameworks, Spring 2002
Mutators: Functions that change the value of a property Takes parameters Design pattern: public void set<property name>(<property type> value) ; Example: public class Temperature { protected double currentTemperature = 25; public double setCurrentTemperature(double cTemp) { currentTemperature = cTemp; } November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

5 Indexed & Bound properties:
Design pattern – indexed property: * public <PropertyType>[] get<PropertyName>( ); public void set<PropertyName> ( <PropertyType>[] value ); * public <PropertyType> get<PropertyName> (int index); public void set<PropertyName> (int index, <PropertyType> value); (Hint: java.lang.ArrayIndexOutOfBoundsException should be thrown !) Bound properties – support change notifications PropertyChangeListener & PropertyChangeEvent November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

6 Bound properties… Property Owner propertyChange( )
Notifying a listener about a change in property: addPropertyChangeListener removePropertyChangeListener Bean 1 Property Owner (producer) Property 1 Changed Property 2 Changed Property n Changed PropertyChangeEvent PropertyChangeEvent PropertyChangeEvent propertyChange( ) Bean 2 PropertyChangeListener (consumer) November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

7 java.beans.PropertyChangeEvent
Constructor: public PropertyChangeEvent (Object sourceBean, String propertyName, Object oldValue, Object newValue ); Methods: public Object getNewValue ( ); public Object getOldValue ( ); public String getPropertyName( ); public Object getPropagationId ( ); public Object setPropagationId ( Object newId ); November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

8 java.beans.PropertyChangeSupport – utility class
Listener Bean Properties Listener Property Support Listener public PropertyChangeSupport ( Object sourceBean ) public synchronized void addPropertyChangeListener (PropertyChangeListener newListener ) public synchronized void addPropertyChangeListener (PropertyChangeListener existingListener ) public void firePropertyChange ( String propertyName, Object oldValue, Object newValue ) November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

9 Constrained Properties:
Change rejected setProperty( ) Bean Constrained property PropertyVetoException vetoableChange( ) Change rejected VetoableChangeListeners VetoableChangeListener Public abstract void vetoableChange( PropertyChangeEvent vetoablePropertyEvent ) throws PropertyVetoException PropertyVetoException public PropertyVetoException (String reasonForVeto, PropertyChangeEvent eventVetoed ) VetoableChangeSupport November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

10 CS6704: Design Patterns & Component Frameworks, Spring 2002
Application Persistent State Persistent Storage Persistence! Save Restore Object Serialization – java.io package java.io.FileInputStream & java.io.FileOutputStream Java.io.ObjectInputStream & java.io.ObjectOutputStream Socket File Object Stream Serialized State Object Stream source and target may vary… November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

11 CS6704: Design Patterns & Component Frameworks, Spring 2002
An example… //save a String and double to the stream String str = “Sample”; double d = 3.14; FileOutputStream fos = new FileOutputStream (“Beans.ser”); ObjectOutputStream oos = new ObjectOutputStream (fos); oos.writeObject (str); oos.writeObject (d); oos.flush(); // restore the String and double FileInputStream fis = new FileInputStream (“Beans.ser”); ObjectInputStream ois = new ObjectInputStream (fis); String str = (String) ois.readObject(); double d = s.readDouble(); November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

12 java.io.Serializable interface:
No methods Just a marker, indicating class is serializable Object / Class tree traversed to serialize java.io.NotSerializableException thrown, if unserializable member found Static and Transient members not serialized import java.io.*; Saver.java import java.awt.*; public class Saver { Saver() { Button b = new Button("Bean Button"); b.setFont(new Font("System", Font.BOLD, 20)); try { FileOutputStream f = new FileOutputStream ("Saver.ser"); ObjectOutputStream o = new ObjectOutputStream (f); o.writeObject(b); o.flush(); }catch (Exception e){ System.out.println(e); } } public static void main (String a[ ]) { new Saver(); November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

13 CS6704: Design Patterns & Component Frameworks, Spring 2002
Reader.java //<applet code="Reader" height=100 width=200></applet> import java.applet.*; import java.io.*; import java.awt.*; public class Reader extends Applet { public void init() { try { FileInputStream f = new FileInputStream ("Saver.ser"); ObjectInputStream o = new ObjectInputStream (f); Button b = (Button)o.readObject(); add(b); } catch (Exception e) { System.out.println(e); } November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

14 CS6704: Design Patterns & Component Frameworks, Spring 2002
Versioning: inevitable tendency for an object to evolve over time and gain new functionality New version (vs.) old version conflict Compatible changes: Do not render serialized data unusable by older class  Adding new methods  Changing the base class java.io.InvalidClassException thrown serialver <class name> - generates a SUID (Stream Unique ID ) E.g., > serialver Reader Reader: static final long serialVersionUID = L; November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

15 java.io.Externalizable interface:
How is it different from Serializable interface? writeExternal ( ) and readExternal ( ) Class hierarchy not traversed during serialization Versioning – responsibility of the object Instantiating Serialized Objects: the instantiate( ) method in java.beans.Beans (static) 2 parameters: class loader, bean’s fully qualified name If 1st parameter = null -> uses default class loader Instantiate() – looks for a “pickled” bean, if not found uses “new” to create an instance Requires that the bean have constructor with no params. November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002

16 CS6704: Design Patterns & Component Frameworks, Spring 2002
References: Developing JavaBeans – Robert Englander ( O’Reilly publications ) JavaBeans Developer’s Resource – Prashant Sridharan ( Prentice Hall ) Presenting JavaBeans – Michael Morrison (MCP , Sams publishing ) JavaBeans Developer's Guide – Piroz Mohseni - ( IDG Books worldwide ) Questions ?!! November 20, 2018November 20, 2018 CS6704: Design Patterns & Component Frameworks, Spring 2002


Download ppt "Persistence & Bean Properties"

Similar presentations


Ads by Google