Fixed [JACKSON-875], enum value handling wrong if USE_ANNOTATIONS disabled

diff --git a/release-notes/CREDITS b/release-notes/CREDITS
index c69cbcb..1187dd0 100644
--- a/release-notes/CREDITS
+++ b/release-notes/CREDITS
@@ -903,6 +903,9 @@
 Laurent Pireyn:
   * Reported [JACKSON-831] External type id, explicit property do not work well together
    [1.9.7]
+  * Reported [JACKSON-875]: Enums are not properly serialized when
+    Feature.USE_ANNOTATIONS is disabled
+   [1.9.12]
 
 Jan Jan:   
   * Reported [JACKSON-832] (partial) Fix numeric range check for Longs (was not working)
diff --git a/release-notes/VERSION b/release-notes/VERSION
index e921fe2..04d4733 100644
--- a/release-notes/VERSION
+++ b/release-notes/VERSION
@@ -8,12 +8,20 @@
 
 Fixes:
 
-* [Issue#8]: Problem with 'SmileGenerator', addSeenName()
+* [JACKSON-875]: Enums are not properly serialized when
+  Feature.USE_ANNOTATIONS is disabled
+ (reported by Laurent P)
 
 ------------------------------------------------------------------------
 === History: ===
 ------------------------------------------------------------------------
 
+1.9.11 (06-Nov-2012)
+
+Fixes:
+
+* [Issue#8]: Problem with 'SmileGenerator', addSeenName()
+
 1.9.10 (23-Sep-2012)
 
 Fixes:
diff --git a/src/mapper/java/org/codehaus/jackson/map/AnnotationIntrospector.java b/src/mapper/java/org/codehaus/jackson/map/AnnotationIntrospector.java
index 9c146de..a8856ba 100644
--- a/src/mapper/java/org/codehaus/jackson/map/AnnotationIntrospector.java
+++ b/src/mapper/java/org/codehaus/jackson/map/AnnotationIntrospector.java
@@ -637,10 +637,15 @@
      * Method for determining the String value to use for serializing
      * given enumeration entry; used when serializing enumerations
      * as Strings (the standard method).
+     *<p>
+     * NOTE: implemented since 1.9.11, to make things work even when
+     * annotation introspection is disabled.
      *
      * @return Serialized enum value.
      */
-    public abstract String findEnumValue(Enum<?> value);
+    public String findEnumValue(Enum<?> value) {
+        return value.name();
+    }
 
     /*
     /**********************************************************
diff --git a/src/mapper/java/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java b/src/mapper/java/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java
index 72012c1..883a61f 100644
--- a/src/mapper/java/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java
+++ b/src/mapper/java/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java
@@ -42,7 +42,8 @@
 
     @Override
     public String findEnumValue(Enum<?> value) {
-        return null;
+        // as per [JACKSON-875]
+        return value.name();
     }
     
     /*
diff --git a/src/test/org/codehaus/jackson/map/deser/TestConfig.java b/src/test/org/codehaus/jackson/map/deser/TestConfig.java
index e6ef9d5..346526f 100644
--- a/src/test/org/codehaus/jackson/map/deser/TestConfig.java
+++ b/src/test/org/codehaus/jackson/map/deser/TestConfig.java
@@ -22,6 +22,8 @@
         @JsonProperty("y")
             public void setX(int v) { value = v; }
     }
+
+    enum Alpha { A, B, C; }
     
     /*
     /**********************************************************
@@ -115,4 +117,16 @@
         mapper.getDeserializerProvider().flushCachedDeserializers();
         assertEquals(0, mapper.getDeserializerProvider().cachedDeserializersCount());
     }
+
+    // [JACKSON-875]
+    public void testEnumsWhenDisabled() throws Exception
+    {
+        ObjectMapper m = new ObjectMapper();
+        assertEquals(Alpha.B, m.readValue(quote("B"), Alpha.class));
+
+        m = new ObjectMapper();
+        m.configure(DeserializationConfig.Feature.USE_ANNOTATIONS, false);
+        // should still use the basic name handling here
+        assertEquals(Alpha.B, m.readValue(quote("B"), Alpha.class));
+    }
 }