Commits

Anonymous committed 6b63198

Slightly better exception reporting for methods that can't be found.

Comments (0)

Files changed (9)

   </component>
   <component name="ChangeListManager">
     <list default="true" name="Default" comment="">
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/test/java/org/ognl/test/PropertyArithmeticAndLogicalOperatorsTest.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/test/java/org/ognl/test/objects/SimpleNumeric.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/java/ognl/enhance/ExpressionCompiler.java" afterPath="$PROJECT_DIR$/src/java/ognl/enhance/ExpressionCompiler.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/test/java/org/ognl/test/objects/ListSource.java" afterPath="$PROJECT_DIR$/src/test/java/org/ognl/test/objects/ListSource.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/test/java/ognl/TestOgnlRuntime.java" afterPath="$PROJECT_DIR$/src/test/java/ognl/TestOgnlRuntime.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/java/ognl/ObjectMethodAccessor.java" afterPath="$PROJECT_DIR$/src/java/ognl/ObjectMethodAccessor.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/test/java/org/ognl/test/objects/ListSourceImpl.java" afterPath="$PROJECT_DIR$/src/test/java/org/ognl/test/objects/ListSourceImpl.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/test/java/org/ognl/test/MethodTest.java" afterPath="$PROJECT_DIR$/src/test/java/org/ognl/test/MethodTest.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/OGNL.iws" afterPath="$PROJECT_DIR$/OGNL.iws" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/java/ognl/NumericExpression.java" afterPath="$PROJECT_DIR$/src/java/ognl/NumericExpression.java" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/src/test/java/org/ognl/test/PropertyArithmeticTest.java" afterPath="" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/java/ognl/OgnlRuntime.java" afterPath="$PROJECT_DIR$/src/java/ognl/OgnlRuntime.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/java/ognl/ASTMethod.java" afterPath="$PROJECT_DIR$/src/java/ognl/ASTMethod.java" />
     </list>
   </component>
   <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
     </subPane>
   </component>
   <component name="FileEditorManager">
-    <leaf>
-      <file leaf-file-name="NumericExpression.java" pinned="false" current="true" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/src/java/ognl/NumericExpression.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state line="85" column="0" selection-start="2383" selection-end="2383" vertical-scroll-proportion="0.8239732">
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="ExpressionCompiler.java" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/java/ognl/enhance/ExpressionCompiler.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state line="542" column="11" selection-start="19706" selection-end="19706" vertical-scroll-proportion="0.24140821">
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-    </leaf>
+    <leaf />
   </component>
   <component name="FindManager">
     <FindUsagesManager>
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
       </PATH>
-      <PATH>
-        <PATH_ELEMENT>
-          <option name="myItemId" value="OGNL" />
-          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-        </PATH_ELEMENT>
-        <PATH_ELEMENT>
-          <option name="myItemId" value="OGNL" />
-          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
-        </PATH_ELEMENT>
-        <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$" />
-          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-        </PATH_ELEMENT>
-        <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src" />
-          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-        </PATH_ELEMENT>
-        <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test" />
-          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-        </PATH_ELEMENT>
-        <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test/java" />
-          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-        </PATH_ELEMENT>
-      </PATH>
-      <PATH>
-        <PATH_ELEMENT>
-          <option name="myItemId" value="OGNL" />
-          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
-        </PATH_ELEMENT>
-        <PATH_ELEMENT>
-          <option name="myItemId" value="OGNL" />
-          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
-        </PATH_ELEMENT>
-        <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$" />
-          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-        </PATH_ELEMENT>
-        <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src" />
-          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
-        </PATH_ELEMENT>
-      </PATH>
     </subPane>
   </component>
   <component name="ProjectReloadState">
       <showLibraryContents />
       <hideEmptyPackages />
       <abbreviatePackageNames />
