Skip to content

Commit c9dc722

Browse files
committed
perf
1 parent a9e6c82 commit c9dc722

5 files changed

Lines changed: 35 additions & 9 deletions

File tree

src/main/java/com/github/adminfaces/addon/scaffold/AdminFacesScaffoldProvider.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,40 @@ public List<Resource<?>> setup(ScaffoldSetupContext setupContext) {
119119
AdminScaffoldUtils.setupAdminPersistence(project,dependencyUtil, facetFactory);
120120
createScaffoldConfig(project);
121121
addAppListCache(project);
122+
setupPersistenceXml(project);
122123
return Collections.emptyList();
123124
}
124125

125-
/**
126+
private void setupPersistenceXml(Project project) {
127+
DirectoryResource resourceDirectory = project.getFacet(ResourcesFacet.class).getResourceDirectory();
128+
FileResource<?> persistenceXMLFile = resourceDirectory.getChildDirectory("META-INF").getChild("persistence.xml").reify(FileResource.class);
129+
Node node = XMLParser.parse(persistenceXMLFile.getResourceInputStream());
130+
Node persistenceUnitNode = node.getSingle("persistence-unit");
131+
String provider = persistenceUnitNode.getSingle("provider").getText();
132+
//if hibernate 4 or great then remove flush_before_completion property
133+
if("org.hibernate.jpa.HibernatePersistenceProvider".equals(provider)) {
134+
Node propertiesNode = persistenceUnitNode.getSingle("properties");
135+
Optional<Node> flushProperty = propertiesNode.getChildren().stream()
136+
.filter(p -> p.getAttribute("name").equals("hibernate.transaction.flush_before_completion"))
137+
.findFirst();
138+
139+
if(flushProperty.isPresent()) {
140+
persistenceUnitNode.removeChild("properties");
141+
Node newPropertiesNode = persistenceUnitNode.createChild("properties");
142+
propertiesNode.getChildren().stream()
143+
.filter(p -> !p.getAttribute("name").equals("hibernate.transaction.flush_before_completion"))
144+
.forEach(c -> newPropertiesNode.createChild("property")
145+
.attribute("name", c.getAttribute("name"))
146+
.attribute("value", c.getAttribute("value")));
147+
persistenceXMLFile.setContents(XMLParser.toXMLInputStream(node));
148+
}
149+
150+
}
151+
152+
153+
}
154+
155+
/**
126156
* Just adds global scaffold config file to the project
127157
*
128158
* @param project

src/main/java/com/github/adminfaces/addon/util/AdminScaffoldUtils.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package com.github.adminfaces.addon.util;
22

3-
import com.github.adminfaces.addon.scaffold.metamodel.AdminFacesMetaModelProvider;
4-
import com.github.adminfaces.addon.scaffold.model.ScaffoldEntity;
5-
63
import static com.github.adminfaces.addon.util.DependencyUtil.ADMIN_PERSISTENCE_COORDINATE;
74

85
import java.io.File;
@@ -15,13 +12,12 @@
1512
import java.util.Optional;
1613
import java.util.logging.Level;
1714
import java.util.logging.Logger;
15+
1816
import javax.persistence.Basic;
1917
import javax.persistence.Column;
20-
import javax.persistence.Embeddable;
2118
import javax.persistence.Embedded;
2219
import javax.persistence.EmbeddedId;
2320
import javax.persistence.Id;
24-
2521
import javax.persistence.ManyToMany;
2622
import javax.persistence.ManyToOne;
2723
import javax.persistence.OneToMany;
@@ -35,7 +31,6 @@
3531
import org.jboss.forge.addon.dependencies.builder.CoordinateBuilder;
3632
import org.jboss.forge.addon.dependencies.builder.DependencyBuilder;
3733
import org.jboss.forge.addon.facets.FacetFactory;
38-
import org.jboss.forge.addon.javaee.cdi.CDIFacet;
3934
import org.jboss.forge.addon.javaee.jpa.PersistenceMetaModelFacet;
4035
import org.jboss.forge.addon.maven.projects.MavenFacet;
4136
import org.jboss.forge.addon.parser.java.facets.JavaSourceFacet;
@@ -47,7 +42,6 @@
4742
import org.jboss.forge.addon.resource.DirectoryResource;
4843
import org.jboss.forge.addon.resource.FileResource;
4944
import org.jboss.forge.addon.resource.Resource;
50-
5145
import org.jboss.forge.addon.scaffold.util.ScaffoldUtil;
5246
import org.jboss.forge.parser.xml.Node;
5347
import org.jboss.forge.parser.xml.XMLParser;
@@ -58,6 +52,8 @@
5852
import org.jboss.forge.roaster.model.source.JavaClassSource;
5953
import org.jboss.forge.roaster.model.source.JavaSource;
6054

55+
import com.github.adminfaces.addon.scaffold.metamodel.AdminFacesMetaModelProvider;
56+
6157
/**
6258
* Created by pestano on 20/09/15.
6359
*/

src/test/java/com/github/adminfaces/addon/AdminFacesForgeTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public void setup() throws IllegalArgumentException, NoSuchFieldException, NoSuc
125125

126126
@Test
127127
public void shouldSetupAdminFaces() throws Exception {
128-
shellTest.execute("jpa-setup --provider Hibernate --container JBOSS_EAP7 --db-type H2 --data-source-name java:jboss/datasources/ExampleDS", 30, TimeUnit.SECONDS);
128+
shellTest.execute("jpa-setup --jpa-provider \"Hibernate 4.x\" --container WILDFLY --db-type H2 --data-source-name java:jboss/datasources/ExampleDS", 30, TimeUnit.SECONDS);
129129
shellTest.clearScreen();
130130
Result result = shellTest.execute("adminfaces-setup", 60, TimeUnit.SECONDS);
131131

-1 Bytes
Binary file not shown.
-17 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)