/* * Copyright 2016 ninjaframework. * * 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 ninja; import java.io.Serializable; /** * Functional interfaces for Ninja controller methods accepting up to X * number of arguments with type inference. */ public class ControllerMethods { /** * Marker interface that all functional interfaces will extend. Useful for * simple validation an object is a ControllerMethod. */ static public interface ControllerMethod extends Serializable { } @FunctionalInterface static public interface ControllerMethod0 extends ControllerMethod { Result apply() throws Exception; } @FunctionalInterface static public interface ControllerMethod1<A> extends ControllerMethod { Result apply(A a) throws Exception; } @FunctionalInterface static public interface ControllerMethod2<A,B> extends ControllerMethod { Result apply(A a, B b) throws Exception; } @FunctionalInterface static public interface ControllerMethod3<A,B,C> extends ControllerMethod { Result apply(A a, B b, C c) throws Exception; } @FunctionalInterface static public interface ControllerMethod4<A,B,C,D> extends ControllerMethod { Result apply(A a, B b, C c, D d) throws Exception; } @FunctionalInterface static public interface ControllerMethod5<A,B,C,D,E> extends ControllerMethod { Result apply(A a, B b, C c, D d, E e) throws Exception; } @FunctionalInterface static public interface ControllerMethod6<A,B,C,D,E,F> extends ControllerMethod { Result apply(A a, B b, C c, D d, E e, F f) throws Exception; } @FunctionalInterface static public interface ControllerMethod7<A,B,C,D,E,F,G> extends ControllerMethod { Result apply(A a, B b, C c, D d, E e, F f, G g) throws Exception; } @FunctionalInterface static public interface ControllerMethod8<A,B,C,D,E,F,G,H> extends ControllerMethod { Result apply(A a, B b, C c, D d, E e, F f, G g, H h) throws Exception; } @FunctionalInterface static public interface ControllerMethod9<A,B,C,D,E,F,G,H,I> extends ControllerMethod { Result apply(A a, B b, C c, D d, E e, F f, G g, H h, I i) throws Exception; } @FunctionalInterface static public interface ControllerMethod10<A,B,C,D,E,F,G,H,I,J> extends ControllerMethod { Result apply(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j) throws Exception; } @FunctionalInterface static public interface ControllerMethod11<A,B,C,D,E,F,G,H,I,J,K> extends ControllerMethod { Result apply(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k) throws Exception; } @FunctionalInterface static public interface ControllerMethod12<A,B,C,D,E,F,G,H,I,J,K,L> extends ControllerMethod { Result apply(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l) throws Exception; } @FunctionalInterface static public interface ControllerMethod13<A,B,C,D,E,F,G,H,I,J,K,L,M> extends ControllerMethod { Result apply(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m) throws Exception; } @FunctionalInterface static public interface ControllerMethod14<A,B,C,D,E,F,G,H,I,J,K,L,M,N> extends ControllerMethod { Result apply(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n) throws Exception; } @FunctionalInterface static public interface ControllerMethod15<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O> extends ControllerMethod { Result apply(A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n, O o) throws Exception; } // if you need more than 15 arguments then we recommend using the // legacy Class, methodName strategy // helper methods to allow classes to accept `ControllerMethod` but still // have the compiler create the correct functional method under-the-hood static public ControllerMethod0 of(ControllerMethod0 functionalMethod) { return functionalMethod; } static public <A> ControllerMethod1<A> of(ControllerMethod1<A> functionalMethod) { return functionalMethod; } static public <A,B> ControllerMethod2<A,B> of(ControllerMethod2<A,B> functionalMethod) { return functionalMethod; } static public <A,B,C> ControllerMethod3<A,B,C> of(ControllerMethod3<A,B,C> functionalMethod) { return functionalMethod; } static public <A,B,C,D> ControllerMethod4<A,B,C,D> of(ControllerMethod4<A,B,C,D> functionalMethod) { return functionalMethod; } static public <A,B,C,D,E> ControllerMethod5<A,B,C,D,E> of(ControllerMethod5<A,B,C,D,E> functionalMethod) { return functionalMethod; } static public <A,B,C,D,E,F> ControllerMethod6<A,B,C,D,E,F> of(ControllerMethod6<A,B,C,D,E,F> functionalMethod) { return functionalMethod; } static public <A,B,C,D,E,F,G> ControllerMethod7<A,B,C,D,E,F,G> of(ControllerMethod7<A,B,C,D,E,F,G> functionalMethod) { return functionalMethod; } static public <A,B,C,D,E,F,G,H> ControllerMethod8<A,B,C,D,E,F,G,H> of(ControllerMethod8<A,B,C,D,E,F,G,H> functionalMethod) { return functionalMethod; } static public <A,B,C,D,E,F,G,H,I> ControllerMethod9<A,B,C,D,E,F,G,H,I> of(ControllerMethod9<A,B,C,D,E,F,G,H,I> functionalMethod) { return functionalMethod; } static public <A,B,C,D,E,F,G,H,I,J> ControllerMethod10<A,B,C,D,E,F,G,H,I,J> of(ControllerMethod10<A,B,C,D,E,F,G,H,I,J> functionalMethod) { return functionalMethod; } static public <A,B,C,D,E,F,G,H,I,J,K> ControllerMethod11<A,B,C,D,E,F,G,H,I,J,K> of(ControllerMethod11<A,B,C,D,E,F,G,H,I,J,K> functionalMethod) { return functionalMethod; } static public <A,B,C,D,E,F,G,H,I,J,K,L> ControllerMethod12<A,B,C,D,E,F,G,H,I,J,K,L> of(ControllerMethod12<A,B,C,D,E,F,G,H,I,J,K,L> functionalMethod) { return functionalMethod; } static public <A,B,C,D,E,F,G,H,I,J,K,L,M> ControllerMethod13<A,B,C,D,E,F,G,H,I,J,K,L,M> of(ControllerMethod13<A,B,C,D,E,F,G,H,I,J,K,L,M> functionalMethod) { return functionalMethod; } static public <A,B,C,D,E,F,G,H,I,J,K,L,M,N> ControllerMethod14<A,B,C,D,E,F,G,H,I,J,K,L,M,N> of(ControllerMethod14<A,B,C,D,E,F,G,H,I,J,K,L,M,N> functionalMethod) { return functionalMethod; } static public <A,B,C,D,E,F,G,H,I,J,K,L,M,N,O> ControllerMethod15<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O> of(ControllerMethod15<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O> functionalMethod) { return functionalMethod; } }