Skip to content

Commit 8e35734

Browse files
author
David Syer
committed
SPR-6268: check AnnotationUtils works with Groovy concrete classes (plus remove compiler warnings)
1 parent e5eceaf commit 8e35734

File tree

2 files changed

+25
-26
lines changed

2 files changed

+25
-26
lines changed

org.springframework.context/src/test/java/org/springframework/scripting/groovy/GroovyScriptFactoryTests.java

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import java.util.Arrays;
3131
import java.util.Map;
3232

33-
import org.easymock.MockControl;
33+
import org.easymock.EasyMock;
3434
import org.junit.Ignore;
3535
import org.junit.Test;
3636
import org.springframework.aop.support.AopUtils;
@@ -42,6 +42,7 @@
4242
import org.springframework.context.ApplicationContext;
4343
import org.springframework.context.support.ClassPathXmlApplicationContext;
4444
import org.springframework.core.NestedRuntimeException;
45+
import org.springframework.core.annotation.AnnotationUtils;
4546
import org.springframework.scripting.Calculator;
4647
import org.springframework.scripting.CallCounter;
4748
import org.springframework.scripting.ConfigurableMessenger;
@@ -50,6 +51,7 @@
5051
import org.springframework.scripting.ScriptCompilationException;
5152
import org.springframework.scripting.ScriptSource;
5253
import 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
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.springframework.scripting.groovy;
22

33
import org.springframework.scripting.ConfigurableMessenger
4+
import org.springframework.stereotype.Component;
45

6+
@Component
57
class GroovyMessenger extends ConcreteMessenger {
68
}

0 commit comments

Comments
 (0)