1 /**
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one or more
4 * contributor license agreements. See the NOTICE file distributed with
5 * this work for additional information regarding copyright ownership.
6 * The ASF licenses this file to You under the Apache License, Version 2.0
7 * (the "License"); you may not use this file except in compliance with
8 * the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18 package org.apache.geronimo.connector;
19
20 import org.apache.geronimo.management.geronimo.JCAResource;
21 import org.apache.geronimo.management.geronimo.JCAResourceAdapter;
22 import org.apache.geronimo.management.geronimo.JCAConnectionFactory;
23 import org.apache.geronimo.management.geronimo.JCAManagedConnectionFactory;
24 import org.apache.geronimo.management.geronimo.JCAAdminObject;
25 import org.apache.geronimo.j2ee.management.impl.Util;
26
27 import java.util.Collection;
28 import java.util.ArrayList;
29 import java.util.Iterator;
30 import java.util.Set;
31 import java.util.HashSet;
32 import java.util.Arrays;
33 import java.util.List;
34
35 /**
36 * @version $Rev: 470597 $ $Date: 2006-11-02 15:30:55 -0800 (Thu, 02 Nov 2006) $
37 */
38 public class JCAResourceImpl implements JCAResource {
39 private final String objectName;
40
41 private final Collection connectionFactories;
42 private final Collection resourceAdapters;
43 private final Collection adminObjects;
44
45 public JCAResourceImpl(String objectName, Collection connectionFactories, Collection resourceAdapters, Collection adminObjects) {
46 this.objectName = objectName;
47 this.connectionFactories = connectionFactories;
48 this.resourceAdapters = resourceAdapters;
49 this.adminObjects = adminObjects;
50 }
51
52 public String[] getConnectionFactories() {
53 return Util.getObjectNames(getConnectionFactoryInstances());
54 }
55
56 public String[] getResourceAdapterInstanceNames() {
57 ArrayList temp = new ArrayList();
58 for (Iterator iterator = resourceAdapters.iterator(); iterator.hasNext();) {
59 JCAResourceAdapter resourceAdapter = (JCAResourceAdapter) iterator.next();
60 temp.add(resourceAdapter.getObjectName());
61 }
62 return (String[])temp.toArray(new String[temp.size()]);
63 }
64
65 public JCAResourceAdapter[] getResourceAdapterInstances() {
66 return (JCAResourceAdapter[])resourceAdapters.toArray(new JCAResourceAdapter[resourceAdapters.size()]);
67 }
68
69 public JCAConnectionFactory[] getConnectionFactoryInstances() {
70 return (JCAConnectionFactory[])connectionFactories.toArray(new JCAConnectionFactory[connectionFactories.size()]);
71 }
72
73 public JCAManagedConnectionFactory[] getOutboundFactories() {
74 return getOutboundFactories((String[]) null);
75 }
76
77 public JCAManagedConnectionFactory[] getOutboundFactories(String connectionFactoryInterface) {
78 return getOutboundFactories(new String[]{connectionFactoryInterface});
79 }
80
81 public JCAManagedConnectionFactory[] getOutboundFactories(String[] connectionFactoryInterfaces) {
82 Set interfaceFilter = null;
83 if (connectionFactoryInterfaces != null) {
84 interfaceFilter = new HashSet(Arrays.asList(connectionFactoryInterfaces));
85 }
86
87 List list = new ArrayList();
88 for (Iterator iterator = connectionFactories.iterator(); iterator.hasNext();) {
89 JCAConnectionFactory jcaConnectionFactory = (JCAConnectionFactory) iterator.next();
90 JCAManagedConnectionFactory mcf = jcaConnectionFactory.getManagedConnectionFactoryInstance();
91 if (interfaceFilter == null || interfaceFilter.contains(mcf.getConnectionFactoryInterface())) {
92 list.add(mcf);
93 continue;
94 }
95 for (int m = 0; m < mcf.getImplementedInterfaces().length; m++) {
96 String iface = mcf.getImplementedInterfaces()[m];
97 if (interfaceFilter == null || interfaceFilter.contains(iface)) {
98 list.add(mcf);
99 break;
100 }
101 }
102 }
103 return (JCAManagedConnectionFactory[]) list.toArray(new JCAManagedConnectionFactory[list.size()]);
104 }
105
106 public String[] getAdminObjects() {
107 return Util.getObjectNames(getAdminObjectInstances());
108 }
109
110 public JCAAdminObject[] getAdminObjectInstances() {
111 return (JCAAdminObject[]) adminObjects.toArray(new JCAAdminObject[adminObjects.size()]);
112 }
113
114 public JCAAdminObject[] getAdminObjectInstances(String adminObjectInterface) {
115 return getAdminObjectInstances(new String[] {adminObjectInterface});
116 }
117
118 public JCAAdminObject[] getAdminObjectInstances(String[] adminObjectInterfaces) {
119 Set interfaceFilter = null;
120 if (adminObjectInterfaces != null) {
121 interfaceFilter = new HashSet(Arrays.asList(adminObjectInterfaces));
122 }
123
124 List list = new ArrayList();
125
126 for (Iterator iterator = adminObjects.iterator(); iterator.hasNext();) {
127 JCAAdminObject adminObject = (JCAAdminObject) iterator.next();
128 if (interfaceFilter == null || interfaceFilter.contains(adminObject.getAdminObjectInterface())) {
129 list.add(adminObject);
130 }
131 }
132
133 return (JCAAdminObject[]) list.toArray(new JCAAdminObject[list.size()]);
134 }
135
136
137 public String getObjectName() {
138 return objectName;
139 }
140
141 public boolean isStateManageable() {
142 return false;
143 }
144
145 public boolean isStatisticsProvider() {
146 return false;
147 }
148
149 public boolean isEventProvider() {
150 return false;
151 }
152 }