From 295fbba3872ebf35832f93d2c2521a15c65d4a51 Mon Sep 17 00:00:00 2001 From: Paulo Gustavo Veiga Date: Sat, 29 Sep 2012 12:39:20 -0300 Subject: [PATCH] - Add freemind import exception data on failure. --- .../exceptions/ImportUnexpectedException.java | 41 +++++++++++ .../exceptions/WiseMappingException.java | 68 +++++++++---------- .../com/wisemapping/rest/BaseController.java | 11 +++ .../wisemapping/rest/MindmapController.java | 3 + 4 files changed, 89 insertions(+), 34 deletions(-) create mode 100755 wise-webapp/src/main/java/com/wisemapping/exceptions/ImportUnexpectedException.java diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/ImportUnexpectedException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/ImportUnexpectedException.java new file mode 100755 index 00000000..ce0a67c0 --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/ImportUnexpectedException.java @@ -0,0 +1,41 @@ +/* +* Copyright [2011] [wisemapping] +* +* Licensed under WiseMapping Public License, Version 1.0 (the "License"). +* It is basically the Apache License, Version 2.0 (the "License") plus the +* "powered by wisemapping" text requirement on every single page; +* you may not use this file except in compliance with the License. +* You may obtain a copy of the license at +* +* http://www.wisemapping.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.wisemapping.exceptions; + +import org.jetbrains.annotations.NotNull; + +public class ImportUnexpectedException + extends WiseMappingException { + private byte[] freemindXml; + + + public ImportUnexpectedException(@NotNull Throwable e, @NotNull byte[] map) { + super("Unexpected expected error importing freemind. Please, try latter.", e); + this.freemindXml = map; + } + + public ImportUnexpectedException(String str, Exception e) { + super(str); + initCause(e); + } + + public byte[] getFreemindXml() { + return freemindXml; + } +} diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/WiseMappingException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/WiseMappingException.java index 6bbb6cc9..1ef3d07b 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/WiseMappingException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/WiseMappingException.java @@ -1,34 +1,34 @@ -/* -* Copyright [2011] [wisemapping] -* -* Licensed under WiseMapping Public License, Version 1.0 (the "License"). -* It is basically the Apache License, Version 2.0 (the "License") plus the -* "powered by wisemapping" text requirement on every single page; -* you may not use this file except in compliance with the License. -* You may obtain a copy of the license at -* -* http://www.wisemapping.org/license -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package com.wisemapping.exceptions; - -public class WiseMappingException - extends Exception -{ - public WiseMappingException(String str) - { - super(str); - } - public WiseMappingException(String str,Exception e) - { - super(str); - initCause(e); - } - -} +/* +* Copyright [2011] [wisemapping] +* +* Licensed under WiseMapping Public License, Version 1.0 (the "License"). +* It is basically the Apache License, Version 2.0 (the "License") plus the +* "powered by wisemapping" text requirement on every single page; +* you may not use this file except in compliance with the License. +* You may obtain a copy of the license at +* +* http://www.wisemapping.org/license +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.wisemapping.exceptions; + +public class WiseMappingException + extends Exception +{ + public WiseMappingException(String str) + { + super(str); + } + public WiseMappingException(String str,Throwable e) + { + super(str); + initCause(e); + } + +} diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/BaseController.java b/wise-webapp/src/main/java/com/wisemapping/rest/BaseController.java index 884ae2fe..3ed99bed 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/BaseController.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/BaseController.java @@ -19,6 +19,7 @@ package com.wisemapping.rest; import com.wisemapping.exceptions.ClientException; +import com.wisemapping.exceptions.ImportUnexpectedException; import com.wisemapping.mail.NotificationService; import com.wisemapping.model.User; import com.wisemapping.rest.model.RestErrors; @@ -67,6 +68,16 @@ public class BaseController { return ex.getMessage(); } + + @ExceptionHandler(Exception.class) + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + @ResponseBody + public String handleImportErrors(@NotNull ImportUnexpectedException ex, @NotNull HttpServletRequest request) { + final User user = Utils.getUser(); + notificationService.reportJavaException(ex, user, new String(ex.getFreemindXml()), request); + return ex.getMessage(); + } + @ExceptionHandler(ValidationException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public RestErrors handleValidationErrors(@NotNull ValidationException ex) { diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java b/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java index f3b948ae..ecb4230f 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java @@ -19,6 +19,7 @@ package com.wisemapping.rest; +import com.wisemapping.exceptions.ImportUnexpectedException; import com.wisemapping.exceptions.WiseMappingException; import com.wisemapping.importer.ImportFormat; import com.wisemapping.importer.Importer; @@ -401,6 +402,8 @@ public class MindmapController extends BaseController { } catch (ImporterException e) { // @Todo: This should be an illegal argument exception. Review the all the other cases. throw buildValidationException("xml", "The selected file does not seems to be a valid Freemind or WiseMapping file. Contact support in case the problem persists."); + } catch (Throwable e) { + throw new ImportUnexpectedException(e, freemindXml); } // Save new map ...