]>
git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.lib.detached/src/main/java/org/argeo/slc/ant/spring/MapArg.java
1 package org
.argeo
.slc
.ant
.spring
;
5 import java
.util
.TreeMap
;
6 import java
.util
.Vector
;
8 import org
.apache
.tools
.ant
.BuildException
;
10 import org
.argeo
.slc
.core
.SlcException
;
13 private List
<EntryArg
> entries
= new Vector
<EntryArg
>();
14 private Map
<String
, Object
> map
= new TreeMap
<String
, Object
>();
16 public EntryArg
createEntry() {
17 EntryArg arg
= new EntryArg();
22 public Map
<String
, Object
> getAsObjectMap(Map
<String
, Object
> originalMap
) {
23 Map
<String
, Object
> objectMap
= new TreeMap
<String
, Object
>();
24 for (EntryArg arg
: entries
) {
25 String key
= arg
.getKey();
27 if (objectMap
.containsKey(key
)) {
28 throw new SlcException("Key '" + key
+ "' already set.");
31 if (originalMap
!= null && originalMap
.containsKey(key
)
32 && arg
.getOverrideArg() != null)
33 arg
.getOverrideArg().setOriginal(originalMap
.get(key
));
35 objectMap
.put(key
, arg
.getObject());
42 * Returns a cached reference if it was already called. This reference could
43 * have been modified externally and thus not anymore be in line with the
46 public Map
<String
, Object
> getMap() {
48 map
= getAsObjectMap(null);
52 public static class EntryArg
{
54 private Object valueStr
;
55 private OverrideArg overrideArg
;
57 public String
getKey() {
61 public void setKey(String key
) {
65 public Object
getObject() {
66 if (overrideArg
!= null) {
67 return overrideArg
.getObject();
68 } else if (valueStr
!= null) {
71 throw new BuildException("Value not set.");
75 public void setValue(String value
) {
77 this.valueStr
= value
;
80 public OverrideArg
createOverride() {
82 overrideArg
= new OverrideArg();
86 private void check() {
87 if (valueStr
!= null || overrideArg
!= null) {
88 throw new BuildException("Value already set");
92 public OverrideArg
getOverrideArg() {