diff --git a/language-adaptors/rxjava-clojure/src/main/java/org/rx/lang/clojure/ClojureAdaptor.java b/language-adaptors/rxjava-clojure/src/main/java/org/rx/lang/clojure/ClojureAdaptor.java index 65414b982f..70c9084dc3 100644 --- a/language-adaptors/rxjava-clojure/src/main/java/org/rx/lang/clojure/ClojureAdaptor.java +++ b/language-adaptors/rxjava-clojure/src/main/java/org/rx/lang/clojure/ClojureAdaptor.java @@ -15,8 +15,6 @@ */ package org.rx.lang.clojure; -import static org.mockito.Mockito.*; - import java.util.Arrays; import org.junit.Before; @@ -82,8 +80,8 @@ public Object call(Object function, Object[] args) { } @Override - public Class getFunctionClass() { - return IFn.class; + public Class[] getFunctionClass() { + return new Class[] { IFn.class }; } public static class UnitTest { diff --git a/language-adaptors/rxjava-groovy/src/main/java/org/rx/lang/groovy/GroovyAdaptor.java b/language-adaptors/rxjava-groovy/src/main/java/org/rx/lang/groovy/GroovyAdaptor.java index d8a0b5f871..bdff61a06a 100644 --- a/language-adaptors/rxjava-groovy/src/main/java/org/rx/lang/groovy/GroovyAdaptor.java +++ b/language-adaptors/rxjava-groovy/src/main/java/org/rx/lang/groovy/GroovyAdaptor.java @@ -1,12 +1,12 @@ /** * Copyright 2013 Netflix, Inc. - * + * * 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 - * + * + * 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. @@ -41,8 +41,8 @@ public Object call(Object function, Object[] args) { return ((Closure) function).call(args); } - public Class getFunctionClass() { - return Closure.class; + public Class[] getFunctionClass() { + return new Class[] { Closure.class }; } public static class UnitTest { diff --git a/language-adaptors/rxjava-jruby/src/main/java/org/rx/lang/jruby/JRubyAdaptor.java b/language-adaptors/rxjava-jruby/src/main/java/org/rx/lang/jruby/JRubyAdaptor.java index 8a9d53e699..e101c809fb 100644 --- a/language-adaptors/rxjava-jruby/src/main/java/org/rx/lang/jruby/JRubyAdaptor.java +++ b/language-adaptors/rxjava-jruby/src/main/java/org/rx/lang/jruby/JRubyAdaptor.java @@ -1,12 +1,12 @@ /** * Copyright 2013 Netflix, Inc. - * + * * 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 - * + * + * 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. @@ -49,8 +49,8 @@ public Object call(Object function, Object[] args) { } @Override - public Class getFunctionClass() { - return RubyProc.class; + public Class[] getFunctionClass() { + return new Class[] { RubyProc.class }; } public static class UnitTest { diff --git a/rxjava-core/src/main/java/org/rx/functions/FunctionLanguageAdaptor.java b/rxjava-core/src/main/java/org/rx/functions/FunctionLanguageAdaptor.java index 8ec16b390e..dfbd735b24 100644 --- a/rxjava-core/src/main/java/org/rx/functions/FunctionLanguageAdaptor.java +++ b/rxjava-core/src/main/java/org/rx/functions/FunctionLanguageAdaptor.java @@ -30,8 +30,10 @@ public interface FunctionLanguageAdaptor { * The Class of the Function that this adaptor serves. *

* Example: groovy.lang.Closure + *

+ * This should not return classes of java.* packages. * - * @return Class + * @return Class[] of classes that this adaptor should be invoked for. */ - public Class getFunctionClass(); + public Class[] getFunctionClass(); } diff --git a/rxjava-core/src/main/java/org/rx/functions/Functions.java b/rxjava-core/src/main/java/org/rx/functions/Functions.java index 8ad1949745..6afaef4059 100644 --- a/rxjava-core/src/main/java/org/rx/functions/Functions.java +++ b/rxjava-core/src/main/java/org/rx/functions/Functions.java @@ -1,12 +1,12 @@ /** * Copyright 2013 Netflix, Inc. - * + * * 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 - * + * + * 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. @@ -56,8 +56,13 @@ private static void loadLanguageAdaptor(String name) { } } - public static void registerLanguageAdaptor(Class functionClass, FunctionLanguageAdaptor adaptor) { - languageAdaptors.put(functionClass, adaptor); + public static void registerLanguageAdaptor(Class[] functionClasses, FunctionLanguageAdaptor adaptor) { + for (Class functionClass : functionClasses) { + if (functionClass.getPackage().getName().startsWith("java.")) { + throw new IllegalArgumentException("FunctionLanguageAdaptor implementations can not specify java.lang.* classes."); + } + languageAdaptors.put(functionClass, adaptor); + } } public static void removeLanguageAdaptor(Class functionClass) {