Using a template file for error message

This commit is contained in:
Rachel Walker
2012-11-26 15:11:41 -08:00
parent 067decf8d9
commit 64f386fc92
33 changed files with 468 additions and 367 deletions

164
.idea/workspace.xml generated
View File

@@ -57,20 +57,7 @@
<favorites_list name="annotationSpike" />
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="AnnotationHandler.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/exception/AnnotationHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="30" selection-start="510" selection-end="510" vertical-scroll-proportion="0.07692308">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#1504#1532#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
<leaf />
</component>
<component name="FindManager">
<FindUsagesManager>
@@ -136,7 +123,7 @@
<option name="STATE" value="0" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
<navigator currentView="PackagesPane" proportions="" version="1" splitterProportion="0.5">
<flattenPackages />
<showMembers />
<showModules />
@@ -148,6 +135,16 @@
<sortByType />
</navigator>
<panes>
<pane id="ProjectPane">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="annotationSpike" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="Scope">
<subPane subId="Project Files">
<PATH>
@@ -158,27 +155,9 @@
</PATH>
</subPane>
</pane>
<pane id="ProjectPane">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="annotationSpike" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="annotationSpike" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
<pane id="PackagesPane">
<subPane />
</pane>
<pane id="PackagesPane" />
</panes>
</component>
<component name="PropertiesComponent">
@@ -195,8 +174,8 @@
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="MemberChooser.showClasses" value="true" />
<property name="GoToClass.includeLibraries" value="false" />
<property name="options.splitter.details.proportions" value="0.2" />
<property name="options.searchVisible" value="true" />
<property name="options.splitter.details.proportions" value="0.2" />
</component>
<component name="RecentsManager">
<key name="CreateClassDialog.RecentsKey">
@@ -423,17 +402,17 @@
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="IDEtalk" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3292011" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Web" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.1665405" sideWeight="0.6818182" order="0" side_tool="false" content_ui="combo" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3181818" sideWeight="0.49432248" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.31691077" sideWeight="0.49432248" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3292011" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3292011" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Web" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
</layout>
@@ -502,16 +481,6 @@
<state line="11" column="27" selection-start="496" selection-end="501" vertical-scroll-proportion="0.41580042" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/SpringMVC.iml">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/resources/META-INF/services/javax.annotation.processing.Processor">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/3.1.1.RELEASE/spring-webmvc-3.1.1.RELEASE.jar!/org/springframework/web/servlet/DispatcherServlet.class">
<provider selected="true" editor-type-id="text-editor">
<state line="106" column="18" selection-start="7034" selection-end="7034" vertical-scroll-proportion="-5.0" />
@@ -522,106 +491,13 @@
<state line="109" column="27" selection-start="6706" selection-end="6706" vertical-scroll-proportion="0.35466668" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/resources/META-INF/services/error.json.template">
<entry file="file://$PROJECT_DIR$/SpringMVC/SpringMVC.iml">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="9" selection-start="199" selection-end="199" vertical-scroll-proportion="0.58295965">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/exception/MyNegativeArraySizeException.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="4" selection-start="418" selection-end="418" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/webapp/WEB-INF/pages/hello.jsp">
<provider selected="true" editor-type-id="text-editor">
<state line="3" column="13" selection-start="53" selection-end="53" vertical-scroll-proportion="0.088626295">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/webapp/WEB-INF/web.xml">
<provider editor-type-id="com.intellij.javaee.module.view.web.viewlets.WebModuleGeneralEditorProvider">
<state />
</provider>
<provider editor-type-id="com.intellij.javaee.module.view.web.viewlets.WebModuleAssemblyDescriptorReferencesProvider">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state line="20" column="19" selection-start="703" selection-end="703" vertical-scroll-proportion="-18.181818">
<folding />
</state>
</provider>
<provider editor-type-id="com.intellij.javaee.module.view.web.viewlets.WebModuleAssemblyDescriptorProvider">
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/controller/HelloController.java">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="13" selection-start="559" selection-end="559" vertical-scroll-proportion="0.37195995">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/annotation/SupportedExceptions.java">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="17" selection-start="359" selection-end="359" vertical-scroll-proportion="0.25751072">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/annotation/ExceptionHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="39" selection-start="652" selection-end="652" vertical-scroll-proportion="0.6008584">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/exception/CustomException.java">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="27" selection-start="473" selection-end="473" vertical-scroll-proportion="0.5555556">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state line="6" column="28" selection-start="371" selection-end="371" vertical-scroll-proportion="0.042735044">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/webapp/WEB-INF/mvc-dispatcher-servlet.xml">
<provider editor-type-id="com.intellij.spring.perspectives.SpringBeansStructureEditorProvider">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state line="22" column="7" selection-start="814" selection-end="814" vertical-scroll-proportion="0.88789237">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/exception/AnnotationHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="30" selection-start="510" selection-end="510" vertical-scroll-proportion="0.07692308">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#1504#1532#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>

