/** * Tries to map all classes in the package specified. Fails if one of the classes is not valid for mapping. * * @param packageName the name of the package to process * @return the Morphia instance */ public synchronized Morphia mapPackage(final String packageName) { return mapPackage(packageName, false); }
/** * Maps all the classes found in the package to which the given class belongs. * * @param clazz the class to use when trying to find others to map * @return this */ public Morphia mapPackageFromClass(final Class clazz) { return mapPackage(clazz.getPackage().getName(), false); }
@Test public void testCanMapAPackageContainingAVersionedAbstractBaseClass() { Morphia morphia = getMorphia().mapPackage("xyz.morphia.entities.version"); Collection<MappedClass> mappedClasses = morphia.getMapper().getMappedClasses(); assertThat(mappedClasses.size(), is(2)); List<Class<?>> list = new ArrayList<Class<?>>(); for (MappedClass mappedClass : mappedClasses) { list.add(mappedClass.getClazz()); } assertTrue(list.contains(VersionedChildEntity.class)); assertTrue(list.contains(AbstractVersionedBase.class)); }
@Test public void shouldOnlyMapEntitiesInTheGivenPackage() { // when final Morphia morphia = new Morphia(); morphia.mapPackage("xyz.morphia.testmappackage"); // then Collection<MappedClass> mappedClasses = morphia.getMapper().getMappedClasses(); assertThat(mappedClasses.size(), is(1)); assertEquals(mappedClasses.iterator().next().getClazz(), SimpleEntity.class); }
@Test public void testSubPackagesMapping() { // when final Morphia morphia = new Morphia(); morphia.getMapper().getOptions().setMapSubPackages(true); morphia.mapPackage("xyz.morphia.testmappackage"); // then Collection<MappedClass> mappedClasses = morphia.getMapper().getMappedClasses(); assertThat(mappedClasses.size(), is(3)); Collection<Class<?>> classes = new ArrayList<Class<?>>(); for (MappedClass mappedClass : mappedClasses) { classes.add(mappedClass.getClazz()); } assertTrue(classes.contains(SimpleEntity.class)); assertTrue(classes.contains(SimpleEntityInSubPackage.class)); assertTrue(classes.contains(SimpleEntityInSubSubPackage.class)); }
@Test public void testVersionInHashcode() throws Exception { getMorphia().mapPackage("com.example"); final VersionInHashcode model = new VersionInHashcode(); model.data = "whatever"; getDs().save(model); Assert.assertNotNull(model.version); }
Assume.assumeTrue(new File(MONGO_IMPORT).exists()); installSampleData(); getMorphia().mapPackage(getClass().getPackage().getName()); AggregationPipeline pipeline = getDs().createAggregation(City.class)
private void morphify() { String packageName = this.config.getString(MORPHIA_PACKAGE, DEFAULT_MORPHIA_PACKAGE); String dbName = this.config.getString(MONGODB_DBNAME, DEFAULT_MONGODB_NAME); this.morphia = new Morphia().mapPackage(packageName); this.datastore = this.morphia.createDatastore(this.mongoClient, dbName); LOG.info("Mapped Morphia models of package '" + packageName + "' and created Morphia Datastore with database '" + dbName + "'"); }