-      <showStructure Favorites="false" Scope="false" PackagesPane="false" ProjectPane="false" />
+      <showStructure PackagesPane="false" Scope="false" Favorites="false" ProjectPane="false" />
       <autoscrollToSource />
       <autoscrollFromSource />
       <sortByType />
     <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_flatWidth0" value="284" />
     <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_flatWidth3" value="35" />
     <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_flatWidth2" value="304" />
+    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_flatOrder1" value="1" />
     <property name="cvs_file_history_treeOrder2" value="2" />
-    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_flatOrder1" value="1" />
     <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_flatOrder0" value="0" />
     <property name="cvs_file_history_treeOrder1" value="1" />
     <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_flatOrder3" value="3" />
     <property name="last_opened_file_path" value="$USERPROFILE$/projects/tapestry/tapestry-framework/src/java/org/apache/tapestry/services/impl" />
     <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_treeWidth0" value="243" />
     <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_treeWidth4" value="1042" />
+    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_treeWidth3" value="243" />
     <property name="GoToClass.includeJavaFiles" value="false" />
-    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_treeWidth3" value="243" />
     <property name="GoToClass.toSaveIncludeLibraries" value="false" />
     <property name="cvs_file_history_treeWidth0" value="503" />
     <property name="cvs_file_history_treeWidth1" value="503" />
     <property name="cvs_file_history_treeWidth2" value="504" />
+    <property name="cvs_file_history_flatWidth2" value="504" />
     <property name="cvs_file_history_treeWidth3" value="503" />
-    <property name="cvs_file_history_flatWidth2" value="504" />
+    <property name="cvs_file_history_flatWidth3" value="503" />
     <property name="cvs_file_history_treeOrder0" value="0" />
-    <property name="cvs_file_history_flatWidth3" value="503" />
     <property name="MemberChooser.showClasses" value="true" />
+    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_flatWidth4" value="1098" />
     <property name="cvs_file_history_flatWidth0" value="503" />
-    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_flatWidth4" value="1098" />
     <property name="cvs_file_history_flatWidth1" value="503" />
     <property name="GoToClass.includeLibraries" value="false" />
     <property name="GoToFile.includeJavaFiles" value="false" />
     <property name="RunManagerConfig.compileBeforeRunning" value="true" />
+    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_treeOrder3" value="3" />
     <property name="cvs_file_history_flatOrder2" value="2" />
-    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_treeOrder3" value="3" />
+    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_treeOrder4" value="4" />
     <property name="cvs_file_history_flatOrder3" value="3" />
-    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_treeOrder4" value="4" />
+    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_treeOrder1" value="1" />
     <property name="cvs_file_history_flatOrder0" value="0" />
-    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_treeOrder1" value="1" />
+    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_treeOrder2" value="2" />
     <property name="cvs_file_history_flatOrder1" value="1" />
-    <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_treeOrder2" value="2" />
     <property name="FileHistory.org.jetbrains.idea.svn.history.SvnHistoryProvider_treeOrder0" value="0" />
     <property name="MemberChooser.copyJavadoc" value="false" />
   </component>
     <option name="referencePos" value="0" />
     <option name="showLabels" value="true" />
   </component>
