Author: svkrish
Date: Tue Mar 11 11:59:14 2008
New Revision: 636059
URL: http://svn.apache.org/viewvc?rev=636059&view=rev
Log:
cleaning up and fixing holes in policy inheritance in operations
Modified:
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java
incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java
incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyValidationUtils.java
Modified:
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java?rev=636059&r1=636058&r2=636059&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
Tue Mar 11 11:59:14 2008
@@ -42,8 +42,10 @@
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Base;
import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.ComponentService;
import org.apache.tuscany.sca.assembly.ComponentType;
+import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.ConfiguredOperation;
import org.apache.tuscany.sca.assembly.ConstrainingType;
import org.apache.tuscany.sca.assembly.Contract;
@@ -67,6 +69,8 @@
import org.apache.tuscany.sca.policy.PolicySet;
import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
import org.apache.tuscany.sca.policy.impl.IntentAttachPointTypeFactoryImpl;
+import org.apache.tuscany.sca.policy.util.PolicyValidationException;
+import org.apache.tuscany.sca.policy.util.PolicyValidationUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
@@ -234,7 +238,7 @@
* @throws ContributionResolveException
*/
protected Implementation resolveImplementation(Implementation
implementation, ModelResolver resolver)
- throws ContributionResolveException {
+ throws ContributionResolveException, PolicyValidationException {
if (implementation != null) {
if (implementation.isUnresolved()) {
implementation = resolver.resolveModel(Implementation.class,
implementation);
@@ -247,34 +251,36 @@
if ( implementation instanceof PolicySetAttachPoint ) {
PolicySetAttachPoint policiedImpl =
(PolicySetAttachPoint)implementation;
resolveIntents(policiedImpl.getRequiredIntents(),
resolver);
+
PolicyValidationUtils.validateIntents(policiedImpl, policiedImpl.getType());
+
resolvePolicySets(policiedImpl.getPolicySets(),
resolver);
- validatePolicySets(policiedImpl);
+
PolicyValidationUtils.validatePolicySets(policiedImpl,
+
policiedImpl.getApplicablePolicySets());
if ( implementation instanceof
OperationsConfigurator ) {
OperationsConfigurator opsConfigurator =
(OperationsConfigurator)implementation;
for ( ConfiguredOperation implOp :
opsConfigurator.getConfiguredOperations() ) {
resolveIntents(implOp.getRequiredIntents(), resolver);
+
PolicyValidationUtils.validateIntents(implOp, policiedImpl.getType());
+
resolvePolicySets(implOp.getPolicySets(),
resolver);
- validatePolicySets(implOp,
policiedImpl.getApplicablePolicySets());
+
PolicyValidationUtils.validatePolicySets(implOp,
policiedImpl.getApplicablePolicySets());
}
}
for ( Service service :
implementation.getServices() ) {
resolveIntents(service.getRequiredIntents(),
resolver);
resolvePolicySets(service.getPolicySets(),
resolver);
- validatePolicySets(service,
policiedImpl.getApplicablePolicySets());
for ( ConfiguredOperation svcOp :
service.getConfiguredOperations() ) {
resolveIntents(svcOp.getRequiredIntents(),
resolver);
resolvePolicySets(svcOp.getPolicySets(),
resolver);
- validatePolicySets(svcOp,
policiedImpl.getApplicablePolicySets());
}
}
for ( Reference reference :
implementation.getReferences() ) {
resolveIntents(reference.getRequiredIntents(),
resolver);
resolvePolicySets(reference.getPolicySets(),
resolver);
- validatePolicySets(reference,
policiedImpl.getApplicablePolicySets());
}
}
@@ -304,7 +310,7 @@
resolveContracts(null, contracts, resolver);
}
-
+
/**
* Resolve interface, callback interface and bindings on a list of
contracts.
* @param parent element for the contracts
@@ -313,90 +319,137 @@
*/
protected <C extends Contract> void resolveContracts(Base parent, List<C>
contracts, ModelResolver resolver)
throws ContributionResolveException {
+
+ String parentName = (parent instanceof Composite) ?
((Composite)parent).getName().toString() :
+ (parent instanceof Component) ?
((Component)parent).getName().toString() : "UNKNOWN";
+
for (Contract contract : contracts) {
- //resolve the intents and policysets as they need to be copied
over into the
- //child binding elements
- resolveIntents(contract.getRequiredIntents(), resolver);
- resolvePolicySets(contract.getPolicySets(), resolver);
- resolvePolicySets(contract.getApplicablePolicySets(), resolver);
-
- //inherit the composite / component level policy intents and
policysets
- if ( parent != null && parent instanceof PolicySetAttachPoint ) {
-
addInheritedIntents(((PolicySetAttachPoint)parent).getRequiredIntents(),
contract.getRequiredIntents());
-
addInheritedPolicySets(((PolicySetAttachPoint)parent).getPolicySets(),
contract.getPolicySets());
-
addInheritedPolicySets(((PolicySetAttachPoint)parent).getApplicablePolicySets(),
contract.getApplicablePolicySets());
- }
-
- for ( ConfiguredOperation confOp :
contract.getConfiguredOperations() ) {
- resolveIntents(confOp.getRequiredIntents(), resolver);
- resolvePolicySets(confOp.getPolicySets(), resolver);
- resolvePolicySets(confOp.getApplicablePolicySets(), resolver);
- }
-
- // Resolve the interface contract
- InterfaceContract interfaceContract =
contract.getInterfaceContract();
- if (interfaceContract != null) {
- extensionProcessor.resolve(interfaceContract, resolver);
- }
-
- // Resolve bindings
- for (int i = 0, n = contract.getBindings().size(); i < n; i++) {
- Binding binding = contract.getBindings().get(i);
- extensionProcessor.resolve(binding, resolver);
- if (binding instanceof IntentAttachPoint) {
- IntentAttachPoint policiedBinding =
(IntentAttachPoint)binding;
- resolveIntents(policiedBinding.getRequiredIntents(),
resolver);
+ try {
+ //resolve the intents and policysets as they need to be copied
over into the
+ //child binding elements
+ resolveIntents(contract.getRequiredIntents(), resolver);
+ resolvePolicySets(contract.getPolicySets(), resolver);
+ resolvePolicySets(contract.getApplicablePolicySets(),
resolver);
+
+ //inherit the composite / component level policy intents and
policysets
+ if ( parent != null && parent instanceof PolicySetAttachPoint
) {
+
addInheritedIntents(((PolicySetAttachPoint)parent).getRequiredIntents(),
contract.getRequiredIntents());
+
addInheritedPolicySets(((PolicySetAttachPoint)parent).getPolicySets(),
contract.getPolicySets());
+
addInheritedPolicySets(((PolicySetAttachPoint)parent).getApplicablePolicySets(),
contract.getApplicablePolicySets());
}
- if (binding instanceof PolicySetAttachPoint) {
- PolicySetAttachPoint policiedBinding =
(PolicySetAttachPoint)binding;
- resolvePolicySets(policiedBinding.getPolicySets(),
resolver);
- //validate if attached policysets apply to the binding
-
resolvePolicySets(policiedBinding.getApplicablePolicySets(), resolver);
- validatePolicySets(policiedBinding);
+
+ for ( ConfiguredOperation confOp :
contract.getConfiguredOperations() ) {
+ resolveIntents(confOp.getRequiredIntents(), resolver);
+ resolvePolicySets(confOp.getPolicySets(), resolver);
+ resolvePolicySets(confOp.getApplicablePolicySets(),
resolver);
+
+ //inherit intents and policysets from parent contract
+ addInheritedIntents(contract.getRequiredIntents(),
confOp.getRequiredIntents());
+ addInheritedPolicySets(contract.getPolicySets(),
confOp.getPolicySets());
+ addInheritedPolicySets(contract.getApplicablePolicySets(),
confOp.getApplicablePolicySets());
}
- if (binding instanceof OperationsConfigurator) {
- OperationsConfigurator opConfigurator =
(OperationsConfigurator)binding;
- for (ConfiguredOperation confOp :
opConfigurator.getConfiguredOperations()) {
- resolveIntents(confOp.getRequiredIntents(), resolver);
- resolvePolicySets(confOp.getPolicySets(), resolver);
- resolvePolicySets(confOp.getApplicablePolicySets(),
resolver);
- }
+
+ // Resolve the interface contract
+ InterfaceContract interfaceContract =
contract.getInterfaceContract();
+ if (interfaceContract != null) {
+ extensionProcessor.resolve(interfaceContract, resolver);
}
- }
-
- // Resolve callback bindings
- if (contract.getCallback() != null) {
- resolveIntents(contract.getCallback().getRequiredIntents(),
resolver);
- resolvePolicySets(contract.getCallback().getPolicySets(),
resolver);
-
resolvePolicySets(contract.getCallback().getApplicablePolicySets(), resolver);
- //inherit the contract's policy intents and policysets
- addInheritedIntents(contract.getRequiredIntents(),
contract.getCallback().getRequiredIntents());
- addInheritedPolicySets(contract.getPolicySets(),
contract.getCallback().getPolicySets());
- addInheritedPolicySets(contract.getApplicablePolicySets(),
contract.getCallback().getApplicablePolicySets());
-
- for (int i = 0, n =
contract.getCallback().getBindings().size(); i < n; i++) {
- Binding binding =
contract.getCallback().getBindings().get(i);
+
+ // Resolve bindings
+ for (int i = 0, n = contract.getBindings().size(); i < n; i++)
{
+ Binding binding = contract.getBindings().get(i);
extensionProcessor.resolve(binding, resolver);
-
+
if (binding instanceof IntentAttachPoint) {
IntentAttachPoint policiedBinding =
(IntentAttachPoint)binding;
resolveIntents(policiedBinding.getRequiredIntents(),
resolver);
+ PolicyValidationUtils.validateIntents(policiedBinding,
policiedBinding.getType());
}
+
if (binding instanceof PolicySetAttachPoint) {
PolicySetAttachPoint policiedBinding =
(PolicySetAttachPoint)binding;
resolvePolicySets(policiedBinding.getPolicySets(),
resolver);
+ //validate if attached policysets apply to the binding
resolvePolicySets(policiedBinding.getApplicablePolicySets(), resolver);
- validatePolicySets(policiedBinding);
+ //inherit the applicable policysets from parent
contract as whatever applies to that
+ //applies to the binding as well
+
addInheritedPolicySets(contract.getApplicablePolicySets(),
policiedBinding.getApplicablePolicySets());
+
PolicyValidationUtils.validatePolicySets(policiedBinding);
}
+
if (binding instanceof OperationsConfigurator) {
OperationsConfigurator opConfigurator =
(OperationsConfigurator)binding;
for (ConfiguredOperation confOp :
opConfigurator.getConfiguredOperations()) {
resolveIntents(confOp.getRequiredIntents(),
resolver);
+ PolicyValidationUtils.validateIntents(confOp,
((PolicySetAttachPoint)binding).getType());
+
resolvePolicySets(confOp.getPolicySets(),
resolver);
resolvePolicySets(confOp.getApplicablePolicySets(), resolver);
+ //inherit the applicable policysets from parent
binding as whatever applies to that
+ //applies to the binding as well
+
addInheritedPolicySets(((PolicySetAttachPoint)binding).getApplicablePolicySets(),
+
confOp.getApplicablePolicySets());
+ PolicyValidationUtils.validatePolicySets(confOp);
+
+
addInheritedIntents(((PolicySetAttachPoint)binding).getRequiredIntents(),
+ confOp.getRequiredIntents());
+
addInheritedPolicySets(((PolicySetAttachPoint)binding).getPolicySets(),
+ confOp.getPolicySets());
}
}
}
+
+ // Resolve callback bindings
+ if (contract.getCallback() != null) {
+
resolveIntents(contract.getCallback().getRequiredIntents(), resolver);
+ resolvePolicySets(contract.getCallback().getPolicySets(),
resolver);
+
resolvePolicySets(contract.getCallback().getApplicablePolicySets(), resolver);
+ //inherit the contract's policy intents and policysets
+ addInheritedIntents(contract.getRequiredIntents(),
contract.getCallback().getRequiredIntents());
+ addInheritedPolicySets(contract.getPolicySets(),
contract.getCallback().getPolicySets());
+ addInheritedPolicySets(contract.getApplicablePolicySets(),
contract.getCallback().getApplicablePolicySets());
+
+ for (int i = 0, n =
contract.getCallback().getBindings().size(); i < n; i++) {
+ Binding binding =
contract.getCallback().getBindings().get(i);
+ extensionProcessor.resolve(binding, resolver);
+
+ if (binding instanceof IntentAttachPoint) {
+ IntentAttachPoint policiedBinding =
(IntentAttachPoint)binding;
+
resolveIntents(policiedBinding.getRequiredIntents(), resolver);
+
PolicyValidationUtils.validateIntents(policiedBinding,
policiedBinding.getType());
+ }
+
+ if (binding instanceof PolicySetAttachPoint) {
+ PolicySetAttachPoint policiedBinding =
(PolicySetAttachPoint)binding;
+ resolvePolicySets(policiedBinding.getPolicySets(),
resolver);
+ //validate if attached policysets apply to the
binding
+
resolvePolicySets(policiedBinding.getApplicablePolicySets(), resolver);
+ //inherit the applicable policysets from parent
contract as whatever applies to that
+ //applies to the binding as well
+
addInheritedPolicySets(contract.getApplicablePolicySets(),
policiedBinding.getApplicablePolicySets());
+
PolicyValidationUtils.validatePolicySets(policiedBinding);
+ }
+
+ if (binding instanceof OperationsConfigurator) {
+ OperationsConfigurator opConfigurator =
(OperationsConfigurator)binding;
+ for (ConfiguredOperation confOp :
opConfigurator.getConfiguredOperations()) {
+ resolveIntents(confOp.getRequiredIntents(),
resolver);
+ PolicyValidationUtils.validateIntents(confOp,
((PolicySetAttachPoint)binding).getType());
+
+ resolvePolicySets(confOp.getPolicySets(),
resolver);
+
resolvePolicySets(confOp.getApplicablePolicySets(), resolver);
+ //inherit the applicable policysets from
parent binding as whatever applies to that
+ //applies to the binding as well
+
addInheritedPolicySets(((PolicySetAttachPoint)binding).getApplicablePolicySets(),
+
confOp.getApplicablePolicySets());
+
PolicyValidationUtils.validatePolicySets(confOp);
+ }
+ }
+ }
+ }
+ } catch ( PolicyValidationException e ) {
+ throw new ContributionResolveException("PolicyValidation
exceptions when processing service/reference '"
+ + contract.getName() +
"' in '" + parentName + "'");
}
}
}
@@ -714,7 +767,7 @@
}
- protected void validatePolicySets(PolicySetAttachPoint
policySetAttachPoint)
+ /*protected void validatePolicySets(PolicySetAttachPoint
policySetAttachPoint)
throws
ContributionResolveException {
validatePolicySets(policySetAttachPoint,
policySetAttachPoint.getApplicablePolicySets());
}
@@ -740,28 +793,5 @@
}
}
-
- /*String appliesTo = null;
- IntentAttachPointType attachPointType = policySetAttachPoint.getType();
- String scdlFragment = ""; //need to write the 'parent' as scdl xml
string
-
- if ( attachPointType != null ) {
- //validate policysets specified for the attachPoint
- for (PolicySet policySet : policySetAttachPoint.getPolicySets()) {
- appliesTo = policySet.getAppliesTo();
- if ( !policySet.isUnresolved() ) {
- if
(!PolicyValidationUtils.isPolicySetApplicable(scdlFragment, appliesTo,
attachPointType)) {
- throw new ContributionResolveException("Policy Set '"
+ policySet.getName()
- + "' does not apply to binding type "
- + attachPointType.getName());
-
- } }
- else {
- throw new ContributionResolveException("Policy Set '" +
policySet.getName()
- + "' is not defined in this domain ");
-
- }
- }
- }*/
- }
+ }*/
}
Modified:
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java?rev=636059&r1=636058&r2=636059&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java
Tue Mar 11 11:59:14 2008
@@ -65,6 +65,8 @@
import org.apache.tuscany.sca.policy.PolicyFactory;
import org.apache.tuscany.sca.policy.PolicySet;
import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
+import org.apache.tuscany.sca.policy.util.PolicyValidationException;
+import org.apache.tuscany.sca.policy.util.PolicyValidationUtils;
import org.w3c.dom.Document;
/**
@@ -825,33 +827,42 @@
//resolve component implemenation
Implementation implementation = component.getImplementation();
if (implementation != null) {
- //resolve intents and policysets specified on this
implementation
- //before copying them over to the component. Before that,
from the component
- //copy over the applicablePolicySets alone as it might have to
be
- //used to validate the policysets specified on the
implementation
-
- resolveImplIntentsAndPolicySets(implementation,
component.getApplicablePolicySets(), resolver);
-
- copyPoliciesToComponent(component, implementation, resolver,
true);
-
- //now resolve the implementation so that even if there is a
shared instance
- //for this that is resolved, the specified intents and
policysets are safe in the
- //component and not lost
- implementation = resolveImplementation(implementation,
resolver);
-
- //resolved implementation may contain intents and policysets
specified at
- //componentType (either in the componentType side file or in
annotations if its a
- //java implementation). This has to be consolidated in to the
component.
- copyPoliciesToComponent(component, implementation, resolver,
false);
-
- component.setImplementation(implementation);
+ try {
+ //resolve intents and policysets specified on this
implementation
+ //before copying them over to the component. Before that,
from the component
+ //copy over the applicablePolicySets alone as it might
have to be
+ //used to validate the policysets specified on the
implementation
+
+ resolveImplIntentsAndPolicySets(implementation,
+
component.getApplicablePolicySets(),
+ resolver);
+
+ copyPoliciesToComponent(component, implementation,
resolver, true);
+
+ //now resolve the implementation so that even if there is
a shared instance
+ //for this that is resolved, the specified intents and
policysets are safe in the
+ //component and not lost
+ implementation = resolveImplementation(implementation,
resolver);
+
+ //resolved implementation may contain intents and
policysets specified at
+ //componentType (either in the componentType side file or
in annotations if its a
+ //java implementation). This has to be consolidated in to
the component.
+ copyPoliciesToComponent(component, implementation,
resolver, false);
+
+ component.setImplementation(implementation);
+ } catch ( PolicyValidationException e ) {
+ throw new ContributionResolveException("PolicyValidation
exception when processing implementation of component '"
+ +
component.getName() + "' due to " + e.getMessage());
+ }
+
}
}
}
private void resolveImplIntentsAndPolicySets(Implementation implementation,
List<PolicySet>
inheritedApplicablePolicySets,
- ModelResolver resolver)
throws ContributionResolveException
+ ModelResolver resolver)
throws ContributionResolveException,
+
PolicyValidationException
{
if ( implementation instanceof PolicySetAttachPoint ) {
PolicySetAttachPoint policiedImpl =
(PolicySetAttachPoint)implementation;
@@ -859,16 +870,29 @@
policiedImpl.getApplicablePolicySets().addAll(inheritedApplicablePolicySets);
resolveIntents(policiedImpl.getRequiredIntents(), resolver);
+ PolicyValidationUtils.validateIntents(policiedImpl,
policiedImpl.getType());
+
resolvePolicySets(policiedImpl.getPolicySets(), resolver);
resolvePolicySets(policiedImpl.getApplicablePolicySets(),
resolver);
- validatePolicySets(policiedImpl);
+
+ PolicyValidationUtils.validatePolicySets(policiedImpl);
if ( implementation instanceof OperationsConfigurator ) {
for ( ConfiguredOperation implConfOp :
((OperationsConfigurator)implementation).getConfiguredOperations() ) {
resolveIntents(implConfOp.getRequiredIntents(), resolver);
+ PolicyValidationUtils.validateIntents(implConfOp,
policiedImpl.getType());
+
resolvePolicySets(implConfOp.getPolicySets(), resolver);
resolvePolicySets(implConfOp.getApplicablePolicySets(),
resolver);
- validatePolicySets(implConfOp,
policiedImpl.getApplicablePolicySets());
+ //add the inherited applicablePolicysets
+
addInheritedPolicySets(policiedImpl.getApplicablePolicySets(),
implConfOp.getApplicablePolicySets());
+
+ PolicyValidationUtils.validatePolicySets(implConfOp);
+
+
addInheritedIntents(((PolicySetAttachPoint)implementation).getRequiredIntents(),
+ implConfOp.getRequiredIntents());
+
addInheritedPolicySets(((PolicySetAttachPoint)implementation).getPolicySets(),
+ implConfOp.getPolicySets());
}
}
}
Modified:
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java?rev=636059&r1=636058&r2=636059&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java
(original)
+++
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java
Tue Mar 11 11:59:14 2008
@@ -50,7 +50,7 @@
computeIntents(contract.getBindings(), contract.getRequiredIntents());
computePolicySets(contract.getApplicablePolicySets(),
contract.getBindings(), contract.getPolicySets());
- for ( Binding binding : contract.getBindings() ) {
+ /*for ( Binding binding : contract.getBindings() ) {
if ( binding instanceof IntentAttachPoint ) {
computeIntentsForOperations((IntentAttachPoint)binding);
}
@@ -59,7 +59,7 @@
computePolicySetsForOperations(((PolicySetAttachPoint)binding).getApplicablePolicySets(),
(PolicySetAttachPoint)binding);
}
- }
+ }*/
if ( contract.getCallback() != null ) {
computeIntents(contract.getCallback().getBindings(),
@@ -80,9 +80,7 @@
inheritedIntents);
policiedBinding.getRequiredIntents().addAll(prunedIntents);
- computeIntents(policiedBinding);
- //trimInherentlyProvidedIntents(policiedBinding.getType(),
- //
policiedBinding.getRequiredIntents());
+ normalizeIntents(policiedBinding);
computeIntentsForOperations((IntentAttachPoint)policiedBinding);
}
@@ -101,7 +99,7 @@
inheritedPolicySets,
policiedBinding.getApplicablePolicySets());
policiedBinding.getPolicySets().addAll(prunedPolicySets);
- computePolicySets(policiedBinding);
+ normalizePolicySets(policiedBinding);
computePolicySetsForOperations(applicablePolicySets,
policiedBinding);
}
Modified:
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java?rev=636059&r1=636058&r2=636059&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java
(original)
+++
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java
Tue Mar 11 11:59:14 2008
@@ -51,7 +51,7 @@
parent.getRequiredIntents());
parent.getRequiredIntents().clear();
parent.getRequiredIntents().addAll(prunedIntents);
- computeIntents(parent);
+ normalizeIntents(parent);
computeIntentsForOperations((OperationsConfigurator)parent,
(IntentAttachPoint)implementation,
@@ -63,7 +63,7 @@
parent.getApplicablePolicySets());
parent.getPolicySets().clear();
parent.getPolicySets().addAll(prunedPolicySets);
- computePolicySets(parent);
+ normalizePolicySets(parent);
computePolicySetsForOperations(parent.getApplicablePolicySets(),
(OperationsConfigurator)parent,
(PolicySetAttachPoint)implementation);
Modified:
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java?rev=636059&r1=636058&r2=636059&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java
(original)
+++
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java
Tue Mar 11 11:59:14 2008
@@ -61,7 +61,7 @@
for (Intent intent : inheritableIntents) {
if ( !intent.isUnresolved() ) {
for (QName constrained : intent.getConstrains()) {
- if ( isConstrained(constrained, attachPointType)) {
+ if ( PolicyValidationUtils.isConstrained(constrained,
attachPointType)) {
validInheritableIntents.add(intent);
break;
}
@@ -83,10 +83,10 @@
}
}
- protected void computeIntents(IntentAttachPoint intentAttachPoint) {
+ protected void normalizeIntents(IntentAttachPoint intentAttachPoint) {
//expand profile intents specified in the attachpoint (binding /
implementation)
expandProfileIntents(intentAttachPoint.getRequiredIntents());
-
+
//remove duplicates and ...
//where qualified form of intent exists retain it and remove the
qualifiable intent
filterDuplicatesAndQualifiableIntents(intentAttachPoint);
@@ -122,7 +122,7 @@
//expand profile intents specified on operations
expandProfileIntents(confOp.getRequiredIntents());
- validateIntents(confOp, attachPointType);
+ //validateIntents(confOp, attachPointType);
//add intents specified for parent intent attach point (binding /
implementation)
//wherever its not overriden in the operation
@@ -167,29 +167,6 @@
}
}
- /*protected List<PolicySet> computeInheritablePolicySets(Base parent,
-
IntentAttachPointType attachPointType,
- List<PolicySet>
inheritablePolicySets)
- throws
PolicyValidationException {
- List<PolicySet> validInheritablePolicySets = new
ArrayList<PolicySet>();
- String appliesTo = null;
- String scdlFragment = null; //need to write parent as scdl fragment
and pass the xml string
- //from the inherited set of policysets add only what applies to the
attach point
- for (PolicySet policySet : inheritablePolicySets) {
- if ( !policySet.isUnresolved() ) {
- appliesTo = policySet.getAppliesTo();
- if (PolicyValidationUtils.isPolicySetApplicable(scdlFragment,
appliesTo, attachPointType)) {
- validInheritablePolicySets.add(policySet);
- }
- } else {
- throw new PolicyValidationException("Policy Set '" +
policySet.getName()
- + "' is not defined in this domain ");
- }
-
- }
- return validInheritablePolicySets;
- }*/
-
protected List<PolicySet>
computeInheritablePolicySets(PolicySetAttachPoint policySetAttachPoint,
List<PolicySet>
inheritablePolicySets,
List<PolicySet>
applicablePolicySets)
@@ -209,7 +186,7 @@
return validInheritablePolicySets;
}
- protected void computePolicySets(PolicySetAttachPoint policySetAttachPoint
) {
+ protected void normalizePolicySets(PolicySetAttachPoint
policySetAttachPoint ) {
//get rid of duplicate entries
HashMap<QName, PolicySet> policySetTable = new HashMap<QName,
PolicySet>();
for ( PolicySet policySet : policySetAttachPoint.getPolicySets() ) {
@@ -345,12 +322,6 @@
}
}
- private boolean isConstrained(QName constrained, IntentAttachPointType
attachPointType) {
- return (attachPointType != null &&
attachPointType.getName().getNamespaceURI().equals(constrained
-
.getNamespaceURI()) && attachPointType.getName().getLocalPart()
-
.startsWith(constrained.getLocalPart()) );
- }
-
private void filterDuplicatesAndQualifiableIntents(IntentAttachPoint
intentAttachPoint) {
//remove duplicates
Map<QName, Intent> intentsTable = new HashMap<QName, Intent>();
@@ -381,7 +352,7 @@
for (Intent intent : confOp.getRequiredIntents()) {
if ( !intent.isUnresolved() ) {
for (QName constrained : intent.getConstrains()) {
- if (isConstrained(constrained, attachPointType)) {
+ if (PolicyValidationUtils.isConstrained(constrained,
attachPointType)) {
found = true;
break;
}
Modified:
incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java?rev=636059&r1=636058&r2=636059&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java
(original)
+++
incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java
Tue Mar 11 11:59:14 2008
@@ -246,10 +246,11 @@
}
opConf = (OperationsConfigurator)composite.getComponents().get(6);
-
assertEquals(opConf.getConfiguredOperations().get(0).getPolicySets().size(), 3);
+
assertEquals(opConf.getConfiguredOperations().get(0).getPolicySets().size(), 4);
for ( PolicySet policySet :
opConf.getConfiguredOperations().get(0).getPolicySets() ) {
String policySetName = policySet.getName().getLocalPart();
if ( !(policySetName.equals("tuscanyPolicySet_1") ||
policySetName.equals("tuscanyPolicySet_2")
+ || policySetName.equals("tuscanyPolicySet_3")
|| policySetName.equals("tuscanyPolicySet_4")) ) {
fail();
}
Modified:
incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyValidationUtils.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyValidationUtils.java?rev=636059&r1=636058&r2=636059&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyValidationUtils.java
(original)
+++
incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyValidationUtils.java
Tue Mar 11 11:59:14 2008
@@ -19,35 +19,83 @@
package org.apache.tuscany.sca.policy.util;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.policy.Intent;
+import org.apache.tuscany.sca.policy.IntentAttachPoint;
import org.apache.tuscany.sca.policy.IntentAttachPointType;
+import org.apache.tuscany.sca.policy.PolicySet;
+import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
/**
* @version $Rev$ $Date$
*/
public class PolicyValidationUtils {
- /*public static boolean isPolicySetApplicable(String scdlFragment,
- String xpath,
- IntentAttachPointType
attachPointType) {
-
- //FIXME: For now do a simple check and later implement whatever is
mentioned in the next comment
- if ( xpath != null && attachPointType != null &&
xpath.indexOf(attachPointType.getName().getLocalPart()) != -1) {
- return true;
- } else {
- return false;
- }
-
-
- //create a xml node out of the parent object.. i.e. write the parent
object as scdl fragment
- //invoke PropertyUtil.evaluate(null, node, xpath)
- //verify the result Node's QName against the bindingType's name
-
- /*if (parent instanceof ComponentReference) {
- } else if (parent instanceof ComponentReference) {
- } else if (parent instanceof Component) {
- } else if (parent instanceof CompositeService) {
- } else if (parent instanceof CompositeReference) {
+ public static boolean isConstrained(QName constrained,
IntentAttachPointType attachPointType) {
+ return (attachPointType != null &&
attachPointType.getName().getNamespaceURI()
+ .equals(constrained.getNamespaceURI()) &&
attachPointType.getName().getLocalPart()
+ .startsWith(constrained.getLocalPart()));
+ }
+
+ public static void validateIntents(IntentAttachPoint attachPoint,
+ IntentAttachPointType attachPointType)
+ throws PolicyValidationException {
+ boolean found = false;
+ if (attachPointType != null) {
+ // validate intents specified against the parent (binding /
+ // implementation)
+ found = false;
+ for (Intent intent : attachPoint.getRequiredIntents()) {
+ if (!intent.isUnresolved()) {
+ for (QName constrained : intent.getConstrains()) {
+ if (isConstrained(constrained, attachPointType)) {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
+ throw new PolicyValidationException("Policy Intent '"
+ intent.getName()
+ + "' does not constrain extension type "
+ + attachPointType.getName());
+ }
+ } else {
+ throw new PolicyValidationException("Policy Intent '" +
intent.getName()
+ + "' is not defined in this domain ");
+ }
+ }
+ }
+ }
+
+ public static void validatePolicySets(PolicySetAttachPoint
policySetAttachPoint)
+ throws PolicyValidationException {
+ validatePolicySets(policySetAttachPoint,
policySetAttachPoint.getApplicablePolicySets());
+ }
+
+ public static void validatePolicySets(PolicySetAttachPoint
policySetAttachPoint,
+ List<PolicySet> applicablePolicySets)
+ throws PolicyValidationException {
+ // Since the applicablePolicySets in a policySetAttachPoint will
already
+ // have the list of policysets that might ever be applicable to this
attachPoint,
+ // just check if the defined policysets feature in the list of
applicable
+ // policysets
+ IntentAttachPointType attachPointType = policySetAttachPoint.getType();
+ for (PolicySet definedPolicySet :
policySetAttachPoint.getPolicySets()) {
+ if (!definedPolicySet.isUnresolved()) {
+ if (!applicablePolicySets.contains(definedPolicySet)) {
+ throw new PolicyValidationException("Policy Set '" +
definedPolicySet
+ .getName()
+ + "' does not apply to binding type "
+ + attachPointType.getName());
+ }
+ } else {
+ throw new PolicyValidationException("Policy Set '" +
definedPolicySet.getName()
+ + "' is not defined in this domain ");
+
+ }
}
- return true;
- }*/
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]