diff options
author | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2010-06-17 13:55:03 +0000 |
---|---|---|
committer | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2010-06-17 13:55:03 +0000 |
commit | fa1fc36d0706759915fe770e17f6682c71b22fc0 (patch) | |
tree | aa927d226b3af97fa6a235ee6bfde20bbd3f5f65 /sca-java-2.x/trunk/modules | |
parent | 8e27ce1f6c338862338651532538e5f95754ac0c (diff) |
Add a flag to the binding builder to indicate that generated data should be regenerated. Also rename the methods for getting/setting the generated data to make it more obvious that that's what it's doing.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@955601 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules')
18 files changed, 36 insertions, 35 deletions
diff --git a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java index 7be207cdd2..8c56385c9e 100644 --- a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java +++ b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java @@ -39,8 +39,11 @@ public interface BindingBuilder<B extends Binding> { * @param component The component for the binding's service or reference * @param contract The binding's service or reference * @param context The context for the builder + * @param rebuild Set true to have derived data in the binding rebuilt + * caching can cause problems in the late binding case so we + * need to be able to remove cached data */ - void build(Component component, Contract contract, B binding, BuilderContext context); + void build(Component component, Contract contract, B binding, BuilderContext context, boolean rebuild); /** * Get QName of the binding type diff --git a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultBuilderExtensionPoint.java b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultBuilderExtensionPoint.java index 6dba234f0f..64f929c659 100644 --- a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultBuilderExtensionPoint.java +++ b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultBuilderExtensionPoint.java @@ -275,8 +275,8 @@ public class DefaultBuilderExtensionPoint implements BuilderExtensionPoint, Life this.qname = ServiceDeclarationParser.getQName(sd.getAttributes().get("qname")); } - public void build(Component component, Contract contract, Binding binding, BuilderContext context) { - getBuilder().build(component, contract, binding, context); + public void build(Component component, Contract contract, Binding binding, BuilderContext context, boolean rebuild) { + getBuilder().build(component, contract, binding, context, rebuild); } public QName getBindingType() { diff --git a/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/DefaultSCABindingMapper.java b/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/DefaultSCABindingMapper.java index 4106158e54..4105c74efc 100644 --- a/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/DefaultSCABindingMapper.java +++ b/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/sca/provider/DefaultSCABindingMapper.java @@ -143,7 +143,7 @@ public class DefaultSCABindingMapper implements SCABindingMapper { Binding binding = map(endpoint.getBinding()); ep.setBinding(binding); if (builder != null) { - builder.build(ep.getComponent(), ep.getService(), binding, new BuilderContext(registry)); + builder.build(ep.getComponent(), ep.getService(), binding, new BuilderContext(registry), false); } return ep; } @@ -166,7 +166,7 @@ public class DefaultSCABindingMapper implements SCABindingMapper { // epr.setTargetEndpoint(map((RuntimeEndpoint)epr.getTargetEndpoint())); if (builder != null) { - builder.build(epr.getComponent(), epr.getReference(), binding, new BuilderContext(registry)); + builder.build(epr.getComponent(), epr.getReference(), binding, new BuilderContext(registry), false); } return epr; diff --git a/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java b/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java index 97f1a8b0b2..08c140c74c 100644 --- a/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java +++ b/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java @@ -230,7 +230,7 @@ public class Axis2EngineIntegration { Port port, WebServiceBinding wsBinding) throws AxisFault { - Definition definition = wsBinding.getWSDLDocument(); + Definition definition = wsBinding.getGeneratedWSDLDocument(); QName serviceQName = wsBinding.getService().getQName(); Definition def = getDefinition(definition, serviceQName); diff --git a/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingInvoker.java b/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingInvoker.java index 4db3522e53..6db39d6a7e 100644 --- a/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingInvoker.java +++ b/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingInvoker.java @@ -154,7 +154,7 @@ public class Axis2ReferenceBindingInvoker implements Invoker { PortType portType = ((WSDLInterface)wsBinding.getBindingInterfaceContract().getInterface()).getPortType(); Operation op = portType.getOperation(wsdlOperationName.getLocalPart(), null, null); action = - WSDL11ActionHelper.getActionFromInputElement(wsBinding.getWSDLDocument(), portType, op, op + WSDL11ActionHelper.getActionFromInputElement(wsBinding.getGeneratedWSDLDocument(), portType, op, op .getInput()); } diff --git a/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingProvider.java b/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingProvider.java index f427154c92..27b90b0251 100644 --- a/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingProvider.java +++ b/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingProvider.java @@ -96,7 +96,7 @@ public class Axis2ReferenceBindingProvider extends Axis2BaseBindingProvider impl this.reference = (RuntimeComponentReference)endpointReference.getReference(); // A WSDL document should always be present in the binding - if (wsBinding.getWSDLDocument() == null) { + if (wsBinding.getGeneratedWSDLDocument() == null) { throw new ServiceRuntimeException("No WSDL document for " + component.getName() + "/" + reference.getName()); } @@ -128,7 +128,7 @@ public class Axis2ReferenceBindingProvider extends Axis2BaseBindingProvider impl configContext = Axis2EngineIntegration.getAxisConfigurationContext(extensionPoints.getServiceDiscovery()); try { - Definition definition = wsBinding.getWSDLDocument(); + Definition definition = wsBinding.getGeneratedWSDLDocument(); QName serviceQName = wsBinding.getService().getQName(); Port port = wsBinding.getPort(); if (port == null) { diff --git a/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceBindingProvider.java b/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceBindingProvider.java index ec6c610d76..925ecbc8f7 100644 --- a/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceBindingProvider.java +++ b/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceBindingProvider.java @@ -89,7 +89,7 @@ public class Axis2ServiceBindingProvider extends Axis2BaseBindingProvider implem this.service = (RuntimeComponentService)endpoint.getService(); // A WSDL document should always be present in the binding - if (wsBinding.getWSDLDocument() == null) { + if (wsBinding.getGeneratedWSDLDocument() == null) { throw new ServiceRuntimeException("No WSDL document for " + component.getName() + "/" + service.getName()); } @@ -273,7 +273,7 @@ public class Axis2ServiceBindingProvider extends Axis2BaseBindingProvider implem private void createAxisService(String endpointURL, Port port) throws AxisFault { AxisService axisService; - if (wsBinding.getWSDLDocument() != null) { + if (wsBinding.getGeneratedWSDLDocument() != null) { axisService = Axis2EngineIntegration.createWSDLAxisService(endpointURL, port, wsBinding); } else { axisService = Axis2EngineIntegration.createJavaAxisService(endpointURL, configContext, service); diff --git a/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws-ri/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/ri/JAXWSReferenceBindingProvider.java b/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws-ri/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/ri/JAXWSReferenceBindingProvider.java index 41dc8ba7b9..fe35e3d743 100644 --- a/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws-ri/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/ri/JAXWSReferenceBindingProvider.java +++ b/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws-ri/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/ri/JAXWSReferenceBindingProvider.java @@ -43,7 +43,7 @@ public class JAXWSReferenceBindingProvider implements ReferenceBindingProvider { this.wsBinding = (WebServiceBinding) endpointReference.getBinding(); // A WSDL document should always be present in the binding - if (wsBinding.getWSDLDocument() == null) { + if (wsBinding.getGeneratedWSDLDocument() == null) { throw new ServiceRuntimeException("No WSDL document for " + endpointReference.getURI()); } diff --git a/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java b/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java index 8af26fcfa8..00af6abec9 100644 --- a/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java +++ b/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java @@ -82,7 +82,7 @@ public class JAXWSBindingInvoker implements Invoker, DataExchangeSemantics { private Dispatch<SOAPMessage> createDispatch(WebServiceBinding wsBinding) { URL wsdlLocation = null; try { - wsdlLocation = new URL(wsBinding.getWSDLDocument().getDocumentBaseURI()); + wsdlLocation = new URL(wsBinding.getGeneratedWSDLDocument().getDocumentBaseURI()); } catch (Exception e) { try { if (wsBinding.getWSDLDefinition().getLocation() != null){ diff --git a/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingProvider.java b/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingProvider.java index d8f49cbd3d..a2cef5340c 100644 --- a/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingProvider.java +++ b/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingProvider.java @@ -84,7 +84,7 @@ public class JAXWSBindingProvider implements Provider<SOAPMessage> { this.wsBinding = (WebServiceBinding)endpoint.getBinding(); // A WSDL document should always be present in the binding - if (wsBinding.getWSDLDocument() == null) { + if (wsBinding.getGeneratedWSDLDocument() == null) { throw new ServiceRuntimeException("No WSDL document for " + endpoint.getURI()); } diff --git a/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGenerator.java b/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGenerator.java index 3548c34c67..ef70b5f5c0 100644 --- a/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGenerator.java +++ b/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGenerator.java @@ -244,10 +244,10 @@ public class BindingWSDLGenerator { // attempt to share the same document across multiple bindings. // generate a WSDL definitions document if needed - Definition definition = wsBinding.getWSDLDocument(); + Definition definition = wsBinding.getGeneratedWSDLDocument(); if (definition == null) { definition = WSDLServiceGenerator.configureWSDLDefinition(wsBinding, component, contract, monitor); - wsBinding.setWSDLDocument(definition); + wsBinding.setGeneratedWSDLDocument(definition); } } diff --git a/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java b/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java index 5b9043e226..0117ee5d79 100644 --- a/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java +++ b/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java @@ -44,8 +44,12 @@ public class WebServiceBindingBuilder implements BindingBuilder<WebServiceBindin /** * Create a calculated WSDL document and save it in the Web Service binding. */ - public void build(Component component, Contract contract, WebServiceBinding binding, BuilderContext context) { - binding.setWSDLDocument(null); + public void build(Component component, Contract contract, WebServiceBinding binding, BuilderContext context, boolean rebuild) { + // in some cases (callback service endpoint processing) we need to re-generate the + // WSDL doc from a ws binding that already has one. + if (rebuild == true){ + binding.setGeneratedWSDLDocument(null); + } BindingWSDLGenerator.generateWSDL(component, contract, binding, extensionPoints, context.getMonitor()); } diff --git a/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java b/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java index 7288ece1b5..c8ae5827a1 100644 --- a/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java +++ b/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java @@ -205,7 +205,7 @@ public interface WebServiceBinding extends Binding { * Returns the generated WSDL definitions document. * @return the generated WSDL definitions document */ - Definition getWSDLDocument(); + Definition getGeneratedWSDLDocument(); /** * Sets the generated WSDL definitions document. The WSDL is generated @@ -213,14 +213,6 @@ public interface WebServiceBinding extends Binding { * * @param definition the generated WSDL definitions document */ - void setWSDLDocument(Definition definition); - - - // TODO - There are a wealth of oddly named methods in this binding - // We have an opportunity with the JAXWS version of the WS binding - // to re-think how the information here should be present so am - // going to start adding/moving methods to below this point that - // (hopefully) give a better idea of where the information is - // derived from. + void setGeneratedWSDLDocument(Definition definition); } diff --git a/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java b/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java index 05e14155c1..9fc60c2224 100644 --- a/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java +++ b/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java @@ -287,11 +287,11 @@ class WebServiceBindingImpl implements WebServiceBinding, PolicySubject, Extensi this.endPointReference = epr; } - public Definition getWSDLDocument() { + public Definition getGeneratedWSDLDocument() { return generatedWSDLDocument; } - public void setWSDLDocument(Definition definition) { + public void setGeneratedWSDLDocument(Definition definition) { this.generatedWSDLDocument = definition; } diff --git a/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java b/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java index c48d868105..38ab265c6e 100644 --- a/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java +++ b/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java @@ -63,7 +63,7 @@ public class ComponentReferenceBindingBuilderImpl implements CompositeBuilder { for (Binding binding : componentReference.getBindings()) { BindingBuilder builder = builders.getBindingBuilder(binding.getType()); if (builder != null) { - builder.build(component, componentReference, binding, context); + builder.build(component, componentReference, binding, context, false); } } } diff --git a/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java b/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java index 9a74023504..2debe41f2d 100644 --- a/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java +++ b/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java @@ -70,7 +70,7 @@ public class ComponentServiceBindingBuilderImpl implements CompositeBuilder { for (Binding binding : componentService.getBindings()) { BindingBuilder builder = builders.getBindingBuilder(binding.getType()); if (builder != null) { - builder.build(component, componentService, binding, context); + builder.build(component, componentService, binding, context, false); } } } diff --git a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java index 5d6719bc81..0cda879011 100644 --- a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java +++ b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java @@ -285,7 +285,7 @@ public class ServiceReferenceImpl<B> implements ServiceReferenceExt<B> { BindingBuilder bindingBuilder = builders.getBindingBuilder(binding.getType()); if (bindingBuilder != null) { org.apache.tuscany.sca.assembly.builder.BuilderContext context = new BuilderContext(registry); - bindingBuilder.build(endpointReference.getComponent(), reference, endpointReference.getBinding(), context); + bindingBuilder.build(endpointReference.getComponent(), reference, endpointReference.getBinding(), context, false); } } diff --git a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java index 62d7750fe1..7e49d45fe3 100644 --- a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java +++ b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java @@ -349,7 +349,8 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder { builder.build(endpointReference.getComponent(), endpointReference.getReference(), endpointReference.getBinding(), - new BuilderContext(extensionPoints)); + new BuilderContext(extensionPoints), + false); } } @@ -439,7 +440,8 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder { builder.build(endpoint.getComponent(), endpoint.getService(), endpoint.getBinding(), - new BuilderContext(extensionPoints)); + new BuilderContext(extensionPoints), + true); } } |