-  <component name="RestoreUpdateTree">
-    <UpdateInfo date="7/22/07 3:12 PM" ActionInfo="_Update">
-      <UpdatedFiles>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Updated from server" />
-          <option name="myStatusName" value="Changed on server" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="CHANGED_ON_SERVER" />
-          <FILE-GROUP>
-            <option name="myUpdateName" value="Updated" />
-            <option name="myStatusName" value="Changed" />
-            <option name="mySupportsDeletion" value="false" />
-            <option name="myCanBeAbsent" value="false" />
-            <option name="myId" value="UPDATED" />
-          </FILE-GROUP>
-          <FILE-GROUP>
-            <option name="myUpdateName" value="Created" />
-            <option name="myStatusName" value="Created" />
-            <option name="mySupportsDeletion" value="false" />
-            <option name="myCanBeAbsent" value="false" />
-            <option name="myId" value="CREATED" />
-          </FILE-GROUP>
-          <FILE-GROUP>
-            <option name="myUpdateName" value="Deleted" />
-            <option name="myStatusName" value="Deleted" />
-            <option name="mySupportsDeletion" value="false" />
-            <option name="myCanBeAbsent" value="true" />
-            <option name="myId" value="REMOVED_FROM_REPOSITORY" />
-          </FILE-GROUP>
-          <FILE-GROUP>
-            <option name="myUpdateName" value="Restored" />
-            <option name="myStatusName" value="Will be restored" />
-            <option name="mySupportsDeletion" value="false" />
-            <option name="myCanBeAbsent" value="false" />
-            <option name="myId" value="RESTORED" />
-          </FILE-GROUP>
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Modified" />
-          <option name="myStatusName" value="Modified" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="MODIFIED" />
-          <PATH>$PROJECT_DIR$/OGNL.iws</PATH>
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Skipped" />
-          <option name="myStatusName" value="Skipped" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="SKIPPED" />
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Merged with conflicts" />
-          <option name="myStatusName" value="Will be merged with conflicts" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="MERGED_WITH_CONFLICTS" />
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Merged" />
-          <option name="myStatusName" value="Will be merged" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="MERGED" />
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Not in repository" />
-          <option name="myStatusName" value="Not in repository" />
-          <option name="mySupportsDeletion" value="true" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="UNKNOWN" />
-          <PATH>$PROJECT_DIR$/dist</PATH>
-          <PATH>$PROJECT_DIR$/extlib</PATH>
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Locally added" />
-          <option name="myStatusName" value="Locally added" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="LOCALLY_ADDED" />
-        </FILE-GROUP>
-        <FILE-GROUP>
-          <option name="myUpdateName" value="Locally removed" />
-          <option name="myStatusName" value="Locally removed" />
-          <option name="mySupportsDeletion" value="false" />
-          <option name="myCanBeAbsent" value="false" />
-          <option name="myId" value="LOCALLY_REMOVED" />
-        </FILE-GROUP>
-      </UpdatedFiles>
-    </UpdateInfo>
-  </component>
-  <component name="RunManager" selected="JUnit.ArithmeticAndLogicalOperatorsTest">
-    <tempConfiguration default="false" name="ArithmeticAndLogicalOperatorsTest" type="JUnit" factoryName="JUnit" enabled="false" merge="false">
+  <component name="RunManager" selected="JUnit.MethodTest">
+    <tempConfiguration default="false" name="MethodTest" type="JUnit" factoryName="JUnit" enabled="false" merge="false">
       <pattern value="org.ognl.test.*" />
       <module name="OGNL" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
       <option name="ALTERNATIVE_JRE_PATH" value="/usr/local/jdk1.6.0_02" />
       <option name="PACKAGE_NAME" value="org.ognl.test" />
-      <option name="MAIN_CLASS_NAME" value="org.ognl.test.ArithmeticAndLogicalOperatorsTest" />
+      <option name="MAIN_CLASS_NAME" value="org.ognl.test.MethodTest" />
       <option name="METHOD_NAME" value="" />
       <option name="TEST_OBJECT" value="class" />
       <option name="VM_PARAMETERS" value="" />
         <option name="Make" value="true" />
       </method>
     </tempConfiguration>
-    <configuration default="true" type="TestNG" factoryName="TestNG" enabled="false" merge="false">
-      <module name="" />
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
-      <option name="ALTERNATIVE_JRE_PATH" value="" />
-      <option name="SUITE_NAME" value="" />
-      <option name="PACKAGE_NAME" />
-      <option name="MAIN_CLASS_NAME" value="" />
-      <option name="METHOD_NAME" />
-      <option name="GROUP_NAME" value="" />
-      <option name="TEST_OBJECT" value="CLASS" />
-      <option name="VM_PARAMETERS" value="" />
-      <option name="PARAMETERS" value="" />
-      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/build" />
-      <option name="OUTPUT_DIRECTORY" value="" />
-      <option name="ENV_VARIABLES" />
-      <option name="ADDITIONAL_CLASS_PATH" />
-      <option name="TEST_SEARCH_SCOPE">
-        <value defaultName="singleModule" />
-      </option>
-      <option name="PROPERTIES_FILE" value="" />
-      <properties />
-      <method>
-        <option name="Make" value="true" />
-      </method>
-    </configuration>
     <configuration default="true" type="Remote" factoryName="Remote">
       <option name="USE_SOCKET_TRANSPORT" value="true" />
       <option name="SERVER_MODE" value="false" />
         <option name="Make" value="true" />
       </method>
     </configuration>
