Переменная элемента dataContentHandler перезаписывается в javax.activation.DataHandler.getDataContentHandler?
Код ниже предназначен для javax.activation.DataHandler.getDataContentHandler, 1.41, 07/05/14.
Если переменная-член dataContentHandler при вызове метода имеет значение null, то она задается условием if в [1] (что и происходит в моей программе).
Затем он немедленно перезаписывается в предложении if в [2].
Я что-то упустил или это вряд ли будет предполагаемое поведение?
private synchronized DataContentHandler getDataContentHandler() {
// make sure the factory didn't change
if (factory != oldFactory) {
oldFactory = factory;
factoryDCH = null;
dataContentHandler = null;
transferFlavors = emptyFlavors;
}
if (dataContentHandler != null)
return dataContentHandler;
String simpleMT = getBaseType();
if (factoryDCH == null && factory != null)
factoryDCH = factory.createDataContentHandler(simpleMT);
if (factoryDCH != null)
dataContentHandler = factoryDCH;
if (dataContentHandler == null) { // [1]
if (dataSource != null)
dataContentHandler = getCommandMap().
createDataContentHandler(simpleMT, dataSource);
else
dataContentHandler = getCommandMap().
createDataContentHandler(simpleMT);
}
// getDataContentHandler always uses these 'wrapper' handlers
// to make sure it returns SOMETHING meaningful...
if (dataSource != null) // [2]
dataContentHandler = new DataSourceDataContentHandler(
dataContentHandler,
dataSource);
else
dataContentHandler = new ObjectDataContentHandler(
dataContentHandler,
object,
objectMimeType);
return dataContentHandler;
}
я
1 ответ
Я что-то упустил или это вряд ли будет предполагаемое поведение?
Похоже, что это предполагаемое поведение в комментарии:
// getDataContentHandler всегда использует эти обработчики 'wrapper' //, чтобы убедиться, что он возвращает что-то значимое...
Если вы внимательно посмотрите на код, "dataContentHandler" передается в качестве аргумента "new DataSourceDataContentHandler" и "new ObjectDataContentHandler". Это "упаковка", упомянутая в комментарии.