// Path: RosettaCore/src/main/java/com/hubspot/rosetta/Rosetta.java
// public enum Rosetta {
//   INSTANCE;
// 
//   private static final List<Module> MODULES = new CopyOnWriteArrayList<Module>(defaultModules());
//   private static final AtomicReference<ObjectMapper> MAPPER = new AtomicReference<ObjectMapper>(cloneAndCustomize(new ObjectMapper()));
// 
//   public static ObjectMapper getMapper() {
//     return INSTANCE.get();
//   }
// 
//   /**
//    * @deprecated To customize the ObjectMapper, use {@link com.hubspot.rosetta.jdbi.RosettaObjectMapperOverride}.
//    */
//   @Deprecated
//   public static void addModule(Module module) {
//     INSTANCE.add(module);
//   }
// 
//   /**
//    * @deprecated To customize the ObjectMapper, use {@link com.hubspot.rosetta.jdbi.RosettaObjectMapperOverride}.
//    */
//   @Deprecated
//   public static void setMapper(ObjectMapper mapper) {
//     INSTANCE.set(mapper);
//   }
// 
//   public static ObjectMapper cloneAndCustomize(ObjectMapper mapper) {
//     mapper = mapper.copy();
// 
//     // ObjectMapper#registerModules doesn't exist in 2.1.x
//     for (Module module : MODULES) {
//       mapper.registerModule(module);
//     }
// 
//     return mapper;
//   }
// 
//   private ObjectMapper get() {
//     return MAPPER.get();
//   }
// 
//   private void set(ObjectMapper mapper) {
//     MAPPER.set(cloneAndCustomize(mapper));
//   }
// 
//   private void add(Module module) {
//     MODULES.add(module);
//     MAPPER.get().registerModule(module);
//   }
// 
//   private static List<Module> defaultModules() {
//     List<Module> defaultModules = new ArrayList<Module>();
//     defaultModules.add(new RosettaModule());
// 
//     for (Module module : ServiceLoader.load(AutoDiscoveredModule.class)) {
//       defaultModules.add(module);
//     }
// 
//     for (Module module : ServiceLoader.load(Module.class)) {
//       defaultModules.add(module);
//     }
// 
//     return defaultModules;
//   }
// }
// 
// Path: RosettaCore/src/test/java/com/hubspot/rosetta/beans/RosettaPropertyBean.java
// public class RosettaPropertyBean {
//   @RosettaProperty("mccartney_song_title")
//   private String mcCartneySongTitle;
// 
//   @RosettaProperty
//   @JsonIgnore
//   private String jsonIgnoreRosettaUse;
// 
//   public String getMcCartneySongTitle() {
//     return mcCartneySongTitle;
//   }
// 
//   public RosettaPropertyBean setMcCartneySongTitle(String mcCartneySongTitle) {
//     this.mcCartneySongTitle = mcCartneySongTitle;
//     return this;
//   }
// 
//   public String getJsonIgnoreRosettaUse() {
//     return jsonIgnoreRosettaUse;
//   }
// 
//   public RosettaPropertyBean setJsonIgnoreRosettaUse(String jsonIgnoreRosettaUse) {
//     this.jsonIgnoreRosettaUse = jsonIgnoreRosettaUse;
//     return this;
//   }
// }


import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hubspot.rosetta.Rosetta;
import com.hubspot.rosetta.beans.RosettaPropertyBean;
import org.junit.Test;
import java.io.IOException;
import static org.assertj.core.api.Assertions.assertThat;
package com.hubspot.rosetta.annotations;




public class RosettaPropertyTest {
  private static final String JSON = "{\"jsonIgnoreRosettaUse\":\"Here\",\"mccartney_song_title\":\"Hey Jude\"}";
  private static final String JACKSON_JSON = "{\"mcCartneySongTitle\":\"Hey Jude\"}";

  @Test
  public void itWritesWithThePropertyName() throws JsonProcessingException {
    RosettaPropertyBean bean = new RosettaPropertyBean();
    bean.setMcCartneySongTitle("Hey Jude");
    bean.setJsonIgnoreRosettaUse("Here");
    assertThat(Rosetta.getMapper().writeValueAsString(bean)).isEqualTo(JSON);
    assertThat(new ObjectMapper().writeValueAsString(bean)).isEqualTo(JACKSON_JSON);
  }

