Switch QSupplementalInstanceMetaData to interface instead of abstract class; remove getType in favor of getName from its base class, TopLevelMetaDataInterface;

This commit is contained in:
2025-01-23 09:35:55 -06:00
parent 7b141c3f5b
commit 38293b81d7
3 changed files with 31 additions and 24 deletions

View File

@ -1245,7 +1245,7 @@ public class QInstance
{ {
this.supplementalMetaData = new HashMap<>(); this.supplementalMetaData = new HashMap<>();
} }
this.supplementalMetaData.put(supplementalMetaData.getType(), supplementalMetaData); this.supplementalMetaData.put(supplementalMetaData.getName(), supplementalMetaData);
return (this); return (this);
} }

View File

@ -22,6 +22,7 @@
package com.kingsrook.qqq.backend.core.model.metadata; package com.kingsrook.qqq.backend.core.model.metadata;
import java.util.function.Supplier;
import com.kingsrook.qqq.backend.core.instances.QInstanceValidator; import com.kingsrook.qqq.backend.core.instances.QInstanceValidator;
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
@ -30,20 +31,13 @@ import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
** Base-class for instance-level meta-data defined by some supplemental module, etc, ** Base-class for instance-level meta-data defined by some supplemental module, etc,
** outside of qqq core ** outside of qqq core
*******************************************************************************/ *******************************************************************************/
public abstract class QSupplementalInstanceMetaData implements TopLevelMetaDataInterface public interface QSupplementalInstanceMetaData extends TopLevelMetaDataInterface
{ {
/*******************************************************************************
** Getter for type
*******************************************************************************/
public abstract String getType();
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/
public void enrich(QTableMetaData table) default void enrich(QTableMetaData table)
{ {
//////////////////////// ////////////////////////
// noop in base class // // noop in base class //
@ -55,7 +49,7 @@ public abstract class QSupplementalInstanceMetaData implements TopLevelMetaDataI
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/
public void validate(QInstance qInstance, QInstanceValidator validator) default void validate(QInstance qInstance, QInstanceValidator validator)
{ {
//////////////////////// ////////////////////////
// noop in base class // // noop in base class //
@ -68,9 +62,33 @@ public abstract class QSupplementalInstanceMetaData implements TopLevelMetaDataI
** **
*******************************************************************************/ *******************************************************************************/
@Override @Override
public void addSelfToInstance(QInstance qInstance) default void addSelfToInstance(QInstance qInstance)
{ {
qInstance.withSupplementalMetaData(this); qInstance.withSupplementalMetaData(this);
} }
/***************************************************************************
**
***************************************************************************/
static <S extends QSupplementalInstanceMetaData> S of(QInstance qInstance, String name)
{
return ((S) qInstance.getSupplementalMetaData(name));
}
/***************************************************************************
**
***************************************************************************/
static <S extends QSupplementalInstanceMetaData> S ofOrWithNew(QInstance qInstance, String name, Supplier<S> supplier)
{
S s = (S) qInstance.getSupplementalMetaData(name);
if(s == null)
{
s = supplier.get();
s.addSelfToInstance(qInstance);
}
return (s);
}
} }

View File

@ -34,7 +34,7 @@ import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/
public class ApiInstanceMetaDataContainer extends QSupplementalInstanceMetaData public class ApiInstanceMetaDataContainer implements QSupplementalInstanceMetaData
{ {
private Map<String, ApiInstanceMetaData> apis; private Map<String, ApiInstanceMetaData> apis;
@ -71,17 +71,6 @@ public class ApiInstanceMetaDataContainer extends QSupplementalInstanceMetaData
/*******************************************************************************
**
*******************************************************************************/
@Override
public String getType()
{
return (ApiSupplementType.NAME);
}
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/