KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > j2ee > persistence > spi > entitymanagergenerator > ApplicationManagedResourceTransactionNonInjectableInWeb


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19 package org.netbeans.modules.j2ee.persistence.spi.entitymanagergenerator;
20
21 import org.netbeans.modules.j2ee.persistence.spi.entitymanagergenerator.EntityManagerGenerationStrategySupport;
22 import com.sun.source.tree.AnnotationTree;
23 import com.sun.source.tree.ClassTree;
24 import com.sun.source.tree.ExpressionTree;
25 import com.sun.source.tree.MethodTree;
26 import com.sun.source.tree.ModifiersTree;
27 import com.sun.source.tree.TypeParameterTree;
28 import java.util.Collections JavaDoc;
29 import javax.lang.model.element.Modifier;
30 import javax.lang.model.type.TypeKind;
31 import org.netbeans.api.java.source.TreeMaker;
32 import org.netbeans.api.java.source.WorkingCopy;
33 import org.netbeans.modules.j2ee.persistence.action.GenerationOptions.*;
34 import org.netbeans.modules.j2ee.persistence.dd.persistence.model_1_0.PersistenceUnit;
35
36 /**
37  * Generates the code needed for invoking an <code>EntityManager</code> in J2EE 1.4
38  * web components with an application-managed persistence unit.
39  *
40  * @author Erno Mononen
41  */

42 public final class ApplicationManagedResourceTransactionNonInjectableInWeb extends EntityManagerGenerationStrategySupport {
43     
44     
45     public ClassTree generate(){
46         
47         ClassTree modifiedClazz = null;
48         
49         ModifiersTree methodModifiers = getTreeMaker().Modifiers(
50                 Collections.<Modifier>singleton(Modifier.PUBLIC),
51                 Collections.<AnnotationTree>emptyList()
52                 );
53         
54         modifiedClazz = getTreeMaker().insertClassMember(getClassTree(), getIndexForField(getClassTree()), createEntityManagerFactory());
55
56         String JavaDoc text =
57             "javax.persistence.EntityManager em = emf.createEntityManager();\n" +
58             "try {\n" +
59             " em.getTransaction().begin();\n" +
60             generateCallLines() +
61             " em.getTransaction().commit();\n" +
62             "} catch(Exception e) {\n" +
63             " java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.SEVERE,\"exception caught\", e);\n" +
64             " em.getTransaction().rollback();\n" +
65             "} finally {\n" +
66             " em.close();\n" +
67             "}";
68         
69         MethodTree newMethod = getTreeMaker().Method(
70                 methodModifiers,
71                 computeMethodName(),
72                 getTreeMaker().PrimitiveType(TypeKind.VOID),
73                 Collections.<TypeParameterTree>emptyList(),
74                 getParameterList(),
75                 Collections.<ExpressionTree>emptyList(),
76                 "{ " + text + "}",
77                 null
78                 );
79         
80         return getTreeMaker().addClassMember(modifiedClazz, newMethod);
81         
82     }
83     
84 }
Popular Tags