package org.jboss.windup.graph;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* Store Map<String,String> in vertex'es properties. The properties of vertex which contains the property are used.
*
* Applicable to:
* <ul>
* <li><code>Set get*()</code> - materializes the set from the vertex properties.
* <li><code>void set*(Set<String,String>)</code> - overwrites vertexes properties with values from map, deleting the old ones EXCEPT Windup
* frame type and Windup's reserved prefix "w:".
* <li><code>void add*(String)</code>
* <li><code>void allAll*(Set<String>)</code>
* </ul>
*
* @author <a href="mailto:ozizka@redhat.com">Ondrej Zizka</a>
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface SetInProperties
{
public static final char SEPAR = ':';
/**
* The prefix prepended to each set value to prevent collisions with properties. Separated by a separator ("prefix:set-value").
* <p>
* May be blank, in which case the separator is ommited. That can be used to map the actual vertices property names to a set,
* which may be especially useful when creating generic or meta-rules. Be very careful if using blank prefix on extended models,
* where it can interfere with other models and rules data!
*
* By setting different prefixes, a Model can contain multiple sets.
*/
public String propertyPrefix() default "set";
}