| ////////////////////// |
| * Copyright (c) 2007-2012, Niclas Hedhman. All Rights Reserved. |
| * |
| * 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. |
| ////////////////////// |
| |
| [[core-api-concern,Concern]] |
| = Concern = |
| Concerns are the equivalent of "around advice" in Aspect Oriented Programming. They are chained into an invocation |
| stack for each Mixin Type method and invoked after the Constraints have been executed. Since they are sitting "around" |
| the Mixin implementation method, they also have a chance to modify the returned result, and even skip calling the |
| underlying Mixin method implementation altogether. |
| |
| To create a concern, you need to create a class that, |
| |
| * implements the Mixin Type (Typed Concerns) or java.lang.reflect.InvocationHandler (Generic Concerns), |
| * extend ConcernOf (Typed Concerns) or GenericConcern (Generic Concerns) [1] |