public ObjectGraphBuilder(PersistenceCache pcCache, PersistenceDelegator pd) { this.persistenceCache = pcCache; this.pd = pd; this.idGenerator = new IdGenerator(); this.validator = new PersistenceValidator(); }
public Object generateAndSetId(Object e, EntityMetadata m, PersistenceDelegator pd, final KunderaMetadata kunderaMetadata) { Metamodel metamodel = KunderaMetadataManager.getMetamodel(kunderaMetadata, m.getPersistenceUnit()); Client<?> client = pd.getClient(m); return generateId(e, m, client, kunderaMetadata); }
return onTableGenerator(m, client, keyValue, e); case SEQUENCE: return onSequenceGenerator(m, client, keyValue, e); case AUTO: return onAutoGenerator(m, client, e); case IDENTITY: throw new UnsupportedOperationException(GenerationType.class.getSimpleName() + "." + type
@Test public void testAutoStrategy() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { IdGenerator idGenerator = new IdGenerator(); GeneratedIdStrategyAuto autoStrategy = new GeneratedIdStrategyAuto(); autoStrategy.setName("auto strategy"); Assert.assertEquals(0, autoStrategy.getId()); EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, GeneratedIdStrategyAuto.class); // on auto strategy idGenerator.generateAndSetId(autoStrategy, entityMetadata, CoreTestUtilities.getDelegator(em), kunderaMetadata); Assert.assertTrue(autoStrategy.getId() > 0); }
id = idGenerator.generateAndSetId(entity, entityMetadata, pd, pd.getKunderaMetadata());
Object autogenerator = getAutoGenClazz(client);
id = new IdGenerator().generateAndSetId(entity, entityMetadata, delegator, delegator.getKunderaMetadata());
Object seqgenerator = getAutoGenClazz(client); if (seqgenerator instanceof SequenceGenerator)
@Test public void testIdentityStrategy() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { IdGenerator idGenerator = new IdGenerator(); GeneratedIdStrategyIdentity identityStrategy = new GeneratedIdStrategyIdentity(); identityStrategy.setName("identity strategy"); Assert.assertEquals(0, identityStrategy.getId()); EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, GeneratedIdStrategyIdentity.class); // on auto strategy try { idGenerator.generateAndSetId(identityStrategy, entityMetadata, CoreTestUtilities.getDelegator(em), kunderaMetadata); } catch (UnsupportedOperationException usex) { Assert.assertNotNull(usex); } }
Object tablegenerator = getAutoGenClazz(client); if (tablegenerator instanceof TableGenerator)
@Test public void testTableStrategy() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { IdGenerator idGenerator = new IdGenerator(); GeneratedIdStrategyTable tableStrategy = new GeneratedIdStrategyTable(); tableStrategy.setName("table strategy"); Assert.assertEquals(0, tableStrategy.getId()); EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, GeneratedIdStrategyTable.class); // on auto strategy idGenerator .generateAndSetId(tableStrategy, entityMetadata, CoreTestUtilities.getDelegator(em), kunderaMetadata); Assert.assertTrue(tableStrategy.getId() > 0); try { setInvalidClient(CoreTestUtilities.getDelegator(em)); idGenerator.generateAndSetId(tableStrategy, entityMetadata, CoreTestUtilities.getDelegator(em), kunderaMetadata); Assert.fail("Should have gone to catch block!"); } catch (IllegalArgumentException iaex) { Assert.assertNotNull(iaex); } }
@Test public void testSequenceStrategy() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { IdGenerator idGenerator = new IdGenerator(); GeneratedIdStrategySequence seqStrategy = new GeneratedIdStrategySequence(); seqStrategy.setName("sequence strategy"); Assert.assertEquals(0, seqStrategy.getId()); EntityMetadata entityMetadata = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, GeneratedIdStrategySequence.class); // on auto strategy idGenerator.generateAndSetId(seqStrategy, entityMetadata, CoreTestUtilities.getDelegator(em), kunderaMetadata); Assert.assertTrue(seqStrategy.getId() > 0); try { setInvalidClient(CoreTestUtilities.getDelegator(em)); idGenerator.generateAndSetId(seqStrategy, entityMetadata, CoreTestUtilities.getDelegator(em), kunderaMetadata); Assert.fail("Should have gone to catch block!"); } catch (IllegalArgumentException iaex) { Assert.assertNotNull(iaex); } }