private void writeStore(XMLExtendedStreamWriter writer, StoreConfiguration configuration) throws XMLStreamException { if (configuration instanceof SingleFileStoreConfiguration) { writeFileStore(writer, (SingleFileStoreConfiguration) configuration); } else if (configuration instanceof ClusterLoaderConfiguration) { writeClusterLoader(writer, (ClusterLoaderConfiguration) configuration); } else if (configuration instanceof CustomStoreConfiguration) { writeCustomStore(writer, (CustomStoreConfiguration) configuration); } else { SerializedWith serializedWith = configuration.getClass().getAnnotation(SerializedWith.class); if (serializedWith == null) { ConfigurationFor configurationFor = configuration.getClass().getAnnotation(ConfigurationFor.class); if (configuration instanceof AbstractStoreConfiguration && configurationFor != null) { writer.writeComment( "A serializer for the store configuration class " + configuration.getClass().getName() + " was not found. Using custom store mode"); AbstractStoreConfiguration asc = (AbstractStoreConfiguration) configuration; writeGenericStore(writer, configurationFor.value().getName(), asc); } else throw new UnsupportedOperationException( "Cannot serialize store configuration " + configuration.getClass().getName()); } else { ConfigurationSerializer<StoreConfiguration> serializer; try { serializer = Util.getInstanceStrict(serializedWith.value()); serializer.serialize(writer, configuration); } catch (Exception e) { log.unableToInstantiateSerializer(serializedWith.value()); } } } }