  @Test
  public void itReadsThePropertyName() throws IOException {
// Path: RosettaCore/src/main/java/com/hubspot/rosetta/Rosetta.java
// public enum Rosetta {
//   INSTANCE;
// 
//   private static final List<Module> MODULES = new CopyOnWriteArrayList<Module>(defaultModules());
//   private static final AtomicReference<ObjectMapper> MAPPER = new AtomicReference<ObjectMapper>(cloneAndCustomize(new ObjectMapper()));
// 
//   public static ObjectMapper getMapper() {
//     return INSTANCE.get();
//   }
// 
//   /**
//    * @deprecated To customize the ObjectMapper, use {@link com.hubspot.rosetta.jdbi.RosettaObjectMapperOverride}.
//    */
//   @Deprecated
//   public static void addModule(Module module) {
//     INSTANCE.add(module);
//   }
// 
//   /**
//    * @deprecated To customize the ObjectMapper, use {@link com.hubspot.rosetta.jdbi.RosettaObjectMapperOverride}.
//    */
//   @Deprecated
//   public static void setMapper(ObjectMapper mapper) {
//     INSTANCE.set(mapper);
//   }
// 
//   public static ObjectMapper cloneAndCustomize(ObjectMapper mapper) {
//     mapper = mapper.copy();
// 
//     // ObjectMapper#registerModules doesn't exist in 2.1.x
//     for (Module module : MODULES) {
//       mapper.registerModule(module);
//     }
// 
//     return mapper;
//   }
// 
//   private ObjectMapper get() {
//     return MAPPER.get();
//   }
// 
//   private void set(ObjectMapper mapper) {
//     MAPPER.set(cloneAndCustomize(mapper));
//   }
// 
//   private void add(Module module) {
//     MODULES.add(module);
//     MAPPER.get().registerModule(module);
//   }
// 
//   private static List<Module> defaultModules() {
//     List<Module> defaultModules = new ArrayList<Module>();
//     defaultModules.add(new RosettaModule());
// 
//     for (Module module : ServiceLoader.load(AutoDiscoveredModule.class)) {
//       defaultModules.add(module);
//     }
// 
//     for (Module module : ServiceLoader.load(Module.class)) {
//       defaultModules.add(module);
//     }
// 
//     return defaultModules;
//   }
// }
// 
// Path: RosettaCore/src/test/java/com/hubspot/rosetta/beans/RosettaPropertyBean.java
// public class RosettaPropertyBean {
//   @RosettaProperty("mccartney_song_title")
//   private String mcCartneySongTitle;
// 
//   @RosettaProperty
//   @JsonIgnore
//   private String jsonIgnoreRosettaUse;
// 
//   public String getMcCartneySongTitle() {
//     return mcCartneySongTitle;
//   }
// 
//   public RosettaPropertyBean setMcCartneySongTitle(String mcCartneySongTitle) {
//     this.mcCartneySongTitle = mcCartneySongTitle;
//     return this;
//   }
// 
//   public String getJsonIgnoreRosettaUse() {
//     return jsonIgnoreRosettaUse;
//   }
// 
//   public RosettaPropertyBean setJsonIgnoreRosettaUse(String jsonIgnoreRosettaUse) {
//     this.jsonIgnoreRosettaUse = jsonIgnoreRosettaUse;
//     return this;
//   }
// }


// Path: RosettaCore/src/test/java/com/hubspot/rosetta/annotations/RosettaPropertyTest.java
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hubspot.rosetta.Rosetta;
import com.hubspot.rosetta.beans.RosettaPropertyBean;
import org.junit.Test;
import java.io.IOException;
import static org.assertj.core.api.Assertions.assertThat;

package com.hubspot.rosetta.annotations;




public class RosettaPropertyTest {
  private static final String JSON = "{\"jsonIgnoreRosettaUse\":\"Here\",\"mccartney_song_title\":\"Hey Jude\"}";
  private static final String JACKSON_JSON = "{\"mcCartneySongTitle\":\"Hey Jude\"}";

  @Test
  public void itWritesWithThePropertyName() throws JsonProcessingException {
    RosettaPropertyBean bean = new RosettaPropertyBean();
    bean.setMcCartneySongTitle("Hey Jude");
    bean.setJsonIgnoreRosettaUse("Here");
    assertThat(Rosetta.getMapper().writeValueAsString(bean)).isEqualTo(JSON);
    assertThat(new ObjectMapper().writeValueAsString(bean)).isEqualTo(JACKSON_JSON);
  }

  @Test
  public void itReadsThePropertyName() throws IOException {
    RosettaPropertyBean rosettaRead = Rosetta.getMapper().readValue(JSON, RosettaPropertyBean.class);