/** * Deletes the given ITD, either now or later. * * @param metadataId the ITD's metadata ID * @param itdFilename the ITD's filename * @param reason the reason for deletion; ignored if now is <code>false</code> * @param now whether to delete the ITD immediately; <code>false</code> schedules it for later * deletion; this is preferable when it's possible that the ITD might need to be re-created in * the meantime (e.g. because some ancestor metadata has changed to that effect), otherwise * there will be spurious console messages about the ITD being deleted and created */ private void deleteItd( final String metadataId, final String itdFilename, final String reason, final boolean now) { if (now) { fileManager.delete(itdFilename, reason); } else { fileManager.createOrUpdateTextFileIfRequired(itdFilename, "", false); } itdDiscoveryService.removeItdTypeDetails(metadataId); // TODO do we need to notify downstream dependencies that this ITD has gone away? }
/** * Deletes the given {@link JavaType} for the given reason * * @param javaType the type to be deleted (required) * @param reason the reason for deletion (can be blank) */ private void deleteJavaType(final JavaType javaType, final String reason) { final PhysicalTypeMetadata governorPhysicalTypeMetadata = getPhysicalTypeMetadata(javaType); if (governorPhysicalTypeMetadata != null) { final String filePath = governorPhysicalTypeMetadata.getPhysicalLocationCanonicalPath(); if (fileManager.exists(filePath)) { fileManager.delete(filePath, reason); shell.flash( Level.FINE, "Deleted " + javaType.getFullyQualifiedTypeName(), DbreDatabaseListenerImpl.class.getName()); } shell.flash(Level.FINE, "", DbreDatabaseListenerImpl.class.getName()); } }