Я ещё не пробовал - только смотрел jar-файлы сервера и клиента на предмет возможности.
Вот что вижу в клиенте при построении панелек редактирования условий для договора:
В ContractDispatchConditionsPanel:
Код:
for (DispatchCondition condition : dispatch.getConditions())
{
ReferredModule refModule = (ReferredModule)condition.getClass().getAnnotation(ReferredModule.class);
this.panelMap.add(ContractConditionPanelFactory.getPanel(condition.getClass(), (ClientContext)getContext(),
refModule.value(), condition.getModuleId()));
}
...
public void setPreferences(Preferences prefs)
{
for (AbstractContractConditionPanel value : this.panelMap)
{
value.load(prefs);
}
}
Смотрим getPanel ConditionPanelFactory:
Код:
public static AbstractDispatchConditionPanel getPanel(Class<? extends DispatchCondition> clazz, String module, int mid)
{
AbstractDispatchConditionPanel instance = null;
Class panelClass = (Class)factoryMap.get(clazz);
if (panelClass == null)
{
return null;
}
...
}
Т.е. getPanel возвращает null, который добавляется в ArrayList panelMap, и NPE будет тут:
Код:
for (AbstractContractConditionPanel value : this.panelMap)
{
value.load(prefs);
}
(ArrayList разрешает добавлять null)