Two things:

1. Could you change `sparkHome` in this class to be a val and just initialize it when it's defined? Seems like there is no reason not to just initialize it in `preStart`.
2. Here, might be better to do:

    appDesc.sparkHome.map(userSparkHome => new File(userSparkHome)).getOrElse(sparkHome)