+    <configuration default="true" type="TestNG" factoryName="TestNG" enabled="false" merge="false">
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" value="" />
+      <option name="SUITE_NAME" value="" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" value="" />
+      <option name="METHOD_NAME" />
+      <option name="GROUP_NAME" value="" />
+      <option name="TEST_OBJECT" value="CLASS" />
+      <option name="VM_PARAMETERS" value="" />
+      <option name="PARAMETERS" value="" />
+      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/build" />
+      <option name="OUTPUT_DIRECTORY" value="" />
+      <option name="ENV_VARIABLES" />
+      <option name="ADDITIONAL_CLASS_PATH" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <option name="PROPERTIES_FILE" value="" />
+      <properties />
+      <method>
+        <option name="Make" value="true" />
+      </method>
+    </configuration>
     <configuration default="true" type="Applet" factoryName="Applet">
       <module name="" />
       <option name="MAIN_CLASS_NAME" />
     <option name="PERFORM_EDIT_IN_BACKGROUND" value="true" />
     <option name="PERFORM_ADD_REMOVE_IN_BACKGROUND" value="true" />
     <option name="FORCE_NON_EMPTY_COMMENT" value="false" />
-    <option name="LAST_COMMIT_MESSAGE" value="Fixes OGNL-110.  Numeric literals were being added to non literal expressions. (such as property getters)" />
+    <option name="LAST_COMMIT_MESSAGE" value="Slightly better exception reporting for methods that can't be found." />
     <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
     <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
     <option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
     <option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
     <option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
     <option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
-    <MESSAGE value="Fixes OGNL-89.  ASTCtor was calling ExpressionCompiler.getRootExpression() on child expression of ASTRootVarRef - which was also doing the same exact thing on itself." />
     <MESSAGE value="Fixes OGNL-91. God that bug sucked ass.... Finally did numeric coercion refactoring whether I liked it or not." />
     <MESSAGE value="Implemented ability to register a special class cache listener class to OgnlRuntime which makes it possible to prevent reflection caching of specific class types." />
     <MESSAGE value="Fixes OGNL-93.  ExpressionCompiler.castExpression wasn't checking for ASTStaticMethod expression types." />
     <MESSAGE value="Fixes OGNL-106.  Wasn't checking for null in ASTMethod.&#10;&#10;Also refactored exception catching logic so that more exceptions aren't needlessly added on to the exception stack when catching Throwables." />
     <MESSAGE value="Fixes OGNL-108. ASTInstanceof wasn't setting the context type before returning." />
     <MESSAGE value="Fixes OGNL-110.  Numeric literals were being added to non literal expressions. (such as property getters)" />
