3030import java .util .Arrays ;
3131import java .util .Map ;
3232
33- import org .easymock .MockControl ;
33+ import org .easymock .EasyMock ;
3434import org .junit .Ignore ;
3535import org .junit .Test ;
3636import org .springframework .aop .support .AopUtils ;
4242import org .springframework .context .ApplicationContext ;
4343import org .springframework .context .support .ClassPathXmlApplicationContext ;
4444import org .springframework .core .NestedRuntimeException ;
45+ import org .springframework .core .annotation .AnnotationUtils ;
4546import org .springframework .scripting .Calculator ;
4647import org .springframework .scripting .CallCounter ;
4748import org .springframework .scripting .ConfigurableMessenger ;
5051import org .springframework .scripting .ScriptCompilationException ;
5152import org .springframework .scripting .ScriptSource ;
5253import org .springframework .scripting .support .ScriptFactoryPostProcessor ;
54+ import org .springframework .stereotype .Component ;
5355
5456/**
5557 * @author Rob Harrop
@@ -191,14 +193,11 @@ public void testScriptCompilationException() throws Exception {
191193
192194 @ Test
193195 public void testScriptedClassThatDoesNotHaveANoArgCtor () throws Exception {
194- MockControl mock = MockControl .createControl (ScriptSource .class );
195- ScriptSource script = (ScriptSource ) mock .getMock ();
196- script .getScriptAsString ();
196+ ScriptSource script = EasyMock .createMock (ScriptSource .class );
197197 final String badScript = "class Foo { public Foo(String foo) {}}" ;
198- mock .setReturnValue (badScript );
199- script .suggestedClassName ();
200- mock .setReturnValue ("someName" );
201- mock .replay ();
198+ EasyMock .expect (script .getScriptAsString ()).andReturn (badScript );
199+ EasyMock .expect (script .suggestedClassName ()).andReturn ("someName" );
200+ EasyMock .replay (script );
202201 GroovyScriptFactory factory = new GroovyScriptFactory (ScriptFactoryPostProcessor .INLINE_SCRIPT_PREFIX
203202 + badScript );
204203 try {
@@ -207,19 +206,16 @@ public void testScriptedClassThatDoesNotHaveANoArgCtor() throws Exception {
207206 } catch (ScriptCompilationException expected ) {
208207 assertTrue (expected .contains (InstantiationException .class ));
209208 }
210- mock .verify ();
209+ EasyMock .verify (script );
211210 }
212211
213212 @ Test
214213 public void testScriptedClassThatHasNoPublicNoArgCtor () throws Exception {
215- MockControl mock = MockControl .createControl (ScriptSource .class );
216- ScriptSource script = (ScriptSource ) mock .getMock ();
217- script .getScriptAsString ();
214+ ScriptSource script = EasyMock .createMock (ScriptSource .class );
218215 final String badScript = "class Foo { protected Foo() {}}" ;
219- mock .setReturnValue (badScript );
220- script .suggestedClassName ();
221- mock .setReturnValue ("someName" );
222- mock .replay ();
216+ EasyMock .expect (script .getScriptAsString ()).andReturn (badScript );
217+ EasyMock .expect (script .suggestedClassName ()).andReturn ("someName" );
218+ EasyMock .replay (script );
223219 GroovyScriptFactory factory = new GroovyScriptFactory (ScriptFactoryPostProcessor .INLINE_SCRIPT_PREFIX
224220 + badScript );
225221 try {
@@ -228,7 +224,7 @@ public void testScriptedClassThatHasNoPublicNoArgCtor() throws Exception {
228224 } catch (ScriptCompilationException expected ) {
229225 assertTrue (expected .contains (IllegalAccessException .class ));
230226 }
231- mock .verify ();
227+ EasyMock .verify (script );
232228 }
233229
234230 @ Test
@@ -240,6 +236,7 @@ public void testWithTwoClassesDefinedInTheOneGroovyFile_CorrectClassFirst() thro
240236
241237 // Check can cast to GroovyObject
242238 GroovyObject goo = (GroovyObject ) messenger ;
239+ assertNotNull (goo );
243240 }
244241
245242 @ Test
@@ -293,18 +290,15 @@ public void testWithInlineScriptWithLeadingWhitespace() throws Exception {
293290
294291 @ Test
295292 public void testGetScriptedObjectDoesNotChokeOnNullInterfacesBeingPassedIn () throws Exception {
296- MockControl mock = MockControl .createControl (ScriptSource .class );
297- ScriptSource scriptSource = (ScriptSource ) mock .getMock ();
298- scriptSource .getScriptAsString ();
299- mock .setReturnValue ("class Bar {}" );
300- scriptSource .suggestedClassName ();
301- mock .setReturnValue ("someName" );
302- mock .replay ();
293+ ScriptSource script = EasyMock .createMock (ScriptSource .class );
294+ EasyMock .expect (script .getScriptAsString ()).andReturn ("class Bar {}" );
295+ EasyMock .expect (script .suggestedClassName ()).andReturn ("someName" );
296+ EasyMock .replay (script );
303297
304298 GroovyScriptFactory factory = new GroovyScriptFactory ("a script source locator (doesn't matter here)" );
305- Object scriptedObject = factory .getScriptedObject (scriptSource , null );
299+ Object scriptedObject = factory .getScriptedObject (script , null );
306300 assertNotNull (scriptedObject );
307- mock .verify ();
301+ EasyMock .verify (script );
308302 }
309303
310304 @ Test
@@ -390,6 +384,9 @@ public void testRefreshableFromTagProxyTargetClass() throws Exception {
390384 assertEquals ("Hello World!" , messenger .getMessage ());
391385
392386 assertTrue (ctx .getBeansOfType (ConcreteMessenger .class ).values ().contains (messenger ));
387+
388+ // Check that AnnotationUtils works with concrete proxied script classes
389+ assertNotNull (AnnotationUtils .findAnnotation (messenger .getClass (), Component .class ));
393390 }
394391
395392 @ Test
0 commit comments