/**
* Parse @PersistentMap.
*/
private void parsePersistentMap(FieldMetaData fmd, PersistentMap anno) {
if (fmd.getDeclaredTypeCode() != JavaTypes.MAP)
throw new MetaDataException(_loc.get("bad-meta-anno", fmd,
"PersistentMap"));
fmd.setInDefaultFetchGroup(anno.fetch() == FetchType.EAGER);
if (anno.keyType() != void.class)
fmd.getKey().setDeclaredType(anno.keyType());
if (anno.elementType() != void.class)
fmd.getElement().setDeclaredType(anno.elementType());
setCascades(fmd.getKey(), anno.keyCascade());
setCascades(fmd.getElement(), anno.elementCascade());
if (anno.keyEmbedded()) {
if (!JavaTypes.maybePC(fmd.getKey()))
throw new MetaDataException(_loc.get("bad-meta-anno", fmd,
"PersistentMap(embeddedKey=true)"));
fmd.getKey().setEmbedded(true);
if (fmd.getKey().getEmbeddedMetaData() == null)
fmd.getKey().addEmbeddedMetaData();
}
if (anno.elementEmbedded()) {
if (!JavaTypes.maybePC(fmd.getElement()))
throw new MetaDataException(_loc.get("bad-meta-anno", fmd,
"PersistentMap(embeddedValue=true)"));
fmd.getElement().setEmbedded(true);
if (fmd.getElement().getEmbeddedMetaData() == null)
fmd.getElement().addEmbeddedMetaData();
}