Skip to content

Commit 8998b81

Browse files
LarsEckartJayBazuziisidore
committed
- B PackageSettings now allows for private constructor (fixes #370)
Co-authored-by: Jay Bazuzi <[email protected]> Co-authored-by: Llewellyn Falco <[email protected]>
1 parent 30ad5ea commit 8998b81

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

approvaltests-tests/src/test/java/org/packagesettings/subpackage/PackageSettings.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,7 @@ public class PackageSettings
55
public String name = "Test Name";
66
private boolean rating = true;
77
public String ratingScale = "logarithmic";
8+
private PackageSettings()
9+
{
10+
}
811
}

approvaltests-util/src/main/java/org/packagesettings/PackageLevelSettings.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
package org.packagesettings;
22

3-
import com.spun.util.ObjectUtils;
4-
import com.spun.util.ThreadUtils;
5-
import org.lambda.functions.Function0;
6-
3+
import java.lang.reflect.Constructor;
74
import java.lang.reflect.Field;
85
import java.lang.reflect.Modifier;
96
import java.util.Collections;
107
import java.util.HashMap;
118
import java.util.HashSet;
129
import java.util.Map;
1310

11+
import org.lambda.functions.Function0;
12+
13+
import com.spun.util.ObjectUtils;
14+
import com.spun.util.ThreadUtils;
15+
1416
public class PackageLevelSettings
1517
{
1618
public static String PACKAGE_SETTINGS = "PackageSettings";
@@ -48,7 +50,7 @@ private static Map<String, Settings> getSettingsFor(String packageName, HashSet<
4850
{
4951
Class<?> clazz = loadClass(packageName + "." + PACKAGE_SETTINGS);
5052
Field[] declaredFields = clazz.getDeclaredFields();
51-
Object o = clazz.newInstance();
53+
Object o = createInstance(clazz);
5254
for (Field field : declaredFields)
5355
{
5456
if (Modifier.isStatic(field.getModifiers()))
@@ -83,6 +85,13 @@ private static Settings getFieldValue(Field field, Object from)
8385
return null;
8486
}
8587

88+
private static Object createInstance(Class<?> clazz) throws Exception
89+
{
90+
Constructor<?> constructor = clazz.getDeclaredConstructor();
91+
constructor.setAccessible(true);
92+
return constructor.newInstance();
93+
}
94+
8695
public static String getNextLevel(String className)
8796
{
8897
int last = className.lastIndexOf(".");

0 commit comments

Comments
 (0)