001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.geronimo.connector;
018
019 import java.util.ArrayList;
020 import java.util.Arrays;
021 import java.util.Collection;
022 import java.util.HashSet;
023 import java.util.Iterator;
024 import java.util.List;
025 import java.util.Set;
026
027 import org.apache.geronimo.j2ee.management.impl.Util;
028 import org.apache.geronimo.management.geronimo.JCAAdminObject;
029 import org.apache.geronimo.management.geronimo.JCAConnectionFactory;
030 import org.apache.geronimo.management.geronimo.JCAManagedConnectionFactory;
031 import org.apache.geronimo.management.geronimo.JCAResource;
032 import org.apache.geronimo.management.geronimo.JCAResourceAdapter;
033
034 /**
035 * @version $Rev: 550546 $ $Date: 2007-06-25 12:52:11 -0400 (Mon, 25 Jun 2007) $
036 */
037 public class JCAResourceImpl implements JCAResource {
038 private final String objectName;
039
040 private final Collection connectionFactories;
041 private final Collection resourceAdapters;
042 private final Collection adminObjects;
043
044 public JCAResourceImpl(String objectName, Collection connectionFactories, Collection resourceAdapters, Collection adminObjects) {
045 this.objectName = objectName;
046 this.connectionFactories = connectionFactories;
047 this.resourceAdapters = resourceAdapters;
048 this.adminObjects = adminObjects;
049 }
050
051 public String[] getConnectionFactories() {
052 return Util.getObjectNames(getConnectionFactoryInstances());
053 }
054
055 public String[] getResourceAdapterInstanceNames() {
056 ArrayList temp = new ArrayList();
057 for (Iterator iterator = resourceAdapters.iterator(); iterator.hasNext();) {
058 JCAResourceAdapter resourceAdapter = (JCAResourceAdapter) iterator.next();
059 temp.add(resourceAdapter.getObjectName());
060 }
061 return (String[])temp.toArray(new String[temp.size()]);
062 }
063
064 public JCAResourceAdapter[] getResourceAdapterInstances() {
065 return (JCAResourceAdapter[])resourceAdapters.toArray(new JCAResourceAdapter[resourceAdapters.size()]);
066 }
067
068 public JCAConnectionFactory[] getConnectionFactoryInstances() {
069 return (JCAConnectionFactory[])connectionFactories.toArray(new JCAConnectionFactory[connectionFactories.size()]);
070 }
071
072 public JCAManagedConnectionFactory[] getOutboundFactories() {
073 return getOutboundFactories((String[]) null);
074 }
075
076 public JCAManagedConnectionFactory[] getOutboundFactories(String connectionFactoryInterface) {
077 return getOutboundFactories(new String[]{connectionFactoryInterface});
078 }
079
080 public JCAManagedConnectionFactory[] getOutboundFactories(String[] connectionFactoryInterfaces) {
081 Set interfaceFilter = null;
082 if (connectionFactoryInterfaces != null) {
083 interfaceFilter = new HashSet(Arrays.asList(connectionFactoryInterfaces));
084 }
085
086 List list = new ArrayList();
087 for (Iterator iterator = connectionFactories.iterator(); iterator.hasNext();) {
088 JCAConnectionFactory jcaConnectionFactory = (JCAConnectionFactory) iterator.next();
089 JCAManagedConnectionFactory mcf = jcaConnectionFactory.getManagedConnectionFactoryInstance();
090 if (interfaceFilter == null || interfaceFilter.contains(mcf.getConnectionFactoryInterface())) {
091 list.add(mcf);
092 continue;
093 }
094 for (int m = 0; m < mcf.getImplementedInterfaces().length; m++) {
095 String iface = mcf.getImplementedInterfaces()[m];
096 if (interfaceFilter == null || interfaceFilter.contains(iface)) {
097 list.add(mcf);
098 break;
099 }
100 }
101 }
102 return (JCAManagedConnectionFactory[]) list.toArray(new JCAManagedConnectionFactory[list.size()]);
103 }
104
105 public String[] getAdminObjects() {
106 return Util.getObjectNames(getAdminObjectInstances());
107 }
108
109 public JCAAdminObject[] getAdminObjectInstances() {
110 return (JCAAdminObject[]) adminObjects.toArray(new JCAAdminObject[adminObjects.size()]);
111 }
112
113 public JCAAdminObject[] getAdminObjectInstances(String adminObjectInterface) {
114 return getAdminObjectInstances(new String[] {adminObjectInterface});
115 }
116
117 public JCAAdminObject[] getAdminObjectInstances(String[] adminObjectInterfaces) {
118 Set interfaceFilter = null;
119 if (adminObjectInterfaces != null) {
120 interfaceFilter = new HashSet(Arrays.asList(adminObjectInterfaces));
121 }
122
123 List list = new ArrayList();
124
125 for (Iterator iterator = adminObjects.iterator(); iterator.hasNext();) {
126 JCAAdminObject adminObject = (JCAAdminObject) iterator.next();
127 if (interfaceFilter == null || interfaceFilter.contains(adminObject.getAdminObjectInterface())) {
128 list.add(adminObject);
129 }
130 }
131
132 return (JCAAdminObject[]) list.toArray(new JCAAdminObject[list.size()]);
133 }
134
135
136 public String getObjectName() {
137 return objectName;
138 }
139
140 public boolean isStateManageable() {
141 return false;
142 }
143
144 public boolean isStatisticsProvider() {
145 return false;
146 }
147
148 public boolean isEventProvider() {
149 return false;
150 }
151 }