package org.gnode.nix.base;

import org.bytedeco.javacpp.annotation.Platform;
import org.bytedeco.javacpp.annotation.Properties;
import org.gnode.nix.Section;

@Properties(value = {
        @Platform(value = "linux"),
        @Platform(value = "windows")})
public abstract class EntityWithMetadata extends NamedEntity {

    /**
     * Get metadata associated with this entity.
     *
     * @return The associated section, if no such section exists {#link null} is returned.
     */
    abstract public Section getMetadata();

    /**
     * Associate the entity with some metadata.
     * <p/>
     * Calling this method will replace previously stored information.
     *
     * @param metadata The {@link Section} that should be associated
     *                 with this entity.
     */
    abstract public void setMetadata(Section metadata);

    /**
     * Associate the entity with some metadata.
     * <p/>
     * Calling this method will replace previously stored information.
     *
     * @param id The id of the {@link Section} that should be associated
     *           with this entity.
     */
    abstract public void setMetadata(String id);

    /**
     * Removes metadata associated with the entity.
     */
    abstract public void removeMetadata();
}

@@ -153,16 +153,139 @@
 ction;%0A%0A
+/**%0A * %3Ch1%3EEntityWithMetadata%3C/h1%3E%0A * An abstract class for entities that can be associated with additional metadata.%0A */%0A%0A
 @Propert
@@ -701,33 +701,32 @@
 adata.%0A     * %3Cp
-/
 %3E%0A     * Calling
@@ -1012,32 +1012,32 @@
  some metadata.%0A
+
      * %3Cp/%3E%0A    
@@ -1029,17 +1029,16 @@
     * %3Cp
-/
 %3E%0A     *

update documentation