diff --git a/impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/internal/producer/Persistences.java b/impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/internal/producer/Persistences.java
new file mode 100644
index 0000000..249b67f
--- /dev/null
+++ b/impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/internal/producer/Persistences.java
@@ -0,0 +1,99 @@
+/*
+ * Demoiselle Framework
+ * Copyright (C) 2010 SERPRO
+ * ----------------------------------------------------------------------------
+ * This file is part of Demoiselle Framework.
+ *
+ * Demoiselle Framework is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License version 3
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License version 3
+ * along with this program; if not, see
+ * or write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301, USA.
+ * ----------------------------------------------------------------------------
+ * Este arquivo é parte do Framework Demoiselle.
+ *
+ * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
+ * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
+ * do Software Livre (FSF).
+ *
+ * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
+ * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
+ * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
+ * para maiores detalhes.
+ *
+ * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
+ * "LICENCA.txt", junto com esse programa. Se não, acesse
+ * ou escreva para a Fundação do Software Livre (FSF) Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
+package br.gov.frameworkdemoiselle.internal.producer;
+
+import java.util.Set;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.slf4j.Logger;
+
+import br.gov.frameworkdemoiselle.DemoiselleException;
+import br.gov.frameworkdemoiselle.annotation.Name;
+import br.gov.frameworkdemoiselle.configuration.Configuration;
+import br.gov.frameworkdemoiselle.internal.configuration.EntityManagerConfig;
+import br.gov.frameworkdemoiselle.util.ResourceBundle;
+
+@Singleton
+public class Persistences {
+
+ @Inject
+ protected Logger logger;
+
+ @Inject
+ @Name("demoiselle-jpa-bundle")
+ protected ResourceBundle bundle;
+
+ @Inject
+ private EntityManagerFactoryProducer factory;
+
+ /**
+ * Tries to get persistence unit name from demoiselle.properties.
+ *
+ * @param config
+ * Configuration containing persistence unit name.
+ * @return Persistence unit name.
+ */
+ protected String getFromProperties(EntityManagerConfig config) {
+ String persistenceUnit = config.getDefaultPersistenceUnitName();
+
+ if (persistenceUnit != null) {
+ this.logger.debug(bundle.getString("getting-persistence-unit-from-properties",
+ Configuration.DEFAULT_RESOURCE));
+ }
+
+ return persistenceUnit;
+ }
+
+ /**
+ * Uses persistence.xml to get informations about which persistence unit to use. Throws DemoiselleException if more
+ * than one Persistence Unit is defined.
+ *
+ * @return Persistence Unit AmbiguousQualifier
+ */
+ protected String getFromXML() {
+ Set persistenceUnits = factory.getCache().keySet();
+
+ if (persistenceUnits.size() > 1) {
+ throw new DemoiselleException(bundle.getString("more-than-one-persistence-unit-defined",
+ Name.class.getSimpleName()));
+ } else {
+ return persistenceUnits.iterator().next();
+ }
+ }
+}
--
libgit2 0.21.2