1 package com.atlassian.maven.plugins.amps.util;
2
3 import com.google.common.collect.ImmutableMap;
4 import com.google.common.collect.Lists;
5 import com.google.common.collect.Maps;
6 import org.apache.commons.lang.StringUtils;
7
8 import java.util.List;
9 import java.util.Map;
10
11
12
13
14 public class JvmArgsFix
15 {
16 private final Map<String, String> defaultParams;
17
18 private JvmArgsFix(Map<String, String> initial)
19 {
20 defaultParams = Maps.newLinkedHashMap(initial);
21 }
22
23 private JvmArgsFix()
24 {
25 defaultParams = Maps.newLinkedHashMap();
26 }
27
28 public static JvmArgsFix defaults()
29 {
30 return new JvmArgsFix(ImmutableMap.<String, String>of("-Xmx", "512m", "-XX:MaxPermSize=", "256m"));
31 }
32
33 public static JvmArgsFix empty()
34 {
35 return new JvmArgsFix();
36 }
37
38 public JvmArgsFix with(String param, String value)
39 {
40 defaultParams.put(param, value);
41 return this;
42 }
43
44 public String apply(String jvmArgs)
45 {
46 final List<String> args = StringUtils.isNotBlank(jvmArgs) ? Lists.newArrayList(jvmArgs) : Lists.<String>newArrayList();
47
48 for (Map.Entry<String, String> param : defaultParams.entrySet())
49 {
50 if (!StringUtils.contains(jvmArgs, param.getKey()))
51 {
52 args.add(param.getKey() + param.getValue());
53 }
54 }
55
56 return StringUtils.join(args, ' ');
57 }
58 }