in modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java [242:360]
private void validateTransactionIntents(Composite composite, BuilderContext context) {
for ( Component component : composite.getComponents() ) {
if ( component.getImplementation() != null ) {
if ( component.getImplementation() instanceof Composite )
validateTransactionIntents((Composite) component.getImplementation(), context);
for ( Intent implIntent : component.getImplementation().getRequiredIntents() ) {
if ( Constants.MANAGED_TRANSACTION_LOCAL_INTENT.equals(implIntent.getName() ) ) {
for ( ComponentReference reference : component.getReferences() ) {
for ( EndpointReference epr : reference.getEndpointReferences() ) {
for ( Intent eprIntent : epr.getRequiredIntents() ) {
if ( Constants.TRANSACTED_ONE_WAY_INTENT.equals(eprIntent.getName())) {
error(context.getMonitor(),
"TransactedOneWayWithManagedTransactionLocal",
this,
"reference",
epr.getComponent().getName(),
epr.getReference().getName());
} else if ( Constants.PROPAGATES_TRANSACTION_INTENT.equals(eprIntent.getName())) {
error(context.getMonitor(),
"PropagatesTransactionWithLocalTran",
this,
"reference",
epr.getComponent().getName(),
epr.getReference().getName());
}
}
}
}
for ( ComponentService service : component.getServices() ) {
for ( Endpoint ep : service.getEndpoints() ) {
for ( Intent epIntent : ep.getRequiredIntents() ) {
if ( Constants.TRANSACTED_ONE_WAY_INTENT.equals(epIntent.getName())) {
error(context.getMonitor(),
"TransactedOneWayWithManagedTransactionLocal",
this,
"service",
ep.getComponent().getName(),
ep.getService().getName());
} else if ( Constants.PROPAGATES_TRANSACTION_INTENT.equals(epIntent.getName())) {
error(context.getMonitor(),
"PropagatesTransactionWithLocalTran",
this,
"service",
ep.getComponent().getName(),
ep.getService().getName());
}
}
}
}
} else if ( Constants.NO_MANAGED_TRANSACTION_INTENT.equals(implIntent.getName())) {
for ( ComponentService service : component.getServices() ) {
for ( Endpoint ep : service.getEndpoints() ) {
for ( Intent epIntent : ep.getRequiredIntents() ) {
if ( Constants.PROPAGATES_TRANSACTION_INTENT.equals(epIntent.getName())) {
error(context.getMonitor(),
"PropagatesTransactionWithNoManagedTran",
this,
"service",
ep.getComponent().getName(),
ep.getService().getName());
}
}
}
}
for ( ComponentReference reference : component.getReferences() ) {
for ( EndpointReference epr : reference.getEndpointReferences() ) {
for ( Intent eprIntent : epr.getRequiredIntents() ) {
if ( Constants.PROPAGATES_TRANSACTION_INTENT.equals(eprIntent.getName())) {
error(context.getMonitor(),
"PropagatesTransactionWithNoManagedTran",
this,
"reference",
epr.getComponent().getName(),
epr.getReference().getName());
}
}
}
}
}
}
/* TUSCANY-4006 - This is allowed; transactedOneWay applies only to the one-way methods when an interface also has two-way operations
*/
for ( ComponentReference reference : component.getReferences()) {
for ( EndpointReference epr : reference.getEndpointReferences() ) {
for ( Intent eprIntent : epr.getRequiredIntents() ) {
if ( Constants.TRANSACTED_ONE_WAY_INTENT.equals(eprIntent.getName()) ) {
for ( Operation o : epr.getComponentReferenceInterfaceContract().getInterface().getOperations() ) {
if ( !o.isNonBlocking() ) {
error(context.getMonitor(),
"TransactedOneWayWithTwoWayOp",
this,
reference.getName(),
o.getName());
}
}
} else if ( Constants.IMMEDIATE_ONE_WAY_INTENT.equals(eprIntent.getName())) {
for ( Operation o : epr.getComponentReferenceInterfaceContract().getInterface().getOperations() ) {
if ( !o.isNonBlocking() ) {
error(context.getMonitor(),
"ImmediateOneWayWithTwoWayOp",
this,
reference.getName(),
o.getName());
}
}
}
}
}
}
/*
*/
}
}
}