From e7682c9d3d98d6a780e7926abb22e7a14ac11555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20SIMARD?= Date: Tue, 22 Nov 2011 01:00:41 +0100 Subject: [PATCH] neo4j plugin works on little test. I have to see how to optimize transaction with setter --- .classpath | 2 +- .project | 1 - app/play/module/neo4j/Import.java | 11 ---- app/play/module/neo4j/Neo4jController.java | 14 +++++ build.xml | 1 + eclipse/Connect JPDA to neo4j.launch | 3 + eclipse/Test neo4j.launch | 21 ------- eclipse/classes/play.plugins | 2 +- .../classes/play/module/neo4j/Import.class | Bin 405 -> 0 bytes .../play/modules/neo4j/Neo4jPlugin.class | Bin 1775 -> 2167 bytes eclipse/neo4j.launch | 20 ------ lib/play-neo4j.jar | Bin 13559 -> 14306 bytes .../relationship/EntityRelationType.java | 10 --- src/play.plugins | 2 +- src/play/modules/neo4j/Neo4jPlugin.java | 21 ++++++- .../neo4j/annotation/Neo4jFactory.java | 8 +-- src/play/modules/neo4j/model/Neo4jModel.java | 39 +++++++++--- .../neo4j/model/Neo4jModelEnhancer.java | 57 ++++++++++++++---- .../neo4j/util/AbstractNeo4jFactory.java | 53 ++++++++++------ 19 files changed, 157 insertions(+), 108 deletions(-) delete mode 100644 app/play/module/neo4j/Import.java create mode 100644 app/play/module/neo4j/Neo4jController.java delete mode 100644 eclipse/Test neo4j.launch delete mode 100644 eclipse/classes/play/module/neo4j/Import.class delete mode 100644 eclipse/neo4j.launch delete mode 100644 src/models/relationship/EntityRelationType.java diff --git a/.classpath b/.classpath index 7479109..997944d 100644 --- a/.classpath +++ b/.classpath @@ -1,7 +1,7 @@ - + diff --git a/.project b/.project index e14c445..1371838 100644 --- a/.project +++ b/.project @@ -15,5 +15,4 @@ org.eclipse.jdt.core.javanature org.playframework.playclipse.playNature - diff --git a/app/play/module/neo4j/Import.java b/app/play/module/neo4j/Import.java deleted file mode 100644 index 80e7c6a..0000000 --- a/app/play/module/neo4j/Import.java +++ /dev/null @@ -1,11 +0,0 @@ -package play.module.neo4j; - -import play.mvc.Controller; - -public class Import extends Controller { - - public static void execute(String fileName) { - - } - -} diff --git a/app/play/module/neo4j/Neo4jController.java b/app/play/module/neo4j/Neo4jController.java new file mode 100644 index 0000000..d5f9020 --- /dev/null +++ b/app/play/module/neo4j/Neo4jController.java @@ -0,0 +1,14 @@ +package play.module.neo4j; + +import play.mvc.Controller; + +public class Neo4jController extends Controller { + + public static void importYml(String fileName) { + + } + + public static void deleteAll() { + } + +} diff --git a/build.xml b/build.xml index 7a9574a..4e3dfc0 100644 --- a/build.xml +++ b/build.xml @@ -8,6 +8,7 @@ + diff --git a/eclipse/Connect JPDA to neo4j.launch b/eclipse/Connect JPDA to neo4j.launch index b8af484..544780e 100644 --- a/eclipse/Connect JPDA to neo4j.launch +++ b/eclipse/Connect JPDA to neo4j.launch @@ -6,10 +6,13 @@ + + + diff --git a/eclipse/Test neo4j.launch b/eclipse/Test neo4j.launch deleted file mode 100644 index 910868b..0000000 --- a/eclipse/Test neo4j.launch +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/eclipse/classes/play.plugins b/eclipse/classes/play.plugins index 897d75a..a118e3f 100644 --- a/eclipse/classes/play.plugins +++ b/eclipse/classes/play.plugins @@ -1 +1 @@ -399:play.modules.neo4j.Neo4jPlugin \ No newline at end of file +1000:play.modules.neo4j.Neo4jPlugin \ No newline at end of file diff --git a/eclipse/classes/play/module/neo4j/Import.class b/eclipse/classes/play/module/neo4j/Import.class deleted file mode 100644 index f5c21834458e4359bd8ecf0ae27eb25b72e1a289..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmZ`#%SyvQ6g@Xhn-_`3B@P03grk*_FCw$^(kPKDd$kmI*~+>ifKTXes_RsYY+g8P zjBkPgl?j9H7>K6a`$p(6rq>cRGO)Dx{9|+zj)M7 zgyZDD6^4XBJ*%`VxW(ZhS<1B(M&=7KDV)w1!)ki_K^rxeSv}F4bbT3Lkx3*F6JN{3w+vDX&D2O!D{$8Z1(rdux}uA|K(p7) zbk)7iq)bjVT{Y83=mT`yWp~vBGNQFJd(PSC<@fy0bI$&>{;Cna{r>O?zyQ(*!h6;w zfT2@_6I~4T8AXlnWtGfwESHtFXQ^3D+hy>&^_R@edBXZ<=3*ZG2eb2D5k0z@i?;ML z)a^v}Bfdl=rTT);x0G}?uBA*E)L(IZ)&W=qs&!4ob@b|AxZV61CQKM-u%r`_7rsRr zL`-6eflq3(!cY@Bb2#V8;R2Vh`@1iNPo<(VS{Vi1KHGD`qSZ-Zzyh#{1&Qw3f-5v8aDH zxZ0PnV!|?mtyDd^zvWvh7RZQrfUw@q&x8c5;*kk!47HV3Eag(!cv2CujtvGuRkCFZ zLxbBB`Y+IL!ea)<>l*vKvtPg_o{BJn&Sw=-5nGT+0d4T&(KNWvfmUJ}B_jJhVFr_$ ziKJtJC`0M&beSJv3H=Q}%BL8d`di+q|KaVdO1B%kS-n1I?8t9`qpJWkOE$wt)D}=z zK=W6K1$5A&fXfHuG(e!Sk%UnoENFoZt&q@$CfIR_tl}wzW-EQU=rw>fk?{(uXf%;w zvRuh3xz8$f=Zko*gs-L)pp)=U!nn?1tz|63RrFG{kK%Zu_LaB+vT$S(PcX1{j3Mt4 zhAUK|G*Cr60aq{gWp_=7O$oa>XWw()_xC*K%>MHJbP3;nfA|a_jwgGHK^coMv z_`$_oQ8)!e5f^a*5yNZQ?j$hB;|hbbzN5ZWRw;;>$5jSvRWE4_-j#kMl%>kN6W5XC zvB2Oy+7YqXduK_d*Bw}5m{3clO06t6^j1^bm7nSjd1)~(XZ7N?oYxv{ts&r;g0zU6 z7-6uLv_h-wz%4>#(rXUfCIuyF&Z<k7=OVE-Ja6MnlAX zao7pL~9ZGk{hf|a5lPK>~V0G-DMu)YKAY4bjlh!;HMcd&3E;F3ap zfp8DanP@jj05YK`2ooH@y83RX5TV=Cbk9ocbEfYURXD1M9}(SrkJ$7(oc~7^%-$r1 zI7}I@cz - - - - - - - - - - - - - - - - - - - diff --git a/lib/play-neo4j.jar b/lib/play-neo4j.jar index 632d1f8f9a6ea1b3e18b010d2e611439797b63e7..fbb0bfc763323b520e24a287dceb43cac1ac2693 100644 GIT binary patch delta 10114 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�Xm&K<=qqSd3;?|JEO3B7$qV zFNd{zFN2G6O#QPghRh!+rKwFz3>F}RnnoC;=$GXnoDg+c$vVkg1b(Vq#w_$E(`^3m z4%jT+I=PlnUv)Gr)x(GV1s0!`S*F(tlh%YQCZhDl*Wk#@Qnz@L)wA=I%E=^xOJ}Ml zZ7z`i28uEJ(~r6dVOzkguhz9>S#tCwQ${)bT7yosF~RJhL_BaGCA@oa;urk&n`>{j zlN_1#(y8IACZ4@4YOt09Q*i$Ks%u-EJx7D*j5eV(d$^Jy>nT{Cy<7&Ia_dX>BYB#a z-n3oZce|MGM=n?TGBimX7lG;c>g@T)T@(v4^h6x*9Sz@lJ=I?#Os1g(;C6&55$1LfNo${LG;7ahDeL7^WnXn?nsY+)OA<;`|UKv=~! z&*>NLR)~pPuNSyAEd|t%RuY(XRLfnAlpdHxWsIUHlIr>4KeC_Dc!_CWa4lvP9= zNDk-Uy{qITg&Rixqb@)JK<+uw|1{t~*Y&@z?1BHNg9G(nU~GsY7x5pkWViMZ@o(Vt z@525Ma248r!0*t}{=X6b(^5z;7bzSz#vced5Eb&m^*1YxlA9E+9rHhG6K>`|ZvJt* z{SPS}!07$)^#1^Jtz)bJ delta 9492 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 CT 0 || Modifier.isStatic(ctMethod.getModifiers())) { - throw new NotFoundException("it's not a getter !"); - } + ctClass.removeMethod(ctMethod); + throw new NotFoundException("it's not a true getter !"); } catch (NotFoundException noGetter) { + // Créé le getter + Logger.debug("Adding getter " + getter + " for class " + entityName); String code = "public " + ctField.getType().getName() + " " + getter + "() { return (" + ctField.getType().getName() + ")this.underlyingNode.getProperty(\"" - + ctField.getName() + "\");}"; + + ctField.getName() + "\", null);}"; CtMethod getMethod = CtMethod.make(code, ctClass); ctClass.addMethod(getMethod); } @@ -81,16 +85,25 @@ public void enhanceThisClass(ApplicationClass applicationClass) throws Exception CtMethod ctMethod = ctClass.getDeclaredMethod(setter); if (ctMethod.getParameterTypes().length != 1 || !ctMethod.getParameterTypes()[0].equals(ctField.getType()) - || Modifier.isStatic(ctMethod.getModifiers())) { - throw new NotFoundException("it's not a setter !"); + || Modifier.isStatic(ctMethod.getModifiers()) + || hasPlayPropertiesAccessorAnnotation(ctMethod)) { + if (hasPlayPropertiesAccessorAnnotation(ctMethod)) { + ctClass.removeMethod(ctMethod); + } + throw new NotFoundException("it's not a true setter !"); } } catch (NotFoundException noSetter) { // Créé le setter - CtMethod setMethod = CtMethod.make("public void " + setter + "(" + ctField.getType().getName() - + " value) { this.underlyingNode.setPrpoerty(" + ctField.getName() + ", value); }", - ctClass); + Logger.debug("Adding setter " + getter + " for class " + entityName); + CtMethod setMethod = CtMethod + .make("public void " + + setter + + "(" + + ctField.getType().getName() + + " value) { org.neo4j.graphdb.Transaction tx = play.modules.neo4j.util.Neo4j.db().beginTx();try {this.underlyingNode.setProperty(\"" + + ctField.getName() + "\", value);tx.success(); } finally {tx.finish();}}", + ctClass); ctClass.addMethod(setMethod); - createAnnotation(getAnnotations(setMethod), PlayPropertyAccessor.class); } } } catch (Exception e) { @@ -98,6 +111,9 @@ public void enhanceThisClass(ApplicationClass applicationClass) throws Exception throw new UnexpectedException("Error in PropertiesEnhancer", e); } } + // Done. + applicationClass.enhancedByteCode = ctClass.toBytecode(); + ctClass.defrost(); } @@ -113,4 +129,21 @@ private boolean isProperty(CtField ctField) { && !Modifier.isStatic(ctField.getModifiers()); } + /** + * Is this method get PlayPropertiesAccessor annotation ? + */ + private boolean hasPlayPropertiesAccessorAnnotation(CtMethod ctMethod) { + for (Object object : ctMethod.getAvailableAnnotations()) { + Annotation ann = (Annotation) object; + Logger.debug("Annotation method is " + ann.annotationType().getName()); + if (ann.annotationType().getName() + .equals("play.classloading.enhancers.PropertiesEnhancer$PlayPropertyAccessor")) { + Logger.debug("Method " + ctMethod.getName() + " has be enhanced by propertiesEnhancer"); + return true; + } + } + Logger.debug("Method " + ctMethod.getName() + " has not be enhance by propertiesEnhancer"); + return false; + } + } diff --git a/src/play/modules/neo4j/util/AbstractNeo4jFactory.java b/src/play/modules/neo4j/util/AbstractNeo4jFactory.java index d4e5409..6450561 100644 --- a/src/play/modules/neo4j/util/AbstractNeo4jFactory.java +++ b/src/play/modules/neo4j/util/AbstractNeo4jFactory.java @@ -1,12 +1,13 @@ package play.modules.neo4j.util; -import models.relationship.EntityRelationType; +import java.util.Arrays; import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.NotFoundException; import org.neo4j.graphdb.Relationship; +import org.neo4j.graphdb.RelationshipType; import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.index.Index; @@ -22,22 +23,35 @@ public abstract class AbstractNeo4jFactory { /** * Reference node for all user. */ - private static Node referenceNode; + private static Node referenceNode; - private static EntityRelationType root2ref; - private static EntityRelationType ref2node; + private static RelationshipType root2ref; + private static RelationshipType ref2node; - public final static String NODE_KEY_COUNTER = "KEY_COUNTER"; + public final static String NODE_KEY_COUNTER = "KEY_COUNTER"; /** * Constructor of the User Factory. */ public AbstractNeo4jFactory() { GraphDatabaseService graphDb = Neo4j.db(); + Neo4jFactory annotation = this.getClass().getAnnotation(Neo4jFactory.class); - if (annotation != null && annotation.root2ref() != null && annotation.ref2node() != null) { - this.root2ref = annotation.root2ref(); - this.ref2node = annotation.ref2node(); + if (annotation != null && annotation.root2ref() != null && annotation.ref2node() != null + && annotation.clazz() != null) { + + String root2refStr = annotation.root2ref(); + String ref2nodeStr = annotation.ref2node(); + Class entityRelationclazz = annotation.clazz(); + + for (Object obj : Arrays.asList(entityRelationclazz.getEnumConstants())) { + if (obj.toString().equals(root2refStr)) { + this.root2ref = (RelationshipType) obj; + } + if (obj.toString().equals(ref2nodeStr)) { + this.ref2node = (RelationshipType) obj; + } + } } else { throw new Neo4jException( @@ -51,7 +65,7 @@ public AbstractNeo4jFactory() { Transaction tx = graphDb.beginTx(); try { Node node = graphDb.createNode(); - node.setProperty(NODE_KEY_COUNTER, 1); + node.setProperty(NODE_KEY_COUNTER, new Long(1)); graphDb.getReferenceNode().createRelationshipTo(node, this.root2ref); tx.success(); } finally { @@ -70,7 +84,7 @@ public AbstractNeo4jFactory() { * * @return */ - private synchronized long getNextId() { + private synchronized Long getNextId() { Long counter = null; try { counter = (Long) referenceNode.getProperty(NODE_KEY_COUNTER); @@ -78,8 +92,14 @@ private synchronized long getNextId() { // Create a new counter counter = 0L; } - referenceNode.setProperty(NODE_KEY_COUNTER, new Long(counter + 1)); - Logger.debug("New ID for factory " + this.getClass().getSimpleName() + " is " + counter); + Transaction tx = Neo4j.db().beginTx(); + try { + referenceNode.setProperty(NODE_KEY_COUNTER, new Long(counter + 1)); + Logger.debug("New ID for factory " + this.getClass().getSimpleName() + " is " + counter); + tx.success(); + } finally { + tx.finish(); + } return counter; } @@ -93,13 +113,12 @@ private synchronized long getNextId() { * @throws IllegalArgumentException */ public Neo4jModel saveAndIndex(Neo4jModel nodeWrapper) throws Neo4jReflectionException { - // if there is already an id, don't generate it - if (nodeWrapper.getId() == null) { - nodeWrapper.setId(getNextId()); - } - Transaction tx = Neo4j.db().beginTx(); try { + // if there is already an id, don't generate it + if (nodeWrapper.getKey() == null) { + nodeWrapper.setKey(getNextId()); + } // create the reference 2 node relationship referenceNode.createRelationshipTo(nodeWrapper.getNode(), this.ref2node);