Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
evanchooly committed Aug 20, 2024
1 parent 8eb6b32 commit 6b596e5
Show file tree
Hide file tree
Showing 14 changed files with 156 additions and 194 deletions.
Original file line number Diff line number Diff line change
@@ -1,23 +1,132 @@
package dev.morphia.mapping.codec.pojo.critter;

import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Set;

import dev.morphia.annotations.Entity;
import dev.morphia.mapping.Mapper;
import dev.morphia.mapping.codec.MorphiaInstanceCreator;
import dev.morphia.mapping.codec.pojo.EntityModel;
import dev.morphia.mapping.codec.pojo.PropertyModel;
import dev.morphia.mapping.codec.pojo.TypeData;

/**
* 0
*
* @hidden
* @morphia.internal
*/
@SuppressWarnings("NullableProblems")
public abstract class CritterEntityModel extends EntityModel {
private Entity entityAnnotation;
protected final Mapper mapper;
protected Entity entityAnnotation;

public CritterEntityModel(Mapper mapper, Class<?> type) {
super(mapper, type);
super(type);
this.mapper = mapper;
}

@Override
public abstract Set<Class<?>> classHierarchy();

@Override
public final void discriminator(String discriminator) {
throw new UnsupportedOperationException();
}

@Override
public final EntityModel discriminatorKey(String discriminatorKey) {
throw new UnsupportedOperationException();
}

@Override
public Entity getEntityAnnotation() {
if (entityAnnotation == null) {
entityAnnotation = entityAnnotation();
}
return entityAnnotation;
public final EntityModel discriminatorEnabled(boolean discriminatorEnabled) {
throw new UnsupportedOperationException();
}

protected abstract Entity entityAnnotation();
@Override
public abstract String collectionName();

@Override
public final EntityModel collectionName(String collectionName) {
throw new UnsupportedOperationException();
}

@Override
public abstract List<PropertyModel> getShardKeys();

@Override
public abstract String discriminator();

@Override
public abstract String discriminatorKey();

@Override
public abstract Entity getEntityAnnotation();

@Override
public abstract PropertyModel getIdProperty();

@Override
public final void setIdProperty(PropertyModel model) {

}

@Override
public abstract MorphiaInstanceCreator getInstanceCreator();

@Override
public abstract List<PropertyModel> getProperties(Class<? extends Annotation> type);

@Override
public abstract List<PropertyModel> getProperties();

@Override
public final PropertyModel getProperty(String name) {
return super.getProperty(name);
}

@Override
public abstract EntityModel getSubtype(Class<?> type);

@Override
public abstract Set<EntityModel> getSubtypes();

@Override
public abstract void addSubtype(EntityModel subtype);

@Override
public abstract EntityModel getSuperClass();

@Override
public abstract Class<?> getType();

@Override
public final void setType(Class<?> type) {
}

@Override
public abstract TypeData<?> getTypeData(Class<?> type, TypeData<?> suggested, Type genericType);

@Override
public abstract PropertyModel getVersionProperty();

@Override
public final void setVersionProperty(PropertyModel model) {

}

@Override
public abstract boolean hasLifecycle(Class<? extends Annotation> type);

@Override
public abstract boolean isAbstract();

@Override
public abstract boolean isInterface();

@Override
public abstract boolean useDiscriminator();
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package dev.morphia.critter.parser

import dev.morphia.critter.CritterEntityModel
import dev.morphia.critter.parser.asm.CritterEntityModelGenerator
import dev.morphia.critter.parser.java.CritterClassLoader
import dev.morphia.critter.parser.java.CritterParser.critterClassLoader
import dev.morphia.mapping.Mapper
import dev.morphia.mapping.codec.pojo.critter.CritterEntityModel
import org.objectweb.asm.ClassReader
import org.objectweb.asm.tree.ClassNode

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package dev.morphia.critter.parser

import dev.morphia.critter.CritterEntityModel
import dev.morphia.critter.parser.gizmo.GizmoEntityModelGenerator
import dev.morphia.critter.parser.java.CritterClassLoader
import dev.morphia.critter.parser.java.CritterParser.critterClassLoader
import dev.morphia.mapping.Mapper
import dev.morphia.mapping.codec.pojo.critter.CritterEntityModel
import org.objectweb.asm.ClassReader
import org.objectweb.asm.tree.ClassNode

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package dev.morphia.critter.parser.asm

import dev.morphia.annotations.Entity
import dev.morphia.critter.Critter.Companion.critterPackage
import dev.morphia.critter.CritterEntityModel
import dev.morphia.mapping.codec.pojo.critter.CritterEntityModel
import java.lang.reflect.InvocationHandler
import java.lang.reflect.Method
import java.lang.reflect.Modifier
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,16 @@ class GizmoPropertyModelGenerator : BaseGizmoGenerator {
private fun ctor() {
val constructor = creator.getConstructorCreator(EntityModel::class.java)
constructor.invokeSpecialMethod(
MethodDescriptor.ofConstructor(PropertyModel::class.java, EntityModel::class.java),
constructor.`this`,
MethodDescriptor.ofConstructor(
CritterPropertyModel::class.java,
EntityModel::class.java
),
constructor.getThis(),
constructor.getMethodParam(0)
)
constructor.setParameterNames(arrayOf("model"))

registerAnnotations(constructor)
// registerAnnotations(constructor)

constructor.close()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import com.squareup.javapoet.TypeSpec
import dev.morphia.annotations.internal.AnnotationKspFactory.entityAnnotation
import dev.morphia.annotations.internal.AnnotationKspFactory.entityCodeGen
import dev.morphia.config.MorphiaConfig
import dev.morphia.critter.CritterEntityModel
import dev.morphia.critter.parser.ksp.extensions.allAnnotations
import dev.morphia.critter.parser.ksp.extensions.name
import dev.morphia.critter.parser.ksp.extensions.toTypeName
import dev.morphia.mapping.Mapper
import dev.morphia.mapping.codec.pojo.critter.CritterEntityModel
import javax.lang.model.element.Modifier.PUBLIC

class EntityModelGenerator(source: KSClassDeclaration, val config: MorphiaConfig) :
Expand All @@ -37,10 +37,12 @@ class EntityModelGenerator(source: KSClassDeclaration, val config: MorphiaConfig
"collectionName",
orDefault(entityAnnotation.value, config.collectionNaming().apply(source.name()))
)
stringMethod(
"discriminator",
config.discriminator().apply(fqcn, entityAnnotation.discriminator)
)
/*
stringMethod(
"discriminator",
config.discriminator().apply(fqcn, entityAnnotation.discriminator)
)
*/
stringMethod(
"discriminatorKey",
orDefault(entityAnnotation.discriminatorKey, config.discriminatorKey())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@

import dev.morphia.annotations.Entity;
import dev.morphia.annotations.internal.EntityBuilder;
import dev.morphia.critter.CritterEntityModel;
import dev.morphia.mapping.Mapper;
import dev.morphia.mapping.codec.MorphiaInstanceCreator;
import dev.morphia.mapping.codec.pojo.EntityModel;
import dev.morphia.mapping.codec.pojo.PropertyModel;
import dev.morphia.mapping.codec.pojo.TypeData;
import dev.morphia.mapping.codec.pojo.critter.CritterEntityModel;
import dev.morphia.mapping.conventions.MorphiaDefaultsConvention;

public class ExampleEntityModelTemplate extends CritterEntityModel {
Expand Down Expand Up @@ -41,7 +41,7 @@ public List<PropertyModel> getShardKeys() {

@Override
public String discriminator() {
return mapper.getConfig().discriminator().apply(Example.class.getName(), ".");
return mapper.getConfig().discriminator().apply(Example.class, ".");
}

@Override
Expand Down
Loading

0 comments on commit 6b596e5

Please sign in to comment.