2
SpringMVC/.idea/.name generated
View File

@@ -1 +1 @@
annotationSpike
SpringMVC

View File

@@ -1,8 +0,0 @@
<component name="ArtifactManager">
<artifact type="war" name="SpringMVC:war">
<output-path>$PROJECT_DIR$/target</output-path>
<root id="archive" name="SpringMVC.war">
<element id="artifact" artifact-name="SpringMVC:war exploded" />
</root>
</artifact>
</component>

View File

@@ -1,27 +0,0 @@
<component name="ArtifactManager">
<artifact type="exploded-war" name="SpringMVC:war exploded">
<output-path>$PROJECT_DIR$/target/SpringMVC</output-path>
<root id="root">
<element id="javaee-facet-resources" facet="SpringMVC/web/Web" />
<element id="directory" name="WEB-INF">
<element id="directory" name="classes">
<element id="module-output" name="SpringMVC" />
</element>
<element id="directory" name="lib">
<element id="library" level="project" name="Maven: org.springframework:spring-core:3.1.1.RELEASE" />
<element id="library" level="project" name="Maven: org.springframework:spring-asm:3.1.1.RELEASE" />
<element id="library" level="project" name="Maven: commons-logging:commons-logging:1.1.1" />
<element id="library" level="project" name="Maven: org.springframework:spring-web:3.1.1.RELEASE" />
<element id="library" level="project" name="Maven: aopalliance:aopalliance:1.0" />
<element id="library" level="project" name="Maven: org.springframework:spring-beans:3.1.1.RELEASE" />
<element id="library" level="project" name="Maven: org.springframework:spring-context:3.1.1.RELEASE" />
<element id="library" level="project" name="Maven: org.springframework:spring-aop:3.1.1.RELEASE" />
<element id="library" level="project" name="Maven: org.springframework:spring-expression:3.1.1.RELEASE" />
<element id="library" level="project" name="Maven: org.springframework:spring-webmvc:3.1.1.RELEASE" />
<element id="library" level="project" name="Maven: org.springframework:spring-context-support:3.1.1.RELEASE" />
<element id="library" level="project" name="Maven: javax.servlet:servlet-api:2.5" />
</element>
</element>
</root>
</artifact>
</component>

View File

@@ -14,6 +14,7 @@
<entry name="?*.dtd" />
<entry name="?*.tld" />
<entry name="?*.ftl" />
<entry name="?*.template" />
</wildcardResourcePatterns>
<annotationProcessing enabled="false" useClasspath="true" />
</component>

View File

@@ -14,25 +14,6 @@
</list>
</option>
</component>
<component name="ProjectInspectionProfilesVisibleTreeState">
<entry key="Project Default">
<profile-state>
<expanded-state>
<State>
<id />
</State>
<State>
<id>JSP Inspections</id>
</State>
</expanded-state>
<selected-state>
<State>
<id>Abstraction issues</id>
</State>
</selected-state>
</profile-state>
</entry>
</component>
<component name="ProjectResources">
<default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
</component>

View File

