Index: modules/field/field.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.test,v
retrieving revision 1.64
diff -u -r1.64 field.test
--- modules/field/field.test	22 Oct 2009 00:49:12 -0000	1.64
+++ modules/field/field.test	23 Oct 2009 23:13:39 -0000
@@ -1789,7 +1789,7 @@
     $count = $query->execute()->fetchField();
     $this->assertEqual($count, 0, 'A field_config row for the field does not exist.');
   }
-    
+
   /**
    * Test reading back a field definition.
    */
@@ -1943,7 +1943,7 @@
   function testUpdateFieldType() {
     $field = array('field_name' => 'field_type', 'type' => 'number_decimal');
     $field = field_create_field($field);
-    
+
     $test_field = array('field_name' => 'field_type', 'type' => 'number_integer');
     try {
       field_update_field($test_field);
@@ -2472,7 +2472,7 @@
     $object = field_test_create_stub_entity($eid, $evid, $this->instance['bundle']);
     $field_translations = array();
     $available_languages = field_multilingual_available_languages($obj_type, $this->field);
-    $this->assertTrue(count($available_languages) > 1, t('Field is translatable.')); 
+    $this->assertTrue(count($available_languages) > 1, t('Field is translatable.'));
     foreach ($available_languages as $langcode) {
       $field_translations[$langcode] = $this->_generateTestFieldValues($this->field['cardinality']);
     }
@@ -2529,7 +2529,7 @@
   function _generateStubObjects($obj_type, $objects, $field_name = NULL) {
     $stubs = array();
     foreach ($objects as $obj) {
-      $stub = field_create_stub_entity($obj_type, field_extract_ids($obj_type, $obj));
+      $stub = entity_create_stub_entity($obj_type, entity_extract_ids($obj_type, $obj));
       if (isset($field_name)) {
         $stub->{$field_name} = $obj->{$field_name};
       }
Index: modules/field/field.attach.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.attach.inc,v
retrieving revision 1.55
diff -u -r1.55 field.attach.inc
--- modules/field/field.attach.inc	22 Oct 2009 00:49:12 -0000	1.55
+++ modules/field/field.attach.inc	23 Oct 2009 23:13:37 -0000
@@ -181,7 +181,7 @@
 
   // Iterate through the object's field instances.
   $return = array();
-  list(, , $bundle) = field_extract_ids($obj_type, $object);
+  list(, , $bundle) = entity_extract_ids($obj_type, $object);
 
   if ($options['deleted']) {
     $instances = field_read_instances(array('object_type' => $obj_type, 'bundle' => $bundle), array('include_deleted' => $options['deleted']));
@@ -298,7 +298,7 @@
   // is deleted, so we reference field data via the
   // $object->$field_name property.
   foreach ($objects as $object) {
-    list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+    list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
 
     if ($options['deleted']) {
       $instances = field_read_field(array('bundle' => $bundle, array('include_deleted' => $options['deleted'])));
@@ -488,7 +488,7 @@
   $form += (array) _field_invoke_default('form', $obj_type, $object, $form, $form_state, $options);
 
   // Add custom weight handling.
-  list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
   $form['#attached']['css'][] = drupal_get_path('module', 'field') . '/theme/field.css';
   $form['#pre_render'][] = '_field_extra_weights_pre_render';
   $form['#extra_fields'] = field_extra_fields($bundle);
@@ -591,7 +591,7 @@
     // Collect the storage backends used by the remaining fields in the objects.
     $storages = array();
     foreach ($queried_objects as $obj) {
-      list($id, $vid, $bundle) = field_extract_ids($obj_type, $obj);
+      list($id, $vid, $bundle) = entity_extract_ids($obj_type, $obj);
       if ($options['deleted']) {
         $instances = field_read_instances(array('object_type' => $obj_type, 'bundle' => $bundle), array('include_deleted' => $options['deleted']));
       }
@@ -636,7 +636,7 @@
     if ($cache_write) {
       foreach ($queried_objects as $id => $object) {
         $data = array();
-        list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+        list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
         $instances = field_info_instances($obj_type, $bundle);
         foreach ($instances as $instance) {
           $data[$instance['field_name']] = $queried_objects[$id]->{$instance['field_name']};
@@ -819,7 +819,7 @@
   _field_invoke_default('insert', $obj_type, $object);
   _field_invoke('insert', $obj_type, $object);
 
-  list($id, $vid, $bundle, $cacheable) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle, $cacheable) = entity_extract_ids($obj_type, $object);
 
   // Let other modules act on inserting the object, accumulating saved
   // fields along the way.
@@ -865,7 +865,7 @@
 function field_attach_update($obj_type, $object) {
   _field_invoke('update', $obj_type, $object);
 
-  list($id, $vid, $bundle, $cacheable) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle, $cacheable) = entity_extract_ids($obj_type, $object);
 
   // Let other modules act on updating the object, accumulating saved
   // fields along the way.
@@ -916,7 +916,7 @@
 function field_attach_delete($obj_type, $object) {
   _field_invoke('delete', $obj_type, $object);
 
-  list($id, $vid, $bundle, $cacheable) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle, $cacheable) = entity_extract_ids($obj_type, $object);
 
   // Collect the storage backends used by the fields in the objects.
   $storages = array();
@@ -955,7 +955,7 @@
 function field_attach_delete_revision($obj_type, $object) {
   _field_invoke('delete_revision', $obj_type, $object);
 
-  list($id, $vid, $bundle, $cacheable) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle, $cacheable) = entity_extract_ids($obj_type, $object);
 
   // Collect the storage backends used by the fields in the objects.
   $storages = array();
@@ -1193,7 +1193,7 @@
   $output = _field_invoke_default('view', $obj_type, $object, $build_mode, $null, $options);
 
   // Add custom weight handling.
-  list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
   $output['#attached']['css'][] = drupal_get_path('module', 'field') . '/theme/field.css';
   $output['#pre_render'][] = '_field_extra_weights_pre_render';
   $output['#extra_fields'] = field_extra_fields($bundle);
@@ -1229,7 +1229,7 @@
  *   values.
  */
 function field_attach_preprocess($obj_type, $object, $element, &$variables) {
-  list(, , $bundle) = field_extract_ids($obj_type, $object);
+  list(, , $bundle) = entity_extract_ids($obj_type, $object);
 
   foreach (field_info_instances($obj_type, $bundle) as $instance) {
     $field_name = $instance['field_name'];
Index: modules/field/field.default.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.default.inc,v
retrieving revision 1.21
diff -u -r1.21 field.default.inc
--- modules/field/field.default.inc	16 Oct 2009 03:21:23 -0000	1.21
+++ modules/field/field.default.inc	23 Oct 2009 23:13:37 -0000
@@ -83,7 +83,7 @@
  * @see field_attach_view()
  */
 function field_default_view($obj_type, $object, $field, $instance, $langcode, $items, $build_mode) {
-  list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
 
   $addition = array();
   $display = $instance['display'][$build_mode];
Index: modules/field/field.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.module,v
retrieving revision 1.43
diff -u -r1.43 field.module
--- modules/field/field.module	22 Oct 2009 00:49:12 -0000	1.43
+++ modules/field/field.module	23 Oct 2009 23:13:38 -0000
@@ -506,7 +506,7 @@
     $field_type = field_info_field_types($field['type']);
 
     // We need $field, $instance, $obj_type, $object to be able to display a value...
-    list(, , $bundle) = field_extract_ids($obj_type, $object);
+    list(, , $bundle) = entity_extract_ids($obj_type, $object);
     $instance = field_info_instance($obj_type, $field['field_name'], $bundle);
 
     $display = array(
@@ -655,36 +655,7 @@
 }
 
 /**
- * Helper function to extract id, vid, and bundle name from an object.
- *
- * @param $obj_type
- *   The type of $object; e.g. 'node' or 'user'.
- * @param $object
- *   The object from which to extract values.
- * @return
- *   A numerically indexed array (not a hash table) containing these
- *   elements:
- *
- *   0: primary id of the object
- *   1: revision id of the object, or NULL if $obj_type is not versioned
- *   2: bundle name of the object
- *   3: whether $obj_type's fields should be cached (TRUE/FALSE)
- */
-function field_extract_ids($obj_type, $object) {
-  // TODO D7 : prevent against broken 3rd party $node without 'type'.
-  $info = field_info_fieldable_types($obj_type);
-  // Objects being created might not have id/vid yet.
-  $id = isset($object->{$info['object keys']['id']}) ? $object->{$info['object keys']['id']} : NULL;
-  $vid = ($info['object keys']['revision'] && isset($object->{$info['object keys']['revision']})) ? $object->{$info['object keys']['revision']} : NULL;
-  // If no bundle key provided, then we assume a single bundle, named after the
-  // type of the object.
-  $bundle = $info['object keys']['bundle'] ? $object->{$info['object keys']['bundle']} : $obj_type;
-  $cacheable = $info['cacheable'];
-  return array($id, $vid, $bundle, $cacheable);
-}
-
-/**
- * Helper function to extract id, vid, and bundle name from an object.
+ * Helper function to extract the bundle name of from a bundle object.
  *
  * @param $obj_type
  *   The type of $object; e.g. 'node' or 'user'.
@@ -706,42 +677,13 @@
 }
 
 /**
- * Helper function to assemble an object structure with initial ids.
- *
- * This function can be seen as reciprocal to field_extract_ids().
- *
- * @param $obj_type
- *   The type of $object; e.g. 'node' or 'user'.
- * @param $ids
- *   A numerically indexed array, as returned by field_extract_ids(),
- *   containing these elements:
- *   0: primary id of the object
- *   1: revision id of the object, or NULL if $obj_type is not versioned
- *   2: bundle name of the object
- * @return
- *   An $object structure, initialized with the ids provided.
- */
-function field_create_stub_entity($obj_type, $ids) {
-  $object = new stdClass();
-  $info = field_info_fieldable_types($obj_type);
-  $object->{$info['object keys']['id']} = $ids[0];
-  if (isset($info['object keys']['revision']) && !is_null($ids[1])) {
-    $object->{$info['object keys']['revision']} = $ids[1];
-  }
-  if ($info['object keys']['bundle']) {
-    $object->{$info['object keys']['bundle']} = $ids[2];
-  }
-  return $object;
-}
-
-/**
  * Theme preprocess function for field.tpl.php.
  *
  * @see field.tpl.php
  */
 function template_preprocess_field(&$variables) {
   $element = $variables['element'];
-  list(, , $bundle) = field_extract_ids($element['#object_type'], $element['#object']);
+  list(, , $bundle) = entity_extract_ids($element['#object_type'], $element['#object']);
   $instance = field_info_instance($element['#object_type'], $element['#field_name'], $bundle);
   $field = field_info_field($element['#field_name']);
 
Index: modules/field/field.form.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.form.inc,v
retrieving revision 1.29
diff -u -r1.29 field.form.inc
--- modules/field/field.form.inc	15 Oct 2009 12:44:34 -0000	1.29
+++ modules/field/field.form.inc	23 Oct 2009 23:13:38 -0000
@@ -13,7 +13,7 @@
   // This could be called with no object, as when a UI module creates a
   // dummy form to set default values.
   if ($object) {
-    list($id, , ) = field_extract_ids($obj_type, $object);
+    list($id, , ) = entity_extract_ids($obj_type, $object);
   }
   $addition = array();
 
Index: modules/image/image.field.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/image/image.field.inc,v
retrieving revision 1.2
diff -u -r1.2 image.field.inc
--- modules/image/image.field.inc	17 Oct 2009 02:14:52 -0000	1.2
+++ modules/image/image.field.inc	23 Oct 2009 23:13:40 -0000
@@ -477,7 +477,7 @@
  */
 function theme_field_formatter_image_link_content($variables) {
   $element = $variables['element'];
-  list($id, $vid, $bundle) = field_extract_ids($element['#object_type'], $element['#object']);
+  list($id, $vid, $bundle) = entity_extract_ids($element['#object_type'], $element['#object']);
   return l(theme('field_formatter_image', $variables), $element['#object_type'] . '/' . $id, array('html' => TRUE));
 }
 
Index: modules/locale/locale.field.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.field.inc,v
retrieving revision 1.1
diff -u -r1.1 locale.field.inc
--- modules/locale/locale.field.inc	16 Oct 2009 02:04:42 -0000	1.1
+++ modules/locale/locale.field.inc	23 Oct 2009 23:13:40 -0000
@@ -17,7 +17,7 @@
   $available_languages = field_multilingual_content_languages();
   // @todo: Unify language neutral language codes.
   $selected_language = empty($node->language) ? FIELD_LANGUAGE_NONE : $node->language;
-  list(, , $bundle) = field_extract_ids('node', $node);
+  list(, , $bundle) = entity_extract_ids('node', $node);
 
   foreach (field_info_instances('node', $bundle) as $instance) {
     $field_name = $instance['field_name'];
@@ -44,7 +44,7 @@
   // Lazily init fallback values and candidates to avoid unnecessary calls.
   $fallback_values = array();
   $fallback_candidates = NULL;
-  list(, , $bundle) = field_extract_ids($context['obj_type'], $context['object']);
+  list(, , $bundle) = entity_extract_ids($context['obj_type'], $context['object']);
 
   foreach (field_info_instances($context['obj_type'], $bundle) as $instance) {
     $field_name = $instance['field_name'];
Index: modules/file/file.field.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/file/file.field.inc,v
retrieving revision 1.7
diff -u -r1.7 file.field.inc
--- modules/file/file.field.inc	15 Oct 2009 12:44:36 -0000	1.7
+++ modules/file/file.field.inc	23 Oct 2009 23:13:40 -0000
@@ -267,7 +267,7 @@
   }
 
   // Delete items from original object.
-  list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
   $load_function = $obj_type . '_load';
 
   $original = $load_function($id);
@@ -287,7 +287,7 @@
  * Implement hook_field_delete().
  */
 function file_field_delete($obj_type, $object, $field, $instance, $langcode, &$items) {
-  list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
   foreach ($items as $delta => $item) {
     // For hook_file_references(), remember that this is being deleted.
     $item['file_field_name'] = $field['field_name'];
Index: modules/field/modules/field_sql_storage/field_sql_storage.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/field_sql_storage/field_sql_storage.module,v
retrieving revision 1.29
diff -u -r1.29 field_sql_storage.module
--- modules/field/modules/field_sql_storage/field_sql_storage.module	22 Oct 2009 00:49:12 -0000	1.29
+++ modules/field/modules/field_sql_storage/field_sql_storage.module	23 Oct 2009 23:13:40 -0000
@@ -344,7 +344,7 @@
  * Implement hook_field_storage_write().
  */
 function field_sql_storage_field_storage_write($obj_type, $object, $op, $fields) {
-  list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
   $etid = _field_sql_storage_etid($obj_type);
 
   foreach ($fields as $field_id) {
@@ -433,7 +433,7 @@
  * This function deletes data for all fields for an object from the database.
  */
 function field_sql_storage_field_storage_delete($obj_type, $object, $fields) {
-  list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
   $etid = _field_sql_storage_etid($obj_type);
 
   foreach (field_info_instances($obj_type, $bundle) as $instance) {
@@ -451,7 +451,7 @@
  * an object.
  */
 function field_sql_storage_field_storage_purge($obj_type, $object, $field, $instance) {
-  list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
   $etid = _field_sql_storage_etid($obj_type);
 
   $table_name = _field_sql_storage_tablename($field);
@@ -573,7 +573,7 @@
       $id = ($load_current || empty($entity_type['object keys']['revision'])) ? $row->entity_id : $row->revision_id;
 
       if (!isset($return[$row->type][$id])) {
-        $return[$row->type][$id] = field_create_stub_entity($row->type, array($row->entity_id, $row->revision_id, $row->bundle));
+        $return[$row->type][$id] = entity_create_stub_entity($row->type, array($row->entity_id, $row->revision_id, $row->bundle));
         $obj_count++;
       }
     }
@@ -594,7 +594,7 @@
  * This function actually deletes the data from the database.
  */
 function field_sql_storage_field_storage_delete_revision($obj_type, $object, $fields) {
-  list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
   $etid = _field_sql_storage_etid($obj_type);
 
   if (isset($vid)) {
Index: modules/simpletest/tests/field_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/field_test.module,v
retrieving revision 1.33
diff -u -r1.33 field_test.module
--- modules/simpletest/tests/field_test.module	16 Oct 2009 03:47:14 -0000	1.33
+++ modules/simpletest/tests/field_test.module	23 Oct 2009 23:13:41 -0000
@@ -817,7 +817,7 @@
 function field_test_field_storage_write($obj_type, $object, $op, $fields) {
   $data = _field_test_storage_data();
 
-  list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
 
   foreach ($fields as $field_id) {
     $field = field_info_field_by_id($field_id);
@@ -885,7 +885,7 @@
  * Implement hook_field_storage_delete().
  */
 function field_test_field_storage_delete($obj_type, $object, $fields) {
-  list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
 
   // Note: reusing field_test_storage_purge(), like field_sql_storage.module
   // does, is highly inefficient in our case...
@@ -903,7 +903,7 @@
 function field_test_field_storage_purge($obj_type, $object, $field, $instance) {
   $data = _field_test_storage_data();
 
-  list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
 
   $field_data = &$data[$field['id']];
   foreach (array('current', 'revisions') as $sub_table) {
@@ -923,7 +923,7 @@
 function field_test_field_storage_delete_revision($obj_type, $object, $fields) {
   $data = _field_test_storage_data();
 
-  list($id, $vid, $bundle) = field_extract_ids($obj_type, $object);
+  list($id, $vid, $bundle) = entity_extract_ids($obj_type, $object);
   foreach ($fields as $field_id) {
     $field_data = &$data[$field_id];
     foreach (array('current', 'revisions') as $sub_table) {
@@ -1023,7 +1023,7 @@
           $id = ($load_current || empty($entity_type['object keys']['revision'])) ? $row->entity_id : $row->revision_id;
 
           if (!isset($return[$row->type][$id])) {
-            $return[$row->type][$id] = field_create_stub_entity($row->type, array($row->entity_id, $row->revision_id, $row->bundle));
+            $return[$row->type][$id] = entity_create_stub_entity($row->type, array($row->entity_id, $row->revision_id, $row->bundle));
             $obj_count++;
           }
         }
@@ -1069,7 +1069,7 @@
   if ($field['storage']['type'] == 'field_test_storage_failure') {
     throw new Exception('field_test_storage_failure engine always fails to create fields');
   }
-    
+
   $data = _field_test_storage_data();
 
   $data[$field['id']] = array(
Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.1028
diff -u -r1.1028 common.inc
--- includes/common.inc	23 Oct 2009 00:55:59 -0000	1.1028
+++ includes/common.inc	23 Oct 2009 23:13:37 -0000
@@ -5959,6 +5959,63 @@
 }
 
 /**
+ * Helper function to extract id, vid, and bundle name from an entity.
+ *
+ * @param $entity_type
+ *   The entity type; e.g. 'node' or 'user'.
+ * @param $entity
+ *   The entity from which to extract values.
+ * @return
+ *   A numerically indexed array (not a hash table) containing these
+ *   elements:
+ *
+ *   0: primary id of the entity
+ *   1: revision id of the entity, or NULL if $entity_type is not versioned
+ *   2: bundle name of the entity
+ *   3: whether $entity_type's fields should be cached (TRUE/FALSE)
+ */
+function entity_extract_ids($entity_type, $entity) {
+  $info = entity_get_info($entity_type);
+  // Objects being created might not have id/vid yet.
+  $id = isset($entity->{$info['object keys']['id']}) ? $entity->{$info['object keys']['id']} : NULL;
+  $vid = ($info['object keys']['revision'] && isset($entity->{$info['object keys']['revision']})) ? $entity->{$info['object keys']['revision']} : NULL;
+  // If no bundle key provided, then we assume a single bundle, named after the
+  // entity type.
+  $bundle = $info['object keys']['bundle'] ? $entity->{$info['object keys']['bundle']} : $entity_type;
+  $cacheable = $info['cacheable'];
+  return array($id, $vid, $bundle, $cacheable);
+}
+
+/**
+ * Helper function to assemble an object structure with initial ids.
+ *
+ * This function can be seen as reciprocal to entity_extract_ids().
+ *
+ * @param $entity_type
+ *   The entity type; e.g. 'node' or 'user'.
+ * @param $ids
+ *   A numerically indexed array, as returned by entity_extract_ids(),
+ *   containing these elements:
+ *   0: primary id of the entity
+ *   1: revision id of the entity, or NULL if $entity_type is not versioned
+ *   2: bundle name of the entity
+ * @return
+ *   An entity structure, initialized with the ids provided.
+ */
+function entity_create_stub_entity($entity_type, $ids) {
+  $entity = new stdClass();
+  $info = entity_get_info($entity_type);
+  $object->{$info['object keys']['id']} = $ids[0];
+  if (isset($info['object keys']['revision']) && !is_null($ids[1])) {
+    $entity->{$info['object keys']['revision']} = $ids[1];
+  }
+  if ($info['object keys']['bundle']) {
+    $entity->{$info['object keys']['bundle']} = $ids[2];
+  }
+  return $entity;
+}
+
+/**
  * Load entities from the database.
  *
  * This function should be used whenever you need to load more than one entity
Index: modules/rdf/rdf.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/rdf/rdf.module,v
retrieving revision 1.4
diff -u -r1.4 rdf.module
--- modules/rdf/rdf.module	20 Oct 2009 19:54:15 -0000	1.4
+++ modules/rdf/rdf.module	23 Oct 2009 23:13:41 -0000
@@ -310,7 +310,7 @@
 function rdf_entity_load($entities, $type) {
   foreach ($entities as $entity) {
     // Extracts the bundle of the entity being loaded.
-    list($id, $vid, $bundle) = field_extract_ids($type, $entity);
+    list($id, $vid, $bundle) = entity_extract_ids($type, $entity);
     $entity->rdf_mapping = rdf_mapping_load($type, $bundle);
   }
 }
