2026-03-17 13:31:18 -07:00

292 lines
11 KiB
Java

/*
* Decompiled with CFR 0.152.
*/
package com.tridium.sys.schema;
import com.tridium.sys.Nre;
import com.tridium.sys.module.ModuleClassLoader;
import com.tridium.sys.module.NModule;
import com.tridium.sys.schema.ComplexIntrospector;
import com.tridium.sys.schema.EnumIntrospector;
import com.tridium.sys.schema.InterfaceIntrospector;
import com.tridium.sys.schema.NType;
import com.tridium.sys.schema.ObjectIntrospector;
import com.tridium.sys.schema.SchemaManager;
import com.tridium.sys.schema.SimpleIntrospector;
import com.tridium.sys.schema.SingletonIntrospector;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Member;
import java.lang.reflect.Modifier;
import javax.baja.sys.BObject;
import javax.baja.sys.Type;
import javax.baja.sys.TypeIntrospectionException;
/*
* Illegal identifiers - consider using --renameillegalidents true
*/
public abstract class Introspector {
static Class propertyClass;
static Class actionClass;
static Class topicClass;
Class cls;
int id;
boolean isAbstract;
boolean isFinal;
NModule module;
String typeName;
String facetsPath;
static /* synthetic */ Class class$javax$baja$sys$Property;
static /* synthetic */ Class class$javax$baja$sys$Action;
static /* synthetic */ Class class$javax$baja$sys$Topic;
static /* synthetic */ Class class$javax$baja$sys$BComplex;
static /* synthetic */ Class class$javax$baja$sys$BFrozenEnum;
static /* synthetic */ Class class$javax$baja$sys$BSimple;
static /* synthetic */ Class class$javax$baja$sys$BSingleton;
static /* synthetic */ Class class$java$lang$Class;
static /* synthetic */ Class class$com$tridium$sys$schema$Introspector;
static /* synthetic */ Class class$javax$baja$sys$BObject;
static Introspector create(int n, Class clazz) {
if (clazz.isInterface()) {
return new InterfaceIntrospector(n, clazz);
}
Introspector introspector = Introspector.getCustomIntrospector(n, clazz);
if (introspector != null) {
return introspector;
}
Class clazz2 = class$javax$baja$sys$BComplex;
if (clazz2 == null) {
clazz2 = class$javax$baja$sys$BComplex = Introspector.class("[Ljavax.baja.sys.BComplex;", false);
}
if (clazz2.isAssignableFrom(clazz)) {
return new ComplexIntrospector(n, clazz);
}
Class clazz3 = class$javax$baja$sys$BFrozenEnum;
if (clazz3 == null) {
clazz3 = class$javax$baja$sys$BFrozenEnum = Introspector.class("[Ljavax.baja.sys.BFrozenEnum;", false);
}
if (clazz3.isAssignableFrom(clazz)) {
return new EnumIntrospector(n, clazz);
}
Class clazz4 = class$javax$baja$sys$BSimple;
if (clazz4 == null) {
clazz4 = class$javax$baja$sys$BSimple = Introspector.class("[Ljavax.baja.sys.BSimple;", false);
}
if (clazz4.isAssignableFrom(clazz)) {
return new SimpleIntrospector(n, clazz);
}
Class clazz5 = class$javax$baja$sys$BSingleton;
if (clazz5 == null) {
clazz5 = class$javax$baja$sys$BSingleton = Introspector.class("[Ljavax.baja.sys.BSingleton;", false);
}
if (clazz5.isAssignableFrom(clazz)) {
return new SingletonIntrospector(n, clazz);
}
return new ObjectIntrospector(n, clazz);
}
static Introspector getCustomIntrospector(int n, Class clazz) {
try {
Field field = Introspector.getField("INTROSPECTOR", clazz);
if (field == null) {
return null;
}
Class clazz2 = class$java$lang$Class;
if (clazz2 == null) {
clazz2 = class$java$lang$Class = Introspector.class("[Ljava.lang.Class;", false);
}
if (!clazz2.isAssignableFrom(field.getType())) {
return null;
}
Class clazz3 = (Class)field.get(null);
Class clazz4 = class$com$tridium$sys$schema$Introspector;
if (clazz4 == null) {
clazz4 = class$com$tridium$sys$schema$Introspector = Introspector.class("[Lcom.tridium.sys.schema.Introspector;", false);
}
if (!clazz4.isAssignableFrom(clazz3)) {
return null;
}
Class[] classArray = new Class[2];
classArray[0] = Integer.TYPE;
Class clazz5 = class$java$lang$Class;
if (clazz5 == null) {
clazz5 = class$java$lang$Class = Introspector.class("[Ljava.lang.Class;", false);
}
classArray[1] = clazz5;
Constructor constructor = clazz3.getConstructor(classArray);
return (Introspector)constructor.newInstance(new Integer(n), clazz);
}
catch (Exception exception) {
exception.printStackTrace();
return null;
}
}
/*
* Unable to fully structure code
*/
static Field getField(String var0, Class var1_1) {
var2_2 = var1_1;
if (true) ** GOTO lbl11
do {
var3_3 = null;
try {
var3_3 = var2_2.getDeclaredField(var0);
var3_3.setAccessible(true);
return var3_3;
}
catch (Exception var4_4) {
var2_2 = var2_2.getSuperclass();
}
lbl11:
// 2 sources
if ((v0 = Introspector.class$javax$baja$sys$BObject) != null) continue;
v0 = Introspector.class("[Ljavax.baja.sys.BObject;", false);
} while (var2_2 != v0);
return null;
}
abstract Type introspect() throws Exception;
BObject getConstantFieldObject(String string) throws Exception {
try {
if (this.isAbstract) {
return null;
}
Field field = this.cls.getField(string);
this.checkPublicStaticFinal(field);
if (field.getType() != this.cls) {
throw this.err(string + " field is wrong type");
}
BObject bObject = (BObject)field.get(null);
if (bObject == null) {
throw this.err(string + " field is null; insure getType() comes last");
}
return bObject;
}
catch (TypeIntrospectionException typeIntrospectionException) {
throw typeIntrospectionException;
}
catch (Exception exception) {
throw this.err("Missing or invalid " + string + " field");
}
}
NModule getModule() {
return Introspector.getModule(this.cls, this.typeName);
}
static NModule getModule(Class clazz, String string) {
ClassLoader classLoader = clazz.getClassLoader();
if (classLoader instanceof ModuleClassLoader) {
NModule nModule = ((ModuleClassLoader)classLoader).module;
String string2 = nModule.getTypeClassName(string);
if (string2 == null) {
throw Introspector.err(clazz, "Module does not declare type '" + string + "' in 'module.xml'");
}
if (!string2.equals(clazz.getName())) {
throw Introspector.err(clazz, "Type '" + string + "' should be '" + string2 + '\'');
}
return nModule;
}
NModule[] nModuleArray = Nre.moduleManager.getModules();
int n = 0;
while (n < nModuleArray.length) {
String string3;
if (nModuleArray[n].isSystemJar() && (string3 = nModuleArray[n].getTypeClassName(string)) != null && string3.equals(clazz.getName())) {
return nModuleArray[n];
}
++n;
}
throw Introspector.err(clazz, "Cannot resolve class to module (check 'module.xml')");
}
boolean isPublic(Member member) {
return Modifier.isPublic(member.getModifiers());
}
boolean isStatic(Member member) {
return Modifier.isStatic(member.getModifiers());
}
boolean isPublicStaticFinal(Field field) {
int n = field.getModifiers();
boolean bl = false;
if (Modifier.isPublic(n) && Modifier.isStatic(n) && Modifier.isFinal(n)) {
bl = true;
}
return bl;
}
void checkPublicStaticFinal(Field field) {
if (!this.isPublicStaticFinal(field)) {
throw this.err("Field must be public static final", field.getName());
}
}
public TypeIntrospectionException err(String string) {
return Introspector.err(this.cls, string);
}
public static TypeIntrospectionException err(Class clazz, String string) {
return Introspector.err(clazz, string, null);
}
public TypeIntrospectionException err(String string, String string2) {
return Introspector.err(this.cls, string, string2);
}
public static TypeIntrospectionException err(Class clazz, String string, String string2) {
String string3 = string2 == null ? string : string + " (" + string2 + ')';
String string4 = clazz.getName();
if (clazz.getClassLoader() instanceof ModuleClassLoader) {
NModule nModule = ((ModuleClassLoader)clazz.getClassLoader()).module;
string4 = nModule.getModuleName() + ':' + string4;
}
SchemaManager.log.error(string4 + ": " + string3);
return new TypeIntrospectionException(clazz, string3);
}
static /* synthetic */ Class class(String string, boolean bl) {
try {
Class<?> clazz = Class.forName(string);
if (!bl) {
clazz = clazz.getComponentType();
}
return clazz;
}
catch (ClassNotFoundException classNotFoundException) {
throw new NoClassDefFoundError(classNotFoundException.getMessage());
}
}
protected Introspector(int n, Class clazz) {
this.id = n;
this.cls = clazz;
this.typeName = NType.getTypeName(clazz.getName());
this.module = this.getModule();
this.facetsPath = "/" + clazz.getName().replace('.', '/') + ".facets";
this.isAbstract = Modifier.isAbstract(clazz.getModifiers());
this.isFinal = Modifier.isFinal(clazz.getModifiers());
}
static {
Class clazz;
Class clazz2;
Class clazz3 = class$javax$baja$sys$Property;
if (clazz3 == null) {
clazz3 = propertyClass = (class$javax$baja$sys$Property = Introspector.class("[Ljavax.baja.sys.Property;", false));
}
if ((clazz2 = class$javax$baja$sys$Action) == null) {
clazz2 = actionClass = (class$javax$baja$sys$Action = Introspector.class("[Ljavax.baja.sys.Action;", false));
}
if ((clazz = class$javax$baja$sys$Topic) == null) {
clazz = class$javax$baja$sys$Topic = Introspector.class("[Ljavax.baja.sys.Topic;", false);
}
topicClass = clazz;
}
}