+    <MESSAGE value="Slightly better exception reporting for methods that can't be found." />
   </component>
   <component name="VssConfiguration">
     <option name="CLIENT_PATH" value="" />
     <option name="myLastEditedConfigurable" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/pom.xml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="41" column="35" selection-start="1358" selection-end="1358" vertical-scroll-proportion="0.4524618">
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/java/org/ognl/test/Performance.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="327" column="24" selection-start="12914" selection-end="12914" vertical-scroll-proportion="0.3202012">
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/java/org/ognl/test/objects/Root.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="487" column="21" selection-start="11490" selection-end="11490" vertical-scroll-proportion="0.64794636">
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/java/org/ognl/test/objects/TestModel.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="20" column="5" selection-start="288" selection-end="288" vertical-scroll-proportion="0.2514669">
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/java/ognl/ASTProject.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="42" column="6" selection-start="1986" selection-end="1986" vertical-scroll-proportion="0.15957446">
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/java/ognl/ASTProperty.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="46" column="43" selection-start="2191" selection-end="2191" vertical-scroll-proportion="0.19503546">
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/java/ognl/enhance/EnhancedClassLoader.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="32" column="13" selection-start="1784" selection-end="1784" vertical-scroll-proportion="0.05319149">
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/java/org/ognl/test/objects/SimpleNumeric.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="17" column="0" selection-start="280" selection-end="280" vertical-scroll-proportion="0.21374686">
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/java/ognl/ExpressionNode.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="138" column="45" selection-start="5259" selection-end="5259" vertical-scroll-proportion="0.53125">
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/java/ognl/OgnlOps.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="935" column="41" selection-start="33957" selection-end="33957" vertical-scroll-proportion="0.5673077">
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/test/java/org/ognl/test/ArithmeticAndLogicalOperatorsTest.java">
       <provider selected="true" editor-type-id="text-editor">
         <state line="103" column="44" selection-start="4554" selection-end="4554" vertical-scroll-proportion="0.49036044">
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/ognl/NumericExpression.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="51" column="67" selection-start="1080" selection-end="1080" vertical-scroll-proportion="0.6160939">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/test/java/org/ognl/test/objects/Component.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="51" column="0" selection-start="2270" selection-end="2270" vertical-scroll-proportion="0.2766136">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/test/java/org/ognl/test/objects/Simple.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="66" column="5" selection-start="2597" selection-end="2597" vertical-scroll-proportion="0.40234703">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/test/java/org/ognl/test/objects/ListSource.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="11" column="28" selection-start="173" selection-end="173" vertical-scroll-proportion="0.1383068">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/test/java/org/ognl/test/objects/ListSourceImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="19" column="5" selection-start="298" selection-end="298" vertical-scroll-proportion="0.34254807">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/ognl/MethodAccessor.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="41" column="27" selection-start="2110" selection-end="2124" vertical-scroll-proportion="0.15088013">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar:///usr/local/jdk1.6.0_02/src.zip!/java/lang/NoSuchMethodException.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="24" column="0" selection-start="553" selection-end="553" vertical-scroll-proportion="0.23889354">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/java/ognl/ObjectMethodAccessor.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="67" column="79" selection-start="3090" selection-end="3090" vertical-scroll-proportion="0.46521375">
+          <folding />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/src/java/ognl/OgnlRuntime.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="2200" column="0" selection-start="82317" selection-end="82317" vertical-scroll-proportion="0.28248113">
+        <state line="1009" column="0" selection-start="35870" selection-end="35870" vertical-scroll-proportion="0.056160938">
           <folding />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/src/java/ognl/enhance/ExpressionCompiler.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="542" column="11" selection-start="19706" selection-end="19706" vertical-scroll-proportion="0.24140821">
+        <state line="542" column="32" selection-start="19727" selection-end="19727" vertical-scroll-proportion="0.2372171">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/java/ognl/NumericExpression.java">
+    <entry file="file://$PROJECT_DIR$/src/java/ognl/ASTMethod.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="85" column="0" selection-start="2383" selection-end="2383" vertical-scroll-proportion="0.8239732">
+        <state line="89" column="12" selection-start="3042" selection-end="3042" vertical-scroll-proportion="0.44006705">
           <folding />
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/src/test/java/ognl/TestOgnlRuntime.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="81" column="8" selection-start="2213" selection-end="2213" vertical-scroll-proportion="0.40905282">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/test/java/org/ognl/test/MethodTest.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="37" column="13" selection-start="1920" selection-end="1920" vertical-scroll-proportion="0.10058676">
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
   </component>
   <component name="testng.defaultConfiguration">
     <outputDirectory />

src/java/ognl/ASTMethod.java

             
             result = OgnlRuntime.callMethod(context, source, _methodName, null, args);
             
