Hi Francesco, +1 for issue. Find it also quite dangerous, create() should throw exception if entity already exists, "409 Conflict" will be corresponded HTTP error code in this case.
Regards, Andrei. > -----Original Message----- > From: Francesco Chicchiriccò [mailto:ilgro...@apache.org] > Sent: Freitag, 22. Februar 2013 14:44 > To: dev@syncope.apache.org > Subject: Re: [DISCUSS] REST: create turns into update for some entities > > I have opened SYNCOPE-323 for this. > > Regards. > > On 22/02/2013 12:43, Francesco Chicchiriccò wrote: > > Hi all, > > I have recently found that some REST create requests are treated as > > update. > > > > For example, try to create a new schema on the admin console and > > provide a name of another existing schema: you won't get any warning; > > only, the existing schema definition will be completely replaced by > > the newly inserted entry. > > > > After some investigations, I've found that this happens for external > > resources, schema, derived schema and virtual schema. > > Such entities have in common the fact that the JPA @Id is non-generated. > > The way how saving is handled (via EntityManager#merge()) finally > > turns an expected create into an update. > > > > I don't find such behavior as correct, hence I would propose to throw > > an exception, in the REST create methods for the entities named above, > > in case the key of the entity being created is already present. > > > > Do you see any problem with this? > > > -- > Francesco Chicchiriccò > > ASF Member, Apache Syncope PMC chair, Apache Cocoon PMC Member > http://people.apache.org/~ilgrosso/