Author: svkrish
Date: Mon Dec 10 00:08:47 2007
New Revision: 602804
URL: http://svn.apache.org/viewvc?rev=602804&view=rev
Log:
fixing support for policies on operations, removing hack from
ComponentImpl
Modified:
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/CompositeWireBuilderImpl.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/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java
incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java
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=602804&r1=602803&r2=602804&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
Mon Dec 10 00:08:47 2007
@@ -794,21 +794,21 @@
//reused and its likely that this implementation
instance will not hold after its resolution
component.getRequiredIntents().addAll(((PolicySetAttachPoint)implementation).getRequiredIntents());
component.getPolicySets().addAll(((PolicySetAttachPoint)implementation).getPolicySets());
+ if ( implementation instanceof
OperationsConfigurator ) {
+
((OperationsConfigurator)component).getConfiguredOperations().
+
addAll(((OperationsConfigurator)implementation).getConfiguredOperations());
+
+ for ( ConfiguredOperation op :
((OperationsConfigurator)component).
+
getConfiguredOperations() ) {
+ resolveIntents(op.getRequiredIntents(),
resolver);
+ resolvePolicySets(op.getPolicySets(),
resolver);
+ }
+
+ }
}
implementation = resolveImplementation(implementation,
resolver);
component.setImplementation(implementation);
-
- //need to do this so that component can set the
configured
- //operations to the implementation instance
- implementation = component.getImplementation();
- if ( implementation instanceof OperationsConfigurator ) {
- OperationsConfigurator opConfigurator =
(OperationsConfigurator)implementation;
- for ( ConfiguredOperation op :
opConfigurator.getConfiguredOperations() ) {
- resolveIntents(op.getRequiredIntents(),
resolver);
- resolvePolicySets(op.getPolicySets(), resolver);
- }
- }
}
}
}
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=602804&r1=602803&r2=602804&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
Mon Dec 10 00:08:47 2007
@@ -19,7 +19,6 @@
package org.apache.tuscany.sca.assembly.builder.impl;
-import java.util.ArrayList;
import java.util.List;
import javax.xml.namespace.QName;
Modified:
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java?rev=602804&r1=602803&r2=602804&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java
Mon Dec 10 00:08:47 2007
@@ -836,7 +836,7 @@
bindingPolicyComputer.computeBindingIntentsAndPolicySets(service);
bindingPolicyComputer.determineApplicableBindingPolicySets(service, null);
} catch ( Exception e ) {
- warning("Theres been an exception relation to policies...
" + e, e);
+ warning("Theres been an exception related to policies...
" + e, e);
//throw new RuntimeException(e);
}
@@ -861,7 +861,7 @@
bindingPolicyComputer.computeBindingIntentsAndPolicySets(reference);
bindingPolicyComputer.determineApplicableBindingPolicySets(reference,
null);
} catch ( Exception e ) {
- warning("Theres been an exception relation to policies...
" + e, e);
+ warning("Theres been an exception related to policies...
" + e, e);
//throw new RuntimeException(e);
}
}
@@ -871,7 +871,7 @@
try {
implPolicyComputer.computeImplementationIntentsAndPolicySets(implemenation,
component);
} catch ( Exception e ) {
- warning("Theres been an exception relation to policies...
" + e, e);
+ warning("Theres been an exception related to policies...
" + e, e);
//throw new RuntimeException(e);
}
@@ -907,7 +907,7 @@
false);
}
} catch ( Exception e ) {
- warning("Theres been an exception relation to
policies... " + e, e);
+ warning("Theres been an exception related to
policies... " + e, e);
//throw new RuntimeException(e);
}
}
@@ -945,7 +945,7 @@
false);
}
} catch ( Exception e ) {
- warning("Theres been an exception relation to
policies... " + e, e);
+ warning("Theres been an exception related to
policies... " + e, e);
//throw new RuntimeException(e);
}
}
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=602804&r1=602803&r2=602804&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
Mon Dec 10 00:08:47 2007
@@ -54,7 +54,9 @@
trimInherentlyProvidedIntents(policiedImplementation.getType(),
parent.getRequiredIntents());
-
computeIntentsForOperations((IntentAttachPoint)implementation,
parent.getRequiredIntents());
+ computeIntentsForOperations((OperationsConfigurator)parent,
+
(IntentAttachPoint)implementation,
+ parent.getRequiredIntents());
List<PolicySet> prunedPolicySets =
computeInheritablePolicySets(parent,
@@ -63,7 +65,9 @@
parent.getPolicySets().clear();
parent.getPolicySets().addAll(prunedPolicySets);
computePolicySets(parent);
- computePolicySetsForOperations(parent,
(PolicySetAttachPoint)implementation);
+ computePolicySetsForOperations(parent,
+
(OperationsConfigurator)parent,
+
(PolicySetAttachPoint)implementation);
determineApplicableImplementationPolicySets(parent);
}
@@ -75,8 +79,8 @@
//trim intents specified in operations. First check for
policysets specified on the operation
//and then in the parent implementation
- if ( component.getImplementation() instanceof
OperationsConfigurator ) {
- OperationsConfigurator opConfigurator =
(OperationsConfigurator)component.getImplementation();
+ if ( component instanceof OperationsConfigurator ) {
+ OperationsConfigurator opConfigurator =
(OperationsConfigurator)component;
for ( ConfiguredOperation confOp :
opConfigurator.getConfiguredOperations() ) {
trimProvidedIntents(confOp.getRequiredIntents(),
confOp.getPolicySets());
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=602804&r1=602803&r2=602804&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
Mon Dec 10 00:08:47 2007
@@ -28,7 +28,6 @@
import org.apache.tuscany.sca.assembly.Base;
import org.apache.tuscany.sca.assembly.ConfiguredOperation;
-import org.apache.tuscany.sca.assembly.Implementation;
import org.apache.tuscany.sca.assembly.OperationsConfigurator;
import org.apache.tuscany.sca.policy.Intent;
import org.apache.tuscany.sca.policy.IntentAttachPoint;
@@ -52,21 +51,17 @@
protected List<Intent> computeInheritableIntents(IntentAttachPointType
attachPointType,
List<Intent>
inheritableIntents) throws PolicyValidationException {
- //expand profile intents in inherited intents
List<Intent> validInheritableIntents = new ArrayList<Intent>();
- List<Intent> expandedIntents = null;
- expandedIntents = expandProfileIntents(inheritableIntents);
- inheritableIntents.clear();
- inheritableIntents.addAll(expandedIntents);
+
+ //expand profile intents in inherited intents
+ expandProfileIntents(inheritableIntents);
//validate if inherited intent applies to the attachpoint (binding
/ implementation) and
//only add such intents to the attachpoint (binding /
implementation)
for (Intent intent : inheritableIntents) {
if ( !intent.isUnresolved() ) {
for (QName constrained : intent.getConstrains()) {
- if (attachPointType != null &&
attachPointType.getName().getNamespaceURI().equals(constrained
- .getNamespaceURI()) &&
attachPointType.getName().getLocalPart()
- .startsWith(constrained.getLocalPart())) {
+ if ( isConstrained(constrained, attachPointType)) {
validInheritableIntents.add(intent);
break;
}
@@ -79,49 +74,22 @@
return validInheritableIntents;
}
- protected List<Intent> expandProfileIntents(List<Intent> intents) {
- List<Intent> expandedIntents = new ArrayList<Intent>();
- for ( Intent intent : intents ) {
- if ( intent instanceof ProfileIntent ) {
- ProfileIntent profileIntent = (ProfileIntent)intent;
- List<Intent> requiredIntents =
profileIntent.getRequiredIntents();
-
expandedIntents.addAll(expandProfileIntents(requiredIntents));
- } else {
- expandedIntents.add(intent);
- }
+ protected void expandProfileIntents(List<Intent> intents) {
+ List<Intent> expandedIntents = null;
+ if ( intents.size() > 0 ) {
+ expandedIntents = findAndExpandProfileIntents(intents);
+ intents.clear();
+ intents.addAll(expandedIntents);
}
- return expandedIntents;
}
protected void computeIntents(IntentAttachPoint intentAttachPoint) {
- List<Intent> expandedIntents = null;
-
//expand profile intents specified in the attachpoint (binding /
implementation)
- if ( intentAttachPoint.getRequiredIntents().size() > 0 ) {
- expandedIntents =
expandProfileIntents(intentAttachPoint.getRequiredIntents());
- intentAttachPoint.getRequiredIntents().clear();
-
intentAttachPoint.getRequiredIntents().addAll(expandedIntents);
- }
-
- //remove duplicates
- Map<QName, Intent> intentsTable = new HashMap<QName, Intent>();
- for ( Intent intent : intentAttachPoint.getRequiredIntents() ) {
- intentsTable.put(intent.getName(), intent);
- }
+ expandProfileIntents(intentAttachPoint.getRequiredIntents());
+ //remove duplicates and ...
//where qualified form of intent exists retain it and remove the
qualifiable intent
- Map<QName, Intent> intentsTableCopy = new HashMap<QName,
Intent>(intentsTable);
- //if qualified form of intent exists remove the unqualified form
- for ( Intent intent : intentsTableCopy.values() ) {
- if ( intent instanceof QualifiedIntent ) {
- QualifiedIntent qualifiedIntent =
(QualifiedIntent)intent;
- if (
intentsTable.get(qualifiedIntent.getQualifiableIntent().getName()) !=
null ) {
-
intentsTable.remove(qualifiedIntent.getQualifiableIntent().getName());
- }
- }
- }
- intentAttachPoint.getRequiredIntents().clear();
-
intentAttachPoint.getRequiredIntents().addAll(intentsTable.values());
+ filterDuplicatesAndQualifiableIntents(intentAttachPoint);
}
protected void trimInherentlyProvidedIntents(IntentAttachPointType
attachPointType, List<Intent>intents) {
@@ -135,117 +103,64 @@
}
}
- protected boolean isProvidedInherently(IntentAttachPointType
attachPointType, Intent intent) {
- return ( attachPointType != null &&
- (( attachPointType.getAlwaysProvidedIntents() != null &&
-
attachPointType.getAlwaysProvidedIntents().contains(intent) ) ||
- ( attachPointType.getMayProvideIntents() != null &&
-
attachPointType.getMayProvideIntents().contains(intent) )
- ) );
- }
protected void computeIntentsForOperations(IntentAttachPoint
intentAttachPoint) throws PolicyValidationException {
- computeIntentsForOperations(intentAttachPoint,
intentAttachPoint.getRequiredIntents());
+ if ( intentAttachPoint instanceof OperationsConfigurator ) {
+
computeIntentsForOperations((OperationsConfigurator)intentAttachPoint,
+ intentAttachPoint,
+
intentAttachPoint.getRequiredIntents());
+ }
}
- protected void computeIntentsForOperations(IntentAttachPoint
intentAttachPoint, List<Intent> parentIntents) throws
PolicyValidationException {
- if ( intentAttachPoint instanceof OperationsConfigurator ) {
- IntentAttachPointType attachPointType =
intentAttachPoint.getType();
+ protected void computeIntentsForOperations(OperationsConfigurator
opConfigurator,
+ IntentAttachPoint
intentAttachPoint,
+ List<Intent>
parentIntents) throws PolicyValidationException {
+ IntentAttachPointType attachPointType =
intentAttachPoint.getType();
+
+ boolean found = false;
+ for ( ConfiguredOperation confOp :
opConfigurator.getConfiguredOperations() ) {
+ //expand profile intents specified on operations
+ expandProfileIntents(confOp.getRequiredIntents());
- boolean found = false;
+ //validateIntents(confOp, attachPointType);
- OperationsConfigurator opConfigurator =
(OperationsConfigurator)intentAttachPoint;
- List<Intent> expandedIntents = null;
- for ( ConfiguredOperation confOp :
opConfigurator.getConfiguredOperations() ) {
- //expand profile intents specified on operations
- if ( confOp.getRequiredIntents().size() > 0 ) {
- expandedIntents =
expandProfileIntents(confOp.getRequiredIntents());
- confOp.getRequiredIntents().clear();
- confOp.getRequiredIntents().addAll(expandedIntents);
- }
-
- if ( attachPointType != null ) {
- //validate intents specified against the parent
(binding / implementation)
- found = false;
- for (Intent intent : confOp.getRequiredIntents()) {
- if ( !intent.isUnresolved() ) {
- for (QName constrained :
intent.getConstrains()) {
- if (attachPointType != null &&
attachPointType.getName().getNamespaceURI().equals(constrained
- .getNamespaceURI()) &&
attachPointType.getName().getLocalPart()
-
.startsWith(constrained.getLocalPart())) {
- found = true;
- break;
- }
- }
+ //add intents specified for parent intent attach point
(binding / implementation)
+ //wherever its not overriden in the operation
+ Intent tempIntent = null;
+ List<Intent> attachPointOpIntents = new ArrayList<Intent>();
+ for (Intent anIntent : parentIntents) {
+ found = false;
- if (!found) {
- throw new
PolicyValidationException("Policy Intent '" + intent.getName()
- + " specified for operation " +
confOp.getName()
- + "' does not constrain extension
type "
- + attachPointType.getName());
- }
- } else {
- throw new PolicyValidationException("Policy
Intent '" + intent.getName()
- + " specified for operation " +
confOp.getName()
- + "' is not defined in this domain ");
- }
- }
+ tempIntent = anIntent;
+ while ( tempIntent instanceof QualifiedIntent ) {
+ tempIntent =
((QualifiedIntent)tempIntent).getQualifiableIntent();
}
- //add intents specified for parent intent attach point
(binding / implementation)
- //wherever its not overriden in the operation
- Intent tempIntent = null;
- List<Intent> attachPointOpIntents = new
ArrayList<Intent>();
- for (Intent anIntent : parentIntents) {
- found = false;
-
- tempIntent = anIntent;
- while ( tempIntent instanceof QualifiedIntent ) {
- tempIntent =
((QualifiedIntent)tempIntent).getQualifiableIntent();
- }
-
- for ( Intent opIntent : confOp.getRequiredIntents() )
{
- if (
opIntent.getName().getLocalPart().startsWith(tempIntent.getName().getLocalPart()))
{
- found = true;
- break;
- }
- }
-
- if ( !found ) {
- attachPointOpIntents.add(anIntent);
+ for ( Intent opIntent : confOp.getRequiredIntents() ) {
+ if (
opIntent.getName().getLocalPart().startsWith(tempIntent.getName().getLocalPart()))
{
+ found = true;
+ break;
}
}
- confOp.getRequiredIntents().addAll(attachPointOpIntents);
-
- //remove duplicates
- Map<QName, Intent> intentsTable = new HashMap<QName,
Intent>();
- for ( Intent intent : confOp.getRequiredIntents() ) {
- intentsTable.put(intent.getName(), intent);
+ if ( !found ) {
+ attachPointOpIntents.add(anIntent);
}
-
- //where qualified form of intent exists retain it and
remove the qualifiable intent
- Map<QName, Intent> intentsTableCopy = new HashMap<QName,
Intent>(intentsTable);
- //if qualified form of intent exists remove the
unqualified form
- for ( Intent intent : intentsTableCopy.values() ) {
- if ( intent instanceof QualifiedIntent ) {
- QualifiedIntent qualifiedIntent =
(QualifiedIntent)intent;
- if (
intentsTable.get(qualifiedIntent.getQualifiableIntent().getName()) !=
null ) {
-
intentsTable.remove(qualifiedIntent.getQualifiableIntent().getName());
- }
- }
- }
- confOp.getRequiredIntents().clear();
-
confOp.getRequiredIntents().addAll(intentsTable.values());
-
- //exclude intents that are inherently supported by the
parent
- //attachpoint-type (binding-type / implementation-type)
- if ( attachPointType != null ) {
- List<Intent> requiredIntents = new
ArrayList<Intent>(confOp.getRequiredIntents());
- for ( Intent intent : requiredIntents ) {
- if ( isProvidedInherently(attachPointType,
intent) ) {
- confOp.getRequiredIntents().remove(intent);
- }
+ }
+
+ confOp.getRequiredIntents().addAll(attachPointOpIntents);
+
+ //remove duplicates and ...
+ //where qualified form of intent exists retain it and remove
the qualifiable intent
+ filterDuplicatesAndQualifiableIntents(confOp);
+
+ //exclude intents that are inherently supported by the parent
+ //attachpoint-type (binding-type / implementation-type)
+ if ( attachPointType != null ) {
+ List<Intent> requiredIntents = new
ArrayList<Intent>(confOp.getRequiredIntents());
+ for ( Intent intent : requiredIntents ) {
+ if ( isProvidedInherently(attachPointType, intent) )
{
+ confOp.getRequiredIntents().remove(intent);
}
}
}
@@ -286,78 +201,67 @@
policySetAttachPoint.getPolicySets().addAll(policySetTable.values());
//expand profile intents
- List<Intent> expandedIntents = null;
for ( PolicySet policySet : policySetAttachPoint.getPolicySets() )
{
- expandedIntents =
expandProfileIntents(policySet.getProvidedIntents());
- policySet.getProvidedIntents().clear();
- policySet.getProvidedIntents().addAll(expandedIntents);
+ expandProfileIntents(policySet.getProvidedIntents());
}
}
protected void computePolicySetsForOperations(Base parent,
PolicySetAttachPoint
policySetAttachPoint)
throws PolicyValidationException {
+ if ( policySetAttachPoint instanceof OperationsConfigurator ) {
+ computePolicySetsForOperations(parent,
+
(OperationsConfigurator)policySetAttachPoint,
+ policySetAttachPoint);
+ }
+
+ }
+
+ protected void computePolicySetsForOperations(Base parent,
+ OperationsConfigurator
opConfigurator,
+ PolicySetAttachPoint
policySetAttachPoint)
+
throws PolicyValidationException {
String appliesTo = null;
String scdlFragment = "";
HashMap<QName, PolicySet> policySetTable = new HashMap<QName,
PolicySet>();
IntentAttachPointType attachPointType =
policySetAttachPoint.getType();
- if ( policySetAttachPoint instanceof OperationsConfigurator ) {
- OperationsConfigurator opConfigurator =
(OperationsConfigurator)policySetAttachPoint;
-
- for ( ConfiguredOperation confOp :
opConfigurator.getConfiguredOperations() ) {
- //validate policysets specified for the attachPoint
- for (PolicySet policySet : confOp.getPolicySets()) {
- if ( !policySet.isUnresolved() ) {
- appliesTo = policySet.getAppliesTo();
-
- if
(!PolicyValidationUtils.isPolicySetApplicable(scdlFragment, appliesTo,
attachPointType)) {
- throw new PolicyValidationException("Policy
Set '" + policySet.getName()
- + " specified for operation " +
confOp.getName()
- + "' does not constrain extension type "
- + attachPointType.getName());
-
- }
- } else {
+ for ( ConfiguredOperation confOp :
opConfigurator.getConfiguredOperations() ) {
+ //validate policysets specified for the attachPoint
+ for (PolicySet policySet : confOp.getPolicySets()) {
+ if ( !policySet.isUnresolved() ) {
+ appliesTo = policySet.getAppliesTo();
+
+ if
(!PolicyValidationUtils.isPolicySetApplicable(scdlFragment, appliesTo,
attachPointType)) {
throw new PolicyValidationException("Policy Set '"
+ policySet.getName()
+ " specified for operation " +
confOp.getName()
- + "' is not defined in this domain ");
+ + "' does not constrain extension type "
+ + attachPointType.getName());
+
}
+ } else {
+ throw new PolicyValidationException("Policy Set '" +
policySet.getName()
+ + " specified for operation " +
confOp.getName()
+ + "' is not defined in this domain ");
}
-
- //get rid of duplicate entries
- for ( PolicySet policySet : confOp.getPolicySets() ) {
- policySetTable.put(policySet.getName(), policySet);
- }
+ }
- confOp.getPolicySets().clear();
- confOp.getPolicySets().addAll(policySetTable.values());
-
- //expand profile intents
- List<Intent> expandedIntents = null;
- for ( PolicySet policySet : confOp.getPolicySets() ) {
- expandedIntents =
expandProfileIntents(policySet.getProvidedIntents());
- policySet.getProvidedIntents().clear();
-
policySet.getProvidedIntents().addAll(expandedIntents);
- }
+ //get rid of duplicate entries
+ for ( PolicySet policySet : confOp.getPolicySets() ) {
+ policySetTable.put(policySet.getName(), policySet);
}
- }
- }
-
- protected void trimProvidedIntents(List<Intent> requiredIntents,
PolicySet policySet) {
- for ( Intent providedIntent : policySet.getProvidedIntents() ) {
- if ( requiredIntents.contains(providedIntent) ) {
- requiredIntents.remove(providedIntent);
- }
- }
- for ( Intent mappedIntent :
policySet.getMappedPolicies().keySet() ) {
- if ( requiredIntents.contains(mappedIntent) ) {
- requiredIntents.remove(mappedIntent);
- }
+ confOp.getPolicySets().clear();
+ confOp.getPolicySets().addAll(policySetTable.values());
+
+ //expand profile intents
+ for ( PolicySet policySet : confOp.getPolicySets() ) {
+ expandProfileIntents(policySet.getProvidedIntents());
+ }
}
}
+
protected void trimProvidedIntents(List<Intent> requiredIntents,
List<PolicySet> policySets) {
for ( PolicySet policySet : policySets ) {
trimProvidedIntents(requiredIntents, policySet);
@@ -378,6 +282,100 @@
if (prevSize !=
policySetAttachPoint.getRequiredIntents().size()) {
policySetAttachPoint.getPolicySets().add(policySet);
}
+ }
+ }
+ }
+ }
+
+ private List<Intent> findAndExpandProfileIntents(List<Intent>
intents) {
+ List<Intent> expandedIntents = new ArrayList<Intent>();
+ for ( Intent intent : intents ) {
+ if ( intent instanceof ProfileIntent ) {
+ ProfileIntent profileIntent = (ProfileIntent)intent;
+ List<Intent> requiredIntents =
profileIntent.getRequiredIntents();
+
expandedIntents.addAll(findAndExpandProfileIntents(requiredIntents));
+ } else {
+ expandedIntents.add(intent);
+ }
+ }
+ return expandedIntents;
+ }
+
+ private boolean isProvidedInherently(IntentAttachPointType
attachPointType, Intent intent) {
+ return ( attachPointType != null &&
+ (( attachPointType.getAlwaysProvidedIntents() != null &&
+
attachPointType.getAlwaysProvidedIntents().contains(intent) ) ||
+ ( attachPointType.getMayProvideIntents() != null &&
+
attachPointType.getMayProvideIntents().contains(intent) )
+ ) );
+ }
+
+ private void trimProvidedIntents(List<Intent> requiredIntents,
PolicySet policySet) {
+ for ( Intent providedIntent : policySet.getProvidedIntents() ) {
+ if ( requiredIntents.contains(providedIntent) ) {
+ requiredIntents.remove(providedIntent);
+ }
+ }
+
+ for ( Intent mappedIntent :
policySet.getMappedPolicies().keySet() ) {
+ if ( requiredIntents.contains(mappedIntent) ) {
+ requiredIntents.remove(mappedIntent);
+ }
+ }
+ }
+
+ 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>();
+ for ( Intent intent : intentAttachPoint.getRequiredIntents() ) {
+ intentsTable.put(intent.getName(), intent);
+ }
+
+ //where qualified form of intent exists retain it and remove the
qualifiable intent
+ Map<QName, Intent> intentsTableCopy = new HashMap<QName,
Intent>(intentsTable);
+ //if qualified form of intent exists remove the unqualified form
+ for ( Intent intent : intentsTableCopy.values() ) {
+ if ( intent instanceof QualifiedIntent ) {
+ QualifiedIntent qualifiedIntent =
(QualifiedIntent)intent;
+ if (
intentsTable.get(qualifiedIntent.getQualifiableIntent().getName()) !=
null ) {
+
intentsTable.remove(qualifiedIntent.getQualifiableIntent().getName());
+ }
+ }
+ }
+ intentAttachPoint.getRequiredIntents().clear();
+
intentAttachPoint.getRequiredIntents().addAll(intentsTable.values());
+ }
+
+ private void validateIntents(ConfiguredOperation confOp,
IntentAttachPointType attachPointType) throws PolicyValidationException {
+ boolean found = false;
+ if ( attachPointType != null ) {
+ //validate intents specified against the parent (binding /
implementation)
+ found = false;
+ for (Intent intent : confOp.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()
+ + " specified for operation " +
confOp.getName()
+ + "' does not constrain extension type "
+ + attachPointType.getName());
+ }
+ } else {
+ throw new PolicyValidationException("Policy Intent '"
+ intent.getName()
+ + " specified for operation " +
confOp.getName()
+ + "' is not defined in this domain ");
}
}
}
Modified:
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java?rev=602804&r1=602803&r2=602804&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java
Mon Dec 10 00:08:47 2007
@@ -39,7 +39,7 @@
*
* @version $Rev$ $Date$
*/
-public class ComponentImpl extends ExtensibleImpl implements Component,
Cloneable {
+public class ComponentImpl extends ExtensibleImpl implements Component,
Cloneable, OperationsConfigurator {
private ConstrainingType constrainingType;
private Implementation implementation;
private String name;
@@ -51,13 +51,7 @@
private List<PolicySet> policySets = new ArrayList<PolicySet>();
private Boolean autowire;
private IntentAttachPointType type;
-
- private PolicySetAttachPoint implPolicyConf = new
PolicySetAttachPointImpl();
- private List<ConfiguredOperation> configuredImplOps = new
ArrayList<ConfiguredOperation>();
- //private PolicyContext policyContext = new PolicyContextImpl();
- //private Map<String, Object> policyContext = new Hashtable<String,
Object>();
- //String IMPL_POLICY_CONTEXT = "IMPL_POLICY_CONTEXT";
- //String IMPL_OPERATIONS_POLICY_CONTEXT =
"IMPL_OPERATIONS_POLICY_CONTEXT";
+ private List<ConfiguredOperation> configuredImplOperations = new
ArrayList<ConfiguredOperation>();
/**
* Constructs a new component.
@@ -97,16 +91,6 @@
}
public Implementation getImplementation() {
- if ( implementation instanceof PolicySetAttachPoint ) {
- PolicySetAttachPoint policiedImpl =
(PolicySetAttachPoint)implementation;
-
-
/*policiedImpl.setRequiredIntents(implPolicyConf.getRequiredIntents());
- policiedImpl.setPolicySets(implPolicyConf.getPolicySets());*/
-
- if ( implementation instanceof OperationsConfigurator ) {
-
((OperationsConfigurator)implementation).setConfiguredOperations(configuredImplOps);
- }
- }
return implementation;
}
@@ -132,21 +116,6 @@
public void setImplementation(Implementation implementation) {
this.implementation = implementation;
- if ( implementation instanceof PolicySetAttachPoint
- && implementation.isUnresolved() ) {
- /*PolicySetAttachPoint policiedImpl =
(PolicySetAttachPoint)implementation;
-
implPolicyConf.getRequiredIntents().addAll(policiedImpl.getRequiredIntents());
-
implPolicyConf.getPolicySets().addAll(policiedImpl.getPolicySets());
- */
- if ( implementation instanceof OperationsConfigurator ) {
- OperationsConfigurator operationConfig =
(OperationsConfigurator)implementation;
-
- if ( operationConfig.getConfiguredOperations() != null &&
-
!operationConfig.getConfiguredOperations().isEmpty() ) {
-
configuredImplOps.addAll(operationConfig.getConfiguredOperations());
- }
- }
- }
}
public void setName(String name) {
@@ -190,6 +159,15 @@
this.requiredIntents = intents;
}
+
+ public List<ConfiguredOperation> getConfiguredOperations() {
+ return configuredImplOperations;
+ }
+
+ public void setConfiguredOperations(List<ConfiguredOperation>
configuredOperations) {
+ this.configuredImplOperations = configuredOperations;
+ }
+
private class PolicySetAttachPointImpl implements PolicySetAttachPoint
{
private List<Intent> requiredIntents = new ArrayList<Intent>();
Modified:
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java?rev=602804&r1=602803&r2=602804&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java
Mon Dec 10 00:08:47 2007
@@ -126,14 +126,6 @@
this.requiredIntents = intents;
}
- public List<ConfiguredOperation> getConfiguredOperations() {
- return configuredOperations;
- }
-
- public void setConfiguredOperations(List<ConfiguredOperation>
configuredOperations) {
- this.configuredOperations = configuredOperations;
- }
-
@Override
public int hashCode() {
return String.valueOf(getURI()).hashCode();
@@ -154,5 +146,13 @@
return false;
}
}
+ }
+
+ public List<ConfiguredOperation> getConfiguredOperations() {
+ return configuredOperations;
+ }
+
+ public void setConfiguredOperations(List<ConfiguredOperation>
configuredOperations) {
+ this.configuredOperations = configuredOperations;
}
}
Modified:
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java?rev=602804&r1=602803&r2=602804&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java
Mon Dec 10 00:08:47 2007
@@ -80,7 +80,7 @@
applicablePolicyHandlers = new
ArrayList<PolicyHandler>();
if ( javaImpl instanceof OperationsConfigurator )
{
String operationName =
chain.getTargetOperation().getName();
- OperationsConfigurator opConfigurator =
(OperationsConfigurator)javaImpl;
+ OperationsConfigurator opConfigurator =
(OperationsConfigurator)component;
for ( ConfiguredOperation confOp :
opConfigurator.getConfiguredOperations() ) {
if (
confOp.getName().equals(operationName)) {
for ( PolicySet policySet :
confOp.getPolicySets() ) {
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=602804&r1=602803&r2=602804&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
Mon Dec 10 00:08:47 2007
@@ -170,7 +170,7 @@
}
//test for proper aggregation of policy intents and policysets on
operations of implementation
- OperationsConfigurator opConf =
(OperationsConfigurator)composite.getComponents().get(5).getImplementation();
+ OperationsConfigurator opConf =
(OperationsConfigurator)composite.getComponents().get(5);
assertEquals(opConf.getConfiguredOperations().get(0).getRequiredIntents().size(),
4);
for ( Intent intent :
opConf.getConfiguredOperations().get(0).getRequiredIntents()) {
String intentName = intent.getName().getLocalPart();
@@ -180,7 +180,7 @@
}
}
- opConf =
(OperationsConfigurator)composite.getComponents().get(6).getImplementation();
+ opConf =
(OperationsConfigurator)composite.getComponents().get(6);
assertEquals(opConf.getConfiguredOperations().get(0).getRequiredIntents().size(),
3);
for ( Intent intent :
opConf.getConfiguredOperations().get(0).getRequiredIntents()) {
String intentName = intent.getName().getLocalPart();
@@ -238,7 +238,7 @@
}
//test for computation of policysets on operations of
implementation
- OperationsConfigurator opConf =
(OperationsConfigurator)composite.getComponents().get(5).getImplementation();
+ OperationsConfigurator opConf =
(OperationsConfigurator)composite.getComponents().get(5);
assertEquals(opConf.getConfiguredOperations().get(0).getPolicySets().size(),
3);
for ( PolicySet policySet :
opConf.getConfiguredOperations().get(0).getPolicySets() ) {
String policySetName = policySet.getName().getLocalPart();
@@ -248,7 +248,7 @@
}
}
- opConf =
(OperationsConfigurator)composite.getComponents().get(6).getImplementation();
+ opConf =
(OperationsConfigurator)composite.getComponents().get(6);
assertEquals(opConf.getConfiguredOperations().get(0).getPolicySets().size(),
3);
for ( PolicySet policySet :
opConf.getConfiguredOperations().get(0).getPolicySets() ) {
String policySetName = policySet.getName().getLocalPart();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]