* to the EJB deployment descriptor, which could lead to inconsistent WS-AT configuration
* behavior between EJB + annotations and EJB + DD use cases
*/
// final EjbTransactionType defaultEjbTxnAttr = EjbTransactionType.getDefaultFor(seiClass);
final EjbTransactionType defaultEjbTxnAttr = EjbTransactionType.NOT_DEFINED;
final Transactional defaultFeature = seiClass.getAnnotation(Transactional.class);
for (JavaMethod method : model.getJavaMethods()) {
final Transactional effectiveFeature = getEffectiveFeature(method.getSEIMethod(), defaultFeature);
if (effectiveFeature == null || effectiveFeature.enabled() == false) {
continue;
}
final EjbTransactionType effectiveEjbTxType = defaultEjbTxnAttr.getEffectiveType(method.getSEIMethod());
final String policyId = model.getBoundPortTypeName().getLocalPart() + "_" + method.getOperationName() + "_WSAT_Policy";
final Policy policy = AtPolicyCreator.createPolicy(policyId, effectiveFeature.version().namespaceVersion, effectiveFeature.value(), effectiveEjbTxType);
if (policy != null) {
// attach ws-at policy assertion to binding/operation
final WsdlBindingSubject wsdlSubject = WsdlBindingSubject.createBindingOperationSubject(model.getBoundPortTypeName(),
new QName(model.getTargetNamespace(), method.getOperationName()));
final PolicySubject generatedWsatPolicySubject = new PolicySubject(wsdlSubject, policy);
if (LOGGER.isLoggable(Level.FINE)) {
LOGGER.fine(LocalizationMessages.WSAT_1002_ADD_AT_POLICY_ASSERTION(
model.getPortName().toString(),
method.getOperationName(),
seiClass.getName(),
method.getSEIMethod().getName(),
effectiveFeature.value().toString(),
effectiveEjbTxType.toString(),
policy.toString()));
}
subjects.add(generatedWsatPolicySubject);
}