return; // nothing to do
}
throwFaultIfElementNamesHeterogenous( propElemsToBeInserted );
QName propName = XmlBeanUtils.getName( propElemsToBeInserted[0] );
ResourceProperty prop = getProperty( propName );
if(prop == null)
{
prop = createAnyProperty(propName);
getProperties().add(prop);
}
if(!prop.getMetaData().isAny())
{
//todo probably need to check this for xsd:any to check for possible violations
//refreshProperty( prop );
throwFaultIfInsertionViolatesSchema( prop, propElemsToBeInserted );
}
throwFaultIfPropertyIsReadOnly( prop );
try
{
insertPropertyCallback( prop, propElemsToBeInserted );
}
catch ( RuntimeException re )
{
throw new SetResourcePropertyRequestFailedFaultException( re.toString() );
}
Object[] oldValue = getValue( prop );
for ( int i = 0; i < propElemsToBeInserted.length; i++ )
{
try
{
prop.add( propElemsToBeInserted[i] );
}
catch ( MetaDataViolationException mdve )
{
throw new InvalidSetResourcePropertiesRequestContentFaultException( mdve );
}
}
Object[] newValue = getValue( prop );
if ( prop.getChangeListener() != null )
{
firePropChangeEvent( prop, oldValue, newValue );
}
}