11 changed files with 308 additions and 230 deletions
@ -0,0 +1,56 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2002-2018 the original author or authors. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.springframework.aop.aspectj; |
||||||
|
|
||||||
|
/** |
||||||
|
* A simple counter for use in simple tests (for example, how many times an advice was executed) |
||||||
|
* |
||||||
|
* @author Ramnivas Laddad |
||||||
|
*/ |
||||||
|
final class Counter implements ICounter { |
||||||
|
|
||||||
|
private int count; |
||||||
|
|
||||||
|
public Counter() { |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void increment() { |
||||||
|
count++; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void decrement() { |
||||||
|
count--; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getCount() { |
||||||
|
return count; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setCount(int counter) { |
||||||
|
this.count = counter; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void reset() { |
||||||
|
this.count = 0; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2002-2018 the original author or authors. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.springframework.aop.aspectj; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Ramnivas Laddad |
||||||
|
*/ |
||||||
|
interface ICounter { |
||||||
|
|
||||||
|
void increment(); |
||||||
|
|
||||||
|
void decrement(); |
||||||
|
|
||||||
|
int getCount(); |
||||||
|
|
||||||
|
void setCount(int counter); |
||||||
|
|
||||||
|
void reset(); |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,33 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2002-2018 the original author or authors. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.springframework.aop.aspectj.autoproxy; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Adrian Colyer |
||||||
|
* @since 2.0 |
||||||
|
*/ |
||||||
|
interface AnnotatedTestBean { |
||||||
|
|
||||||
|
String doThis(); |
||||||
|
|
||||||
|
String doThat(); |
||||||
|
|
||||||
|
String doTheOther(); |
||||||
|
|
||||||
|
String[] doArray(); |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,49 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2002-2018 the original author or authors. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.springframework.aop.aspectj.autoproxy; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Adrian Colyer |
||||||
|
* @since 2.0 |
||||||
|
*/ |
||||||
|
class AnnotatedTestBeanImpl implements AnnotatedTestBean { |
||||||
|
|
||||||
|
@Override |
||||||
|
@TestAnnotation("this value") |
||||||
|
public String doThis() { |
||||||
|
return "doThis"; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
@TestAnnotation("that value") |
||||||
|
public String doThat() { |
||||||
|
return "doThat"; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
@TestAnnotation("array value") |
||||||
|
public String[] doArray() { |
||||||
|
return new String[] {"doThis", "doThat"}; |
||||||
|
} |
||||||
|
|
||||||
|
// not annotated
|
||||||
|
@Override |
||||||
|
public String doTheOther() { |
||||||
|
return "doTheOther"; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2002-2018 the original author or authors. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.springframework.aop.aspectj.autoproxy; |
||||||
|
|
||||||
|
import org.aspectj.lang.ProceedingJoinPoint; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Adrian Colyer |
||||||
|
*/ |
||||||
|
class AnnotationBindingTestAspect { |
||||||
|
|
||||||
|
public String doWithAnnotation(ProceedingJoinPoint pjp, TestAnnotation testAnnotation) throws Throwable { |
||||||
|
return testAnnotation.value(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,29 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2002-2018 the original author or authors. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.springframework.aop.aspectj.autoproxy; |
||||||
|
|
||||||
|
import java.lang.annotation.Retention; |
||||||
|
import java.lang.annotation.RetentionPolicy; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Adrian Colyer |
||||||
|
* @since 2.0 |
||||||
|
*/ |
||||||
|
@Retention(RetentionPolicy.RUNTIME) |
||||||
|
@interface TestAnnotation { |
||||||
|
String value() ; |
||||||
|
} |
||||||
@ -1,110 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2012 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||||
* you may not use this file except in compliance with the License. |
|
||||||
* You may obtain a copy of the License at |
|
||||||
* |
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
* |
|
||||||
* Unless required by applicable law or agreed to in writing, software |
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
* See the License for the specific language governing permissions and |
|
||||||
* limitations under the License. |
|
||||||
*/ |
|
||||||
|
|
||||||
package org.springframework.aop.aspectj.autoproxy; |
|
||||||
|
|
||||||
import java.lang.annotation.Retention; |
|
||||||
import java.lang.annotation.RetentionPolicy; |
|
||||||
|
|
||||||
import org.aspectj.lang.ProceedingJoinPoint; |
|
||||||
|
|
||||||
/** |
|
||||||
* Definitions of testing types for use in within this package. |
|
||||||
* Wherever possible, test types should be defined local to the java |
|
||||||
* file that makes use of them. In some cases however, a test type may |
|
||||||
* need to be shared across tests. Such types reside here, with the |
|
||||||
* intention of reducing the surface area of java files within this |
|
||||||
* package. This allows developers to think about tests first, and deal |
|
||||||
* with these second class testing artifacts on an as-needed basis. |
|
||||||
* |
|
||||||
* Types here should be defined as package-private top level classes in |
|
||||||
* order to avoid needing to fully qualify, e.g.: _TestTypes$Foo. |
|
||||||
* |
|
||||||
* @author Chris Beams |
|
||||||
*/ |
|
||||||
final class _TestTypes { } |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* @author Adrian Colyer |
|
||||||
* @since 2.0 |
|
||||||
*/ |
|
||||||
interface AnnotatedTestBean { |
|
||||||
|
|
||||||
String doThis(); |
|
||||||
|
|
||||||
String doThat(); |
|
||||||
|
|
||||||
String doTheOther(); |
|
||||||
|
|
||||||
String[] doArray(); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* @author Adrian Colyer |
|
||||||
* @since 2.0 |
|
||||||
*/ |
|
||||||
@Retention(RetentionPolicy.RUNTIME) |
|
||||||
@interface TestAnnotation { |
|
||||||
String value() ; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* @author Adrian Colyer |
|
||||||
* @since 2.0 |
|
||||||
*/ |
|
||||||
class AnnotatedTestBeanImpl implements AnnotatedTestBean { |
|
||||||
|
|
||||||
@Override |
|
||||||
@TestAnnotation("this value") |
|
||||||
public String doThis() { |
|
||||||
return "doThis"; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
@TestAnnotation("that value") |
|
||||||
public String doThat() { |
|
||||||
return "doThat"; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
@TestAnnotation("array value") |
|
||||||
public String[] doArray() { |
|
||||||
return new String[] {"doThis", "doThat"}; |
|
||||||
} |
|
||||||
|
|
||||||
// not annotated
|
|
||||||
@Override |
|
||||||
public String doTheOther() { |
|
||||||
return "doTheOther"; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* @author Adrian Colyer |
|
||||||
*/ |
|
||||||
class AnnotationBindingTestAspect { |
|
||||||
|
|
||||||
public String doWithAnnotation(ProceedingJoinPoint pjp, TestAnnotation testAnnotation) throws Throwable { |
|
||||||
return testAnnotation.value(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -0,0 +1,41 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2002-2018 the original author or authors. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.springframework.aop.framework; |
||||||
|
|
||||||
|
public class Echo implements IEcho { |
||||||
|
|
||||||
|
private int a; |
||||||
|
|
||||||
|
@Override |
||||||
|
public int echoException(int i, Throwable t) throws Throwable { |
||||||
|
if (t != null) { |
||||||
|
throw t; |
||||||
|
} |
||||||
|
return i; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setA(int a) { |
||||||
|
this.a = a; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getA() { |
||||||
|
return a; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2002-2018 the original author or authors. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.springframework.aop.framework; |
||||||
|
|
||||||
|
public interface IEcho { |
||||||
|
|
||||||
|
int echoException(int i, Throwable t) throws Throwable; |
||||||
|
|
||||||
|
int getA(); |
||||||
|
|
||||||
|
void setA(int a); |
||||||
|
|
||||||
|
} |
||||||
@ -1,44 +0,0 @@ |
|||||||
package org.springframework.aop.framework; |
|
||||||
|
|
||||||
/** |
|
||||||
* Definitions of testing types for use in within this package. |
|
||||||
* Wherever possible, test types should be defined local to the java |
|
||||||
* file that makes use of them. In some cases however, a test type may |
|
||||||
* need to be shared across tests. Such types reside here, with the |
|
||||||
* intention of reducing the surface area of java files within this |
|
||||||
* package. This allows developers to think about tests first, and deal |
|
||||||
* with these second class testing artifacts on an as-needed basis. |
|
||||||
* |
|
||||||
* Types here should be defined as package-private top level classes in |
|
||||||
* order to avoid needing to fully qualify, e.g.: _TestTypes$Foo. |
|
||||||
* |
|
||||||
* @author Chris Beams |
|
||||||
*/ |
|
||||||
final class _TestTypes { } |
|
||||||
|
|
||||||
|
|
||||||
interface IEcho { |
|
||||||
int echoException(int i, Throwable t) throws Throwable; |
|
||||||
int getA(); |
|
||||||
void setA(int a); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
class Echo implements IEcho { |
|
||||||
private int a; |
|
||||||
|
|
||||||
@Override |
|
||||||
public int echoException(int i, Throwable t) throws Throwable { |
|
||||||
if (t != null) |
|
||||||
throw t; |
|
||||||
return i; |
|
||||||
} |
|
||||||
@Override |
|
||||||
public void setA(int a) { |
|
||||||
this.a = a; |
|
||||||
} |
|
||||||
@Override |
|
||||||
public int getA() { |
|
||||||
return a; |
|
||||||
} |
|
||||||
} |
|
||||||
Loading…
Reference in new issue