@GetMapping( path = "backup{.+}", produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.TEXT_XML_VALUE, MediaType.APPLICATION_XML_VALUE } ) public Object backupGet(@RequestParam(name = "format", required = false) String format) { Object lookup = lookupBackupExecutionsContext(null, true, false); if (lookup != null) { if (lookup instanceof BackupExecutionAdapter) { return wrapObject((BackupExecutionAdapter) lookup, BackupExecutionAdapter.class); } else { return wrapList( (List<BackupExecutionAdapter>) lookup, BackupExecutionAdapter.class); } } return null; }
@GetMapping( path = "restore{.+}", produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.TEXT_XML_VALUE, MediaType.APPLICATION_XML_VALUE } ) public Object restoreGet(@RequestParam(name = "format", required = false) String format) { Object lookup = lookupRestoreExecutionsContext(null, true, false); if (lookup != null) { if (lookup instanceof RestoreExecutionAdapter) { return wrapObject((RestoreExecutionAdapter) lookup, RestoreExecutionAdapter.class); } else { return wrapList( (List<RestoreExecutionAdapter>) lookup, RestoreExecutionAdapter.class); } } return null; }
@Override public void configurePersister(XStreamPersister persister, XStreamMessageConverter converter) { XStream xstream = persister.getXStream(); intializeXStreamContext(xstream); } }
@DeleteMapping( path = "restore/{restoreId:.+}", produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.TEXT_XML_VALUE, MediaType.APPLICATION_XML_VALUE } ) public Object restoreDelete( @RequestParam(name = "format", required = false) String format, @PathVariable String restoreId) throws IOException { final String executionId = getExecutionIdFilter(restoreId); Object lookup = lookupRestoreExecutionsContext(executionId, true, false); if (lookup != null) { if (lookup instanceof RestoreExecutionAdapter) { try { getBackupFacade().abandonExecution(Long.valueOf(executionId)); } catch (Exception e) { throw new IOException(e); } return wrapObject((RestoreExecutionAdapter) lookup, RestoreExecutionAdapter.class); } else { return wrapList( (List<RestoreExecutionAdapter>) lookup, RestoreExecutionAdapter.class); } } return null; }
@DeleteMapping( path = "backup/{backupId:.+}", produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.TEXT_XML_VALUE, MediaType.APPLICATION_XML_VALUE } ) public Object backupDelete( @RequestParam(name = "format", required = false) String format, @PathVariable String backupId) throws IOException { final String executionId = getExecutionIdFilter(backupId); Object lookup = lookupBackupExecutionsContext(executionId, true, false); if (lookup != null) { if (lookup instanceof BackupExecutionAdapter) { try { getBackupFacade().abandonExecution(Long.valueOf(executionId)); } catch (Exception e) { throw new IOException(e); } return wrapObject((BackupExecutionAdapter) lookup, BackupExecutionAdapter.class); } else { return wrapList( (List<BackupExecutionAdapter>) lookup, BackupExecutionAdapter.class); } } return null; }
lookupBackupExecutionsContext(String.valueOf(restore.getId()), false, false); if (lookup != null) { getBackupFacade().restartExecution(restore.getId()); return wrapObject( (RestoreExecutionAdapter) lookup, RestoreExecutionAdapter.class); } catch (Exception e) { getBackupFacade() .runRestoreAsync( restore.getArchiveFile(), restore.getSiFilter(), restore.getLiFilter(), asParams(restore.getOptions())); return wrapObject((RestoreExecutionAdapter) execution, RestoreExecutionAdapter.class);
lookupBackupExecutionsContext(String.valueOf(backup.getId()), false, false); if (lookup != null) { getBackupFacade().restartExecution(backup.getId()); return wrapObject( (BackupExecutionAdapter) lookup, BackupExecutionAdapter.class); } catch (Exception e) { getBackupFacade() .runBackupAsync( backup.getArchiveFile(), backup.getSiFilter(), backup.getLiFilter(), asParams(backup.getOptions())); return wrapObject((BackupExecutionAdapter) execution, BackupExecutionAdapter.class);
xStream.alias("resource", resourceAdaptorType); xStream.registerLocalConverter( AbstractExecutionAdapter.class, "archiveFile", new ArchiveFileResourceConverter()); AbstractExecutionAdapter.class, "delegate", new JobExecutionConverter( xStream.getMapper(), xStream.getReflectionProvider(), this.backupFacade)); AbstractExecutionAdapter.class, "wsFilter", new FilterConverter( "wsFilter", xStream.getMapper(), xStream.getReflectionProvider())); AbstractExecutionAdapter.class, "siFilter", new FilterConverter( "siFilter", xStream.getMapper(), xStream.getReflectionProvider())); AbstractExecutionAdapter.class, "liFilter", new FilterConverter( "liFilter", xStream.getMapper(), xStream.getReflectionProvider()));
@Test public void testNewRestore() throws Exception { Resource archiveFile = file("geoserver-alfa2-backup.zip"); + "}"; JSONObject restore = postNewRestore(json); readExecutionStatus(restore.getJSONObject("execution").getLong("id")); && ("STARTED".equals(execution.getString("status")) || "STARTING".equals(execution.getString("status")))) { execution = readExecutionStatus(execution.getLong("id"));
+ "}"; JSONObject backup = postNewBackup(json); JSONObject execution = readExecutionStatus(backup.getJSONObject("execution").getLong("id")); && ("STARTED".equals(execution.getString("status")) || "STARTING".equals(execution.getString("status")))) { execution = readExecutionStatus(execution.getLong("id"));
JSONObject postNewRestore(String body) throws Exception { MockHttpServletResponse resp = postAsServletResponse( RestBaseController.ROOT_PATH + "/br/restore", body, "application/json"); assertEquals(201, resp.getStatus()); assertEquals("application/json", resp.getContentType()); JSONObject json = (JSONObject) json(resp); JSONObject execution = json.getJSONObject("restore"); assertNotNull(execution); return execution; }
JSONObject postNewBackup(String body) throws Exception { MockHttpServletResponse resp = postAsServletResponse( RestBaseController.ROOT_PATH + "/br/backup", body, MediaType.APPLICATION_JSON_VALUE); assertEquals(201, resp.getStatus()); assertEquals("application/json", resp.getContentType()); JSONObject json = (JSONObject) json(resp); JSONObject execution = json.getJSONObject("backup"); assertNotNull(execution); return execution; }
/** * @param allowAll * @param mustExist * @return */ protected Object lookupBackupExecutionsContext(String i, boolean allowAll, boolean mustExist) { if (i != null) { BackupExecutionAdapter backupExecution = null; try { backupExecution = getBackupFacade().getBackupExecutions().get(Long.parseLong(i)); } catch (NumberFormatException e) { } if (backupExecution == null && mustExist) { throw new ResourceNotFoundException("No such backup execution: " + i); } return backupExecution; } else { if (allowAll) { return new ArrayList<BackupExecutionAdapter>( getBackupFacade().getBackupExecutions().values()); } throw new ResourceNotFoundException("No backup execution specified"); } }
@Override public void configurePersister(XStreamPersister persister, XStreamMessageConverter converter) { XStream xstream = persister.getXStream(); intializeXStreamContext(xstream); } }
JSONObject readExecutionStatus(long executionId) throws Exception { JSONObject json = (JSONObject) getAsJSON( RestBaseController.ROOT_PATH + "/br/restore/" + executionId + ".json"); JSONObject restore = json.getJSONObject("restore"); assertNotNull(restore); JSONObject execution = restore.getJSONObject("execution"); assertNotNull(execution); return execution; } }
JSONObject readExecutionStatus(long executionId) throws Exception { JSONObject json = (JSONObject) getAsJSON( RestBaseController.ROOT_PATH + "/br/backup/" + executionId + ".json"); JSONObject backup = json.getJSONObject("backup"); assertNotNull(backup); JSONObject execution = backup.getJSONObject("execution"); assertNotNull(execution); return execution; } }
lookupRestoreExecutionsContext(getExecutionIdFilter(restoreId), true, false); return wrapObject( (RestoreExecutionAdapter) lookup, RestoreExecutionAdapter.class); return wrapList( (List<RestoreExecutionAdapter>) lookup, RestoreExecutionAdapter.class);
HttpServletResponse response) { Object lookup = lookupBackupExecutionsContext(getExecutionIdFilter(backupId), true, false); return wrapObject( (BackupExecutionAdapter) lookup, BackupExecutionAdapter.class); return wrapList( (List<BackupExecutionAdapter>) lookup, BackupExecutionAdapter.class);
+ "}"; JSONObject backup = postNewBackup(json); JSONObject execution = readExecutionStatus(backup.getJSONObject("execution").getLong("id")); && ("STARTED".equals(execution.getString("status")) || "STARTING".equals(execution.getString("status")))) { execution = readExecutionStatus(execution.getLong("id"));
/** * @param allowAll * @param mustExist * @return */ protected Object lookupRestoreExecutionsContext(String i, boolean allowAll, boolean mustExist) { if (i != null) { RestoreExecutionAdapter restoreExecution = null; try { restoreExecution = getBackupFacade().getRestoreExecutions().get(Long.parseLong(i)); } catch (NumberFormatException e) { } if (restoreExecution == null && mustExist) { throw new ResourceNotFoundException("No such restore execution: " + i); } return restoreExecution; } else { if (allowAll) { return new ArrayList<RestoreExecutionAdapter>( getBackupFacade().getRestoreExecutions().values()); } throw new ResourceNotFoundException("No backup execution specified"); } }