| /*
|
| * Copyright 1999-2011 Alibaba Group.
|
| *
|
| * 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 com.alibaba.dubbo.common; |
| |
| import com.alibaba.dubbo.common.bytecode.Mixin; |
| |
| import junit.framework.TestCase; |
| |
| public class MixinTest extends TestCase |
| { |
| public void testMain() throws Exception |
| { |
| Mixin mixin = Mixin.mixin(new Class[]{ I1.class, I2.class, I3.class }, new Class[]{ C1.class, C2.class }); |
| Object o = mixin.newInstance(new Object[]{ new C1(), new C2() }); |
| assertEquals(o instanceof I1, true); |
| assertEquals(o instanceof I2, true); |
| assertEquals(o instanceof I3, true); |
| ((I1)o).m1(); |
| ((I2)o).m2(); |
| ((I3)o).m3(); |
| } |
| |
| interface I1{ void m1(); } |
| interface I2{ void m2(); } |
| interface I3{ void m3(); } |
| |
| class C1 implements Mixin.MixinAware |
| { |
| public void m1() |
| { |
| System.out.println("c1.m1();"); |
| } |
| |
| public void m2() |
| { |
| System.out.println("c1.m2();"); |
| } |
| |
| public void setMixinInstance(Object mi) |
| { |
| System.out.println("setMixinInstance:" + mi); |
| } |
| } |
| |
| class C2 implements Mixin.MixinAware |
| { |
| public void m3() |
| { |
| System.out.println("c2.m3();"); |
| } |
| |
| public void setMixinInstance(Object mi) |
| { |
| System.out.println("setMixinInstance:" + mi); |
| } |
| } |
| } |