r57 - in trunk: wikitty-api/src/main/java/org/nuiton/wikitty wikitty-generators/src/main/java/org/nuiton/wikitty/generator
Author: echatellier Date: 2010-05-17 12:30:16 +0200 (Mon, 17 May 2010) New Revision: 57 Url: http://nuiton.org/repositories/revision/wikitty/57 Log: Add defered intialisation for transient attributes (Null after deserialisation) Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityBean.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityWikitty.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/BusinessEntityAbstractGenerator.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityBean.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityBean.java 2010-05-17 10:13:56 UTC (rev 56) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityBean.java 2010-05-17 10:30:16 UTC (rev 57) @@ -37,6 +37,11 @@ /** serialVersionUID. */ private static final long serialVersionUID = 5245199905431320116L; + /** + * Property change support. + * + * Warning, this transient field is null after deserialization. + */ protected transient PropertyChangeSupport propertyChangeSupport; protected String id; @@ -66,8 +71,14 @@ public void setWikittyVersion(String version) { this.version = version; } - + protected PropertyChangeSupport getPropertyChangeSupport() { + if (propertyChangeSupport == null) { + propertyChangeSupport = new PropertyChangeSupport(this); + } + return propertyChangeSupport; + } + public Collection<String> getExtensionNames() { Collection<String> result = extensions.keySet(); return result; @@ -99,7 +110,7 @@ */ @Override public void addPropertyChangeListener(PropertyChangeListener listener) { - propertyChangeSupport.addPropertyChangeListener(listener); + getPropertyChangeSupport().addPropertyChangeListener(listener); } /* @@ -107,7 +118,7 @@ */ @Override public void removePropertyChangeListener(PropertyChangeListener listener) { - propertyChangeSupport.removePropertyChangeListener(listener); + getPropertyChangeSupport().removePropertyChangeListener(listener); } /* @@ -116,7 +127,7 @@ @Override public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { - propertyChangeSupport.addPropertyChangeListener(propertyName, listener); + getPropertyChangeSupport().addPropertyChangeListener(propertyName, listener); } /* @@ -125,6 +136,6 @@ @Override public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { - propertyChangeSupport.removePropertyChangeListener(propertyName, listener); + getPropertyChangeSupport().removePropertyChangeListener(propertyName, listener); } } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityWikitty.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityWikitty.java 2010-05-17 10:13:56 UTC (rev 56) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/BusinessEntityWikitty.java 2010-05-17 10:30:16 UTC (rev 57) @@ -37,19 +37,30 @@ /** serialVersionUID. */ private static final long serialVersionUID = -4399752739887114180L; + /** + * Property change support. + * + * Warning, this transient field is null after deserialization. + */ protected transient PropertyChangeSupport propertyChangeSupport; protected Wikitty wikitty; public BusinessEntityWikitty(Wikitty wi) { - propertyChangeSupport = new PropertyChangeSupport(this); setWikitty(wi); } public BusinessEntityWikitty() { this(new Wikitty()); } - + + protected PropertyChangeSupport getPropertyChangeSupport() { + if (propertyChangeSupport == null) { + propertyChangeSupport = new PropertyChangeSupport(this); + } + return propertyChangeSupport; + } + public String getWikittyId() { String result = getWikitty().getId(); return result; @@ -110,7 +121,7 @@ */ @Override public void addPropertyChangeListener(PropertyChangeListener listener) { - propertyChangeSupport.addPropertyChangeListener(listener); + getPropertyChangeSupport().addPropertyChangeListener(listener); } /* @@ -118,7 +129,7 @@ */ @Override public void removePropertyChangeListener(PropertyChangeListener listener) { - propertyChangeSupport.removePropertyChangeListener(listener); + getPropertyChangeSupport().removePropertyChangeListener(listener); } /* @@ -127,7 +138,7 @@ @Override public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { - propertyChangeSupport.addPropertyChangeListener(propertyName, listener); + getPropertyChangeSupport().addPropertyChangeListener(propertyName, listener); } /* @@ -136,6 +147,6 @@ @Override public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { - propertyChangeSupport.removePropertyChangeListener(propertyName, listener); + getPropertyChangeSupport().removePropertyChangeListener(propertyName, listener); } } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java 2010-05-17 10:13:56 UTC (rev 56) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/Wikitty.java 2010-05-17 10:30:16 UTC (rev 57) @@ -50,23 +50,31 @@ * technical id for this wikitty object. id must be never null */ protected String id; + /** current version of this wikitty object */ protected String version = WikittyUtil.DEFAULT_VERSION; + /** if not null, date of deletion, if date this object is marked as deleted */ protected Date deleteDate = null; - /** used to add property change support to wikitty object */ - protected transient PropertyChangeSupport propertyChange = new PropertyChangeSupport(this); + /** + * Used to add property change support to wikitty object. + * + * Warning, this field can be null after deserialization. + */ + private transient PropertyChangeSupport propertyChange; /** * key: field name prefixed by extension name (dot separator) * value: value of field */ protected HashMap<String, Object> fieldValue = new HashMap<String, Object>(); + /** * all field name currently modified (field name = extension . fieldname) */ protected Set<String> fieldDirty = new HashSet<String>(); + /** * Map is LinkedHashMap to maintains order like user want * key: extension name @@ -88,27 +96,39 @@ } } + /** + * Always call this method because field is transient. + * + * @return + */ + protected PropertyChangeSupport getPropertyChangeSupport() { + if (propertyChange == null) { + propertyChange = new PropertyChangeSupport(this); + } + return propertyChange; + } + public synchronized void addPropertyChangeListener( PropertyChangeListener listener) { - propertyChange.addPropertyChangeListener(listener); + getPropertyChangeSupport().addPropertyChangeListener(listener); } public synchronized void removePropertyChangeListener( PropertyChangeListener listener) { - propertyChange.removePropertyChangeListener(listener); + getPropertyChangeSupport().removePropertyChangeListener(listener); } public synchronized void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { - propertyChange.addPropertyChangeListener(propertyName, listener); + getPropertyChangeSupport().addPropertyChangeListener(propertyName, listener); } public synchronized void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { - propertyChange.removePropertyChangeListener(propertyName, listener); + getPropertyChangeSupport().removePropertyChangeListener(propertyName, listener); } public String getId() { @@ -142,7 +162,7 @@ String key = ext + "." + fieldName; fieldDirty.add(key); version = WikittyUtil.incrementMinorRevision(version); - propertyChange.firePropertyChange(key, oldValue, newValue); + getPropertyChangeSupport().firePropertyChange(key, oldValue, newValue); } public void addExtension(WikittyExtension ext) { @@ -255,7 +275,7 @@ // take old value if needed Object oldValue = null; - if (propertyChange.hasListeners(key)) { + if (getPropertyChangeSupport().hasListeners(key)) { oldValue = fieldValue.get(key); } Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/BusinessEntityAbstractGenerator.java =================================================================== --- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/BusinessEntityAbstractGenerator.java 2010-05-17 10:13:56 UTC (rev 56) +++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/BusinessEntityAbstractGenerator.java 2010-05-17 10:30:16 UTC (rev 57) @@ -317,7 +317,7 @@ public void set<%=attrNameCapitalized%>(<%=attrType%> <%=attrName%>) { Object oldValue = getField(<%=EXT_NAME%>, "<%=attrName%>"); getWikitty().setField(<%=EXT_NAME%>, "<%=attrName%>", <%=attrName%>); - propertyChangeSupport.firePropertyChange("<%=attrName%>", oldValue, <%=attrName%>); + getPropertyChangeSupport().firePropertyChange("<%=attrName%>", oldValue, <%=attrName%>); } public <%=attrType%> get<%=attrNameCapitalized%>() { @@ -391,17 +391,17 @@ public void add<%=attrNameCapitalized%>(<%=elementType%> element) { getWikitty().addToField(<%=EXT_NAME%>, "<%=attrName%>", element); - propertyChangeSupport.firePropertyChange("<%=attrName%>", null, get<%=attrNameCapitalized%>()); + getPropertyChangeSupport().firePropertyChange("<%=attrName%>", null, get<%=attrNameCapitalized%>()); } public void remove<%=attrNameCapitalized%>(<%=elementType%> element) { getWikitty().removeFromField(<%=EXT_NAME%>, "<%=attrName%>", element); - propertyChangeSupport.firePropertyChange("<%=attrName%>", null, get<%=attrNameCapitalized%>()); + getPropertyChangeSupport().firePropertyChange("<%=attrName%>", null, get<%=attrNameCapitalized%>()); } public void clear<%=attrNameCapitalized%>() { getWikitty().clearField(<%=EXT_NAME%>, "<%=attrName%>"); - propertyChangeSupport.firePropertyChange("<%=attrName%>", null, get<%=attrNameCapitalized%>()); + getPropertyChangeSupport().firePropertyChange("<%=attrName%>", null, get<%=attrNameCapitalized%>()); } }*/
participants (1)
-
echatellier@users.nuiton.org