Crossfire JXClient, Trunk
ScanManagerConfig.java
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * - Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * - Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the distribution.
14  *
15  * - Neither the name of Oracle nor the names of its
16  * contributors may be used to endorse or promote products derived
17  * from this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 /*
33  * This source code is provided to illustrate the usage of a given feature
34  * or technique and has been deliberately simplified. Additional steps
35  * required for a production-quality application, such as security checks,
36  * input validation and proper error handling, might not be present in
37  * this sample code.
38  */
39 
40 
41 package com.sun.jmx.examples.scandir.config;
42 
43 import java.util.Arrays;
44 import java.util.LinkedHashMap;
45 import java.util.Map;
46 import javax.xml.bind.annotation.XmlAttribute;
47 import javax.xml.bind.annotation.XmlElement;
48 import javax.xml.bind.annotation.XmlElementRef;
49 import javax.xml.bind.annotation.XmlElementWrapper;
50 import javax.xml.bind.annotation.XmlRootElement;
51 
52 
70 @XmlRootElement(name="ScanManager",
71  namespace="jmx:com.sun.jmx.examples.scandir.config")
72 public class ScanManagerConfig {
73 
74  // A logger for this class
75  //
76  // private static final Logger LOG =
77  // Logger.getLogger(ScanManagerConfig.class.getName());
78 
82  private final Map<String, DirectoryScannerConfig> directoryScanners;
83 
88 
97  private String name;
98 
111  public ScanManagerConfig() {
112  this(null,true);
113  }
114 
123  public ScanManagerConfig(String name) {
124  this(name,false);
125  }
126 
127  // Our private constructor...
128  private ScanManagerConfig(String name, boolean allowsNull) {
129  if (name == null && allowsNull==false)
130  throw new IllegalArgumentException("name=null");
131  this.name = name;
132  directoryScanners = new LinkedHashMap<String,DirectoryScannerConfig>();
133  this.initialResultLogConfig = new ResultLogConfig();
134  this.initialResultLogConfig.setMemoryMaxRecords(1024);
135  }
136 
137  // Creates an array for deep equality.
138  private Object[] toArray() {
139  final Object[] thisconfig = {
140  name,directoryScanners,initialResultLogConfig
141  };
142  return thisconfig;
143  }
144 
145  // equals
146  @Override
147  public boolean equals(Object o) {
148  if (o == this) return true;
149  if (!(o instanceof ScanManagerConfig)) return false;
150  final ScanManagerConfig other = (ScanManagerConfig)o;
151  if (this.directoryScanners.size() != other.directoryScanners.size())
152  return false;
153  return Arrays.deepEquals(toArray(),other.toArray());
154  }
155 
156  @Override
157  public int hashCode() {
158  final String key = name;
159  if (key == null) return 0;
160  else return key.hashCode();
161  }
162 
172  @XmlAttribute(name="name",required=true)
173  public String getName() {
174  return this.name;
175  }
176 
187  public void setName(String name) {
188  if (this.name == null)
189  this.name = name;
190  else if (name == null)
191  throw new IllegalArgumentException("name=null");
192  else if (!name.equals(this.name))
193  throw new IllegalArgumentException("name="+name);
194  }
195 
204  @XmlElementWrapper(name="DirectoryScannerList",
205  namespace=XmlConfigUtils.NAMESPACE)
206  @XmlElementRef
208  return directoryScanners.values().toArray(new DirectoryScannerConfig[0]);
209  }
210 
219  public void setScanList(DirectoryScannerConfig[] scans) {
220  directoryScanners.clear();
221  for (DirectoryScannerConfig scan : scans)
222  directoryScanners.put(scan.getName(),scan);
223  }
224 
233  public DirectoryScannerConfig getScan(String name) {
234  return directoryScanners.get(name);
235  }
236 
249  return this.directoryScanners.put(scan.getName(),scan);
250  }
251 
252  // XML value of this object.
253  public String toString() {
254  return XmlConfigUtils.toString(this);
255  }
256 
266  public DirectoryScannerConfig removeScan(String name) {
267  return this.directoryScanners.remove(name);
268  }
269 
274  @XmlElement(name="InitialResultLogConfig",namespace=XmlConfigUtils.NAMESPACE)
275  public ResultLogConfig getInitialResultLogConfig() {
276  return this.initialResultLogConfig;
277  }
278 
283  public void setInitialResultLogConfig(ResultLogConfig initialLogConfig) {
284  this.initialResultLogConfig = initialLogConfig;
285  }
286 
292  public ScanManagerConfig copy(String newname) {
293  return copy(newname,this);
294  }
295 
296  // Copy by XML cloning, then change the name.
297  //
298  private static ScanManagerConfig
299  copy(String newname, ScanManagerConfig other) {
300  ScanManagerConfig newbean = XmlConfigUtils.xmlClone(other);
301  newbean.name = newname;
302  return newbean;
303  }
304 }
com.sun.jmx.examples.scandir.config.ScanManagerConfig.ScanManagerConfig
ScanManagerConfig(String name)
Definition: ScanManagerConfig.java:123
com.sun.jmx.examples.scandir.config.XmlConfigUtils.toString
static String toString(Object bean)
Definition: XmlConfigUtils.java:139
com.sun.jmx.examples.scandir.config.ScanManagerConfig.ScanManagerConfig
ScanManagerConfig(String name, boolean allowsNull)
Definition: ScanManagerConfig.java:128
com.sun.jmx.examples.scandir.config.ScanManagerConfig.getScan
DirectoryScannerConfig getScan(String name)
Definition: ScanManagerConfig.java:233
com.sun.jmx.examples.scandir.config.ScanManagerConfig.getScanList
DirectoryScannerConfig[] getScanList()
Definition: ScanManagerConfig.java:207
com.sun.jmx.examples.scandir.config.ScanManagerConfig.ScanManagerConfig
ScanManagerConfig()
Definition: ScanManagerConfig.java:111
com.sun.jmx.examples.scandir.config.DirectoryScannerConfig
Definition: DirectoryScannerConfig.java:67
com.sun.jmx.examples.scandir.config.ScanManagerConfig.equals
boolean equals(Object o)
Definition: ScanManagerConfig.java:147
com.sun.jmx.examples.scandir.config.ScanManagerConfig.toArray
Object[] toArray()
Definition: ScanManagerConfig.java:138
com.sun.jmx.examples.scandir.config.ScanManagerConfig.initialResultLogConfig
ResultLogConfig initialResultLogConfig
Definition: ScanManagerConfig.java:87
com.sun.jmx.examples.scandir.config.XmlConfigUtils
Definition: XmlConfigUtils.java:62
com.sun.jmx.examples.scandir.config.ResultLogConfig.setMemoryMaxRecords
void setMemoryMaxRecords(int memoryMaxRecords)
Definition: ResultLogConfig.java:155
com.sun.jmx.examples.scandir.config.XmlConfigUtils.xmlClone
static ScanManagerConfig xmlClone(ScanManagerConfig bean)
Definition: XmlConfigUtils.java:165
com.sun.jmx.examples.scandir.config.ScanManagerConfig.hashCode
int hashCode()
Definition: ScanManagerConfig.java:157
com.sun.jmx.examples.scandir.config.ScanManagerConfig.setInitialResultLogConfig
void setInitialResultLogConfig(ResultLogConfig initialLogConfig)
Definition: ScanManagerConfig.java:283
com.sun.jmx.examples.scandir.config.ScanManagerConfig.toString
String toString()
Definition: ScanManagerConfig.java:253
com.sun.jmx.examples.scandir.config.ResultLogConfig
Definition: ResultLogConfig.java:60
com.sun.jmx.examples.scandir.config.ScanManagerConfig.copy
static ScanManagerConfig copy(String newname, ScanManagerConfig other)
Definition: ScanManagerConfig.java:299
com.sun.jmx.examples.scandir.config.XmlConfigUtils.NAMESPACE
static final String NAMESPACE
Definition: XmlConfigUtils.java:69
com.sun.jmx.examples.scandir.config.ScanManagerConfig.directoryScanners
final Map< String, DirectoryScannerConfig > directoryScanners
Definition: ScanManagerConfig.java:82
com.sun.jmx.examples.scandir.config.ScanManagerConfig.name
String name
Definition: ScanManagerConfig.java:97
com.sun.jmx.examples.scandir.config.ScanManagerConfig.copy
ScanManagerConfig copy(String newname)
Definition: ScanManagerConfig.java:292
com.sun.jmx.examples.scandir.config.ScanManagerConfig.setName
void setName(String name)
Definition: ScanManagerConfig.java:187
com.sun.jmx.examples.scandir.config.ScanManagerConfig.removeScan
DirectoryScannerConfig removeScan(String name)
Definition: ScanManagerConfig.java:266
com.sun.jmx.examples.scandir.config.ScanManagerConfig
Definition: ScanManagerConfig.java:72
com.sun.jmx.examples.scandir.config.ScanManagerConfig.setScanList
void setScanList(DirectoryScannerConfig[] scans)
Definition: ScanManagerConfig.java:219
com.sun.jmx.examples.scandir.config.ScanManagerConfig.putScan
DirectoryScannerConfig putScan(DirectoryScannerConfig scan)
Definition: ScanManagerConfig.java:248