{
attachAuthenticationMechanism(md, authMechanism);
}
}
DescriptionGroupMetaData descGroup = new DescriptionGroupMetaData();
md.setDescriptionGroup(descGroup);
// Description
String[] description = c.description();
if (description != null)
{
if (descGroup.getDescriptions() == null)
{
DescriptionsImpl descsImpl = new DescriptionsImpl();
descGroup.setDescriptions(descsImpl);
}
for (String desc : description)
{
DescriptionImpl descImpl = new DescriptionImpl();
descImpl.setDescription(desc);
((DescriptionsImpl)descGroup.getDescriptions()).add(descImpl);
}
}
// Display name
String[] displayName = c.displayName();
if (displayName != null)
{
if (descGroup.getDisplayNames() == null)
{
DisplayNamesImpl dnsImpl = new DisplayNamesImpl();
descGroup.setDisplayNames(dnsImpl);
}
for (String dn : displayName)
{
DisplayNameImpl dnImpl = new DisplayNameImpl();
dnImpl.setDisplayName(dn);
((DisplayNamesImpl)descGroup.getDisplayNames()).add(dnImpl);
}
}
// EIS type
String eisType = c.eisType();
if (eisType != null)
{
if (md.getEISType() == null)
md.setEISType(eisType);
}
// Large icon
String[] largeIcon = c.largeIcon();
if (largeIcon != null)
{
if (descGroup.getIcons() == null)
{
IconsImpl icsImpl = new IconsImpl();
descGroup.setIcons(icsImpl);
}
for (String large : largeIcon)
{
IconImpl icImpl = new IconImpl();
icImpl.setLargeIcon(large);
((IconsImpl)descGroup.getIcons()).add(icImpl);
}
}
// License description
String[] licenseDescription = c.licenseDescription();
if (licenseDescription != null)
{
if (md.getLicense() == null)
md.setLicense(new LicenseMetaData());
if (md.getLicense().getDescriptions() == null)
{
DescriptionsImpl descsImpl = new DescriptionsImpl();
md.getLicense().setDescriptions(descsImpl);
}
for (String desc : licenseDescription)
{
DescriptionImpl descImpl = new DescriptionImpl();
descImpl.setDescription(desc);
((DescriptionsImpl)md.getLicense().getDescriptions()).add(descImpl);
}
}
// License required
boolean licenseRequired = c.licenseRequired();
if (md.getLicense() == null)
md.setLicense(new LicenseMetaData());
md.getLicense().setRequired(licenseRequired);
// Reauthentication support
boolean reauthenticationSupport = c.reauthenticationSupport();
if (md.getRa() != null && md.getRa().getOutboundRa() != null)
{
md.getRa().getOutboundRa().setReAuthSupport(reauthenticationSupport);
}
// RequiredWorkContext
Class<? extends WorkContext>[] requiredWorkContexts = c.requiredWorkContexts();
if (requiredWorkContexts != null)
{
for (Class<? extends WorkContext> requiredWorkContext : requiredWorkContexts)
{
if (md instanceof JCA16Base)
{
JCA16Base jmd = (JCA16Base)md;
if (jmd.getRequiredWorkContexts() == null)
jmd.setRequiredWorkContexts(new ArrayList<String>());
if (!jmd.getRequiredWorkContexts().contains(requiredWorkContext.getName()))
{
if (trace)
log.trace("RequiredWorkContext=" + requiredWorkContext.getName());
jmd.getRequiredWorkContexts().add(requiredWorkContext.getName());
}
}
}
}
// Security permission
SecurityPermission[] securityPermissions = c.securityPermissions();
if (securityPermissions != null)
{
if (md.getRa() == null)
md.setRa(new ResourceAdapterMetaData());
if (md.getRa().getSecurityPermissions() == null)
md.getRa().setSecurityPermissions(new ArrayList<SecurityPermissionMetaData>());
for (SecurityPermission securityPermission : securityPermissions)
{
SecurityPermissionMetaData spmd = new SecurityPermissionMetaData();
spmd.setSecurityPermissionSpec(securityPermission.permissionSpec());
md.getRa().getSecurityPermissions().add(spmd);
}
}
// Small icon
String[] smallIcon = c.smallIcon();
if (smallIcon != null)
{
IconsImpl icsImpl;
if (descGroup.getIcons() == null)
{
icsImpl = new IconsImpl();
descGroup.setIcons(icsImpl);
}
else
{
icsImpl = (IconsImpl)descGroup.getIcons();
}
IconImpl[] icArray = icsImpl.toArray(new IconImpl[icsImpl.size()]);
for (int i = 0; i < smallIcon.length; i++)
{
if (i < icArray.length)