Hi There are two classes:
org.apache.myfaces.util.AbstractAttributeMap and org.apache.myfaces.util.AbstractThreadSafeAttributeMap You're right, there is a bug, but apply them please on AbstractThreadSafeAttributeMap. Note ApplicationMap and SessionMap wrappers used by ExternalContext inherits from this class. regards, Leonardo Uribe 2011/10/26 Mark Struberg <[email protected]>: > Hi! > > checkstyle just found another kind of gems > > > for example in AbstractAttributeMap.java > > > private Collection<V> _values; > > @Override > public Collection<V> values() > { > return (_values != null) ? _values : (_values = new Values()); > } > > This code is not thread safe! > _values is neither volatile nor is there any synchronized used on it! > > What shall we do? > Either we declare _values volatile and use synchronized double lock idiom, or > we just create the new Values() at class initialisation. > > I don't know enough about the usage of this class to make any decission - who > takes over? > > LieGrue, > strub > >
