вторник, 4 апреля 2006 г.

О работе

Сейчас ведется бодрая переписка по поводу недавно пофикшенного мной бага. Суть бага в следующем: если использовать XMLEncoder для записи immutable beans через Java Web Start или в любом другом окружении, использующем SecurityManager, то возникает SecurityException. Я обнаружил, что в DefaultPersistenceDelegate используется доступ к закрытым полям, а не к свойствам объектов. Это противоречит спецификации JavaBeans!
После обсуждения с одним из архитекторов мы выкинули этот код. А теперь несколько других архитекторов убедили этого, что backward compatibility важнее правильной работы Java. И пытаются заставить меня откатить изменения. Я пока сопротивляюсь, но скоро мои бастионы падут. И придется мне своими руками внести DIRTY HACK в Java.
Ээх! Надо будет написать обширный JavaDoc, в котором попытаться объяснить, что из-за каких-то недоучившихся дегенератов, пишуших бины не по спецификации, пришлось нормальных программистов лишить возможности писать правильные бины.
Immutable bean - класс, который создается конструктором с параметром, значение которого соответствует свойству бина. Например:
public class ImmutableBean
{
private Object value;

@ConstructorProperties({"value"})
public ImmutableBean( Object value )
{
this.value = value;
}

public Object getValue()
{
return this.value;
}
}