-            if (result == null) {
-
+            if (result == null)
+            {
                 NullHandler nh = OgnlRuntime.getNullHandler(OgnlRuntime.getTargetClass(source));
                 result = nh.nullMethodResult(context, source, _methodName, args);
             }
 
             return result;
+            
         } finally {
             OgnlRuntime.getObjectArrayPool().recycle(args);
         }

src/java/ognl/ObjectMethodAccessor.java

 /**
  * Implementation of PropertyAccessor that uses reflection on the target object's class to find a
  * field or a pair of set/get methods with the given property name.
- * 
+ *
  * @author Luke Blanshard (blanshlu@netscape.net)
  * @author Drew Davidson (drew@ognl.org)
  */
 
     /* MethodAccessor interface */
     public Object callStaticMethod(Map context, Class targetClass, String methodName, Object[] args)
-        throws MethodFailedException
+            throws MethodFailedException
     {
         List methods = OgnlRuntime.getMethods(targetClass, methodName, true);
-        
-        return OgnlRuntime.callAppropriateMethod((OgnlContext) context, targetClass, 
-                null, methodName, null, methods, args);
+
+        return OgnlRuntime.callAppropriateMethod((OgnlContext) context, targetClass,
+                                                 null, methodName, null, methods, args);
     }
-    
+
     public Object callMethod(Map context, Object target, String methodName, Object[] args)
-        throws MethodFailedException
+            throws MethodFailedException
     {
         Class targetClass = (target == null) ? null : target.getClass();
         List methods = OgnlRuntime.getMethods(targetClass, methodName, false);
-        
-        if ((methods == null) || (methods.size() == 0)) {
-            
+
+        if ((methods == null) || (methods.size() == 0))
+        {
             methods = OgnlRuntime.getMethods(targetClass, methodName, true);
-            
+
         }
-        
-        return OgnlRuntime.callAppropriateMethod((OgnlContext) context, target, 
-                target, methodName, null, methods, args);
+
+        return OgnlRuntime.callAppropriateMethod((OgnlContext) context, target,
+                                                 target, methodName, null, methods, args);
     }
 }

src/java/ognl/OgnlRuntime.java

         Method result = null;
         Class[] resultParameterTypes = null;
 
