Переменная элемента 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". Это "упаковка", упомянутая в комментарии.

Другие вопросы по тегам