-
Notifications
You must be signed in to change notification settings - Fork 138
/
ConnectorAdminServiceUtils.java
139 lines (116 loc) · 5.61 KB
/
ConnectorAdminServiceUtils.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/*
* Copyright (c) 2022 Contributors to the Eclipse Foundation
* Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package com.sun.enterprise.connectors.service;
import com.sun.appserv.connectors.internal.api.ConnectorConstants;
import com.sun.enterprise.connectors.ConnectorConnectionPool;
import com.sun.enterprise.connectors.ConnectorDescriptorInfo;
import com.sun.enterprise.connectors.ConnectorRuntime;
import com.sun.enterprise.deployment.ConnectorConfigProperty;
import com.sun.enterprise.deployment.ResourcePrincipalDescriptor;
import java.util.Locale;
import java.util.Set;
import javax.naming.Context;
import javax.naming.NamingException;
import org.glassfish.api.naming.SimpleJndiName;
import org.glassfish.resourcebase.resources.api.GenericResourceInfo;
import org.glassfish.resourcebase.resources.api.PoolInfo;
import org.glassfish.resourcebase.resources.api.ResourceConstants;
import static org.glassfish.api.naming.SimpleJndiName.JNDI_CTX_JAVA_APP;
import static org.glassfish.api.naming.SimpleJndiName.JNDI_CTX_JAVA_MODULE;
/**
* Util classes common to all connector Services
*
* @author Srikanth P
*/
public class ConnectorAdminServiceUtils implements ConnectorConstants {
private ConnectorAdminServiceUtils() {
// Private Constructor, to prevent initialising this class
}
/**
* Returns a ResourcePrincipalDescriptor object populated with a pool's
* default USERNAME and PASSWORD
*
* @throws NamingException if poolname lookup fails
*/
public static ResourcePrincipalDescriptor getDefaultResourcePrincipal(PoolInfo poolInfo) throws NamingException {
// All this to get the default user name and principal
SimpleJndiName jndiNameForPool = getReservePrefixedJNDINameForPool(poolInfo);
Context ic = ConnectorRuntime.getRuntime().getNamingManager().getInitialContext();
ConnectorConnectionPool connectorConnectionPool = (ConnectorConnectionPool) ic.lookup(jndiNameForPool.toString());
ConnectorDescriptorInfo cdi = connectorConnectionPool.getConnectorDescriptorInfo();
Set<ConnectorConfigProperty> mcfConfigProperties = cdi.getMCFConfigProperties();
String userName = "";
String password = "";
for (ConnectorConfigProperty prop : mcfConfigProperties) {
if (prop.getName().toUpperCase(Locale.getDefault()).equals("USERNAME")
|| prop.getName().toUpperCase(Locale.getDefault()).equals("USER")) {
userName = prop.getValue();
} else if (prop.getName().toUpperCase(Locale.getDefault()).equals("PASSWORD")) {
password = prop.getValue();
}
}
//Now return the ResourcePrincipalDescriptor
return new ResourcePrincipalDescriptor(userName, password);
}
public static SimpleJndiName getReservePrefixedJNDINameForPool(PoolInfo poolInfo) {
SimpleJndiName jndiName = poolInfo.getName().removePrefix();
SimpleJndiName name = getReservePrefixedJNDIName(POOLS_JNDINAME_PREFIX, jndiName);
return getScopedName(poolInfo, name);
}
private static SimpleJndiName getScopedName(GenericResourceInfo resourceInfo, SimpleJndiName name){
if (resourceInfo.getName().isJavaApp()) {
if (!name.isJavaApp()) {
return new SimpleJndiName(JNDI_CTX_JAVA_APP + name);
}
} else if (resourceInfo.getName().isJavaModule()) {
if (!name.isJavaModule()) {
return new SimpleJndiName(JNDI_CTX_JAVA_MODULE + name);
}
}
return name;
}
public static SimpleJndiName getReservePrefixedJNDINameForDescriptor(String moduleName) {
return getReservePrefixedJNDIName(DD_PREFIX, moduleName);
}
public static SimpleJndiName getReservePrefixedJNDINameForResource(String moduleName) {
return getReservePrefixedJNDIName(RESOURCE_JNDINAME_PREFIX, moduleName);
}
private static SimpleJndiName getReservePrefixedJNDIName(String prefix, Comparable<?> resourceName) {
return new SimpleJndiName(prefix + resourceName);
}
//TODO V3 is this right approach ? (just checking '#') ?
public static boolean isEmbeddedConnectorModule(String moduleName) {
return moduleName.indexOf(ResourceConstants.EMBEDDEDRAR_NAME_DELIMITER) != -1;
}
public static String getApplicationName(String moduleName) {
if (isEmbeddedConnectorModule(moduleName)) {
int idx = moduleName.indexOf(ResourceConstants.EMBEDDEDRAR_NAME_DELIMITER);
return moduleName.substring(0, idx);
}
return null;
}
public static String getConnectorModuleName(String moduleName) {
if (isEmbeddedConnectorModule(moduleName)) {
int idx = moduleName.indexOf(ResourceConstants.EMBEDDEDRAR_NAME_DELIMITER);
return moduleName.substring(idx + 1);
}
return moduleName;
}
public static boolean isJMSRA(String moduleName) {
return moduleName.equalsIgnoreCase(ConnectorConstants.DEFAULT_JMS_ADAPTER);
}
}