1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski import com.sun.star.uno.XComponentContext;
24*b1cdbd2cSJim Jagielski import com.sun.star.lang.XTypeProvider;
25*b1cdbd2cSJim Jagielski import com.sun.star.lang.XServiceInfo;
26*b1cdbd2cSJim Jagielski import com.sun.star.test.XSomethingB;
27*b1cdbd2cSJim Jagielski import com.sun.star.uno.Type;
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski // TestComponentB implements all necessary interfaces self, this is only
30*b1cdbd2cSJim Jagielski // for demonstration. More convenient is to use the impelmentation WeakBase or
31*b1cdbd2cSJim Jagielski // ComponentBase, see implementation of TestComponentA.
32*b1cdbd2cSJim Jagielski public class TestComponentB implements XTypeProvider, XServiceInfo, XSomethingB {
33*b1cdbd2cSJim Jagielski 	static final String __serviceName= "com.sun.star.test.SomethingB";
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski    	static byte[] _implementationId;
36*b1cdbd2cSJim Jagielski 	private XComponentContext context;
37*b1cdbd2cSJim Jagielski 	private Object[] args;
38*b1cdbd2cSJim Jagielski 
TestComponentB(XComponentContext context, Object[] args)39*b1cdbd2cSJim Jagielski 	public TestComponentB(XComponentContext context, Object[] args) {
40*b1cdbd2cSJim Jagielski 		this.context= context;
41*b1cdbd2cSJim Jagielski 		this.args= args;
42*b1cdbd2cSJim Jagielski 	}
43*b1cdbd2cSJim Jagielski 
44*b1cdbd2cSJim Jagielski     // XSomethingB
methodTwo(String val)45*b1cdbd2cSJim Jagielski 	public String methodTwo(String val) {
46*b1cdbd2cSJim Jagielski 		if (args.length > 0 && args[0] instanceof String )
47*b1cdbd2cSJim Jagielski 			return (String) args[0];
48*b1cdbd2cSJim Jagielski 		return val;
49*b1cdbd2cSJim Jagielski 	}
50*b1cdbd2cSJim Jagielski 
51*b1cdbd2cSJim Jagielski 	//XTypeProvider
getTypes( )52*b1cdbd2cSJim Jagielski 	public com.sun.star.uno.Type[] getTypes(  ) {
53*b1cdbd2cSJim Jagielski 		Type[] retValue= new Type[3];
54*b1cdbd2cSJim Jagielski 		retValue[0]= new Type( XServiceInfo.class);
55*b1cdbd2cSJim Jagielski 		retValue[1]= new Type( XTypeProvider.class);
56*b1cdbd2cSJim Jagielski 		retValue[2]= new Type( XSomethingB.class);
57*b1cdbd2cSJim Jagielski 		return retValue;
58*b1cdbd2cSJim Jagielski 	}
59*b1cdbd2cSJim Jagielski 	//XTypeProvider
getImplementationId( )60*b1cdbd2cSJim Jagielski 	synchronized public byte[] getImplementationId(  ) {
61*b1cdbd2cSJim Jagielski 		if (_implementationId == null) {
62*b1cdbd2cSJim Jagielski 			_implementationId= new byte[16];
63*b1cdbd2cSJim Jagielski 			int hash = hashCode();
64*b1cdbd2cSJim Jagielski 			_implementationId[0] = (byte)(hash & 0xff);
65*b1cdbd2cSJim Jagielski 			_implementationId[1] = (byte)((hash >>> 8) & 0xff);
66*b1cdbd2cSJim Jagielski 			_implementationId[2] = (byte)((hash >>> 16) & 0xff);
67*b1cdbd2cSJim Jagielski 			_implementationId[3] = (byte)((hash >>>24) & 0xff);
68*b1cdbd2cSJim Jagielski 		}
69*b1cdbd2cSJim Jagielski 		return _implementationId;
70*b1cdbd2cSJim Jagielski 	}
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski     //XServiceInfo
getImplementationName( )73*b1cdbd2cSJim Jagielski 	public String getImplementationName(  ) {
74*b1cdbd2cSJim Jagielski 		return getClass().getName();
75*b1cdbd2cSJim Jagielski 	}
76*b1cdbd2cSJim Jagielski 
77*b1cdbd2cSJim Jagielski 	// XServiceInfo
supportsService( String serviceName )78*b1cdbd2cSJim Jagielski 	public boolean supportsService( /*IN*/String serviceName ) {
79*b1cdbd2cSJim Jagielski 		if ( serviceName.equals( __serviceName))
80*b1cdbd2cSJim Jagielski 			return true;
81*b1cdbd2cSJim Jagielski 		return false;
82*b1cdbd2cSJim Jagielski 	}
83*b1cdbd2cSJim Jagielski 	//XServiceInfo
getSupportedServiceNames( )84*b1cdbd2cSJim Jagielski 	public String[] getSupportedServiceNames(  ) {
85*b1cdbd2cSJim Jagielski 		String[] retValue= new String[0];
86*b1cdbd2cSJim Jagielski 		retValue[0]= __serviceName;
87*b1cdbd2cSJim Jagielski 		return retValue;
88*b1cdbd2cSJim Jagielski 	}
89*b1cdbd2cSJim Jagielski }
90