/** * Method to set the ObjectProvider that processing applies to. * This is typically called just before processing the current persistable object on the current row. * @param op The ObjectProvider that we are applying to. */ public void setObjectProvider(ObjectProvider op) { this.op = op; this.cmd = op.getClassMetaData(); }
/** * Locates this object in the datastore. * @param op ObjectProvider for the object to be found * @throws NucleusObjectNotFoundException if the object doesnt exist * @throws NucleusDataStoreException when an error occurs in the datastore communication */ public void locateObject(ObjectProvider op) { ClassLoaderResolver clr = op.getExecutionContext().getClassLoaderResolver(); DatastoreClass table = getDatastoreClass(op.getObject().getClass().getName(), clr); getLocateRequest(table, op.getObject().getClass().getName()).execute(op); }
protected String getFilenameForObjectProvider(ObjectProvider op) { return folderName + System.getProperty("file.separator") + op.getInternalObjectId(); }
/** * Method to transition to retrieve state. * @param op ObjectProvider. * @param fgOnly only the current fetch group fields * @return new LifeCycle state. **/ public LifeCycleState transitionRetrieve(ObjectProvider op, boolean fgOnly) { if (fgOnly) { op.loadUnloadedFieldsInFetchPlan(); } else { op.loadUnloadedFields(); } return this; }
public void fetchFields(ObjectProvider vsm) { if (ownerFieldNumber >= 0) { vsm.replaceFieldMakeDirty(ownerFieldNumber, newOwner); } vsm.replaceFieldMakeDirty(keyFieldNumber, newKey); JavaTypeMapping externalFKMapping = valueTable.getExternalMapping(ownerMemberMetaData, MappingType.EXTERNAL_FK); if (externalFKMapping != null) { // Set the owner in the value object where appropriate vsm.setAssociatedValue(externalFKMapping, op.getObject()); } } public void fetchNonLoadedFields(ObjectProvider op)
AbstractClassMetaData acmd = op.getClassMetaData(); ExecutionContext ec = op.getExecutionContext(); ManagedConnection mconn = storeMgr.getConnectionManager().getConnection(ec); try op.getObjectAsPrintable(), op.getInternalObjectId(), str)); op.loadUnloadedFields(); ((XMLStoreManager)storeMgr).getJAXBHandler().marshall(op.getObject(), classnode, op.getExecutionContext().getClassLoaderResolver()); op.provideFields(fieldNumbers, new PersistFieldManager(op, false));
AbstractClassMetaData cmd = op.getClassMetaData(); Table table = storeMgr.getStoreDataForClass(cmd.getFullClassName()).getTable(); ExecutionContext ec = op.getExecutionContext(); ManagedConnection mconn = storeMgr.getConnectionManager().getConnection(ec); try if (NucleusLogger.DATASTORE_PERSIST.isDebugEnabled()) NucleusLogger.DATASTORE_PERSIST.debug(Localiser.msg("MongoDB.Delete.Start", op.getObjectAsPrintable(), op.getInternalObjectId())); throw new NucleusOptimisticException("Object with id " + op.getInternalObjectId() + " and version " + op.getTransactionalVersion() + " no longer present"); throw new NucleusDataStoreException("Could not find object with id " + op.getInternalObjectId()); op.setAssociatedValue(OP_DB_OBJECT, dbObject); op.loadUnloadedFields(); op.provideFields(cmd.getAllMemberPositions(), new DeleteFieldManager(op, true)); op.removeAssociatedValue(OP_DB_OBJECT); if (NucleusLogger.DATASTORE_NATIVE.isDebugEnabled())
AbstractClassMetaData cmd = sm.getClassMetaData(); if (NucleusLogger.PERSISTENCE.isDebugEnabled()) str.append(sm.getObjectAsPrintable()).append("\" (id="); str.append(sm.getInternalObjectId()).append(")").append(" fields ["); for (int i=0;i<fieldNumbers.length;i++) if (NucleusLogger.DATASTORE_RETRIEVE.isDebugEnabled()) NucleusLogger.DATASTORE_RETRIEVE.debug(Localiser.msg("NeoDatis.Fetch.Start", sm.getObjectAsPrintable(), sm.getInternalObjectId())); ExecutionContext ec = sm.getExecutionContext(); try Object pc = findObjectForId(ec, sm.getInternalObjectId()); if (pc != null && pc != sm.getObject()) sm.getObjectAsPrintable() + " but this object is no longer managed by NeoDatis so replacing with " + StringUtils.toJVMIDString(pc)); sm.replaceManagedPC(pc); sm.replaceFields(sm.getClassMetaData().getAllMemberPositions(), new RetrieveFieldManager(sm)); updateVersionOfManagedObject(sm);
AbstractClassMetaData cmd = op.getClassMetaData(); Table table = storeMgr.getStoreDataForClass(cmd.getFullClassName()).getTable(); ExecutionContext ec = op.getExecutionContext(); Object key = IdentityUtils.getTargetKeyForDatastoreIdentity(op.getInternalObjectId()); dbObject.put(fieldName, key); op.replaceField(verMmd.getAbsoluteFieldNumber(), verFieldValue); dbObject.put(fieldName, versionValue); op.setTransactionalVersion(versionValue); op.provideFields(fieldNumbers, fieldManager);
private void updateMerge(ObjectProvider embeddedSM, Attributes embeddedAttributes, List<AbstractMemberMetaData> embeddedMmds, EmbeddedMetaData embeddedMetaData, boolean insert) AbstractClassMetaData embeddedCmd = embeddedSM.getClassMetaData(); embeddedSM.replaceField(i, op.getObject()); ms.update(embeddedSM.provideField(i)); String[] dirtyFieldNames = embeddedSM.getDirtyFieldNames(); List<String> dirtyFieldNameList = dirtyFieldNames != null ? Arrays.asList(dirtyFieldNames) : new ArrayList<String>(); Object embeddedValue = embeddedSM.provideField(i); if (insert || LDAPUtils.isEmbeddedField(embeddedMmd) || dirtyFieldNameList.contains(fieldName))
elementOP.setAssociatedValue(externalFKMapping, ownerOP.getObject()); elementOP.setAssociatedValue(relationDiscriminatorMapping, relationDiscriminatorValue); Object currentOwner = elementOP.provideField(fieldNumInElement); if (currentOwner == null) NucleusLogger.PERSISTENCE.info(Localiser.msg("056037", ownerOP.getObjectAsPrintable(), ownerMemberMetaData.getFullFieldName(), StringUtils.toJVMIDString(elementOP.getObject()))); elementOP.replaceFieldMakeDirty(fieldNumInElement, newOwner); elementOP.replaceField(fieldNumInElement, newOwner); else if (ownerOP.getReferencedPC() == null) throw new NucleusUserException(Localiser.msg("056038", ownerOP.getObjectAsPrintable(), ownerMemberMetaData.getFullFieldName(), StringUtils.toJVMIDString(elementOP.getObject()), StringUtils.toJVMIDString(currentOwner)));
public static Delete getDeleteForObject(ObjectProvider op, Table schemaTable) throws IOException { byte[] rowKey = (byte[]) op.getAssociatedValue("HBASE_ROW_KEY"); if (rowKey == null) { AbstractClassMetaData cmd = op.getClassMetaData(); final Object[] pkValues = findKeyObjects(op, cmd, schemaTable); ExecutionContext ec = op.getExecutionContext(); if (ec.getStatistics() != null) { // Add to statistics ec.getStatistics().incrementNumReads(); } rowKey = getRowKeyForPkValue(pkValues, ec.getNucleusContext()); } return new Delete(rowKey); }
AbstractClassMetaData embeddedCmd = embeddedSM.getClassMetaData(); String nullIndicatorColumn = embeddedMetaData.getNullIndicatorColumn(); String nullIndicatorValue = embeddedMetaData.getNullIndicatorValue(); embeddedSM.replaceField(embFieldNum, op.getObject()); embeddedSM.replaceFields(new int[]{embFieldNum}, fetchFM); embeddedSM.replaceField(embFieldNum, ms.fetch()); embeddedSM.replaceField(embFieldNum, embeddedValue); return embeddedSM.getObject();
/** * Utility method to process the passed persistable object. * We know that this object has no ObjectProvider when it comes in here. * @param fieldNumber Absolute field number * @param pc The persistable object */ protected void processPersistable(int fieldNumber, Object pc) { ExecutionContext ec = op.getExecutionContext(); ObjectProvider theSM = null; // No ObjectProvider but object returned to us by NeoDatis so we know it is persistent // Connect a ObjectProvider in P_CLEAN state with all fields loaded AbstractClassMetaData acmd = ec.getMetaDataManager().getMetaDataForClass(pc.getClass(), ec.getClassLoaderResolver()); Object id = NeoDatisUtils.getIdentityForObject(pc, acmd, ec, odb); theSM = ec.getNucleusContext().getObjectProviderFactory().newForPersistentClean(ec, id, pc); // Recurse to all fields of this object since just assigned its ObjectProvider theSM.provideFields(theSM.getClassMetaData().getAllMemberPositions(), new AssignObjectProviderFieldManager(theSM, odb)); }
ExecutionContext ec = op.getExecutionContext(); ManagedConnection mconn = storeMgr.getConnectionManager().getConnection(ec, options); URLConnection conn = (URLConnection) mconn.getConnection(); if (NucleusLogger.DATASTORE_PERSIST.isDebugEnabled()) NucleusLogger.DATASTORE_PERSIST.debug(Localiser.msg("JSON.Delete.Start", op.getObjectAsPrintable(), op.getInternalObjectId())); if (NucleusLogger.DATASTORE_NATIVE.isDebugEnabled()) NucleusLogger.DATASTORE_NATIVE.debug("DELETE " + op.getInternalObjectId());
public void fetchFields(ObjectProvider sm) { sm.replaceFields(pkFieldNumbers, resultsFM); } public void fetchNonLoadedFields(ObjectProvider sm)
public Object fetchObjectField(int fieldNumber) { SingleValueFieldManager sfv = new SingleValueFieldManager(); op.provideFields(new int[]{fieldNumber}, sfv); Object value = sfv.fetchObjectField(fieldNumber); return value; }
if (ownerOPs != null && ownerOPs.length == 1 && value != ownerOPs[0].getObject()) op.replaceField(fieldNumber, ownerOPs[0].getObject()); embSM.provideFields(embcmd.getAllMemberPositions(), new StoreEmbeddedFieldManager(embSM, row, insert, embMmds, table)); return;
private void updateEmbedded(Object value) { if (value == null) { // create an instance with empty fields, this will null-out all embedded fields // TODO Populate the owner object in this call ObjectProvider embeddedSM = ec.getNucleusContext().getObjectProviderFactory().newForEmbedded(ec, effectiveClassMetaData, null, -1); int[] allMemberPositions = embeddedSM.getClassMetaData().getAllMemberPositions(); for (int i : allMemberPositions) { embeddedSM.makeDirty(i); } //get the dummy value value = embeddedSM.getObject(); } ObjectProvider embeddedSM = ec.findObjectProvider(value); boolean insert = false; if (embeddedSM == null) { embeddedSM = getEmbeddedObjectProvider(value); insert = true; } EmbeddedMetaData embeddedMetaData = mmd.getEmbeddedMetaData(); List<AbstractMemberMetaData> embeddedMmds = new ArrayList<AbstractMemberMetaData>(Arrays.asList(embeddedMetaData.getMemberMetaData())); updateMerge(embeddedSM, attributes, embeddedMmds, embeddedMetaData, insert); }
public byte fetchByteField(int fieldNumber) { copyFieldsFromObject(op, value, new int[]{fieldNumber}); return (Byte) op.provideField(fieldNumber); }