-        if (methods != null) {
-            for (int i = 0, icount = methods.size(); i < icount; i++) {
+        if (methods != null)
+        {
+            for (int i = 0, icount = methods.size(); i < icount; i++)
+            {
                 Method m = (Method) methods.get(i);
                 Class[] mParameterTypes = getParameterTypes(m);
 
                 if (areArgsCompatible(args, mParameterTypes)
-                    && ((result == null) || isMoreSpecific(mParameterTypes, resultParameterTypes))) {
+                    && ((result == null) || isMoreSpecific(mParameterTypes, resultParameterTypes)))
+                {
                     result = m;
                     resultParameterTypes = mParameterTypes;
                     System.arraycopy(args, 0, actualArgs, 0, args.length);
-                    for (int j = 0; j < mParameterTypes.length; j++) {
+
+                    for (int j = 0; j < mParameterTypes.length; j++)
+                    {
                         Class type = mParameterTypes[j];
 
-                        if (type.isPrimitive() && (actualArgs[j] == null)) {
+                        if (type.isPrimitive() && (actualArgs[j] == null))
+                        {
                             actualArgs[j] = getConvertedType(context, source, result, propertyName, null, type);
                         }
                     }
                 }
             }
         }
-        if (result == null) {
+
+        if (result == null)
+        {
             result = getConvertedMethodAndArgs(context, target, propertyName, methods, args, actualArgs);
         }
+        
         return result;
     }
 
         Object[] actualArgs = _objectArrayPool.create(args.length);
 
         try {
-            Method method = getAppropriateMethod(context, source, target, methodName, propertyName, methods, args,
-                                                 actualArgs);
+            Method method = getAppropriateMethod(context, source, target, methodName,
+                                                 propertyName, methods, args, actualArgs);
 
-            if ((method == null) || !isMethodAccessible(context, source, method, propertyName)) {
+            if ((method == null) || !isMethodAccessible(context, source, method, propertyName))
+            {
                 StringBuffer buffer = new StringBuffer();
+                String className = "";
 
-                for (int i = 0, ilast = args.length - 1; i <= ilast; i++) {
+                if (target != null)
+                {
+                    className = target.getClass().getName() + ".";
+                }
+
+                for (int i = 0, ilast = args.length - 1; i <= ilast; i++)
+                {
                     Object arg = args[i];
-
+                    
                     buffer.append((arg == null) ? NULL_STRING : arg.getClass().getName());
-                    if (i < ilast) {
+                    if (i < ilast)
+                    {
                         buffer.append(", ");
                     }
                 }
 
-                throw new NoSuchMethodException(methodName + "(" + buffer + ")");
+                throw new NoSuchMethodException(className + methodName + "(" + buffer + ")");
             }
+            
             return invokeMethod(target, method, actualArgs);
+            
         } catch (NoSuchMethodException e) {
             reason = e;
         } catch (IllegalAccessException e) {
         } finally {
             _objectArrayPool.recycle(actualArgs);
         }
+        
         throw new MethodFailedException(source, methodName, reason);
     }
 

src/test/java/ognl/TestOgnlRuntime.java

         assertEquals("isDisabled", m.getName());
     }
 
+    public void test_Get_Appropriate_Method()
+            throws Exception
+    {
+        ListSource list = new ListSourceImpl();
+        OgnlContext context = (OgnlContext) Ognl.createDefaultContext(null);
+
+        Object ret = OgnlRuntime.callMethod(context, list, "addValue", null, new String[] {null});
+        
+        assert ret != null;
+    }
+
     public void test_Call_Static_Method_Invalid_Class()
     {
 

src/test/java/org/ognl/test/MethodTest.java

 package org.ognl.test;
 
 import junit.framework.TestSuite;
+import org.ognl.test.objects.ListSource;
+import org.ognl.test.objects.ListSourceImpl;
 import org.ognl.test.objects.Simple;
 
 public class MethodTest extends OgnlTestCase
 {
 
     private static Simple ROOT = new Simple();
+    private static ListSource LIST = new ListSourceImpl();
 
     private static Object[][] TESTS = {
             { "hashCode()", new Integer(ROOT.hashCode()) } ,
             { "@org.ognl.test.MethodTest@getA().isProperty()", Boolean.FALSE},
             { "isDisabled()", Boolean.TRUE},
             { "isEditorDisabled()", Boolean.FALSE},
+            { LIST, "addValue(name)", Boolean.TRUE},
     };
 
     public static class A
         TestSuite result = new TestSuite();
 
         for(int i = 0; i < TESTS.length; i++) {
-            result.addTest(new MethodTest((String) TESTS[i][0] + " (" + TESTS[i][1] + ")", ROOT, (String) TESTS[i][0], TESTS[i][1]));
+            if (TESTS[i].length == 3)
+            {
+                result.addTest(new MethodTest((String) TESTS[i][1] + " (" + TESTS[i][2] + ")", TESTS[i][0], (String) TESTS[i][1], TESTS[i][2]));
+            } else
+            {
+                result.addTest(new MethodTest((String) TESTS[i][0] + " (" + TESTS[i][1] + ")", ROOT, (String) TESTS[i][0], TESTS[i][1]));
+            }
         }
         return result;
     }

src/test/java/org/ognl/test/PropertyArithmeticTest.java

-package org.ognl.test;
-
-import junit.framework.TestSuite;
-import org.ognl.test.objects.Root;
-import org.ognl.test.objects.TestModel;
-
-import java.util.Arrays;
-
-/**
- *
- */
-public class PropertyArithmeticTest extends OgnlTestCase {
-
-    private static Root ROOT = new Root();
-    private static TestModel MODEL = new TestModel();
-    
-    private static Object[][] TESTS = {
-            { ROOT, "objectIndex > 0", Boolean.TRUE},
-            { ROOT, "false", Boolean.FALSE},
-            { ROOT, "!false || true", Boolean.TRUE},
-            { ROOT, "property.bean3.value >= 24", Boolean.TRUE},
-            { ROOT, "genericIndex-1", new Integer(1)},
-            { ROOT, "((renderNavigation ? 0 : 1) + map.size) * theInt", new Integer(((ROOT.getRenderNavigation() ? 0 : 1 ) + ROOT.getMap().size()) * ROOT.getTheInt())},
-            { ROOT, "{theInt + 1}", Arrays.asList(new Integer(ROOT.getTheInt() + 1)) },
-            { MODEL, "(unassignedCopyModel.optionCount > 0 && canApproveCopy) || entry.copy.size() > 0", Boolean.TRUE },
-            { ROOT, " !(printDelivery || @Boolean@FALSE)", Boolean.FALSE},
-            { ROOT, "(getIndexedProperty('nested').size - 1) > genericIndex", Boolean.FALSE},
-            { ROOT, "(getIndexedProperty('nested').size + 1) >= genericIndex", Boolean.TRUE},
-            { ROOT, "(getIndexedProperty('nested').size + 1) == genericIndex", Boolean.TRUE},
-            { ROOT, "(getIndexedProperty('nested').size + 1) < genericIndex", Boolean.FALSE},
-            { ROOT, "map.size * genericIndex", new Integer(ROOT.getMap().size() * ((Integer)ROOT.getGenericIndex()).intValue())},
-            { ROOT, "property == property", Boolean.TRUE},
-            { ROOT, "property.bean3.value % 2 == 0", Boolean.TRUE},
-            { ROOT, "genericIndex % 3 == 0", Boolean.FALSE},
-            { ROOT, "genericIndex % theInt == property.bean3.value", Boolean.FALSE},
-            { ROOT, "theInt / 100.0", ROOT.getTheInt() / 100.0},
-            { ROOT, "@java.lang.Long@valueOf('100') == @java.lang.Long@valueOf('100')", Boolean.TRUE}
-    };
-
-    public static TestSuite suite()
-    {
-        TestSuite       result = new TestSuite();
-
-        for (int i = 0; i < TESTS.length; i++) {
-
-            if (TESTS[i].length == 5) {
-
-                result.addTest(new PropertyArithmeticTest((String)TESTS[i][1], TESTS[i][0], (String)TESTS[i][1], TESTS[i][2], TESTS[i][3], TESTS[i][4]));
-            } else
-                result.addTest(new PropertyArithmeticTest((String)TESTS[i][1], TESTS[i][0], (String)TESTS[i][1], TESTS[i][2]));
-        }
-
-        return result;
-    }
-
-    /*===================================================================
-         Constructors
-       ===================================================================*/
-    public PropertyArithmeticTest()
-    {
-        super();
-    }
-
-    public PropertyArithmeticTest(String name)
-    {
-        super(name);
-    }
-
-    public PropertyArithmeticTest(String name, Object root, String expressionString, Object expectedResult, Object setValue, Object expectedAfterSetResult)
-    {
-        super(name, root, expressionString, expectedResult, setValue, expectedAfterSetResult);
-    }
-
-    public PropertyArithmeticTest(String name, Object root, String expressionString, Object expectedResult, Object setValue)
-    {
-        super(name, root, expressionString, expectedResult, setValue);
-    }
-
-    public PropertyArithmeticTest(String name, Object root, String expressionString, Object expectedResult)
-    {
-        super(name, root, expressionString, expectedResult);
-    }
-}

src/test/java/org/ognl/test/objects/ListSource.java

     public int getTotal();
 
     public Object addValue(Object value);
+
+    public Object getName();
 }

src/test/java/org/ognl/test/objects/ListSourceImpl.java

     {
         return super.add(value);
     }
+
+    public Object getName()
+    {
+        return null;
+    }
 }