@@ -58,18 +58,101 @@
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="ExceptionHandler.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/annotation/ExceptionHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="0" selection-start="613" selection-end="613" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="HelloController.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/controller/HelloController.java">
<provider selected="true" editor-type-id="text-editor">
<state line="19" column="30" selection-start="731" selection-end="731" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AnnotationHandler.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/exception/AnnotationHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="30" selection-start="510" selection-end="510" vertical-scroll-proportion="0.07692308">
<state line="45" column="22" selection-start="1949" selection-end="1949" vertical-scroll-proportion="0.9170507">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#1504#1532#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="mvc-dispatcher-servlet.xml" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/webapp/WEB-INF/mvc-dispatcher-servlet.xml">
<provider editor-type-id="com.intellij.spring.perspectives.SpringBeansStructureEditorProvider">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state line="22" column="69" selection-start="876" selection-end="876" vertical-scroll-proportion="-12.772727">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="web.xml" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/webapp/WEB-INF/web.xml">
<provider editor-type-id="com.intellij.javaee.module.view.web.viewlets.WebModuleAssemblyDescriptorProvider">
<state />
</provider>
<provider editor-type-id="com.intellij.javaee.module.view.web.viewlets.WebModuleGeneralEditorProvider">
<state />
</provider>
<provider editor-type-id="com.intellij.javaee.module.view.web.viewlets.WebModuleAssemblyDescriptorReferencesProvider">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state line="20" column="19" selection-start="703" selection-end="703" vertical-scroll-proportion="-8.681818">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="error.template" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/resources/error.template">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="14" selection-start="12" selection-end="14" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="error.json.template" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/resources/error.json.template">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="55" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="CustomException.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/exception/CustomException.java">
<provider selected="true" editor-type-id="text-editor">
<state line="7" column="63" selection-start="239" selection-end="250" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="MyNegativeArraySizeException.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/exception/MyNegativeArraySizeException.java">
<provider selected="true" editor-type-id="text-editor">
<state line="6" column="43" selection-start="276" selection-end="276" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FindManager">
@@ -80,30 +163,30 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/src/java/com/mkyong/common/annotation/ConsoleSurprise.java" />
<option value="$PROJECT_DIR$/src/java/com/mkyong/common/annotation/httpStatusRouter.java" />
<option value="$PROJECT_DIR$/src/java/com/mkyong/common/annotation/HTTPStatusRouter.java" />
<option value="$PROJECT_DIR$/src/resources/META-INF/services/error.template" />
<option value="$PROJECT_DIR$/src/java/com/mkyong/common/annotation/SupportedExceptions.java" />
<option value="$PROJECT_DIR$/src/java/com/mkyong/common/annotation/ExceptionHandler.java" />
<option value="$PROJECT_DIR$/src/java/com/mkyong/common/exception/CustomException.java" />
<option value="$PROJECT_DIR$/src/java/com/mkyong/common/exception/AnnotationHandlerExceptionResolver.java" />
<option value="$PROJECT_DIR$/src/java/com/mkyong/common/exception/MyNegativeArraySizeException.java" />
<option value="$PROJECT_DIR$/src/java/com/mkyong/common/controller/HelloController.java" />
<option value="$PROJECT_DIR$/src/webapp/WEB-INF/mvc-dispatcher-servlet.xml" />
<option value="$PROJECT_DIR$/src/webapp/WEB-INF/web.xml" />
<option value="$PROJECT_DIR$/src/java/com/raychatter/common/controller/HelloController.java" />
<option value="$PROJECT_DIR$/pom.xml" />
<option value="$PROJECT_DIR$/src/java/com/raychatter/common/exception/AnnotationHandlerExceptionResolver.java" />
<option value="$PROJECT_DIR$/src/resources/META-INF/services/error.template" />
<option value="$PROJECT_DIR$/src/java/com/raychatter/common/exception/error.template" />
<option value="$PROJECT_DIR$/src/java/com/raychatter/common/exception/CustomException.java" />
<option value="$PROJECT_DIR$/src/java/com/raychatter/common/annotation/ExceptionHandler.java" />
<option value="$PROJECT_DIR$/src/java/com/raychatter/common/exception/AnnotationHandler.java" />
<option value="$PROJECT_DIR$/src/java/com/raychatter/common/controller/HelloController.java" />
<option value="$PROJECT_DIR$/src/resources/error.template" />
<option value="$PROJECT_DIR$/src/java/com/raychatter/common/exception/MyNegativeArraySizeException.java" />
</list>
</option>
</component>
<component name="LogFilters">
<option name="FILTER_ERRORS" value="false" />
<option name="FILTER_WARNINGS" value="false" />
<option name="FILTER_INFO" value="true" />
<option name="FILTER_DEBUG" value="true" />
<option name="FILTER_INFO" value="false" />
<option name="FILTER_DEBUG" value="false" />
<option name="CUSTOM_FILTER" />
</component>
<component name="MavenImportPreferences">
@@ -120,6 +203,25 @@
<option name="width" value="1369" />
<option name="height" value="847" />
</component>
<component name="ProjectInspectionProfilesVisibleTreeState">
<entry key="Project Default">
<profile-state>
<expanded-state>
<State>
<id />
</State>
<State>
<id>JSP Inspections</id>
</State>
</expanded-state>
<selected-state>
<State>
<id>Abstraction issues</id>
</State>
</selected-state>
</profile-state>
</entry>
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" />
@@ -148,6 +250,184 @@
<sortByType />
</navigator>
<panes>
<pane id="ProjectPane">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="webapp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="WEB-INF" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="webapp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="WEB-INF" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="pages" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="resources" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="common" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="exception" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="common" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="controller" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="common" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="annotation" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="PackagesPane">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="annotationSpike" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="Scope">
<subPane subId="Project Files">
<PATH>
@@ -158,27 +438,6 @@
</PATH>
</subPane>
</pane>
<pane id="ProjectPane">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="annotationSpike" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="annotationSpike" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="SpringMVC" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="PackagesPane" />
</panes>
</component>
<component name="PropertiesComponent">
@@ -186,10 +445,11 @@
<property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.15" />
<property name="options.splitter.main.proportions" value="0.3" />
<property name="options.lastSelected" value="Errors" />
<property name="options.lastSelected" value="project.propCompiler" />
<property name="MemberChooser.sorted" value="false" />
<property name="recentsLimit" value="5" />
<property name="project.structure.side.proportion" value="0.22843823" />
<property name="GoToClass.includeJavaFiles" value="false" />
<property name="MemberChooser.copyJavadoc" value="false" />
<property name="GoToClass.toSaveIncludeLibraries" value="false" />
<property name="WebServerToolWindowFactoryState" value="false" />
@@ -203,6 +463,7 @@
<recent name="com.mkyong.common.controller" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/src/resources" />
<recent name="$PROJECT_DIR$/src" />
</key>
</component>
@@ -410,7 +671,7 @@
</component>
<component name="ToolWindowManager">
<frame x="36" y="22" width="1369" height="847" extended-state="0" />
<editor active="false" />
<editor active="true" />
<layout>
<window_info id="Data Sources" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
@@ -429,8 +690,8 @@
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.1665405" sideWeight="0.6818182" order="0" side_tool="false" content_ui="combo" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3181818" sideWeight="0.49432248" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.18016654" sideWeight="0.6831956" order="0" side_tool="false" content_ui="combo" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3168044" sideWeight="0.49432248" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3292011" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
@@ -472,7 +733,7 @@
<option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
<option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
<option name="SHOW_FILE_HISTORY_DETAILS" value="true" />
<option name="SHOW_VCS_ERROR_NOTIFICATIONS" value="true" />
<option name="SHOW_VCS_ERROR_NOTIFICATIONS" value="false" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="false" />
<option name="LAST_COMMIT_MESSAGE" />
@@ -489,6 +750,40 @@
<option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
<option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
</component>
<component name="VssConfiguration">
<option name="CLIENT_PATH" value="" />
<option name="SRCSAFEINI_PATH" value="" />
<option name="USER_NAME" value="" />
<option name="PWD" value="" />
<CheckoutOptions>
<option name="COMMENT" value="" />
<option name="DO_NOT_GET_LATEST_VERSION" value="false" />
<option name="REPLACE_WRITABLE" value="false" />
<option name="RECURSIVE" value="false" />
</CheckoutOptions>
<CheckinOptions>
<option name="COMMENT" value="" />
<option name="KEEP_CHECKED_OUT" value="false" />
<option name="RECURSIVE" value="false" />
</CheckinOptions>
<AddOptions>
<option name="STORE_ONLY_LATEST_VERSION" value="false" />
<option name="CHECK_OUT_IMMEDIATELY" value="false" />
</AddOptions>
<UndocheckoutOptions>
<option name="MAKE_WRITABLE" value="false" />
<option name="REPLACE_LOCAL_COPY" value="2" />
<option name="RECURSIVE" value="false" />
</UndocheckoutOptions>
<GetOptions>
<option name="REPLACE_WRITABLE" value="0" />
<option name="MAKE_WRITABLE" value="false" />
<option name="ANSWER_NEGATIVELY" value="false" />
<option name="ANSWER_POSITIVELY" value="false" />
<option name="RECURSIVE" value="false" />
<option name="VERSION" />
</GetOptions>
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
</component>
@@ -497,107 +792,73 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/3.1.1.RELEASE/spring-web-3.1.1.RELEASE.jar!/org/springframework/web/bind/annotation/RequestMapping.class">
<entry file="file://$PROJECT_DIR$/src/webapp/WEB-INF/pages/hello.jsp">
<provider selected="true" editor-type-id="text-editor">
<state line="11" column="27" selection-start="496" selection-end="501" vertical-scroll-proportion="0.41580042" />
<state line="3" column="13" selection-start="53" selection-end="53" vertical-scroll-proportion="0.088626295" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/SpringMVC.iml">
<entry file="file://$PROJECT_DIR$/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
<state line="6" column="28" selection-start="371" selection-end="371" vertical-scroll-proportion="0.042735044" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/resources/META-INF/services/javax.annotation.processing.Processor">
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/3.1.1.RELEASE/spring-webmvc-3.1.1.RELEASE.jar!/org/springframework/web/servlet/ModelAndView.class">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
<state line="48" column="15" selection-start="2245" selection-end="2245" vertical-scroll-proportion="-5.76">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/3.1.1.RELEASE/spring-webmvc-3.1.1.RELEASE.jar!/org/springframework/web/servlet/DispatcherServlet.class">
<provider selected="true" editor-type-id="text-editor">
<state line="106" column="18" selection-start="7034" selection-end="7034" vertical-scroll-proportion="-5.0" />
<state line="106" column="18" selection-start="7034" selection-end="7034" vertical-scroll-proportion="-4.68">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/3.1.1.RELEASE/spring-webmvc-3.1.1.RELEASE.jar!/org/springframework/web/servlet/FrameworkServlet.class">
<provider selected="true" editor-type-id="text-editor">
<state line="109" column="27" selection-start="6706" selection-end="6706" vertical-scroll-proportion="0.35466668" />
<state line="109" column="27" selection-start="6706" selection-end="6706" vertical-scroll-proportion="0.33144477">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/resources/META-INF/services/error.json.template">
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/controller/HelloController.java">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="9" selection-start="199" selection-end="199" vertical-scroll-proportion="0.58295965">
<state line="19" column="30" selection-start="731" selection-end="731" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/resources/error.json.template">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="55" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/annotation/ExceptionHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="0" selection-start="613" selection-end="613" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/exception/CustomException.java">
<provider selected="true" editor-type-id="text-editor">
<state line="7" column="63" selection-start="239" selection-end="250" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/exception/MyNegativeArraySizeException.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="4" selection-start="418" selection-end="418" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/webapp/WEB-INF/pages/hello.jsp">
<provider selected="true" editor-type-id="text-editor">
<state line="3" column="13" selection-start="53" selection-end="53" vertical-scroll-proportion="0.088626295">
<state line="6" column="43" selection-start="276" selection-end="276" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/webapp/WEB-INF/web.xml">
<provider editor-type-id="com.intellij.javaee.module.view.web.viewlets.WebModuleGeneralEditorProvider">
<state />
</provider>
<provider editor-type-id="com.intellij.javaee.module.view.web.viewlets.WebModuleAssemblyDescriptorReferencesProvider">
<state />
</provider>
<entry file="file://$PROJECT_DIR$/src/resources/error.template">
<provider selected="true" editor-type-id="text-editor">
<state line="20" column="19" selection-start="703" selection-end="703" vertical-scroll-proportion="-18.181818">
<folding />
</state>
</provider>
<provider editor-type-id="com.intellij.javaee.module.view.web.viewlets.WebModuleAssemblyDescriptorProvider">
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/controller/HelloController.java">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="13" selection-start="559" selection-end="559" vertical-scroll-proportion="0.37195995">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/annotation/SupportedExceptions.java">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="17" selection-start="359" selection-end="359" vertical-scroll-proportion="0.25751072">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/annotation/ExceptionHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="39" selection-start="652" selection-end="652" vertical-scroll-proportion="0.6008584">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/exception/CustomException.java">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="27" selection-start="473" selection-end="473" vertical-scroll-proportion="0.5555556">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state line="6" column="28" selection-start="371" selection-end="371" vertical-scroll-proportion="0.042735044">
<state line="0" column="14" selection-start="12" selection-end="14" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -607,17 +868,32 @@
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state line="22" column="7" selection-start="814" selection-end="814" vertical-scroll-proportion="0.88789237">
<state line="22" column="69" selection-start="876" selection-end="876" vertical-scroll-proportion="-12.772727">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/webapp/WEB-INF/web.xml">
<provider editor-type-id="com.intellij.javaee.module.view.web.viewlets.WebModuleAssemblyDescriptorProvider">
<state />
</provider>
<provider editor-type-id="com.intellij.javaee.module.view.web.viewlets.WebModuleGeneralEditorProvider">
<state />
</provider>
<provider editor-type-id="com.intellij.javaee.module.view.web.viewlets.WebModuleAssemblyDescriptorReferencesProvider">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state line="20" column="19" selection-start="703" selection-end="703" vertical-scroll-proportion="-8.681818">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/java/com/raychatter/common/exception/AnnotationHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="30" selection-start="510" selection-end="510" vertical-scroll-proportion="0.07692308">
<state line="45" column="22" selection-start="1949" selection-end="1949" vertical-scroll-proportion="0.9170507">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#1504#1532#0" expanded="true" />
</folding>
</state>
</provider>
@@ -645,7 +921,7 @@
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
<option value="0.22843823" />
</list>
</option>
</splitter-proportions>
@@ -682,7 +958,6 @@
<option name="proportions">
<list>
<option value="0.22843823" />
<option value="0.5" />
</list>
</option>
</splitter-proportions>
@@ -706,7 +981,7 @@
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.46909827" />
<option value="0.22843823" />
</list>
</option>
</splitter-proportions>

