1f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin/** 2f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * Copyright (C) 2009 Google Inc. 3f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * 4f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * Licensed under the Apache License, Version 2.0 (the "License"); 5f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * you may not use this file except in compliance with the License. 6f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * You may obtain a copy of the License at 7f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * 8f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * http://www.apache.org/licenses/LICENSE-2.0 9f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * 10f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * Unless required by applicable law or agreed to in writing, software 11f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * distributed under the License is distributed on an "AS IS" BASIS, 12f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * See the License for the specific language governing permissions and 14f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * limitations under the License. 15f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin */ 16f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 17f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlinpackage com.googlecode.guice.bundle; 18f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 19f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlinimport static com.google.inject.name.Names.named; 20f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 21f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlinimport com.google.inject.AbstractModule; 22f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlinimport com.google.inject.Guice; 23f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlinimport com.google.inject.Inject; 24f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlinimport com.google.inject.Injector; 25f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlinimport com.google.inject.Key; 26f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlinimport com.google.inject.matcher.AbstractMatcher; 27f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 28b7a02b02d81c830d148355c90bc309bcd66fb592sberlinimport org.osgi.framework.Bundle; 29b7a02b02d81c830d148355c90bc309bcd66fb592sberlinimport org.osgi.framework.BundleActivator; 30b7a02b02d81c830d148355c90bc309bcd66fb592sberlinimport org.osgi.framework.BundleContext; 31b7a02b02d81c830d148355c90bc309bcd66fb592sberlinimport org.osgi.framework.BundleException; 32b7a02b02d81c830d148355c90bc309bcd66fb592sberlin 33b7a02b02d81c830d148355c90bc309bcd66fb592sberlinimport java.lang.reflect.Method; 34b7a02b02d81c830d148355c90bc309bcd66fb592sberlinimport java.lang.reflect.Modifier; 35b7a02b02d81c830d148355c90bc309bcd66fb592sberlinimport java.util.Random; 36b7a02b02d81c830d148355c90bc309bcd66fb592sberlin 37f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin/** 38f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * Test Guice from inside an OSGi bundle activator. 39f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * 40f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin * @author mcculls@gmail.com (Stuart McCulloch) 41f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin */ 42f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin@SuppressWarnings("unused") public class OSGiTestActivator 43f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements BundleActivator { 44f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 45f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin // varying visibilities to test our code-generation support 46f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 47ac3cf7c16fe991c6b027d1061034990802dff480cushon public static class Undefined {} 48f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 49f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin public interface A {} 50f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 51f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin protected interface B {} 52f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 53f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin interface C {} 54f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 55f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin private interface D {} 56f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 57f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin public static class AA 58f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements A { 59f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 60f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin public AA() {} 61f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 62ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 63f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 64ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 65f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 66ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 67f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 68ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 69f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 70ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 71f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 72ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 73f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 74ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 75f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 76ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 77f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 78f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 79f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin protected static class AB 80f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements A { 81f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 82f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin public AB() {} 83f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 84ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 85f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 86ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 87f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 88ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 89f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 90ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 91f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 92ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 93f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 94ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 95f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 96ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 97f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 98ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 99f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 100f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 101f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin static class AC 102f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements A { 103f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 104f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin public AC() {} 105f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 106ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 107f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 108ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 109f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 110ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 111f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 112ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 113f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 114ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 115f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 116ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 117f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 118ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 119f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 120ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 121f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 122f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 123f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin private static class AD 124f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements A { 125f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 126f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin public AD() {} 127f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 128ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 129f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 130ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 131f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 132ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 133f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 134ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 135f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 136ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 137f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 138ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 139f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 140ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 141f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 142ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 143f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 144f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 145f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin public static class BA 146f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements B { 147f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 148f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin protected BA() {} 149f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 150ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 151f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 152ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 153f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 154ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 155f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 156ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 157f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 158ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 159f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 160ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 161f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 162ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 163f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 164ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 165f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 166f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 167f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin protected static class BB 168f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements B { 169f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 170f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin protected BB() {} 171f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 172ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 173f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 174ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 175f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 176ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 177f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 178ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 179f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 180ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 181f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 182ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 183f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 184ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 185f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 186ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 187f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 188f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 189f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin static class BC 190f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements B { 191f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 192f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin protected BC() {} 193f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 194ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 195f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 196ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 197f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 198ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 199f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 200ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 201f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 202ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 203f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 204ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 205f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 206ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 207f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 208ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 209f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 210f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 211f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin private static class BD 212f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements B { 213f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 214f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin protected BD() {} 215f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 216ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 217f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 218ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 219f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 220ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 221f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 222ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 223f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 224ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 225f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 226ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 227f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 228ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 229f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 230ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 231f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 232f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 233f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin public static class CA 234f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements C { 235f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 236f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin CA() {} 237f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 238ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 239f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 240ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 241f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 242ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 243f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 244ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 245f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 246ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 247f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 248ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 249f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 250ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 251f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 252ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 253f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 254f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 255f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin protected static class CB 256f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements C { 257f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 258f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin CB() {} 259f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 260ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 261f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 262ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 263f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 264ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 265f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 266ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 267f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 268ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 269f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 270ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 271f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 272ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 273f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 274ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 275f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 276f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 277f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin static class CC 278f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements C { 279f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 280f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin CC() {} 281f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 282ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 283f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 284ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 285f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 286ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 287f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 288ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 289f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 290ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 291f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 292ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 293f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 294ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 295f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 296ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 297f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 298f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 299f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin private static class CD 300f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements C { 301f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 302f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin CD() {} 303f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 304ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 305f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 306ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 307f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 308ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 309f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 310ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 311f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 312ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 313f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 314ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 315f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 316ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 317f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 318ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 319f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 320f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 321f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin public static class DA 322f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements D { 323f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 324f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin @Inject private DA() {} 325f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 326ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 327f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 328ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 329f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 330ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 331f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 332ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 333f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 334ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 335f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 336ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 337f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 338ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 339f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 340ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 341f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 342f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 343f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin protected static class DB 344f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements D { 345f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 346f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin @Inject private DB() {} 347f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 348ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 349f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 350ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 351f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 352ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 353f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 354ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 355f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 356ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 357f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 358ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 359f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 360ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 361f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 362ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 363f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 364f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 365f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin static class DC 366f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements D { 367f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 368f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin @Inject private DC() {} 369f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 370ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 371f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 372ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 373f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 374ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 375f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 376ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 377f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 378ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 379f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 380ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 381f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 382ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 383f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 384ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 385f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 386f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 387f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin private static class DD 388f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin implements D { 389f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 390f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin private DD() {} 391f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 392ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public void setA(Undefined undefined) {} 393f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 394ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected void setB(Undefined undefined) {} 395f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 396ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject void setC(Undefined undefined) {} 397f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 398ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private void setD(Undefined undefined) {} 399f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 400ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject public Undefined a; 401f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 402ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject protected Undefined b; 403f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 404ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject Undefined c; 405f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 406ac3cf7c16fe991c6b027d1061034990802dff480cushon @Inject private Undefined d; 407f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 408f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 409f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin enum Visibility { 410f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin PUBLIC, PROTECTED, PACKAGE_PRIVATE, PRIVATE 411f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 412f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 413f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin static final Class<?>[] TEST_CLAZZES = {A.class, B.class, C.class, D.class}; 414f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 415f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin // registers all the class combinations 416f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin static class TestModule 417f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin extends AbstractModule { 418f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 419f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin final Bundle bundle; 420f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 421f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin TestModule(Bundle bundle) { 422f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin this.bundle = bundle; 423f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 424f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 425f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin @Override @SuppressWarnings("unchecked") protected void configure() { 426f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin for (Class<?> api : TEST_CLAZZES) { 427f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin for (Visibility visibility : Visibility.values()) { 428f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin try { 429f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 430f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin // this registers: A + PUBLIC -> AA, A + PROTECTED -> AB, etc... 431f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin String suffix = TEST_CLAZZES[visibility.ordinal()].getSimpleName(); 432f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin Class imp = bundle.loadClass(api.getName() + suffix); 433f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin bind(api).annotatedWith(named(visibility.name())).to(imp); 434f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 435f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } catch (ClassNotFoundException e) { 436f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin throw new RuntimeException("Unable to load test class", e); 437f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 438f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 439f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 440f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 441f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 442f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 443f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin/*if[AOP]*/ 444f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin // applies method-interception to classes with enough visibility 445f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin static class InterceptorModule 446f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin extends AbstractModule { 447f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin @Override protected void configure() { 448f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin bindInterceptor(new AbstractMatcher<Class<?>>() { 449f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin public boolean matches(Class<?> clazz) { 450f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin try { 451f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 452f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin // the class and constructor must be visible 453f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin int clazzModifiers = clazz.getModifiers(); 454f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin int ctorModifiers = clazz.getConstructor().getModifiers(); 455f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin return (clazzModifiers & (Modifier.PUBLIC | Modifier.PROTECTED)) != 0 456f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin && (ctorModifiers & (Modifier.PUBLIC | Modifier.PROTECTED)) != 0; 457f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 458f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } catch (NoSuchMethodException e) { 459f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin return false; 460f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 461f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 462f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin }, new AbstractMatcher<Method>() { 463f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin public boolean matches(Method method) { 464f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 465f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin // the intercepted method must also be visible 466f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin int methodModifiers = method.getModifiers(); 467f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin return (methodModifiers & (Modifier.PUBLIC | Modifier.PROTECTED)) != 0; 468f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 469f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 470ac4cdbe137274fd83a7e8e7100653f261618eb94mcculls }, new org.aopalliance.intercept.MethodInterceptor() { 471ac4cdbe137274fd83a7e8e7100653f261618eb94mcculls public Object invoke(org.aopalliance.intercept.MethodInvocation mi) 472f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin throws Throwable { 473f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 474f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin return mi.proceed(); 475f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 476f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin }); 477f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 478f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 479f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin/*end[AOP]*/ 480f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 481f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin // called from OSGi when bundle starts 482f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin public void start(BundleContext context) 483f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin throws BundleException { 484f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 485f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin final Bundle bundle = context.getBundle(); 486f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 487f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin Injector injector = Guice.createInjector(new TestModule(bundle)); 488f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin/*if[AOP]*/ 489f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin Injector aopInjector = Guice.createInjector(new TestModule(bundle), new InterceptorModule()); 490f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin/*end[AOP]*/ 491f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 492f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin // test code-generation support 493f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin for (Class<?> api : TEST_CLAZZES) { 494f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin for (Visibility vis : Visibility.values()) { 495f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin injector.getInstance(Key.get(api, named(vis.name()))); 496f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin/*if[AOP]*/ 497f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin aopInjector.getInstance(Key.get(api, named(vis.name()))); 498f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin/*end[AOP]*/ 499f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 500f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 501f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 502f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin // test injection of system class (issue 343) 503f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin injector.getInstance(Random.class); 504f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin/*if[AOP]*/ 505f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin aopInjector.getInstance(Random.class); 506f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin/*end[AOP]*/ 507f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin } 508f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin 509f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin // called from OSGi when bundle stops 510f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin public void stop(BundleContext context) {} 511f7ac6ea677ccfff6c3bec7db1d3621e6b6cf4097sberlin} 512