Author: bdaniel
Date: Mon Jul 26 14:29:34 2010
New Revision: 979307
URL: http://svn.apache.org/viewvc?rev=979307&view=rev
Log:
Add more intent validation and fix up inner composite policy set processing
Modified:
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentPolicyBuilderImpl.java
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java
tuscany/sca-java-2.x/trunk/modules/builder/src/main/resources/org/apache/tuscany/sca/builder/builder-validation-messages.properties
Modified:
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentPolicyBuilderImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentPolicyBuilderImpl.java?rev=979307&r1=979306&r2=979307&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentPolicyBuilderImpl.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentPolicyBuilderImpl.java
Mon Jul 26 14:29:34 2010
@@ -33,7 +33,6 @@ import org.apache.tuscany.sca.assembly.B
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.ComponentReference;
import org.apache.tuscany.sca.assembly.ComponentService;
-import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.CompositeReference;
import org.apache.tuscany.sca.assembly.CompositeService;
import org.apache.tuscany.sca.assembly.Contract;
@@ -43,7 +42,6 @@ import org.apache.tuscany.sca.assembly.S
import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint;
import org.apache.tuscany.sca.assembly.builder.Messages;
-import org.apache.tuscany.sca.assembly.xml.Constants;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.definitions.Definitions;
import org.apache.tuscany.sca.monitor.Monitor;
@@ -465,23 +463,10 @@ public class ComponentPolicyBuilderImpl
protected void removeConstrainedIntents(PolicySubject subject,
BuilderContext context) {
List<Intent> intents = subject.getRequiredIntents();
- QName baseType = null;
- QName type = null;
// Remove the intents whose @contrains do not include the current
element
ExtensionType extensionType = subject.getExtensionType();
-
- // Need to check elements that don't have an extension type, like
Composites
- // References don't have an extension type, but they're checked at
wiring time
- if ( extensionType == null ) {
- if ( subject instanceof Composite )
- type = Constants.COMPOSITE_QNAME;
- } else {
- type = extensionType.getType();
- baseType = extensionType.getBaseType();
- }
-
- if(type != null){
+ if(extensionType != null){
List<Intent> copy = new ArrayList<Intent>(intents);
for (Intent i : copy) {
List<ExtensionType> constrainedTypes = i.getConstrainedTypes();
@@ -491,8 +476,8 @@ public class ComponentPolicyBuilderImpl
if (constrainedTypes.size() > 0){
boolean constraintFound = false;
for (ExtensionType constrainedType :
i.getConstrainedTypes()){
- if (constrainedType.getType().equals(type) ||
- constrainedType.getType().equals(baseType)){
+ if
(constrainedType.getType().equals(extensionType.getType()) ||
+
constrainedType.getType().equals(extensionType.getBaseType())){
constraintFound = true;
break;
}
Modified:
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java?rev=979307&r1=979306&r2=979307&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
Mon Jul 26 14:29:34 2010
@@ -197,18 +197,10 @@ public class CompositePolicyBuilderImpl
}
}
- if (implementation instanceof Composite) {
-
- // POL-4009 componentType attached policySets are
ignored when policySets are
- // attached to the using component definition.
- if ( !component.getPolicySets().isEmpty() ||
!composite.getPolicySets().isEmpty() ) {
- implementation.getPolicySets().clear();
- }
-
+ if (implementation instanceof Composite) {
resolveAndCheck(implementation, context);
inherit(implementation, Intent.Type.implementation,
true, component, composite);
computePolicies((Composite)implementation, context);
- removeConstrainedIntents(implementation, context);
expandDefaultIntents(implementation,context);
checkIntentsResolved(implementation,context);
} else {
@@ -254,12 +246,41 @@ public class CompositePolicyBuilderImpl
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() ) {
@@ -268,12 +289,27 @@ public class CompositePolicyBuilderImpl
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());
+ }
+ }
+ }
+ }
}
}
Modified:
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java?rev=979307&r1=979306&r2=979307&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java
Mon Jul 26 14:29:34 2010
@@ -112,16 +112,7 @@ public class PolicyAttachmentBuilderImpl
if (definitions == null || (definitions.getPolicySets().isEmpty()
&& definitions.getExternalAttachments().isEmpty()) ) {
return composite;
}
- // Recursively apply the xpath against the composites referenced
by <implementation.composite>
- for (Component component : composite.getComponents()) {
- Implementation impl = component.getImplementation();
- if (impl instanceof Composite) {
- Composite patched = applyXPath((Composite)impl,
definitions, monitor);
- if (patched != impl) {
- component.setImplementation(patched);
- }
- }
- }
+
Document document = null;
@@ -149,6 +140,23 @@ public class PolicyAttachmentBuilderImpl
}
}
+ // Recursively apply the xpath against the composites referenced
by <implementation.composite>
+ // If the composite or component has policy sets attached, we have
to ignore policy sets
+ // attached to the inner composite.
+ if ( composite.getPolicySets().isEmpty() ) {
+ for (Component component : composite.getComponents()) {
+ if ( component.getPolicySets().isEmpty() ) {
+ Implementation impl =
component.getImplementation();
+ if (impl instanceof Composite) {
+ Composite patched =
applyXPath((Composite)impl, definitions, monitor);
+ if (patched != impl) {
+
component.setImplementation(patched);
+ }
+ }
+ }
+ }
+ }
+
return composite;
} finally {
monitor.popContext();
Modified:
tuscany/sca-java-2.x/trunk/modules/builder/src/main/resources/org/apache/tuscany/sca/builder/builder-validation-messages.properties
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/builder/src/main/resources/org/apache/tuscany/sca/builder/builder-validation-messages.properties?rev=979307&r1=979306&r2=979307&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/builder/src/main/resources/org/apache/tuscany/sca/builder/builder-validation-messages.properties
(original)
+++
tuscany/sca-java-2.x/trunk/modules/builder/src/main/resources/org/apache/tuscany/sca/builder/builder-validation-messages.properties
Mon Jul 26 14:29:34 2010
@@ -32,8 +32,8 @@ IntentNotSatisfiedAtBuild = The intent
MutuallyExclusiveIntentsAtBuild =
[POL40009,ASM60009,ASM60010,JCA70001,JCA70003] Intent {0} and {1} are mutually
exclusive
IntentNotFoundAtBuild = Intent {0} is not defined in SCA definitions
NoListenerIntentSpecifiedOnService = The noListener intent may only be
specified on a reference.
-TransactedOneWayWithManagedTransactionLocal = The Component Reference {1} can
not require transactedOneWay because the implementation for Component {0}
requires managedTransaction.local
-PropagatesTransactionWithNoManagedTran = The component service {1} can not
require propagatesTransaction because the implementation for component {0}
requires noManagedTransaction
+TransactedOneWayWithManagedTransactionLocal = The Component {0} {2} can not
require transactedOneWay because the implementation for Component {1} requires
managedTransaction.local
+PropagatesTransactionWithNoManagedTran = The component {0} {2} can not require
propagatesTransaction because the implementation for component {1} requires
noManagedTransaction
TransactedOneWayWithTwoWayOp = The component reference {0} can not require
transactedOneWay because the operation {1} is a two way operation
ImmediateOneWayWithTwoWayOp = The component reference {0} can not require
immediateOneWay because the operation {1} is a two way operation
-
+PropagatesTransactionWithLocalTran = The component {0} {2} can not require
propagatesTransaction because the implementation for component {1} requires
managedTransaction.local