I use S3 to store attachments so I likely can’t help but wonder if you can use an alternate method of storage?
What is it that you are trying to do or change that causes this to arise? > On Sep 9, 2020, at 8:01 PM, Kwasi O-Ahoofe via Webobjects-dev > <webobjects-dev@lists.apple.com> wrote: > > Problem: [ak] Hack: Will/Can NEVER be met/satisfied because NEWLY created > ERAttachment has an inaccessible relationship to it’s corresponding data in > ERAttachmentData. > > The stringent data validation below throws exception and can’t save the data! > Any ideas and/or work arounds? > > Thanks. > > Kwasi O-Ahoofe > > =============================== > The link to repository: > https://github.com/wocommunity/wonder/blob/master/Frameworks/Core/ERExtensions/Sources/er/extensions/eof/ERXDatabaseContext.java > > <https://github.com/wocommunity/wonder/blob/master/Frameworks/Core/ERExtensions/Sources/er/extensions/eof/ERXDatabaseContext.java> > > > Offending Code: > > Begins: ===>>>> > @Override > public void _verifyNoChangesToReadonlyEntity(EODatabaseOperation dbOp) { > EOEntity entity = dbOp.entity(); > > NSLog.out.appendln( > "\n \n Begin: << _verifyNoChangesToReadonlyEntity>> " + > this.name() + " \n \n" + > "\n \n mEOEntity entity: \n \t" + ((EOEnterpriseObject) > dbOp.entity()).entityName() + > "\n \n EODatabaseOperation dbOp(): \n \t" + > dbOp.databaseOperator() + > > "\n \n dbOp << primaryKeyAttributeNames() >>: \n \t" + > dbOp.entity().primaryKeyAttributeNames() + > "\n \n [ dbOp.dbSnapshot() ] : \n \t" + > ERXMutableDictionary.toPropertyList( dbOp.dbSnapshot() > ) + > "\n \n End: << _verifyNoChangesToReadonlyEntity >>: " + > this.name() + " Method \n \n"); > > > if (entity.isReadOnly()) { > switch (dbOp.databaseOperator()) { > case 0: // '\0' > return; > > case 1: // '\001' > throw new IllegalStateException("cannot insert > object:" + dbOp.object() + " that corresponds to read-only entity: " + > entity.name() + " in databaseContext " + this); > > case 3: // '\003' > throw new IllegalStateException("cannot delete > object:" + dbOp.object() + " that corresponds to read-only entity:" + > entity.name() + " in databaseContext " + this); > > case 2: // '\002' > if (!dbOp.dbSnapshot().equals(dbOp.newRow())) { > throw new IllegalStateException("cannot > update '" + dbOp.rowDiffsForAttributes(entity.attributes()).allKeys() + "' > keys on object:" + dbOp.object() + " that corresponds to read-only entity: " > + entity.name() + " in databaseContext " + this); > } > return; > } > } > > // HACK: ak these methods are protected, so we call them via KVC > if (dbOp.databaseOperator() == 2 && ((Boolean) > NSKeyValueCoding.Utility.valueForKey(entity, > "_hasNonUpdateableAttributes")).booleanValue()) { > NSArray keys = (NSArray) > NSKeyValueCoding.Utility.valueForKey(entity, "dbSnapshotKeys"); > NSDictionary dbSnapshot = dbOp.dbSnapshot(); > NSDictionary newRow = dbOp.newRow(); > for (int i = keys.count() - 1; i >= 0; i--) { > String key = (String) keys.objectAtIndex(i); > EOAttribute att = entity.attributeNamed(key); > // FIX: ak when you have single-table > inheritance and in the > // child there are foreign keys that are not in > the parent > // THEN, if the entity > _hasNonUpdateableAttributes (public PK or > // read only props) the DB op is checked > // against the attributes. BUT this dictionary > has all entries, > // even from the child (most likely NULL values) > // and the current implementation doesn't check > against the case > // when the attribute isn't present in the > first place. > // SO we add this check and live happily ever > after > if (att != null && att._isNonUpdateable() && > !dbSnapshot.objectForKey(key).equals(newRow.objectForKey(key))) { > if (att.isReadOnly()) { > throw new > IllegalStateException("cannot update read-only key '" + key + "' on object:" > + dbOp.object() + " of entity: " + entity.name() + " in databaseContext " + > this); > } > throw new IllegalStateException("cannot > update primary-key '" + key + "' from '" + dbSnapshot.objectForKey(key) + "' > to '" + newRow.objectForKey(key) + "' on object:" + dbOp.object() + " of > entity: " + entity.name() + " in databaseContext " + this); > } > } > > } > > } > Ends: ===>>>> > > > > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/webobjects-dev/jtayler%40oeinc.com > > This email sent to jtay...@oeinc.com
_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com