Crossfire JXClient, Trunk
MixIn.java
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014, 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 import java.io.IOException;
33 import java.lang.reflect.Field;
34 
40 public class MixIn {
41 
45  public interface Debuggable {
46 
57  default String toDebugString() {
58  StringBuilder sb = new StringBuilder();
59  sb.append("State of the: ").append(
60  this.getClass().getSimpleName()).append("\n");
61  for (Class cls = this.getClass();
62  cls != null;
63  cls = cls.getSuperclass()) {
64  for (Field f : cls.getDeclaredFields()) {
65  try {
66  f.setAccessible(true);
67  sb.append(f.getName()).append(" : ").
68  append(f.get(this)).append("\n");
69  } catch (IllegalAccessException e) {
70  }
71  }
72  }
73  return sb.toString();
74  }
75  }
76 
81  public static enum BuildType implements Debuggable {
82 
83  BUILD(0, "-build"),
84  PLAN(0, "-plan"),
85  EXCLUDE(1, "-exclude"),
86  TOTAL(2, "-total");
87 
88  private final int compareOrder;
89  private final String pathSuffix;
90 
91  private BuildType(int compareOrder, String pathSuffix) {
92  this.compareOrder = compareOrder;
93  this.pathSuffix = pathSuffix;
94  }
95 
96  public int getCompareOrder() {
97  return compareOrder;
98  }
99 
100  public String getPathSuffix() {
101  return pathSuffix;
102  }
103  }
104 
111  public static void main(final String[] args) throws IOException {
112  System.out.println(BuildType.BUILD.toDebugString());
113  }
114 }
MixIn.BuildType.PLAN
PLAN
Definition: MixIn.java:84
MixIn.BuildType.BuildType
BuildType(int compareOrder, String pathSuffix)
Definition: MixIn.java:91
MixIn.main
static void main(final String[] args)
Definition: MixIn.java:111
MixIn.BuildType.getPathSuffix
String getPathSuffix()
Definition: MixIn.java:100
MixIn
Definition: MixIn.java:40
MixIn.BuildType
Definition: MixIn.java:81
MixIn.BuildType.BUILD
BUILD
Definition: MixIn.java:83
MixIn.BuildType.compareOrder
final int compareOrder
Definition: MixIn.java:88
MixIn.Debuggable
Definition: MixIn.java:45
MixIn.BuildType.getCompareOrder
int getCompareOrder()
Definition: MixIn.java:96
MixIn.BuildType.TOTAL
TOTAL
Definition: MixIn.java:86
MixIn.BuildType.pathSuffix
final String pathSuffix
Definition: MixIn.java:89
MixIn.Debuggable.toDebugString
default String toDebugString()
Definition: MixIn.java:57
MixIn.BuildType.EXCLUDE
EXCLUDE
Definition: MixIn.java:85