add tests for JavaBeans
diff --git a/src/main/java/org/yaml/snakeyaml/representer/Representer.java b/src/main/java/org/yaml/snakeyaml/representer/Representer.java
index 4d2a68a..cf32873 100644
--- a/src/main/java/org/yaml/snakeyaml/representer/Representer.java
+++ b/src/main/java/org/yaml/snakeyaml/representer/Representer.java
@@ -127,10 +127,10 @@
                     && !property.getReadMethod().getName().equals("getClass")) {
                 properties.add(new MethodProperty(property));
             }
+        // add public fields
         for (Field field : type.getFields()) {
             int modifiers = field.getModifiers();
-            if (!Modifier.isPublic(modifiers) || Modifier.isStatic(modifiers)
-                    || Modifier.isTransient(modifiers))
+            if (Modifier.isStatic(modifiers) || Modifier.isTransient(modifiers))
                 continue;
             properties.add(new FieldProperty(field));
         }
diff --git a/src/test/java/org/yaml/snakeyaml/constructor/ConstructorTest.java b/src/test/java/org/yaml/snakeyaml/constructor/ConstructorTest.java
index 9ee76be..32ae6d6 100644
--- a/src/test/java/org/yaml/snakeyaml/constructor/ConstructorTest.java
+++ b/src/test/java/org/yaml/snakeyaml/constructor/ConstructorTest.java
@@ -82,6 +82,17 @@
                 construct("--- !!org.yaml.snakeyaml.constructor.TestBean\nname: Ola Bini\nage: 24\nborn: 1982-05-03\n"));

     }

 

+    public void testWrongName() {

+        try {

+            construct("--- !!org.yaml.snakeyaml.constructor.TestBean\nwrongName: No one\nage: 24\nborn: 1982-05-03\n");

+            fail("IntrospectionException expected.");

+        } catch (Exception e) {

+            assertEquals(

+                    "null; Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.constructor.TestBean; exception=org.yaml.snakeyaml.error.YAMLException: Unable to find property 'wrongName' on class: org.yaml.snakeyaml.constructor.TestBean",

+                    e.getMessage());

+        }

+    }

+

     private Object construct(String data) {

         Yaml yaml = new Yaml();

         return yaml.load(data);

diff --git a/src/test/java/org/yaml/snakeyaml/representer/RepresentFieldTest.java b/src/test/java/org/yaml/snakeyaml/representer/RepresentFieldTest.java
new file mode 100644
index 0000000..80d0b3d
--- /dev/null
+++ b/src/test/java/org/yaml/snakeyaml/representer/RepresentFieldTest.java
@@ -0,0 +1,50 @@
+/*

+ * See LICENSE file in distribution for copyright and licensing information.

+ */

+package org.yaml.snakeyaml.representer;

+

+import junit.framework.TestCase;

+

+import org.yaml.snakeyaml.Yaml;

+

+public class RepresentFieldTest extends TestCase {

+

+    public void testRepresent1() {

+        Yaml yaml = new Yaml();

+        WrongJavaBean bean = new WrongJavaBean();

+        bean.packageField = "Value";// the field is present

+        bean.publicField = "Michael Jackson";

+        WrongJavaBean.staticField = "Another value";

+        String output = yaml.dump(bean);

+        assertEquals(

+                "!!org.yaml.snakeyaml.representer.WrongJavaBean {publicField: Michael Jackson}\n",

+                output);

+    }

+

+    public void testWrongNotPublicField() {

+        Yaml yaml = new Yaml();

+        WrongJavaBean bean = new WrongJavaBean();

+        bean.packageField = "Value";// the field is present

+        try {

+            yaml.load("!!org.yaml.snakeyaml.representer.WrongJavaBean {packageField: Gnome}\n");

+            fail("Only public fields can be used.");

+        } catch (Exception e) {

+            assertEquals(

+                    "null; Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.representer.WrongJavaBean; exception=org.yaml.snakeyaml.error.YAMLException: Unable to find property 'packageField' on class: org.yaml.snakeyaml.representer.WrongJavaBean",

+                    e.getMessage());

+        }

+    }

+

+    public void testStaticField() {

+        Yaml yaml = new Yaml();

+        WrongJavaBean.staticField = "Value";// the field is present

+        try {

+            yaml.load("!!org.yaml.snakeyaml.representer.WrongJavaBean {staticField: Gnome}\n");

+            fail("Static fields cannot be used.");

+        } catch (Exception e) {

+            assertEquals(

+                    "null; Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.representer.WrongJavaBean; exception=org.yaml.snakeyaml.error.YAMLException: Unable to find property 'staticField' on class: org.yaml.snakeyaml.representer.WrongJavaBean",

+                    e.getMessage());

+        }

+    }

+}

diff --git a/src/test/java/org/yaml/snakeyaml/representer/WrongJavaBean.java b/src/test/java/org/yaml/snakeyaml/representer/WrongJavaBean.java
new file mode 100644
index 0000000..b80a009
--- /dev/null
+++ b/src/test/java/org/yaml/snakeyaml/representer/WrongJavaBean.java
@@ -0,0 +1,20 @@
+/*
+ * See LICENSE file in distribution for copyright and licensing information.
+ */
+package org.yaml.snakeyaml.representer;
+
+public class WrongJavaBean {
+    String packageField;
+    static String staticField;
+    public transient String dynamo;
+    public String publicField;
+    private int privateValue;
+
+    public WrongJavaBean() {
+        method();
+    }
+
+    private void method() {
+        privateValue++;
+    }
+}