// check whether the same auth-mechanism is defined in DD also,
// possible change could be with auth-mechanism's credential-interface for a particular
// auth-mechanism-type
boolean ignore = false;
OutboundResourceAdapter ora = getOutbound(desc);
Set ddAuthMechanisms = ora.getAuthMechanisms();
for (Object o : ddAuthMechanisms) {
AuthMechanism ddAuthMechanism = (AuthMechanism) o;
if (ddAuthMechanism.getAuthMechType().equals(auth.authMechanism())) {
ignore = true;
break;
}
}
// if it was not specified in DD, add it to connector-descriptor
if (!ignore) {
String credentialInterfaceName = ora.getCredentialInterfaceName(auth.credentialInterface());
//XXX: Siva: For now use the first provided description
String description = "";
if(auth.description().length > 0){
description = auth.description()[0];
}
AuthMechanism authM = new AuthMechanism(description, authMechInt, credentialInterfaceName);
ora.addAuthMechanism(authM);
}
}
}
// merge DD and annotation entries of security-permission
SecurityPermission[] perms = connector.securityPermissions();
if (perms != null && perms.length > 0) {
for (SecurityPermission perm : perms) {
boolean ignore = false;
// check whether the same permission is defined in DD also,
// though it does not make any functionality difference except possible
// "Description" change
Set ddSecurityPermissions = desc.getSecurityPermissions();
for (Object o : ddSecurityPermissions) {
com.sun.enterprise.deployment.SecurityPermission ddSecurityPermission =
(com.sun.enterprise.deployment.SecurityPermission) o;
if (ddSecurityPermission.getPermission().equals(perm.permissionSpec())) {
ignore = true;
break;
}
}
// if it was not specified in DD, add it to connector-descriptor
if (!ignore) {
com.sun.enterprise.deployment.SecurityPermission sp =
new com.sun.enterprise.deployment.SecurityPermission();
sp.setPermission(perm.permissionSpec());
//XXX: Siva for now use the first provided Description
String firstDesc = "";
if(perm.description().length > 0) firstDesc = perm.description()[0];
sp.setDescription(firstDesc);
desc.addSecurityPermission(sp);
}
}
}
//we should not create outbound resource adapter unless it is required.
//this is necessary as the default value processing in the annotation may
//result in outbound to be defined without any connection-definition which is an issue.
//if reauth is false, we can ignore it as default value in dol is also false.
if(connector.reauthenticationSupport()){
OutboundResourceAdapter ora = getOutbound(desc);
if(!ora.isReauthenticationSupportSet()){
ora.setReauthenticationSupport(connector.reauthenticationSupport());
}
}
//if transaction-support is no-transaction, we can ignore it as default value in dol is also no-transaction.
if(!connector.transactionSupport().equals(TransactionSupport.TransactionSupportLevel.NoTransaction)){
OutboundResourceAdapter ora = getOutbound(desc);
if(!ora.isTransactionSupportSet()){
ora.setTransactionSupport(connector.transactionSupport().toString());
}
}
//merge the DD & annotation specified values of required-inflow-contexts
//merge involves simple union of class-names of inflow-contexts of DD and annotation