View File

@@ -16,6 +16,7 @@
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/resources" isTestSource="false" />

View File

@@ -19,5 +19,4 @@ import java.lang.annotation.Target;
public @interface ExceptionHandler {
HttpStatus httpStatus() default HttpStatus.OK;
String contentType();
String message() default "Oh shit!";
}

View File

@@ -1,20 +0,0 @@
package com.raychatter.common.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({
ElementType.ANNOTATION_TYPE,
ElementType.CONSTRUCTOR,
ElementType.FIELD,
ElementType.LOCAL_VARIABLE,
ElementType.METHOD,
ElementType.PARAMETER,
ElementType.TYPE})
public @interface SupportedExceptions {
Class<? extends Throwable>[] value();
}

View File

@@ -1,7 +1,5 @@
package com.raychatter.common.controller;
import com.raychatter.common.annotation.SupportedExceptions;
import com.raychatter.common.exception.CustomException;
import com.raychatter.common.exception.MyNegativeArraySizeException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
@@ -10,16 +8,15 @@ import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@SupportedExceptions(value={CustomException.class, MyNegativeArraySizeException.class})
public class HelloController {
@RequestMapping(value = "/welcome", method = RequestMethod.GET)
public void printWelcome(ModelMap model) throws Exception {
model.addAttribute("message", "Hello, World!");
throw new CustomException("It's broken!");
// throw new TypeMismatchException("message",Integer.class);
// throw new MyNegativeArraySizeException("oops");
// throw new CustomException("It's broken!");
// throw new TypeMismatchException("messageParameters",Integer.class);
throw new MyNegativeArraySizeException("oops");
}
}

