+ assertCloneAndCopies(tstKey, tst, dataTypes, policyTypes, ttt);
+
+ assertTrue(new JpaToscaServiceTemplate().validate("").isValid());
+ assertTrue(tst.validate("").isValid());
+
+ tst.setDescription(null);
+ assertTrue(tst.validate("").isValid());
+ tst.setDescription("");
+ assertFalse(tst.validate("").isValid());
+ tst.setDescription("A Description");
+ assertTrue(tst.validate("").isValid());
+
+ assertThatThrownBy(() -> tst.validate(null)).hasMessageMatching("fieldName is marked .*on.*ull but is null");
+
+ tst.setToscaDefinitionsVersion(null);
+ BeanValidationResult result = tst.validate("");
+ assertThat(result.getResult()).contains("tosca_definitions_version").contains(Validated.IS_NULL);
+
+ tst.setToscaDefinitionsVersion(JpaToscaServiceTemplate.DEFAULT_TOSCA_DEFINITIONS_VERSION);
+ tst.setDataTypes(null);
+ result = tst.validate("");
+ assertTrue(result.isValid());
+
+ JpaToscaPolicyType pt0 = new JpaToscaPolicyType(new PfConceptKey("pt0:0.0.1"));
+ tst.getPolicyTypes().getConceptMap().put(pt0.getKey(), pt0);
+ result = tst.validate("");
+ assertTrue(result.isValid());
+
+ JpaToscaDataType dt0 = new JpaToscaDataType(new PfConceptKey("dt0:0.0.1"));
+ JpaToscaProperty prop0 = new JpaToscaProperty(new PfReferenceKey(pt0.getKey(), "prop0"));
+ prop0.setType(dt0.getKey());
+
+ assertDataTypesAndToscaTopology(tst, pt0, dt0, prop0);
+
+ tst.setPolicyTypes(null);
+ result = tst.validate("");
+ assertTrue(result.isValid());
+
+ assertNoPolicyType(tst, policyTypes, pt0, dt0);
+
+ }
+
+ private static void assertDataTypesAndToscaTopology(JpaToscaServiceTemplate tst, JpaToscaPolicyType pt0,
+ JpaToscaDataType dt0, JpaToscaProperty prop0) {
+ BeanValidationResult result;
+ pt0.setProperties(new LinkedHashMap<>());
+ pt0.getProperties().put(prop0.getKey().getLocalName(), prop0);
+ result = tst.validate("");
+ assertFalse(result.isValid());
+ assertThat(result.getResult()).contains("data type").contains("dt0:0.0.1").contains(Validated.NOT_FOUND);
+
+ tst.setDataTypes(null);
+ result = tst.validate("");
+ assertFalse(result.isValid());
+ assertThat(result.getResult()).contains("data type").contains("dt0:0.0.1").contains(Validated.NOT_FOUND);
+
+ tst.setDataTypes(new JpaToscaDataTypes());
+ result = tst.validate("");
+ assertFalse(result.isValid());
+ assertThat(result.getResult()).contains("data type").contains("dt0:0.0.1").contains(Validated.NOT_FOUND);
+
+ tst.getDataTypes().getConceptMap().put(dt0.getKey(), dt0);
+ result = tst.validate("");
+ assertTrue(result.isValid());
+
+ tst.setTopologyTemplate(null);
+ result = tst.validate("");
+ assertTrue(result.isValid());
+
+ tst.setTopologyTemplate(new JpaToscaTopologyTemplate());
+ result = tst.validate("");
+ assertTrue(result.isValid());
+
+ tst.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
+ result = tst.validate("");
+ assertTrue(result.isValid());
+ }
+
+ private static void assertCloneAndCopies(PfConceptKey tstKey, JpaToscaServiceTemplate tst,
+ JpaToscaDataTypes dataTypes, JpaToscaPolicyTypes policyTypes,
+ JpaToscaTopologyTemplate ttt) {