title: sonarQube - make field transient or serializable
body: <p>I'm trying to solve the following violation reported by sonarQube plugin for Jenkins: "make 'update' transient or serializable.". Gravity: critical, tag: serialization.</p>
  
  <p>I have the following shared interface</p>
  
  <pre><code>public interface MPUpdate {
  
      void apply( SoapService svc, byte[] jerseyClientResp ) throws MPException ;
  }
  </code></pre>
  
  <p>The following enum is the entry point for the application logic</p>
  
  <pre><code>public enum DomainResource implements MPUpdate {
  
      PROGRAMMES( new ProgrammeUpdate() ),
      PRODUCTIONS( new ProductionUpdate() );
      // more enums
  
      private DomainResource( MPUpdate update ) {
          this.update = update;
      }
  
      private final MPUpdate update; // Sonar: make "update" transient or serializable, priority: critical, tag: serialization
  
      @Override
      public void apply( SoapService svc, byte[] jerseyClientResp ) throws MPException {
          update.apply( svc, jerseyClientResp );      
      }
  }
  </code></pre>
  
  <p>One of the unit of logic initialized through the enum</p>
  
  <pre><code>public class ProgrammeUpdate implements MPUpdate {
  
      private final ResponseConverter&lt;ProgrammeDto&gt; responseConverter = new ResponseConverter&lt;&gt;( ProgrammeDto.class );
  
      @Override
      public void apply( SoapService svc, byte[] jerseyClientResp ) throws MPException {
  
          // APPLICATION LOGIC
      }
  
  }
  </code></pre>
  
  <p>And finally this is how it's used:</p>
  
  <pre><code>...
  String levelFromUrl = getLevel(); // eg. "programmes"
  MPUpdate resource;
  resource = DomainResource.valueOf( levelFromUrl.toUpperCase() ); 
  ...
  resource.apply( soapService, jerseyClientOutcome );
  ...
  </code></pre>
  
  <p>Any help? Does the use of enum improve performance for logging?</p>
  
  <p>Many thanks</p>