View File

@@ -1,16 +1,14 @@
package com.raychatter.common.exception;
import com.raychatter.common.annotation.ExceptionHandler;
import com.raychatter.common.annotation.SupportedExceptions;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.io.InputStream;
import java.util.Scanner;
public class AnnotationHandler implements HandlerExceptionResolver {
@@ -26,36 +24,34 @@ public class AnnotationHandler implements HandlerExceptionResolver {
// handlerClass = router.getBeanType();
// }
final SupportedExceptions supportedExceptionsAnnotation = handler.getClass().getAnnotation(SupportedExceptions.class);
if (supportedExceptionsAnnotation == null) {
// TODO: test what you get in UI when you return here, also test what happens if you return 'null';
return new ModelAndView();
}
final Set<Class<? extends Throwable>> exceptions = new HashSet<Class<? extends Throwable>>();
Collections.addAll(exceptions, supportedExceptionsAnnotation.value());
if(exceptions.contains(thrownException.getClass())) {
return doStuffWithAnnotation(thrownException,response);
}
return doStuffWithAnnotation(thrownException,response);
}
private ModelAndView doStuffWithAnnotation(final Exception thrownException, final HttpServletResponse response) {
final ExceptionHandler exceptionHandlerAnnotation = thrownException.getClass().getAnnotation(ExceptionHandler.class);
if (exceptionHandlerAnnotation == null) {
// TODO: test what you get in UI when you return here, also test what happens if you return 'null';
return new ModelAndView();
}
response.setStatus(exceptionHandlerAnnotation.httpStatus().value());
return doStuffWithAnnotation(exceptionHandlerAnnotation, thrownException, response);
}
private ModelAndView doStuffWithAnnotation(final ExceptionHandler exceptionHandlerAnnotation, final Exception thrownException, final HttpServletResponse response) {
response.setContentType(exceptionHandlerAnnotation.contentType());
response.setStatus(exceptionHandlerAnnotation.httpStatus().value());
try {
response.getWriter().write(String.format(exceptionHandlerAnnotation.message(), thrownException.getMessage()));
response.getWriter().write(formatMessage(thrownException));
} catch (IOException e) {
e.printStackTrace();
}
return new ModelAndView();
}
private String formatMessage(final Exception thrownException) {
return String.format(readTemplate(), thrownException.getMessage());
}
private String readTemplate() {
final InputStream templateFile = getClass().getResourceAsStream("/error.template");
return new Scanner(templateFile, "UTF-8").useDelimiter("\\A").next().trim();
}
}

