TUSCANY-2735: Add tests for generic types

git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1159968 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
nash 2011-08-21 11:55:43 +00:00
parent 97502d6c76
commit 73b3008553
8 changed files with 218 additions and 0 deletions

View file

@ -0,0 +1,25 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.tuscany.sca.itest.services;
public interface SubGenericsService extends SuperGenericsService<String> {
void print();
}

View file

@ -0,0 +1,27 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.tuscany.sca.itest.services;
public interface SubGenericsServiceClient<T> {
void print();
T doIt(T anything);
}

View file

@ -0,0 +1,51 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.tuscany.sca.itest.services;
import org.osoa.sca.annotations.Reference;
import org.osoa.sca.annotations.Service;
@Service(SubGenericsServiceClient.class)
public class SubGenericsServiceClientImpl implements SubGenericsServiceClient<String> {
private SubGenericsService subGenericsService;
public String doIt(String anything) {
return subGenericsService.doIt(anything);
}
public void print() {
subGenericsService.print();
}
public SubGenericsService getSubGenericsService() {
return subGenericsService;
}
@Reference
public void setSubGenericsService(SubGenericsService subGenericsService) {
this.subGenericsService = subGenericsService;
}
}

View file

@ -0,0 +1,29 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.tuscany.sca.itest.services;
public class SubGenericsServiceImpl extends SuperGenericsServiceImpl<String>
implements SubGenericsService{
public void print(){
System.out.println("I am print.");
}
}

View file

@ -0,0 +1,28 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.tuscany.sca.itest.services;
/**
* The interface for SuperGenericsService.
*
*/
public interface SuperGenericsService<T> {
T doIt(T anything);
}

View file

@ -0,0 +1,29 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.tuscany.sca.itest.services;
public abstract class SuperGenericsServiceImpl<T> implements SuperGenericsService<T>{
public T doIt(T anything){
return anything;
}
}

View file

@ -66,5 +66,16 @@
<interface.java interface="org.apache.tuscany.sca.itest.services.D1Component" />
</service>
</component>
<!-- Component used to implement SubGenericsService -->
<component name="SubGenericsServiceComponent">
<implementation.java class="org.apache.tuscany.sca.itest.services.SubGenericsServiceImpl"/>
</component>
<!-- A SubGenericsServiceClientImpl component that uses SCA binding to invoke SubGenericsService service -->
<component name="SubGenericsServiceClientSCAComponent">
<implementation.java class="org.apache.tuscany.sca.itest.services.SubGenericsServiceClientImpl" />
<reference name="subGenericsService" target="SubGenericsServiceComponent"/>
</component>
</composite>

View file

@ -99,6 +99,22 @@ public class ServicesTestCase {
}
@Test
public void testSCASubGenericsServiceDoIt() throws Exception{
@SuppressWarnings("unchecked")
SubGenericsServiceClient<String> subGenericsServiceClient = domain.getService(SubGenericsServiceClient.class, "SubGenericsServiceClientSCAComponent");
String actual = "noting";
String expected = subGenericsServiceClient.doIt(actual);
Assert.assertEquals(actual, expected);
}
@Test
public void testSCASubGenericsServicePrint() throws Exception{
@SuppressWarnings("unchecked")
SubGenericsServiceClient<String> subGenericsServiceClient = domain.getService(SubGenericsServiceClient.class, "SubGenericsServiceClientSCAComponent");
subGenericsServiceClient.print();
}
public static void main(String[] args) throws Exception {
ServicesTestCase.init();
ServicesTestCase tester = new ServicesTestCase();
@ -106,6 +122,8 @@ public class ServicesTestCase {
tester.testBService();
tester.testCService();
tester.testDService();
tester.testSCASubGenericsServiceDoIt();
tester.testSCASubGenericsServicePrint();
ServicesTestCase.destroy();
}
}