Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,21 @@ public synchronized WorkspaceSnapshot replaceWithYaml(final Path path) throws IO
return replaceWithYaml(Files.readString(path));
}

public synchronized WorkspaceSnapshot replaceWithMigratedThingifier(
final Thingifier newThingifier, final long expectedVersion) {
if (version != expectedVersion) {
throw new IllegalStateException(
"Workspace changed; refresh schema preview before applying");
}
Thingifier oldThingifier = thingifier;
replaceWith(newThingifier);
version++;
if (oldThingifier != null) {
oldThingifier.close();
}
return snapshot();
}

private void replaceWith(final Thingifier newThingifier) {
thingifier = newThingifier;
definition = modelExporter.export(newThingifier);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public final class CrudUiController {
private final WorkspaceDataExporter exporter;
private final WorkspaceDataImporter importer;
private final SchemaPreviewService schemaPreviewService;
private final WorkspaceSchemaUpgradeService schemaUpgradeService;

public CrudUiController(final ActiveThingifierWorkspace workspace) {
this.workspace = workspace;
Expand All @@ -19,6 +20,7 @@ public CrudUiController(final ActiveThingifierWorkspace workspace) {
exporter = new WorkspaceDataExporter(workspace, apiProxy);
importer = new WorkspaceDataImporter(workspace, apiProxy, metadataJson);
schemaPreviewService = new SchemaPreviewService();
schemaUpgradeService = new WorkspaceSchemaUpgradeService(workspace, metadataJson);
}

public UiHttpResponse workspace() {
Expand Down Expand Up @@ -50,6 +52,26 @@ public UiHttpResponse previewSchema(final String schemaDraftJson) {
}
}

public UiHttpResponse previewSchemaUpgrade(final String upgradeRequestJson) {
try {
return schemaUpgradeService.preview(upgradeRequestJson);
} catch (CrudUiException e) {
return JsonSupport.error(e.statusCode(), e.getMessage());
} catch (IllegalArgumentException e) {
return JsonSupport.error(400, e.getMessage());
}
}

public UiHttpResponse applySchemaUpgrade(final String upgradeRequestJson) {
try {
return schemaUpgradeService.apply(upgradeRequestJson);
} catch (CrudUiException e) {
return JsonSupport.error(e.statusCode(), e.getMessage());
} catch (IllegalArgumentException e) {
return JsonSupport.error(400, e.getMessage());
}
}

public UiHttpResponse exportData() {
try {
return exporter.exportData();
Expand Down
Loading
Loading