public String generateJsonMetadata(BundleBuildRequest request, BundleBuildResponse response) { File bundleDir = new File(response.getBundleDataDirectory()); List<BundleFile> files = getBundleFilesWithSumsForDirectory(bundleDir, bundleDir); Gson gson = new GsonBuilder() .serializeNulls() .registerTypeAdapter(DateTime.class, new JodaDateTimeAdapter()) .registerTypeAdapter(LocalDate.class, new JodaLocalDateAdapter()) .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES) .setPrettyPrinting() .create(); Bundle bundle = new Bundle(); bundle.setId(request.getBundleName()); bundle.setName(request.getBundleName()); bundle.setServiceDateFrom(request.getBundleStartDate()); bundle.setServiceDateTo(request.getBundleEndDate()); DateTime now = new DateTime(); bundle.setCreated(now); bundle.setUpdated(now); List<String> applicableAgencyIds = new ArrayList<String>(); // TODO this should come from somewhere applicableAgencyIds.add("MTA NYCT"); bundle.setApplicableAgencyIds(applicableAgencyIds); bundle.setFiles(files); String output = gson.toJson(bundle); String outputFilename = response.getBundleRootDirectory() + File.separator + META_DATA_FILE; File outputFile = new File(outputFilename); _log.info("creating metadata file=" + outputFilename); PrintWriter writer = null; try { writer = new PrintWriter(outputFile); writer.print(output); } catch (Exception any) { _log.error(any.toString(), any); response.setException(any); } finally { writer.close(); } return outputFilename; }