View File

@@ -5,7 +5,7 @@ package com.raychatter.common.exception;
import com.raychatter.common.annotation.ExceptionHandler;
import org.springframework.http.HttpStatus;
@ExceptionHandler(httpStatus = HttpStatus.NOT_FOUND,contentType = "text/html", message = "Custom error!")
@ExceptionHandler(httpStatus = HttpStatus.NOT_FOUND,contentType = "text/html")
public class CustomException extends Exception {
public static final String ERROR_MESSAGE = "a lot of good things";

View File

@@ -3,7 +3,7 @@ package com.raychatter.common.exception;
import com.raychatter.common.annotation.ExceptionHandler;
import org.springframework.http.HttpStatus;
@ExceptionHandler(httpStatus = HttpStatus.BAD_REQUEST,contentType = "application/JSON", message = "{\"errors\": \"%s\" }")
@ExceptionHandler(httpStatus = HttpStatus.BAD_REQUEST,contentType = "application/JSON")
public class MyNegativeArraySizeException extends NegativeArraySizeException {
public MyNegativeArraySizeException(String s) {
super(s);

View File

@@ -1 +0,0 @@
com.mkyong.common.controller.annotation.processor.ConsoleSurpriseProcessor

View File

@@ -0,0 +1 @@
{"errors": "%s"}

View File

@@ -0,0 +1,14 @@
{
"code": %d,
"error": %s,
"description": %s
}
----------------
<?xml version="1.0"?>
<error>
<code>%d</code>
<description>%s</description>
</error>
----------------
code: %d
error: %s

View File

@@ -0,0 +1 @@
{"errors": "%s"}

View File

@@ -0,0 +1,14 @@
{
"code": %d,
"error": %s,
"description": %s
}
----------------
<?xml version="1.0"?>
<error>
<code>%d</code>
<description>%s</description>
</error>
----------------
code: %d
error: %s

View File

@@ -0,0 +1 @@
{"errors": "%s"}