Fix [JACKSON-834]; add unit test for [JACKSON-831]

diff --git a/src/mapper/java/org/codehaus/jackson/map/deser/impl/ExternalTypeHandler.java b/src/mapper/java/org/codehaus/jackson/map/deser/impl/ExternalTypeHandler.java
index 5a51510..38b7df1 100644
--- a/src/mapper/java/org/codehaus/jackson/map/deser/impl/ExternalTypeHandler.java
+++ b/src/mapper/java/org/codehaus/jackson/map/deser/impl/ExternalTypeHandler.java
@@ -95,7 +95,7 @@
                     continue;
                 }
                 // but not just one
-                throw ctxt.mappingException("Missing external type id property '"+_properties[i].getTypePropertyName());
+                throw ctxt.mappingException("Missing external type id property '"+_properties[i].getTypePropertyName()+"'");
             } else if (_tokens[i] == null) {
                 SettableBeanProperty prop = _properties[i].getProperty();
                 throw ctxt.mappingException("Missing property '"+prop.getName()+"' for external type id '"+_properties[i].getTypePropertyName());
diff --git a/src/mapper/java/org/codehaus/jackson/map/deser/std/EnumDeserializer.java b/src/mapper/java/org/codehaus/jackson/map/deser/std/EnumDeserializer.java
index 0625ed5..fdd6226 100644
--- a/src/mapper/java/org/codehaus/jackson/map/deser/std/EnumDeserializer.java
+++ b/src/mapper/java/org/codehaus/jackson/map/deser/std/EnumDeserializer.java
@@ -38,8 +38,6 @@
      * 
      * @return Deserializer based on given factory method, if type was suitable;
      *  null if type can not be used
-     * 
-     * @since 1.6
      */
     public static JsonDeserializer<?> deserializerForCreator(DeserializationConfig config,
             Class<?> enumClass, AnnotatedMethod factory)
diff --git a/src/test/org/codehaus/jackson/map/jsontype/TestExternalId.java b/src/test/org/codehaus/jackson/map/jsontype/TestExternalId.java
index 411bce3..efbefa7 100644
--- a/src/test/org/codehaus/jackson/map/jsontype/TestExternalId.java
+++ b/src/test/org/codehaus/jackson/map/jsontype/TestExternalId.java
@@ -2,6 +2,7 @@
 
 import org.codehaus.jackson.annotate.JsonCreator;
 import org.codehaus.jackson.annotate.JsonProperty;
+import org.codehaus.jackson.annotate.JsonSubTypes;
 import org.codehaus.jackson.annotate.JsonTypeInfo;
 import org.codehaus.jackson.annotate.JsonTypeInfo.As;
 import org.codehaus.jackson.annotate.JsonTypeInfo.Id;
@@ -80,6 +81,30 @@
         public int i = 3;
     }
     
+    // [JACKSON-831]
+    
+    interface Pet {}
+
+    static class Dog implements Pet {
+        public String name;
+    }
+
+    static class House831 {
+        private String petType;
+
+        @JsonTypeInfo(use = Id.NAME, include = As.EXTERNAL_PROPERTY, property = "petType")
+        @JsonSubTypes({@JsonSubTypes.Type(name = "dog", value = Dog.class)})
+        public Pet pet;
+
+        public String getPetType() {
+            return petType;
+        }
+
+        public void setPetType(String petType) {
+            this.petType = petType;
+        }
+    }    
+
     /*
     /**********************************************************
     /* Unit tests, serialization
@@ -168,4 +193,16 @@
         assertNotNull(result);
         assertEquals(3, result.i);
     }
+
+    // There seems to be some problems if type is also visible...
+    public void testIssue831() throws Exception
+    {
+        final String JSON = "{ \"petType\": \"dog\",\n"
+                +"\"pet\": { \"name\": \"Pluto\" }\n}";
+        ObjectMapper mapper = new ObjectMapper();
+        House831 result = mapper.readValue(JSON, House831.class);
+        assertNotNull(result);
+        assertNotNull(result.pet);
+        assertSame(Dog.class, result.pet.getClass());
+    }
 }