- @SuppressWarnings({ "synthetic-access", "unchecked" })
- protected <T> Value<T> value(String name, Class<T> clazz) {
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Properties getProperties() {
+ return properties;
+ }
+
+ /**
+ * Returns whether the data container contains an attribute with the given
+ * name.
+ *
+ * @param name
+ * The name of the attribute to check for
+ * @return {@code true} if this data container contains an attribute with
+ * the given name, {@code false} otherwise
+ */
+ protected boolean hasValue(String name) {
+ return attributes.containsKey(name);
+ }
+
+ /**
+ * Returns the value of the attribute with the given name. If no value for
+ * the given attribute exists, one will be created, stored, and returned.
+ *
+ * @param <T>
+ * The type of the value to return
+ * @param name
+ * The name of the attribute to get
+ * @param clazz
+ * The class of the value
+ * @return The value of the attribute
+ */
+ @SuppressWarnings({ "unchecked" })
+ protected <T> Value<T> getValue(String name, Class<T> clazz) {