package org.etk.orm.plugins.mapper.onetoone.embedded; import org.etk.orm.core.EmbeddedContext; import org.etk.orm.core.EntityContext; import org.etk.orm.plugins.bean.BeanValueInfo; import org.etk.orm.plugins.bean.PropertyInfo; import org.etk.orm.plugins.bean.ValueKind; import org.etk.orm.plugins.bean.mapping.RelationshipMapping; import org.etk.orm.plugins.mapper.JCRNodePropertyMapper; public class JCREmbeddedPropertyMapper extends JCRNodePropertyMapper<PropertyInfo<BeanValueInfo, ValueKind.Single>, BeanValueInfo, EmbeddedContext> { public JCREmbeddedPropertyMapper(RelationshipMapping.OneToOne.Embedded info) throws ClassNotFoundException { super(EmbeddedContext.class, info); } @Override public Object get(EmbeddedContext context) throws Throwable { EntityContext entityCtx = context.getEntity(); if (entityCtx != null) { Object related = entityCtx.getObject(); Class<?> relatedClass = getRelatedClass(); return relatedClass.isInstance(related) ? related : null; } else { return null; } } @Override public void set(EmbeddedContext context, Object value) throws Throwable { if (value == null) { throw new UnsupportedOperationException("todo mixin removal"); } // EntityContext entityCtx = context.getSession().unwrapEntity(value); // entityCtx.addMixin(context); } }