diff --git a/.gitignore b/.gitignore index aee5425d5..c9dca952c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +.DS_Store +*.iml +*.ipr target .springBeans .ant-targets-build.xml diff --git a/spring-data-couchdb/pom.xml b/spring-data-couchdb/pom.xml index 6914e22c0..742d9f65a 100644 --- a/spring-data-couchdb/pom.xml +++ b/spring-data-couchdb/pom.xml @@ -1,161 +1,166 @@ - 4.0.0 - - org.springframework.data - spring-data-document-parent - 1.0.0.BUILD-SNAPSHOT - ../spring-data-document-parent/pom.xml - - spring-data-couchdb - jar - Spring Data CouchDB Support - - - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - - - - tareq.abedrabbo - Tareq Abedrabbo - tareq.abedrabbo@opencredo.com - OpenCredo - http://www.opencredo.org - - Project Admin - Developer - - +0 - - - tomas.lukosius - Tomas Lukosius - tomas.lukosius@opencredo.com - OpenCredo - http://www.opencredo.org - - Project Admin - Developer - - +0 - - - - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + 4.0.0 + + org.springframework.data + spring-data-document-parent + 1.0.0.BUILD-SNAPSHOT + ../spring-data-document-parent/pom.xml + + spring-data-couchdb + jar + Spring Data CouchDB Support - - - org.springframework - spring-beans - - - org.springframework - spring-tx - - - - org.springframework - spring-test - test - + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + - - - org.springframework.data - spring-data-document-core - + + + tareq.abedrabbo + Tareq Abedrabbo + tareq.abedrabbo@opencredo.com + OpenCredo + http://www.opencredo.org + + Project Admin + Developer + + +0 + + + tomas.lukosius + Tomas Lukosius + tomas.lukosius@opencredo.com + OpenCredo + http://www.opencredo.org + + Project Admin + Developer + + +0 + + - - - org.codehaus.jackson - jackson-core-asl - 1.6.1 - - - org.codehaus.jackson - jackson-mapper-asl - 1.6.1 - + - - - org.slf4j - slf4j-api - - - org.slf4j - jcl-over-slf4j - compile - - - org.slf4j - slf4j-log4j12 - runtime - - - log4j - log4j - - - javax.mail - mail - - - javax.jms - jms - - - com.sun.jdmk - jmxtools - - - com.sun.jmx - jmxri - - - runtime - - - - javax.annotation - jsr250-api - true - + + + org.springframework + spring-beans + + + org.springframework + spring-tx + - - org.mockito - mockito-all - test - + + org.springframework + spring-test + test + - - junit - junit - test - - - - org.hamcrest - hamcrest-all - 1.1 - test - + + + org.codehaus.jackson + jackson-core-asl + 1.6.1 + + + org.codehaus.jackson + jackson-mapper-asl + 1.6.1 + + + + + org.slf4j + slf4j-api + + + org.slf4j + jcl-over-slf4j + compile + + + org.slf4j + slf4j-log4j12 + runtime + + + log4j + log4j + + + javax.mail + mail + + + javax.jms + jms + + + com.sun.jdmk + jmxtools + + + com.sun.jmx + jmxri + + + runtime + + + + javax.annotation + jsr250-api + true + + + + junit + junit + test + + + + org.hamcrest + hamcrest-all + 1.1 + test + + + + org.mockito + mockito-all + test + + + + junit + junit + + + + + com.google.code.jcouchdb + jcouchdb + 0.11.0-1 + + + + + + + + com.springsource.bundlor + com.springsource.bundlor.maven + + + - - diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/SimpleMongoConverterTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/SimpleMongoConverterTests.java index 1dd63e7f9..60f4e7db1 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/SimpleMongoConverterTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/SimpleMongoConverterTests.java @@ -1,351 +1,350 @@ -/* - * Copyright 2010-2011 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.data.document.mongodb; - -import static org.hamcrest.Matchers.*; -import static org.junit.Assert.*; - -import java.lang.reflect.Field; -import java.math.BigInteger; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.junit.Before; -import org.junit.Test; -import org.springframework.data.document.mongodb.SomeEnumTest.NumberEnum; -import org.springframework.data.document.mongodb.SomeEnumTest.StringEnum; -import org.springframework.data.document.mongodb.convert.SimpleMongoConverter; -import org.springframework.util.ReflectionUtils; - -import com.mongodb.BasicDBObject; -import com.mongodb.DBObject; -import com.mongodb.util.JSON; - -public class SimpleMongoConverterTests { - - static final String SIMPLE_JSON = "{ \"map\" : { \"foo\" : 3 , \"bar\" : 4}, \"number\" : 15 }"; - static final String COMPLEX_JSON = "{ \"map\" : { \"trade\" : { \"orderType\" : \"BUY\" , \"price\" : 90.5 , \"quantity\" : 0 , \"ticker\" : \"VMW\"}}}"; - - SimpleMongoConverter converter; - DBObject object; - - @Before - public void setUp() { - converter = new SimpleMongoConverter(); - object = new BasicDBObject(); - } - - @Test - public void notNestedObject() { - User user = new User(); - user.setAccountName("My Account"); - user.setUserName("Mark"); - converter.write(user, object); - assertEquals("My Account", object.get("accountName")); - assertEquals("Mark", object.get("userName")); - - User u = converter.read(User.class, object); - - assertEquals("My Account", u.getAccountName()); - assertEquals("Mark", u.getUserName()); - } - - @Test - public void nestedObject() { - Portfolio p = createPortfolioWithNoTrades(); - converter.write(p, object); - - assertEquals("High Risk Trading Account", object.get("portfolioName")); - assertTrue(object.containsField("user")); - - Portfolio cp = converter.read(Portfolio.class, object); - - assertEquals("High Risk Trading Account", cp.getPortfolioName()); - assertEquals("Joe Trader", cp.getUser().getUserName()); - assertEquals("ACCT-123", cp.getUser().getAccountName()); - - } - - @Test - public void objectWithMap() { - Portfolio p = createPortfolioWithPositions(); - converter.write(p, object); - - Portfolio cp = converter.read(Portfolio.class, object); - assertEquals("High Risk Trading Account", cp.getPortfolioName()); - } - - @Test - public void objectWithMapContainingNonPrimitiveTypeAsValue() { - Portfolio p = createPortfolioWithManagers(); - converter.write(p, object); - - Portfolio cp = converter.read(Portfolio.class, object); - assertEquals("High Risk Trading Account", cp.getPortfolioName()); - } - - protected Portfolio createPortfolioWithPositions() { - - Portfolio portfolio = new Portfolio(); - portfolio.setPortfolioName("High Risk Trading Account"); - Map positions = new HashMap(); - positions.put("CSCO", 1); - portfolio.setPositions(positions); - return portfolio; - } - - protected Portfolio createPortfolioWithManagers() { - - Portfolio portfolio = new Portfolio(); - portfolio.setPortfolioName("High Risk Trading Account"); - Map managers = new HashMap(); - Person p1 = new Person(); - p1.setFirstName("Mark"); - managers.put("CSCO", p1); - portfolio.setPortfolioManagers(managers); - return portfolio; - } - - protected Portfolio createPortfolioWithNoTrades() { - Portfolio portfolio = new Portfolio(); - User user = new User(); - user.setUserName("Joe Trader"); - user.setAccountName("ACCT-123"); - portfolio.setUser(user); - portfolio.setPortfolioName("High Risk Trading Account"); - return portfolio; - } - - @Test - public void objectWithArrayContainingNonPrimitiveType() { - TradeBatch b = createTradeBatch(); - converter.write(b, object); - - TradeBatch b2 = converter.read(TradeBatch.class, object); - assertEquals(b.getBatchId(), b2.getBatchId()); - assertNotNull(b2.getTradeList()); - assertEquals(b.getTradeList().size(), b2.getTradeList().size()); - assertEquals(b.getTradeList().get(1).getTicker(), b2.getTradeList().get(1).getTicker()); - assertEquals(b.getTrades().length, b2.getTrades().length); - assertEquals(b.getTrades()[1].getTicker(), b2.getTrades()[1].getTicker()); - } - - private TradeBatch createTradeBatch() { - TradeBatch tb = new TradeBatch(); - tb.setBatchId("123456"); - Trade t1 = new Trade(); - t1.setOrderType("BUY"); - t1.setTicker("AAPL"); - t1.setQuantity(1000); - t1.setPrice(320.77D); - Trade t2 = new Trade(); - t2.setOrderType("SELL"); - t2.setTicker("MSFT"); - t2.setQuantity(100); - t2.setPrice(27.92D); - tb.setTrades(new Trade[] { t2, t1 }); - tb.setTradeList(Arrays.asList(new Trade[] { t1, t2 })); - return tb; - } - - @Test - public void objectWithEnumTypes() { - SomeEnumTest test = new SomeEnumTest(); - test.setId("123AAA"); - test.setName("Sven"); - test.setStringEnum(StringEnum.ONE); - test.setNumberEnum(NumberEnum.FIVE); - DBObject dbo = new BasicDBObject(); - converter.write(test, dbo); - - SomeEnumTest results = converter.read(SomeEnumTest.class, dbo); - assertNotNull(results); - assertEquals(test.getId(), results.getId()); - assertEquals(test.getName(), results.getName()); - assertEquals(test.getStringEnum(), results.getStringEnum()); - assertEquals(test.getNumberEnum(), results.getNumberEnum()); - } - - @Test - public void serializesClassWithFinalObjectIdCorrectly() throws Exception { - - BasicDBObject object = new BasicDBObject(); - Person person = new Person("Oliver"); - converter.write(person, object); - - assertThat(object.get("class"), is(nullValue())); - assertThat(object.get("_id"), is((Object) person.getId())); - } - - @Test - public void discoversGenericsForType() throws Exception { - - Field field = ReflectionUtils.findField(Sample.class, "map"); - assertListOfStringAndLong(converter.getGenericParameters(field.getGenericType())); - } - - @Test - public void writesSimpleMapCorrectly() throws Exception { - - Map map = new HashMap(); - map.put("foo", 1L); - map.put("bar", 2L); - - Sample sample = new Sample(); - sample.setMap(map); - sample.setNumber(15L); - - converter.write(sample, object); - - assertThat(object.get("number"), is((Object) 15L)); - - Object result = object.get("map"); - assertTrue(result instanceof Map); - - @SuppressWarnings("unchecked") - Map mapResult = (Map) result; - assertThat(mapResult.size(), is(2)); - assertThat(mapResult.get("foo"), is(1L)); - assertThat(mapResult.get("bar"), is(2L)); - } - - @Test - public void writesComplexMapCorrectly() throws Exception { - - Trade trade = new Trade(); - trade.setOrderType("BUY"); - trade.setTicker("VMW"); - trade.setPrice(90.50d); - - Map map = new HashMap(); - map.put("trade", trade); - - converter.write(new Sample2(map), object); - DBObject tradeDbObject = new BasicDBObject(); - converter.write(trade, tradeDbObject); - - Object result = object.get("map"); - assertTrue(result instanceof Map); - - @SuppressWarnings("unchecked") - Map mapResult = (Map) result; - assertThat(mapResult.size(), is(1)); - assertThat(mapResult.get("trade"), is(tradeDbObject)); - } - - @Test - public void readsMapWithSetterCorrectly() throws Exception { - - DBObject input = (DBObject) JSON.parse(SIMPLE_JSON); - Sample result = converter.read(Sample.class, input); - assertThat(result.getNumber(), is(15L)); - - Map map = result.getMap(); - assertThat(map, is(notNullValue())); - assertThat(map.size(), is(2)); - assertThat(map.get("foo"), is(3L)); - assertThat(map.get("bar"), is(4L)); - } - - @Test - public void readsMapWithFieldOnlyCorrectly() throws Exception { - - DBObject input = (DBObject) JSON.parse(COMPLEX_JSON); - Sample2 result = converter.read(Sample2.class, input); - - Map map = result.getMap(); - - Trade trade = new Trade(); - trade.setOrderType("BUY"); - trade.setTicker("VMW"); - trade.setPrice(90.50d); - - assertThat(map.size(), is(1)); - assertThat(map.get("trade").getTicker(), is("VMW")); - assertThat(map.get("trade").getOrderType(), is("BUY")); - assertThat(map.get("trade").getPrice(), is(90.50d)); - } - - @Test - public void supportsBigIntegerAsIdProperty() throws Exception { - - Sample3 sample3 = new Sample3(); - sample3.id = new BigInteger("4d24809660413b687f5d323e", 16); - converter.write(sample3, object); - assertThat(object.get("_id"), is(notNullValue())); - - Sample3 result = converter.read(Sample3.class, - (DBObject) JSON.parse("{\"_id\" : {\"$oid\" : \"4d24809660413b687f5d323e\" }}")); - assertThat(result.getId().toString(16), is("4d24809660413b687f5d323e")); - } - - private void assertListOfStringAndLong(List> types) { - - assertThat(types.size(), is(2)); - assertEquals(String.class, types.get(0)); - assertEquals(Long.class, types.get(1)); - } - - public static class Sample { - - private Map map; - private Long number; - - public void setMap(Map map) { - this.map = map; - } - - public Map getMap() { - return map; - } - - public void setNumber(Long number) { - this.number = number; - } - - public Long getNumber() { - return number; - } - } - - public static class Sample2 { - - private final Map map; - - protected Sample2() { - this.map = null; - } - - public Sample2(Map map) { - this.map = map; - } - - public Map getMap() { - return map; - } - } - - private static class Sample3 { - - private BigInteger id; - - public BigInteger getId() { - return id; - } - } -} +/* + * Copyright 2010-2011 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.document.mongodb; + +import com.mongodb.BasicDBObject; +import com.mongodb.DBObject; +import com.mongodb.util.JSON; +import org.junit.Before; +import org.junit.Test; +import org.springframework.data.document.mongodb.SomeEnumTest.NumberEnum; +import org.springframework.data.document.mongodb.SomeEnumTest.StringEnum; +import org.springframework.data.document.mongodb.convert.SimpleMongoConverter; +import org.springframework.util.ReflectionUtils; + +import java.lang.reflect.Field; +import java.math.BigInteger; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.*; + +public class SimpleMongoConverterTests { + + static final String SIMPLE_JSON = "{ \"map\" : { \"foo\" : 3 , \"bar\" : 4}, \"number\" : 15 }"; + static final String COMPLEX_JSON = "{ \"map\" : { \"trade\" : { \"orderType\" : \"BUY\" , \"price\" : 90.5 , \"quantity\" : 0 , \"ticker\" : \"VMW\"}}}"; + + SimpleMongoConverter converter; + DBObject object; + + @Before + public void setUp() { + converter = new SimpleMongoConverter(); + object = new BasicDBObject(); + } + + @Test + public void notNestedObject() { + User user = new User(); + user.setAccountName("My Account"); + user.setUserName("Mark"); + converter.write(user, object); + assertEquals("My Account", object.get("accountName")); + assertEquals("Mark", object.get("userName")); + + User u = converter.read(User.class, object); + + assertEquals("My Account", u.getAccountName()); + assertEquals("Mark", u.getUserName()); + } + + @Test + public void nestedObject() { + Portfolio p = createPortfolioWithNoTrades(); + converter.write(p, object); + + assertEquals("High Risk Trading Account", object.get("portfolioName")); + assertTrue(object.containsField("user")); + + Portfolio cp = converter.read(Portfolio.class, object); + + assertEquals("High Risk Trading Account", cp.getPortfolioName()); + assertEquals("Joe Trader", cp.getUser().getUserName()); + assertEquals("ACCT-123", cp.getUser().getAccountName()); + + } + + @Test + public void objectWithMap() { + Portfolio p = createPortfolioWithPositions(); + converter.write(p, object); + + Portfolio cp = converter.read(Portfolio.class, object); + assertEquals("High Risk Trading Account", cp.getPortfolioName()); + } + + @Test + public void objectWithMapContainingNonPrimitiveTypeAsValue() { + Portfolio p = createPortfolioWithManagers(); + converter.write(p, object); + + Portfolio cp = converter.read(Portfolio.class, object); + assertEquals("High Risk Trading Account", cp.getPortfolioName()); + } + + protected Portfolio createPortfolioWithPositions() { + + Portfolio portfolio = new Portfolio(); + portfolio.setPortfolioName("High Risk Trading Account"); + Map positions = new HashMap(); + positions.put("CSCO", 1); + portfolio.setPositions(positions); + return portfolio; + } + + protected Portfolio createPortfolioWithManagers() { + + Portfolio portfolio = new Portfolio(); + portfolio.setPortfolioName("High Risk Trading Account"); + Map managers = new HashMap(); + Person p1 = new Person(); + p1.setFirstName("Mark"); + managers.put("CSCO", p1); + portfolio.setPortfolioManagers(managers); + return portfolio; + } + + protected Portfolio createPortfolioWithNoTrades() { + Portfolio portfolio = new Portfolio(); + User user = new User(); + user.setUserName("Joe Trader"); + user.setAccountName("ACCT-123"); + portfolio.setUser(user); + portfolio.setPortfolioName("High Risk Trading Account"); + return portfolio; + } + + @Test + public void objectWithArrayContainingNonPrimitiveType() { + TradeBatch b = createTradeBatch(); + converter.write(b, object); + + TradeBatch b2 = converter.read(TradeBatch.class, object); + assertEquals(b.getBatchId(), b2.getBatchId()); + assertNotNull(b2.getTradeList()); + assertEquals(b.getTradeList().size(), b2.getTradeList().size()); + assertEquals(b.getTradeList().get(1).getTicker(), b2.getTradeList().get(1).getTicker()); + assertEquals(b.getTrades().length, b2.getTrades().length); + assertEquals(b.getTrades()[1].getTicker(), b2.getTrades()[1].getTicker()); + } + + private TradeBatch createTradeBatch() { + TradeBatch tb = new TradeBatch(); + tb.setBatchId("123456"); + Trade t1 = new Trade(); + t1.setOrderType("BUY"); + t1.setTicker("AAPL"); + t1.setQuantity(1000); + t1.setPrice(320.77D); + Trade t2 = new Trade(); + t2.setOrderType("SELL"); + t2.setTicker("MSFT"); + t2.setQuantity(100); + t2.setPrice(27.92D); + tb.setTrades(new Trade[]{t2, t1}); + tb.setTradeList(Arrays.asList(new Trade[]{t1, t2})); + return tb; + } + + @Test + public void objectWithEnumTypes() { + SomeEnumTest test = new SomeEnumTest(); + test.setId("123AAA"); + test.setName("Sven"); + test.setStringEnum(StringEnum.ONE); + test.setNumberEnum(NumberEnum.FIVE); + DBObject dbo = new BasicDBObject(); + converter.write(test, dbo); + + SomeEnumTest results = converter.read(SomeEnumTest.class, dbo); + assertNotNull(results); + assertEquals(test.getId(), results.getId()); + assertEquals(test.getName(), results.getName()); + assertEquals(test.getStringEnum(), results.getStringEnum()); + assertEquals(test.getNumberEnum(), results.getNumberEnum()); + } + + @Test + public void serializesClassWithFinalObjectIdCorrectly() throws Exception { + + BasicDBObject object = new BasicDBObject(); + Person person = new Person("Oliver"); + converter.write(person, object); + + assertThat(object.get("class"), is(nullValue())); + assertThat(object.get("_id"), is((Object) person.getId())); + } + + @Test + public void discoversGenericsForType() throws Exception { + + Field field = ReflectionUtils.findField(Sample.class, "map"); + assertListOfStringAndLong(converter.getGenericParameters(field.getGenericType())); + } + + @Test + public void writesSimpleMapCorrectly() throws Exception { + + Map map = new HashMap(); + map.put("foo", 1L); + map.put("bar", 2L); + + Sample sample = new Sample(); + sample.setMap(map); + sample.setNumber(15L); + + converter.write(sample, object); + + assertThat(object.get("number"), is((Object) 15L)); + + Object result = object.get("map"); + assertTrue(result instanceof Map); + + @SuppressWarnings("unchecked") + Map mapResult = (Map) result; + assertThat(mapResult.size(), is(2)); + assertThat(mapResult.get("foo"), is(1L)); + assertThat(mapResult.get("bar"), is(2L)); + } + + @Test + public void writesComplexMapCorrectly() throws Exception { + + Trade trade = new Trade(); + trade.setOrderType("BUY"); + trade.setTicker("VMW"); + trade.setPrice(90.50d); + + Map map = new HashMap(); + map.put("trade", trade); + + converter.write(new Sample2(map), object); + DBObject tradeDbObject = new BasicDBObject(); + converter.write(trade, tradeDbObject); + + Object result = object.get("map"); + assertTrue(result instanceof Map); + + @SuppressWarnings("unchecked") + Map mapResult = (Map) result; + assertThat(mapResult.size(), is(1)); + assertThat(mapResult.get("trade"), is(tradeDbObject)); + } + + @Test + public void readsMapWithSetterCorrectly() throws Exception { + + DBObject input = (DBObject) JSON.parse(SIMPLE_JSON); + Sample result = converter.read(Sample.class, input); + assertThat(result.getNumber(), is(15L)); + + Map map = result.getMap(); + assertThat(map, is(notNullValue())); + assertThat(map.size(), is(2)); + assertThat(map.get("foo"), is(3L)); + assertThat(map.get("bar"), is(4L)); + } + + @Test + public void readsMapWithFieldOnlyCorrectly() throws Exception { + + DBObject input = (DBObject) JSON.parse(COMPLEX_JSON); + Sample2 result = converter.read(Sample2.class, input); + + Map map = result.getMap(); + + Trade trade = new Trade(); + trade.setOrderType("BUY"); + trade.setTicker("VMW"); + trade.setPrice(90.50d); + + assertThat(map.size(), is(1)); + assertThat(map.get("trade").getTicker(), is("VMW")); + assertThat(map.get("trade").getOrderType(), is("BUY")); + assertThat(map.get("trade").getPrice(), is(90.50d)); + } + + @Test + public void supportsBigIntegerAsIdProperty() throws Exception { + + Sample3 sample3 = new Sample3(); + sample3.id = new BigInteger("4d24809660413b687f5d323e", 16); + converter.write(sample3, object); + assertThat(object.get("_id"), is(notNullValue())); + + Sample3 result = converter.read(Sample3.class, + (DBObject) JSON.parse("{\"_id\" : {\"$oid\" : \"4d24809660413b687f5d323e\" }}")); + assertThat(result.getId().toString(16), is("4d24809660413b687f5d323e")); + } + + private void assertListOfStringAndLong(List> types) { + + assertThat(types.size(), is(2)); + assertEquals(String.class, types.get(0)); + assertEquals(Long.class, types.get(1)); + } + + public static class Sample { + + private Map map; + private Long number; + + public void setMap(Map map) { + this.map = map; + } + + public Map getMap() { + return map; + } + + public void setNumber(Long number) { + this.number = number; + } + + public Long getNumber() { + return number; + } + } + + public static class Sample2 { + + private final Map map; + + protected Sample2() { + this.map = null; + } + + public Sample2(Map map) { + this.map = map; + } + + public Map getMap() { + return map; + } + } + + private static class Sample3 { + + private BigInteger id; + + public BigInteger getId() { + return id; + } + } +}