@@ -239,7 +239,8 @@ private static boolean hashAndBundleModulesEqual(JsonObject statsJson,
239
239
String bundlePackageJsonHash = getStatsHash (statsJson );
240
240
241
241
if (packageJsonHash == null || packageJsonHash .isEmpty ()) {
242
- getLogger ().warn ("No hash found for 'package.json'." );
242
+ getLogger ().error (
243
+ "No hash found for 'package.json' even though one should always be generated!" );
243
244
return false ;
244
245
}
245
246
@@ -309,6 +310,20 @@ private static boolean versionAccepted(String expected, String actual) {
309
310
return expectedVersion .isEqualTo (actualVersion );
310
311
}
311
312
313
+ /**
314
+ * Get the package.json file from disk if available else generate in memory.
315
+ * <p>
316
+ * For the loaded file update versions as per in memory to get correct
317
+ * application versions.
318
+ *
319
+ * @param options
320
+ * the task options
321
+ * @param frontendDependencies
322
+ * frontend dependency scanner
323
+ * @param finder
324
+ * classfinder
325
+ * @return package.json content as JsonObject
326
+ */
312
327
private static JsonObject getPackageJson (Options options ,
313
328
FrontendDependenciesScanner frontendDependencies ,
314
329
ClassFinder finder ) {
@@ -319,65 +334,47 @@ private static JsonObject getPackageJson(Options options,
319
334
final JsonObject packageJson = Json
320
335
.parse (FileUtils .readFileToString (packageJsonFile ,
321
336
StandardCharsets .UTF_8 ));
322
- if (!packageJson .hasKey (NodeUpdater .VAADIN_DEP_KEY )
323
- || !packageJson .getObject (NodeUpdater .VAADIN_DEP_KEY )
324
- .hasKey (NodeUpdater .HASH_KEY )) {
325
- updatePackageJsonWithDefaultDependencies (options ,
326
- frontendDependencies , finder , packageJson );
327
- }
328
- return packageJson ;
337
+ return getDefaultPackageJson (options , frontendDependencies ,
338
+ finder , packageJson );
329
339
} catch (IOException e ) {
330
340
getLogger ().warn ("Failed to read package.json" , e );
331
341
}
332
342
} else {
333
343
JsonObject packageJson = getDefaultPackageJson (options ,
334
- frontendDependencies , finder );
344
+ frontendDependencies , finder , null );
335
345
if (packageJson != null ) {
336
346
return packageJson ;
337
347
}
338
348
}
339
349
return null ;
340
350
}
341
351
342
- private static void updatePackageJsonWithDefaultDependencies (
343
- Options options , FrontendDependenciesScanner frontendDependencies ,
344
- ClassFinder finder , JsonObject packageJson ) {
345
- // If we have executed flow:clean-frontend we will have an empty
346
- // package.json with no hash field.
347
- JsonObject defaultPackageJson = getDefaultPackageJson (options ,
348
- frontendDependencies , finder );
349
-
350
- // Add dependencies as it should be enough to have the expected
351
- // dependencies in the package.json
352
- final JsonObject defaultDependencies = defaultPackageJson
353
- .getObject (NodeUpdater .DEPENDENCIES );
354
- for (String key : defaultDependencies .keys ()) {
355
- packageJson .getObject (NodeUpdater .DEPENDENCIES ).put (key ,
356
- defaultDependencies .getString (key ));
357
- }
358
-
359
- // Add hash to package.json so we don't fail just because it is missing
360
- final String hash = TaskUpdatePackages
361
- .generatePackageJsonHash (packageJson );
362
- if (!packageJson .hasKey (NodeUpdater .VAADIN_DEP_KEY )) {
363
- packageJson .put (NodeUpdater .VAADIN_DEP_KEY , Json .createObject ());
364
- }
365
- packageJson .getObject (NodeUpdater .VAADIN_DEP_KEY )
366
- .put (NodeUpdater .HASH_KEY , hash );
367
- }
368
-
369
352
protected static JsonObject getDefaultPackageJson (Options options ,
370
353
FrontendDependenciesScanner frontendDependencies ,
371
- ClassFinder finder ) {
354
+ ClassFinder finder , JsonObject packageJson ) {
372
355
NodeUpdater nodeUpdater = new NodeUpdater (finder , frontendDependencies ,
373
356
options ) {
374
357
@ Override
375
358
public void execute () {
376
359
}
377
360
};
378
361
try {
379
- JsonObject packageJson = nodeUpdater .getPackageJson ();
362
+ if (packageJson == null ) {
363
+ packageJson = nodeUpdater .getPackageJson ();
364
+ }
365
+ nodeUpdater .addVaadinDefaultsToJson (packageJson );
380
366
nodeUpdater .updateDefaultDependencies (packageJson );
367
+
368
+ final Map <String , String > applicationDependencies = frontendDependencies
369
+ .getPackages ();
370
+
371
+ // Add application dependencies
372
+ for (Map .Entry <String , String > dep : applicationDependencies
373
+ .entrySet ()) {
374
+ nodeUpdater .addDependency (packageJson , NodeUpdater .DEPENDENCIES ,
375
+ dep .getKey (), dep .getValue ());
376
+ }
377
+
381
378
final String hash = TaskUpdatePackages
382
379
.generatePackageJsonHash (packageJson );
383
380
packageJson .getObject (NodeUpdater .VAADIN_DEP_KEY )
0 commit comments