You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(233) |
Sep
(199) |
Oct
(206) |
Nov
(185) |
Dec
(270) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(232) |
Feb
(426) |
Mar
(623) |
Apr
(592) |
May
(506) |
Jun
(389) |
Jul
(160) |
Aug
(3) |
Sep
(1) |
Oct
(1) |
Nov
(2) |
Dec
(5) |
2007 |
Jan
(1) |
Feb
(1) |
Mar
(2) |
Apr
(2) |
May
(4) |
Jun
(2) |
Jul
|
Aug
(3) |
Sep
(5) |
Oct
(9) |
Nov
(6) |
Dec
(6) |
2008 |
Jan
(3) |
Feb
|
Mar
(1) |
Apr
(3) |
May
(3) |
Jun
(5) |
Jul
(10) |
Aug
(2) |
Sep
(12) |
Oct
(10) |
Nov
(54) |
Dec
(49) |
2009 |
Jan
(19) |
Feb
(13) |
Mar
(20) |
Apr
(24) |
May
(44) |
Jun
(29) |
Jul
(32) |
Aug
(10) |
Sep
(7) |
Oct
(10) |
Nov
(4) |
Dec
(17) |
2010 |
Jan
(14) |
Feb
(5) |
Mar
(23) |
Apr
(50) |
May
(31) |
Jun
(9) |
Jul
(5) |
Aug
(4) |
Sep
(7) |
Oct
(5) |
Nov
(2) |
Dec
(3) |
2011 |
Jan
(12) |
Feb
(5) |
Mar
(5) |
Apr
(3) |
May
(4) |
Jun
(3) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2012 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2015 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <jbo...@li...> - 2006-01-11 03:19:28
|
Author: mar...@jb... Date: 2006-01-10 22:19:25 -0500 (Tue, 10 Jan 2006) New Revision: 2062 Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java Log: Mannes -Fixed incorrect javadoc formatting Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java 2006-01-11 03:13:45 UTC (rev 2061) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java 2006-01-11 03:19:25 UTC (rev 2062) @@ -127,7 +127,7 @@ ruleSet.addRule( getPathDone() ); ruleSet.addRule( getAreWeDone() ); ruleSet.addRule( getContinueProcessing() ); - // ruleSet.addRule( getAllDone() ); + ruleSet.addRule( getAllDone() ); final RuleBaseImpl ruleBase = new RuleBaseImpl(); ruleBase.addRuleSet( ruleSet ); @@ -690,12 +690,19 @@ /** * - * rule pathDone() { Context context; Seating seating; when { context : - * Context( state == Context.MAKE_PATH ) seating : Seating( pathDone == - * false ) } then { seating.setPathDone( true ); context.setName( - * Context.CHECK_DONE ); } } + * <pre> + * rule pathDone() { + * Context context; Seating seating; + * when { + * context : Context( state == Context.MAKE_PATH ) + * seating : Seating( pathDone == false ) + * } then { + * seating.setPathDone( true ); + * context.setName( Context.CHECK_DONE ); + * } + * } + * </pre> * - * * @return * @throws IntrospectionException * @throws InvalidRuleException @@ -773,13 +780,19 @@ } /** + * <pre> + * rule areWeDone() { + * Context context; LastSeat lastSear; + * when { + * context : Context( state == Context.CHECK_DONE ) + * LastSeat( lastSeat: seat ) + * Seating( rightSeat == lastSeat ) + * } then { + * context.setState(Context.PRINT_RESULTS ); + * } + * } + * </pre> * - * rule areWeDone() { Context context; LastSeat lastSear; when { context : - * Context( state == Context.CHECK_DONE ) LastSeat( lastSeat: seat ) - * Seating( rightSeat == lastSeat ) } then { context.setState( - * Context.PRINT_RESULTS ); } } - * - * * @return * @throws IntrospectionException * @throws InvalidRuleException @@ -861,10 +874,16 @@ } /** - * - * rule continue() { Context context; when { context : Context( state == - * Context.CHECK_DONE ) } then { context.setState( Context.ASSIGN_SEATS ); } } - * + * <pre> + * rule continue() { + * Context context; + * when { + * context : Context( state == Context.CHECK_DONE ) + * } then { + * context.setState( Context.ASSIGN_SEATS ); + * } + * } + * </pre> * @return * @throws IntrospectionException * @throws InvalidRuleException |
From: <jbo...@li...> - 2006-01-11 03:13:53
|
Author: mar...@jb... Date: 2006-01-10 22:13:45 -0500 (Tue, 10 Jan 2006) New Revision: 2061 Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/Chosen.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java Log: -Few fixes to manners Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/Chosen.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/Chosen.java 2006-01-11 00:33:23 UTC (rev 2060) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/Chosen.java 2006-01-11 03:13:45 UTC (rev 2061) @@ -76,6 +76,6 @@ } public String toString() { - return "{guest name=" + this.guestName + ",hobbies=" + this.hobby + "}"; + return "{Chosen id=" + this.id + ", name=" + this.guestName + ", hobbies=" + this.hobby + "}"; } } \ No newline at end of file Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java 2006-01-11 00:33:23 UTC (rev 2060) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java 2006-01-11 03:13:45 UTC (rev 2061) @@ -109,9 +109,17 @@ this.booleanNotEqualEvaluator = EvaluatorFactory.getInstance().getEvaluator( Evaluator.BOOLEAN_TYPE, Evaluator.NOT_EQUAL ); - } - - public void test1() throws DuplicateRuleNameException, InvalidRuleException, IntrospectionException, RuleIntegrationException, RuleSetIntegrationException, InvalidPatternException, FactException, IOException, InterruptedException { + } + + public void test1() throws DuplicateRuleNameException, + InvalidRuleException, + IntrospectionException, + RuleIntegrationException, + RuleSetIntegrationException, + InvalidPatternException, + FactException, + IOException, + InterruptedException { RuleSet ruleSet = new RuleSet( "Miss Manners" ); ruleSet.addRule( getAssignFirstSeatRule() ); ruleSet.addRule( getMakePath() ); @@ -119,59 +127,58 @@ ruleSet.addRule( getPathDone() ); ruleSet.addRule( getAreWeDone() ); ruleSet.addRule( getContinueProcessing() ); -// ruleSet.addRule( getAllDone() ); - + // ruleSet.addRule( getAllDone() ); + final RuleBaseImpl ruleBase = new RuleBaseImpl(); ruleBase.addRuleSet( ruleSet ); - -// final ReteooJungViewer viewer = new ReteooJungViewer(ruleBase); -// -// javax.swing.SwingUtilities.invokeLater(new Runnable() { -// public void run() { -// viewer.showGUI(); -// } -// }); - - + + // final ReteooJungViewer viewer = new ReteooJungViewer(ruleBase); + // + // javax.swing.SwingUtilities.invokeLater(new Runnable() { + // public void run() { + // viewer.showGUI(); + // } + // }); + WorkingMemory workingMemory = ruleBase.newWorkingMemory(); - + InputStream is = getClass().getResourceAsStream( "/manners16.dat" ); - List list = getInputObjects(is); - for (Iterator it = list.iterator(); it.hasNext(); ) { - FactHandle handle = workingMemory.assertObject( it.next() ); + List list = getInputObjects( is ); + for ( Iterator it = list.iterator(); it.hasNext(); ) { + FactHandle handle = workingMemory.assertObject( it.next() ); } - - workingMemory.assertObject( new Count(0) ); - + + workingMemory.assertObject( new Count( 1 ) ); + workingMemory.fireAllRules(); - -// while (viewer.isRunning()) { -// Thread.sleep( 1000 ); -// } - + + // while (viewer.isRunning()) { + // Thread.sleep( 1000 ); + // } + } /** * <pre> - * rule assignFirstSeat() { - * Context context; - * Guest guest; - * Count count; - * when { - * context : Context( state == Context.START_UP ) - * guest : Guest() - * count : Count() - * } then { - * String guestName = guest.getName(); - * drools.assert( new Seating( count.getValue(), 1, true, 1, guestName, 1, guestName) ); - * drools.assert( new Path( count.getValue(), 1, guestName ) ); - * count.setCount( count.getValue() + 1 ); - * - * System.out.println( "seat 1 " + guest.getName() + " ); - * - * context.setPath( Context.ASSIGN_SEATS ); - * } - * } + * rule assignFirstSeat() { + * Context context; + * Guest guest; + * Count count; + * when { + * context : Context( state == Context.START_UP ) + * guest : Guest() + * count : Count() + * } then { + * String guestName = guest.getName(); + * drools.assert( new Seating( count.getValue(), 1, true, 1, guestName, 1, guestName) ); + * drools.assert( new Path( count.getValue(), 1, guestName ) ); + * count.setCount( count.getValue() + 1 ); + * + * System.out.println( "seat 1 " + guest.getName() + " ); + * + * context.setPath( Context.ASSIGN_SEATS ); + * } + * } * </pre> * * @@ -236,17 +243,22 @@ String guestName = guest.getName(); - drools.assertObject( new Seating( count.getValue(), - 0, - true, - 1, - guestName, - 1, - guestName ) ); - drools.assertObject( new Path( count.getValue(), + Seating seating = new Seating( count.getValue(), + 0, + true, 1, - guestName ) ); + guestName, + 1, + guestName ); + drools.assertObject( seating ); + + Path path = new Path( count.getValue(), + 0, + guestName ); + + drools.assertObject( path ); + count.setValue( count.getValue() + 1 ); drools.modifyObject( tuple.getFactHandleForDeclaration( countDeclaration ), count ); @@ -254,9 +266,10 @@ context.setState( Context.ASSIGN_SEATS ); drools.modifyObject( tuple.getFactHandleForDeclaration( contextDeclaration ), context ); - System.out.println( "assigned first seat : " + guest ); + System.out.println( "assign first seat : " + seating + " : " + path ); - } catch ( Exception e ) { + } + catch ( Exception e ) { throw new ConsequenceException( e ); } } @@ -270,21 +283,21 @@ /** * <pre> - * rule makePath() { - * Context context; - * int seatingId, seatingPid, pathSeat; - * String pathGuestName; - * - * when { - * context : Context( state == Context.MAKE_PATH ) - * Seating( seatingId:id, seatingPid:pid, pathDone == false ) - * Path( id == seatingPid, pathGuestName:guest, pathSeat:seat ) - * (not Path( id == seatingId, guestName == pathGuestName ) - * } else { - * drools.assert( new Path( seatingId, pathSeat, pathGuestName ) ); - * - * } - * } + * rule makePath() { + * Context context; + * int seatingId, seatingPid, pathSeat; + * String pathGuestName; + * + * when { + * context : Context( state == Context.MAKE_PATH ) + * Seating( seatingId:id, seatingPid:pid, pathDone == false ) + * Path( id == seatingPid, pathGuestName:guest, pathSeat:seat ) + * (not Path( id == seatingId, guestName == pathGuestName ) + * } else { + * drools.assert( new Path( seatingId, pathSeat, pathGuestName ) ); + * + * } + * } * </pre> * * @return @@ -292,7 +305,7 @@ * @throws InvalidRuleException */ private Rule getMakePath() throws IntrospectionException, - InvalidRuleException { + InvalidRuleException { final Rule rule = new Rule( "makePath" ); // ----------- @@ -385,17 +398,18 @@ tuple ); int id = ((Integer) tuple.get( seatingIdDeclaration )).intValue(); - String guestName = (String) tuple.get( pathGuestNameDeclaration ); int seat = ((Integer) tuple.get( pathSeatDeclaration )).intValue(); + String guestName = (String) tuple.get( pathGuestNameDeclaration ); Path path = new Path( id, seat, guestName ); - + drools.assertObject( path ); - + System.out.println( "make path : " + path ); - } catch ( Exception e ) { + } + catch ( Exception e ) { throw new ConsequenceException( e ); } } @@ -409,37 +423,37 @@ /** * <pre> - * rule findSeating() { - * Context context; - * int seatingId, seatingPid; - * String seatingRightGuestName, leftGuestName; - * Sex rightGuestSex; - * Hobby rightGuestHobby; - * Count count; - * - * when { - * context : Context( state == Context.ASSIGN_SEATS ) - * Seating( seatingId:id, seatingPid:pid, pathDone == true - * seatingRightSeat:rightSeat seatingRightGuestName:rightGuestName ) - * Guest( name == seatingRightGuestName, rightGuestSex:sex, rightGuestHobby:hobby ) - * Guest( leftGuestName:name , sex != rightGuestSex, hobby == rightGuestHobby ) - * - * count : Count() - * - * not ( Path( id == seatingId, guestName == leftGuestName) ) - * not ( Chosen( id == seatingId, guestName == leftGuestName, hobby == rightGuestHobby) ) - * } then { - * int newSeat = rightSeat + 1; - * drools.assert( new Seating( coung.getValue(), rightSeat, rightSeatName, leftGuestName, newSeat, countValue, id, false ); - * drools.assert( new Path( countValue, leftGuestName, newSeat ); - * drools.assert( new Chosen( id, leftGuestName, rightGuestHobby ) ); - * - * System.out.println( "seat " + rightSeat + " " + rightSeatName + " " + leftGuestName ); - * - * count.setCount( countValue + 1 ); - * context.setPath( Context.MAKE_PATH ); - * } - * } + * rule findSeating() { + * Context context; + * int seatingId, seatingPid; + * String seatingRightGuestName, leftGuestName; + * Sex rightGuestSex; + * Hobby rightGuestHobby; + * Count count; + * + * when { + * context : Context( state == Context.ASSIGN_SEATS ) + * Seating( seatingId:id, seatingPid:pid, pathDone == true + * seatingRightSeat:rightSeat seatingRightGuestName:rightGuestName ) + * Guest( name == seatingRightGuestName, rightGuestSex:sex, rightGuestHobby:hobby ) + * Guest( leftGuestName:name , sex != rightGuestSex, hobby == rightGuestHobby ) + * + * count : Count() + * + * not ( Path( id == seatingId, guestName == leftGuestName) ) + * not ( Chosen( id == seatingId, guestName == leftGuestName, hobby == rightGuestHobby) ) + * } then { + * int newSeat = rightSeat + 1; + * drools.assert( new Seating( coung.getValue(), rightSeat, rightSeatName, leftGuestName, newSeat, countValue, id, false ); + * drools.assert( new Path( countValue, leftGuestName, newSeat ); + * drools.assert( new Chosen( id, leftGuestName, rightGuestHobby ) ); + * + * System.out.println( "seat " + rightSeat + " " + rightSeatName + " " + leftGuestName ); + * + * count.setCount( countValue + 1 ); + * context.setPath( Context.MAKE_PATH ); + * } + * } * </pre> * * @return @@ -447,7 +461,7 @@ * @throws InvalidRuleException */ private Rule getFindSeating() throws IntrospectionException, - InvalidRuleException { + InvalidRuleException { final Rule rule = new Rule( "findSeating" ); // --------------- @@ -468,7 +482,7 @@ // ------------------------------- // Seating( seatingId:id, seatingPid:pid, pathDone == true - // seatingRightSeat:rightSeat seatingRightGuestName:rightGuestName ) + // seatingRightSeat:rightSeat seatingRightGuestName:rightGuestName ) // ------------------------------- Column seatingColumn = new Column( 1, seatingType ); @@ -497,7 +511,8 @@ final Declaration seatingRightGuestNameDeclaration = rule.getDeclaration( "seatingRightGuestName" ); final Declaration seatingRightSeatDeclaration = rule.getDeclaration( "seatingRightSeat" ); // -------------- - // Guest( name == seatingRightGuestName, rightGuestSex:sex, rightGuestHobby:hobby ) + // Guest( name == seatingRightGuestName, rightGuestSex:sex, + // rightGuestHobby:hobby ) // --------------- Column rightGuestColumn = new Column( 2, guestType ); @@ -521,7 +536,8 @@ final Declaration rightGuestHobbyDeclaration = rule.getDeclaration( "rightGuestHobby" ); // ---------------- - // Guest( leftGuestName:name , sex != rightGuestSex, hobby == rightGuestHobby ) + // Guest( leftGuestName:name , sex != rightGuestSex, hobby == + // rightGuestHobby ) // ---------------- Column leftGuestColumn = new Column( 3, guestType ); @@ -556,7 +572,7 @@ // -------------- // not ( Path( id == seatingId, guestName == leftGuestName) ) // -------------- - Column notPathColumn = new Column( 3, + Column notPathColumn = new Column( 5, pathType ); notPathColumn.addConstraint( getBoundVariableConstraint( notPathColumn, @@ -572,9 +588,10 @@ notPath.addChild( notPathColumn ); rule.addPattern( notPath ); // ------------ - // not ( Chosen( id == seatingId, guestName == leftGuestName, hobby == rightGuestHobby ) ) + // not ( Chosen( id == seatingId, guestName == leftGuestName, hobby == + // rightGuestHobby ) ) // ------------ - Column notChosenColumn = new Column( 5, + Column notChosenColumn = new Column( 6, chosenType ); notChosenColumn.addConstraint( getBoundVariableConstraint( notChosenColumn, @@ -631,19 +648,23 @@ seatId, false, seatingRightSeat, - leftGuestName, + rightGuestName , seatingRightSeat + 1, - rightGuestName ); + leftGuestName ); drools.assertObject( seating ); - drools.assertObject( new Path( count.getValue(), - seatingRightSeat + 1, - leftGuestName ) ); + Path path = new Path( count.getValue(), + seatingRightSeat + 1, + leftGuestName ); - drools.assertObject( new Chosen( seatId, - leftGuestName, - rightGuestHobby ) ); + drools.assertObject( path ); + Chosen chosen = new Chosen( seatId, + leftGuestName, + rightGuestHobby ); + + drools.assertObject( chosen ); + count.setValue( count.getValue() + 1 ); drools.modifyObject( tuple.getFactHandleForDeclaration( countDeclaration ), count ); @@ -652,9 +673,10 @@ drools.modifyObject( tuple.getFactHandleForDeclaration( contextDeclaration ), context ); - System.out.println( "assign seating : " + seating ); - - } catch ( Exception e ) { + System.out.println( "find seating : " + seating + " : " + path + " : " + chosen ); + + } + catch ( Exception e ) { throw new ConsequenceException( e ); } } @@ -668,25 +690,18 @@ /** * - * rule pathDone() { - * Context context; - * Seating seating; - * when { - * context : Context( state == Context.MAKE_PATH ) - * seating : Seating( pathDone == false ) - * } then { - * seating.setPathDone( true ); - * context.setName( Context.CHECK_DONE ); - * } - * } - * + * rule pathDone() { Context context; Seating seating; when { context : + * Context( state == Context.MAKE_PATH ) seating : Seating( pathDone == + * false ) } then { seating.setPathDone( true ); context.setName( + * Context.CHECK_DONE ); } } * + * * @return * @throws IntrospectionException * @throws InvalidRuleException */ private Rule getPathDone() throws IntrospectionException, - InvalidRuleException { + InvalidRuleException { final Rule rule = new Rule( "pathDone" ); // ----------- @@ -721,8 +736,8 @@ final Declaration seatingDeclaration = rule.getDeclaration( "seating" ); // ------------ - // context.setName( Context.CHECK_DONE ); - // seating.setPathDone( true ); + // context.setName( Context.CHECK_DONE ); + // seating.setPathDone( true ); // ------------ Consequence consequence = new Consequence() { @@ -735,16 +750,17 @@ Context context = (Context) tuple.get( contextDeclaration ); Seating seating = (Seating) tuple.get( seatingDeclaration ); - + seating.setPathDone( true ); drools.modifyObject( tuple.getFactHandleForDeclaration( seatingDeclaration ), - seating ); - + seating ); + context.setState( Context.CHECK_DONE ); drools.modifyObject( tuple.getFactHandleForDeclaration( contextDeclaration ), - context ); - System.out.println("path done" + seating); - } catch ( Exception e ) { + context ); + System.out.println( "path done" + seating ); + } + catch ( Exception e ) { throw new ConsequenceException( e ); } } @@ -758,25 +774,18 @@ /** * - * rule areWeDone() { - * Context context; - * LastSeat lastSear; - * when { - * context : Context( state == Context.CHECK_DONE ) - * LastSeat( lastSeat: seat ) - * Seating( rightSeat == lastSeat ) - * } then { - * context.setState( Context.PRINT_RESULTS ); - * } - * } - * + * rule areWeDone() { Context context; LastSeat lastSear; when { context : + * Context( state == Context.CHECK_DONE ) LastSeat( lastSeat: seat ) + * Seating( rightSeat == lastSeat ) } then { context.setState( + * Context.PRINT_RESULTS ); } } * + * * @return * @throws IntrospectionException * @throws InvalidRuleException */ private Rule getAreWeDone() throws IntrospectionException, - InvalidRuleException { + InvalidRuleException { final Rule rule = new Rule( "areWeDone" ); // ----------- @@ -797,30 +806,30 @@ // LastSeat( lastSeat: seat ) // --------------- Column lastSeatColumn = new Column( 1, - lastSeatType, - null ); + lastSeatType, + null ); lastSeatColumn.addConstraint( getFieldBinding( lastSeatColumn, - "seat", - "lastSeat" ) ); + "seat", + "lastSeat" ) ); rule.addPattern( lastSeatColumn ); final Declaration lastSeatDeclaration = rule.getDeclaration( "lastSeat" ); // ------------- - // Seating( rightSeat == lastSeat ) + // Seating( rightSeat == lastSeat ) // ------------- Column seatingColumn = new Column( 2, seatingType, null ); - + seatingColumn.addConstraint( getBoundVariableConstraint( seatingColumn, "rightSeat", lastSeatDeclaration, - integerEqualEvaluator ) ); - + integerEqualEvaluator ) ); + rule.addPattern( seatingColumn ); - + // ------------ - // context.setName( Context.PRINT_RESULTS ); + // context.setName( Context.PRINT_RESULTS ); // ------------ Consequence consequence = new Consequence() { @@ -833,12 +842,13 @@ Context context = (Context) tuple.get( contextDeclaration ); context.setState( Context.PRINT_RESULTS ); - + drools.modifyObject( tuple.getFactHandleForDeclaration( contextDeclaration ), - context ); - + context ); + System.out.println( "are we done yet" ); - } catch ( Exception e ) { + } + catch ( Exception e ) { throw new ConsequenceException( e ); } } @@ -848,25 +858,19 @@ rule.setConsequence( consequence ); return rule; - } - + } + /** * - * rule continue() { - * Context context; - * when { - * context : Context( state == Context.CHECK_DONE ) - * } then { - * context.setState( Context.ASSIGN_SEATS ); - * } - * } + * rule continue() { Context context; when { context : Context( state == + * Context.CHECK_DONE ) } then { context.setState( Context.ASSIGN_SEATS ); } } * * @return * @throws IntrospectionException * @throws InvalidRuleException */ private Rule getContinueProcessing() throws IntrospectionException, - InvalidRuleException { + InvalidRuleException { final Rule rule = new Rule( "continueProcessng" ); // ----------- @@ -883,9 +887,9 @@ rule.addPattern( contextColumn ); final Declaration contextDeclaration = rule.getDeclaration( "context" ); - + // ------------ - // context.setName( Context.ASSIGN_SEATS ); + // context.setName( Context.ASSIGN_SEATS ); // ------------ Consequence consequence = new Consequence() { @@ -898,12 +902,13 @@ Context context = (Context) tuple.get( contextDeclaration ); context.setState( Context.ASSIGN_SEATS ); - + drools.modifyObject( tuple.getFactHandleForDeclaration( contextDeclaration ), - context ); - - System.out.println("continue processing"); - } catch ( Exception e ) { + context ); + + System.out.println( "continue processing" ); + } + catch ( Exception e ) { throw new ConsequenceException( e ); } } @@ -913,26 +918,21 @@ rule.setConsequence( consequence ); return rule; - } + } /** * - * rule all_done() { - * Context context; - * when { - * context : Context( state == Context.PRINT_RESULTS ) - * } then { - * - * } - * } - * + * rule all_done() { Context context; when { context : Context( state == + * Context.PRINT_RESULTS ) } then { + * } } * + * * @return * @throws IntrospectionException * @throws InvalidRuleException */ private Rule getAllDone() throws IntrospectionException, - InvalidRuleException { + InvalidRuleException { final Rule rule = new Rule( "alldone" ); // ----------- @@ -948,7 +948,7 @@ rule.addPattern( contextColumn ); final Declaration contextDeclaration = rule.getDeclaration( "context" ); - + // ------------ // // ------------ @@ -956,8 +956,9 @@ public void invoke(Activation activation) throws ConsequenceException { try { - - } catch ( Exception e ) { + System.out.println( "all done" ); + } + catch ( Exception e ) { throw new ConsequenceException( e ); } } @@ -967,77 +968,66 @@ rule.setConsequence( consequence ); return rule; - } + } /** * Convert the facts from the <code>InputStream</code> to a list of * objects. */ - private List getInputObjects(InputStream inputStream) throws IOException - { - List list = new ArrayList( ); + private List getInputObjects(InputStream inputStream) throws IOException { + List list = new ArrayList(); BufferedReader br = new BufferedReader( new InputStreamReader( inputStream ) ); String line; - while ( (line = br.readLine( )) != null ) - { - if ( line.trim( ).length( ) == 0 || line.trim( ).startsWith( ";" ) ) - { + while ( (line = br.readLine()) != null ) { + if ( line.trim().length() == 0 || line.trim().startsWith( ";" ) ) { continue; } StringTokenizer st = new StringTokenizer( line, "() " ); - String type = st.nextToken( ); + String type = st.nextToken(); - if ( "guest".equals( type ) ) - { - if ( !"name".equals( st.nextToken( ) ) ) - { + if ( "guest".equals( type ) ) { + if ( !"name".equals( st.nextToken() ) ) { throw new IOException( "expected 'name' in: " + line ); } - String name = st.nextToken( ); - if ( !"sex".equals( st.nextToken( ) ) ) - { + String name = st.nextToken(); + if ( !"sex".equals( st.nextToken() ) ) { throw new IOException( "expected 'sex' in: " + line ); } - String sex = st.nextToken( ); - if ( !"hobby".equals( st.nextToken( ) ) ) - { + String sex = st.nextToken(); + if ( !"hobby".equals( st.nextToken() ) ) { throw new IOException( "expected 'hobby' in: " + line ); } - String hobby = st.nextToken( ); + String hobby = st.nextToken(); Guest guest = new Guest( name, - Sex.resolve(sex), - Hobby.resolve(hobby)); + Sex.resolve( sex ), + Hobby.resolve( hobby ) ); - list.add( guest ); + list.add( guest ); } - if ( "last_seat".equals( type ) ) - { - if ( !"seat".equals( st.nextToken( ) ) ) - { + if ( "last_seat".equals( type ) ) { + if ( !"seat".equals( st.nextToken() ) ) { throw new IOException( "expected 'seat' in: " + line ); } - list.add( new LastSeat( new Integer( st.nextToken( ) ).intValue( ) ) ); + list.add( new LastSeat( new Integer( st.nextToken() ).intValue() ) ); } - if ( "context".equals( type ) ) - { - if ( !"state".equals( st.nextToken( ) ) ) - { + if ( "context".equals( type ) ) { + if ( !"state".equals( st.nextToken() ) ) { throw new IOException( "expected 'state' in: " + line ); } - list.add( new Context( st.nextToken( ) ) ); + list.add( new Context( st.nextToken() ) ); } } - inputStream.close( ); + inputStream.close(); return list; - } - + } + private InputStream generateData() { final String LINE_SEPARATOR = System.getProperty( "line.separator" ); |
From: <jbo...@li...> - 2006-01-11 00:33:49
|
Author: mar...@jb... Date: 2006-01-10 19:33:23 -0500 (Tue, 10 Jan 2006) New Revision: 2060 Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/ComplexityConflictResolver.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/SimplicityConflictResolver.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/Rule.java Log: -Make Rule return its specifity - the number of constraints. Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/ComplexityConflictResolver.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/ComplexityConflictResolver.java 2006-01-10 23:22:44 UTC (rev 2059) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/ComplexityConflictResolver.java 2006-01-11 00:33:23 UTC (rev 2060) @@ -96,6 +96,6 @@ */ public int compare(Activation lhs, Activation rhs) { - return rhs.getRule().getPatternSize() - lhs.getRule().getPatternSize(); + return rhs.getRule().getSpecifity() - lhs.getRule().getSpecifity(); } } Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/SimplicityConflictResolver.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/SimplicityConflictResolver.java 2006-01-10 23:22:44 UTC (rev 2059) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/SimplicityConflictResolver.java 2006-01-11 00:33:23 UTC (rev 2060) @@ -96,6 +96,6 @@ */ public int compare(Activation lhs, Activation rhs) { - return lhs.getRule().getPatternSize() - rhs.getRule().getPatternSize(); + return lhs.getRule().getSpecifity() - rhs.getRule().getSpecifity(); } } Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/Rule.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/Rule.java 2006-01-10 23:22:44 UTC (rev 2059) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/Rule.java 2006-01-11 00:33:23 UTC (rev 2060) @@ -451,24 +451,33 @@ return LogicTransformer.getInstance().transform( this.headPattern ); } - public int getPatternSize() { - // return this.conditions.size(); - return determinePatternSize( this.headPattern ); + public int getSpecifity() { + return getSpecifity( this.headPattern ); } - private int determinePatternSize(ConditionalElement ce) { - Object object = null; - Iterator it = ce.getChildren().iterator(); - int size = 0; - while ( it.hasNext() ) { - object = it.next(); - if ( object instanceof ConditionalElement ) { - size++; - size += determinePatternSize( (ConditionalElement) object ); - } + private int getSpecifity(ConditionalElement ce) { + int specificity = 0; + for ( Iterator it = ce.getChildren().iterator(); it.hasNext(); ) { + Object object = it.next(); + if ( object instanceof Column ) { + specificity += getSpecifity((Column) object); + } else if ( object instanceof ConditionalElement ) { + specificity += getSpecifity((ConditionalElement) object); + } } - return size; + return specificity; } + + private int getSpecifity(Column column) { + int specificity = 0; + for (Iterator it = column.getConstraints().iterator(); it.hasNext(); ) { + if (!(it.next() instanceof Binding)) { + specificity++; + } + } + + return specificity; + } /** * Set the <code>Consequence</code> that is associated with the successful |
From: <jbo...@li...> - 2006-01-10 23:22:48
|
Author: unibrew Date: 2006-01-10 18:22:44 -0500 (Tue, 10 Jan 2006) New Revision: 2059 Modified: trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml Log: [JBLAB-407] Turing on the Blog. Modified: trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml =================================================================== --- trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml 2006-01-10 23:22:04 UTC (rev 2058) +++ trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml 2006-01-10 23:22:44 UTC (rev 2059) @@ -74,13 +74,13 @@ <height>1</height> <window-state>normal</window-state> </window> - <!--<window> + <window> <window-name>BlogPortletWindowDefaultDefault</window-name> <instance-ref>blog.BlogPortlet.BlogPortletInstance</instance-ref> <default>true</default> <region>center</region> <height>2</height> - </window>--> + </window> <window> <window-name>NavigationPortletWindowDefaultDefault</window-name> <instance-ref>navigation.NavigationPortlet.NavigationPortletInstance</instance-ref> |
From: <jbo...@li...> - 2006-01-10 23:22:26
|
Author: mic...@jb... Date: 2006-01-10 18:22:04 -0500 (Tue, 10 Jan 2006) New Revision: 2058 Added: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/StoreEventListener.java trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/LocalPersistTest.java Modified: trunk/labs/jbossrules/drools-repository/pom.xml trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/IVersionable.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleDef.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/HibernateUtil.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepositoryImpl.java trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetDef.hbm.xml trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RulePersistenceTest.java trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RuleSetPersistenceTest.java trunk/labs/jbossrules/drools-repository/src/test/resources/hibernate.cfg.xml Log: more working stuff Modified: trunk/labs/jbossrules/drools-repository/pom.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/pom.xml 2006-01-10 23:00:47 UTC (rev 2057) +++ trunk/labs/jbossrules/drools-repository/pom.xml 2006-01-10 23:22:04 UTC (rev 2058) @@ -32,7 +32,14 @@ <version>1.8.0.1</version> </dependency> + <dependency> + <groupId>xstream</groupId> + <artifactId>xstream</artifactId> + <version>1.1.2</version> + </dependency> + + </dependencies> Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/IVersionable.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/IVersionable.java 2006-01-10 23:00:47 UTC (rev 2057) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/IVersionable.java 2006-01-10 23:22:04 UTC (rev 2058) @@ -1,8 +1,14 @@ package org.drools.repository; -/** All assets that support major versioning must implement this. */ -interface IVersionable { +/** All assets that support versioning must implement this. */ +public interface IVersionable { + /** + * This is used to indicate that the asset is un-attached to + * any ruleset. Basically deleted. + */ + public static final long NO_VERSION = -1; + /** of course they have to have an id ! * Ids are always assigned by the database. */ Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleDef.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleDef.java 2006-01-10 23:00:47 UTC (rev 2057) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleDef.java 2006-01-10 23:22:04 UTC (rev 2058) @@ -29,18 +29,19 @@ /** * Use tagging to aid with searching and sorting of large numbers of rules. * Tags should not effect the versioning of the rules. - * - * */ public RuleDef addTag(String tag) { this.tags.add(new Tag(tag)); return this; } - + public RuleDef addTag(Tag tag) { + this.tags.add(tag); + return this; + } + + RuleDef() {} - public RuleDef() {} - /** * This is for creating a brand new rule. * @param name @@ -177,7 +178,9 @@ } public String toString() { - return "{ id = " + this.getId() + "name= (" + this.name + ") version = " + this.getVersionNumber() + " }"; + return "{ id = " + this.getId() + + " name = (" + this.name + ") version = " + + this.getVersionNumber() + " }"; } } Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java 2006-01-10 23:00:47 UTC (rev 2057) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java 2006-01-10 23:22:04 UTC (rev 2058) @@ -8,8 +8,21 @@ * The ruleset definition contains a grouping of rules for editing/release. The * workingVersionNumber drives what version of rules will be included in this * ruleset. Changing this number will mean that different versions of ruledefs - * are loaded etc. + * are loaded etc. This number is set when you load the rulebase (it starts with + * 1 for a new RuleSet). * + * Assets such as RuleDefs, Functions etc can be added to the RuleSet. + * When an asset that already has an identity (eg a Rule that is + * already is in the repository) is added to a RuleSet, it is copied, + * and its version is set to to match the working version number of the RuleSet. + * This is to stop in advertent changes effecting unrelated rulesets, in cases + * where rules are "shared". + * + * Note that as RuleDefs are taged, it is possible to load Rules based on these tags, + * and thus build up rulesets dynamically (without using a RuleSetDef object). This + * is possible for environments where rules are changed and managed individually, + * rather then as part of a ruleset. + * * @author <a href="mailto:mic...@gm..."> Michael Neale</a> */ public class RuleSetDef extends Persistent @@ -40,6 +53,7 @@ this.applicationData = new HashSet(); this.imports = new HashSet(); this.workingVersionNumber = 1; + this.versionHistory.add(new RuleSetVersionInfo(1, "New")); } /** @@ -48,6 +62,12 @@ RuleSetDef() { } + /** + * This returns a version history of RuleSet versions. + * You can think of these as "major" versions. Past versions + * can be loaded from the repository on demand, using the versionNumber + * from the appropriate history record that you wish to retrieve. + */ public Set getVersionHistory() { return versionHistory; } @@ -80,40 +100,51 @@ * Removes a rule from the current ruleset. This * DOES NOT delete the rule, and DOES NOT effect any other versions * of the ruleset. + * + * Note that assets are removed by setting their version number to + * IVersionable.NO_VERSION (-1) so that the do not show up. + * This may be changed so they are archived in future, and deleted. + * + * The repository API has a delete(RuleDef rule) method + * */ public void removeRule(RuleDef rule) { - //rule.setVersionNumber(-1); - this.rules.remove(rule); + rule.setVersionNumber(IVersionable.NO_VERSION); } public void removeFunction(FunctionDef function) { - this.functions.remove(function); + function.setVersionNumber(IVersionable.NO_VERSION); } public void removeApplicationData(ApplicationDataDef appData) { - this.applicationData.remove(appData); + appData.setVersionNumber(IVersionable.NO_VERSION); } public void removeImport(ImportDef imp) { - this.imports.remove(imp); + imp.setVersionNumber(IVersionable.NO_VERSION); } public void removeAttachment(RuleSetAttachment attachment) { - this.attachments.remove(attachment); + attachment.setVersionNumber(IVersionable.NO_VERSION); } public RuleSetDef addFunction(FunctionDef function) { return addAssetToSet( function, this.functions ); } + + public void removeTag(Tag tag) { + this.tags.remove(tag); + } /** * This adds a versionable asset to the specified set. * - * Copy/versus linking: If the asset already has an Id, and it is a - * different version number, then it will be copied for the set. If it has - * the same version number, then it will be shared. Sharing is generally not - * recommended, but can be useful. + * Copy/versus linking: If the asset already has an Id, it will be copied + * for this ruleset. + * If it does not have an id, well it is obviously new, + * and will be given an id when the RuleSet is synchronized with + * the repository. */ RuleSetDef addAssetToSet(IVersionable asset, Set set) { @@ -122,13 +153,11 @@ asset.setVersionComment( "New" ); set.add( asset ); } - else if ( asset.getVersionNumber() == this.workingVersionNumber ) { - set.add( asset ); - } else { IVersionable copy = asset.copy(); copy.setVersionNumber( this.workingVersionNumber ); - copy.setVersionComment( "Copied for this version." ); + copy.setVersionComment( "Copied for this version from version: " + + asset.getVersionNumber() ); set.add( copy ); } return this; @@ -171,6 +200,11 @@ this.tags.add( new Tag( tag ) ); return this; } + + public RuleSetDef addTag(Tag tag) { + this.tags.add(tag); + return this; + } public long getWorkingVersionNumber() { return workingVersionNumber; Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/HibernateUtil.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/HibernateUtil.java 2006-01-10 23:00:47 UTC (rev 2057) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/HibernateUtil.java 2006-01-10 23:22:04 UTC (rev 2058) @@ -2,6 +2,7 @@ import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; +import org.hibernate.event.SaveOrUpdateEventListener; public class HibernateUtil { @@ -10,16 +11,25 @@ static { try { // Create the SessionFactory from hibernate.cfg.xml - sessionFactory = new Configuration().configure().buildSessionFactory(); - } catch (Throwable ex) { + + Configuration cfg = new Configuration(); + + SaveOrUpdateEventListener[] listeners = new SaveOrUpdateEventListener[]{new StoreEventListener()}; + + cfg.setInterceptor( new StoreEventListener() ); + cfg.getEventListeners().setUpdateEventListeners( listeners ); + cfg.configure(); + sessionFactory = cfg.buildSessionFactory(); + } + catch ( Throwable ex ) { // Make sure you log the exception, as it might be swallowed - System.err.println("Initial SessionFactory creation failed." + ex); - throw new ExceptionInInitializerError(ex); + System.err.println( "Initial SessionFactory creation failed." + ex ); + throw new ExceptionInInitializerError( ex ); } } public static SessionFactory getSessionFactory() { return sessionFactory; - } - + } + } Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepositoryImpl.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepositoryImpl.java 2006-01-10 23:00:47 UTC (rev 2057) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepositoryImpl.java 2006-01-10 23:22:04 UTC (rev 2058) @@ -127,6 +127,23 @@ session.getTransaction().commit(); } + + /** Returns List<String> of Rule set names */ + public List listRuleSets() { + Session session = getSession(); + session.beginTransaction(); + List list = session.createQuery("select name from RuleSetDef where name is not null").list(); + session.getTransaction().commit(); + return list; + } + + + public void delete(RuleDef rule) { + Session session = getSession(); + session.beginTransaction(); + session.delete(rule); + session.getTransaction().commit(); + } Added: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/StoreEventListener.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/StoreEventListener.java 2006-01-10 23:00:47 UTC (rev 2057) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/StoreEventListener.java 2006-01-10 23:22:04 UTC (rev 2058) @@ -0,0 +1,47 @@ +package org.drools.repository.db; + +import java.io.Serializable; + +import org.drools.repository.IVersionable; +import org.hibernate.EmptyInterceptor; +import org.hibernate.HibernateException; +import org.hibernate.event.SaveOrUpdateEvent; +import org.hibernate.event.SaveOrUpdateEventListener; +import org.hibernate.type.Type; + +public class StoreEventListener extends EmptyInterceptor implements SaveOrUpdateEventListener { + + private static final long serialVersionUID = -5634072610999632779L; + + public boolean onSave(Object entity, + Serializable id, + Object[] state, + String[] propertyNames, + Type[] types) { + if (entity instanceof IVersionable) { + // System.out.println("VERSIONABLE INTERCEPT: " + id); + IVersionable versionable = (IVersionable) entity; + if (versionable.getId() != null) { + System.out.println("ITS A NEW VERSION"); + } + } + + return false; + } + + public void onSaveOrUpdate(SaveOrUpdateEvent event) throws HibernateException { + Object ent = event.getEntity(); + System.out.println("OnSaveOrUpdate"); + if (ent instanceof IVersionable) { + IVersionable versionable = (IVersionable) ent; + if (versionable.getId() != null) { + System.out.println("!!!! WE have an update"); + } + } + + } + + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/StoreEventListener.java ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetDef.hbm.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetDef.hbm.xml 2006-01-10 23:00:47 UTC (rev 2057) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetDef.hbm.xml 2006-01-10 23:22:04 UTC (rev 2058) @@ -12,7 +12,7 @@ </id> - <property name="name" /> + <property name="name" not-null="true" /> <component name="metaData"> <property name="title" /> @@ -32,7 +32,7 @@ <!-- tags to aid with searching and management of rules --> - <set name="tags" table="RULESET_TAGS" lazy="false" cascade="all"> + <set name="tags" table="RULESET_TAGS" lazy="false" cascade="all" optimistic-lock="false"> <key column="RULESET_ID"/> <one-to-many class="org.drools.repository.Tag"/> </set> @@ -43,31 +43,31 @@ </set> <!-- now come the versioned assets --> - <set name="rules" lazy="false" cascade="all"> + <set name="rules" lazy="false" cascade="all" optimistic-lock="false"> <key column="RULESET_ID"/> <one-to-many class="org.drools.repository.RuleDef"/> <filter name="workingVersionFilter" condition=":filteredVersionNumber = versionNumber" /> </set> - <set name="attachments" lazy="false" cascade="all"> + <set name="attachments" lazy="false" cascade="all" optimistic-lock="false"> <key column="RULESET_ID"/> <one-to-many class="org.drools.repository.RuleSetAttachment"/> <filter name="workingVersionFilter" condition=":filteredVersionNumber = versionNumber" /> </set> - <set name="imports" lazy="false" cascade="all"> + <set name="imports" lazy="false" cascade="all" optimistic-lock="false"> <key column="RULESET_ID"/> <one-to-many class="org.drools.repository.ImportDef"/> <filter name="workingVersionFilter" condition=":filteredVersionNumber = versionNumber" /> </set> - <set name="functions" lazy="false" cascade="all"> + <set name="functions" lazy="false" cascade="all" optimistic-lock="false"> <key column="RULESET_ID"/> <one-to-many class="org.drools.repository.FunctionDef"/> <filter name="workingVersionFilter" condition=":filteredVersionNumber = versionNumber" /> </set> - <set name="applicationData" lazy="false" cascade="all"> + <set name="applicationData" lazy="false" cascade="all" optimistic-lock="false"> <key column="RULESET_ID"/> <one-to-many class="org.drools.repository.ApplicationDataDef"/> <filter name="workingVersionFilter" condition=":filteredVersionNumber = versionNumber" /> Added: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/LocalPersistTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/LocalPersistTest.java 2006-01-10 23:00:47 UTC (rev 2057) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/LocalPersistTest.java 2006-01-10 23:22:04 UTC (rev 2058) @@ -0,0 +1,35 @@ +package org.drools.repository; + +import org.drools.repository.db.PersistentCase; +import org.drools.repository.db.RepositoryImpl; + +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.io.xml.DomDriver; + +public class LocalPersistTest extends PersistentCase { + + public void testXStream() { + RuleSetDef def = new RuleSetDef("xstream1", new MetaData()); + def.addRule(new RuleDef("rulex1", "ndklsanlkdsan")); + XStream xstream = new XStream(new DomDriver()); + String xml = xstream.toXML(def); + //System.out.println(xml); + + def = (RuleSetDef) xstream.fromXML(xml); + + RepositoryImpl repo = getRepo(); + repo.save(def); + + def = repo.loadRuleSet("xstream1", 1); + xml = xstream.toXML(def); + //System.out.println(xml); + + def = (RuleSetDef) xstream.fromXML(xml); + def.addRule( new RuleDef("xstream2", "xxxx")); + repo.save(def); + + assertNotNull(def); + + } + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/LocalPersistTest.java ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RulePersistenceTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RulePersistenceTest.java 2006-01-10 23:00:47 UTC (rev 2057) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RulePersistenceTest.java 2006-01-10 23:22:04 UTC (rev 2058) @@ -16,10 +16,22 @@ repo.save(def); assertNotNull(def.getId()); repo.save(new RuleDef("myRule2", "A rule2")); + def = new RuleDef("myRule3", "A rule3"); def.addTag("tag1").addTag("tag2").addTag("HR"); - repo.save(def); + repo.save(def); + assertNotNull(def.getId()); + Long id = def.getId(); + + def.setContent("new content"); + repo.save(def); + + + def = repo.loadRule("myRule3", 1); + assertEquals(id, def.getId()); + + assertEquals("new content", def.getContent()); } public void testRetreieveRuleWithTags() { Modified: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RuleSetPersistenceTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RuleSetPersistenceTest.java 2006-01-10 23:00:47 UTC (rev 2057) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RuleSetPersistenceTest.java 2006-01-10 23:22:04 UTC (rev 2058) @@ -2,6 +2,7 @@ import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Set; import org.drools.repository.db.PersistentCase; @@ -10,7 +11,7 @@ /** * Some quasi unit tests, and some quasi integration tests including versioning. * @author <a href="mailto:mic...@gm..."> Michael Neale</a> - * + * Take deep breaths... its not really that scary... */ public class RuleSetPersistenceTest extends PersistentCase { @@ -21,6 +22,7 @@ RuleSetDef def = new RuleSetDef("my ruleset", meta); def.addTag("ME"); + def.addRule(new RuleDef("simple", "x")); RepositoryImpl repo = getRepo(); repo.save(def); @@ -29,6 +31,14 @@ assertEquals("Michael Neale", def2.getMetaData().getCreator()); assertEquals(1, def2.getTags().size()); + //now modify the content of a rule, ensure it is saved + RuleDef rule = (RuleDef) def2.getRules().iterator().next(); + rule.setContent("Something new"); + repo.save(def2); + + def2 = repo.loadRuleSet("my ruleset", 1); + RuleDef rule2 = (RuleDef) def2.getRules().iterator().next(); + assertEquals("Something new", rule2.getContent()); } public void testRuleSetWithRules() { @@ -217,8 +227,9 @@ assertEquals(1, old.getRules().size()); assertEquals(1, newRs.getRules().size()); - + //add a rule to new one newRs.addRule(new RuleDef("para2", "xxx")); + newRs.addTag("HR"); repo.save(newRs); @@ -226,14 +237,64 @@ old = repo.loadRuleSet("para", 1); assertEquals(2, newRs.getRules().size()); assertEquals(1, old.getRules().size()); + RuleDef originalRule = (RuleDef) old.getRules().iterator().next(); //check that the original one still has the right version number - assertEquals(1, originalRule.getVersionNumber()); + assertEquals(1, originalRule.getVersionNumber()); + assertEquals(1, old.getRules().size()); + repo.delete(originalRule); + old = repo.loadRuleSet("para", 1); + assertEquals(0, old.getRules().size()); + } + + /** just make sure it works for at least one other asset type */ + public void testRuleSetWithFunction() { + RuleSetDef def = new RuleSetDef("with functions", null); + def.addFunction(new FunctionDef("abc", "123")); + RepositoryImpl repo = getRepo(); + repo.save(def); + def = repo.loadRuleSet("with functions", 1); + FunctionDef func = (FunctionDef) def.getFunctions().iterator().next(); + assertEquals("abc", func.getFunctionContent()); + //just make sure it preserves content, and same ID (now new versions). + func.setFunctionContent("xyz"); + Long id = func.getId(); + repo.save(def); + def = repo.loadRuleSet("with functions", 1); + func = (FunctionDef) def.getFunctions().iterator().next(); + assertEquals(id, func.getId()); + assertEquals("xyz", func.getFunctionContent()); + } -} + public void testRuleSetNameList() { + List list = getRepo().listRuleSets(); + assertTrue(list.size() > 0); + } + +// public void testLargeNumbers() { +// RuleSetDef large = new RuleSetDef("Large1", null); +// +// for (int i = 0; i < 4000; i++) { +// RuleDef def = new RuleDef("RuleNumber " + i, "Content"); +// def.addTag("HR" + i); +// large.addRule(def); +// } +// RepositoryImpl repo = getRepo(); +// repo.save(large); +// +// large = repo.loadRuleSet("Large1", 1); +// assertEquals(4000, large.getRules().size()); +// +// List list = repo.findRulesByTag("HR1024"); +// assertEquals(1, list.size()); +// +// +// } + +} \ No newline at end of file Modified: trunk/labs/jbossrules/drools-repository/src/test/resources/hibernate.cfg.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/resources/hibernate.cfg.xml 2006-01-10 23:00:47 UTC (rev 2057) +++ trunk/labs/jbossrules/drools-repository/src/test/resources/hibernate.cfg.xml 2006-01-10 23:22:04 UTC (rev 2058) @@ -43,8 +43,6 @@ <mapping resource="org/drools/repository/ImportDef.hbm.xml" /> - - </session-factory> </hibernate-configuration> \ No newline at end of file |
Author: unibrew Date: 2006-01-10 18:00:47 -0500 (Tue, 10 Jan 2006) New Revision: 2057 Modified: trunk/forge/portal-extensions/forge-freezone/src/web/WEB-INF/portlet-instances.xml trunk/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp trunk/forge/portal-extensions/polls/src/web/WEB-INF/portlet-instances.xml trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml Log: [JBLAB-407] The 3 column view of JBoss Labs Modified: trunk/forge/portal-extensions/forge-freezone/src/web/WEB-INF/portlet-instances.xml =================================================================== --- trunk/forge/portal-extensions/forge-freezone/src/web/WEB-INF/portlet-instances.xml 2006-01-10 22:22:30 UTC (rev 2056) +++ trunk/forge/portal-extensions/forge-freezone/src/web/WEB-INF/portlet-instances.xml 2006-01-10 23:00:47 UTC (rev 2057) @@ -14,4 +14,14 @@ </preference> </preferences> </instance> + <instance> + <instance-name>FreezoneRightPanelPortletInstance</instance-name> + <component-ref>PrjFreezonePortlet</component-ref> + <preferences> + <preference> + <name>page</name> + <value>default/members/default/freezone/rightPanelContent.html</value> + </preference> + </preferences> + </instance> </instances> Modified: trunk/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp =================================================================== --- trunk/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp 2006-01-10 22:22:30 UTC (rev 2056) +++ trunk/forge/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp 2006-01-10 23:00:47 UTC (rev 2057) @@ -130,8 +130,8 @@ <tr> <td class="leftside"><p:region regionName='left'/></td> <td class="bodycell"><p:region regionName='center'/></td> + <td class="leftside"><p:region regionName='right'/></td> - </tr> </tbody></table> Modified: trunk/forge/portal-extensions/polls/src/web/WEB-INF/portlet-instances.xml =================================================================== --- trunk/forge/portal-extensions/polls/src/web/WEB-INF/portlet-instances.xml 2006-01-10 22:22:30 UTC (rev 2056) +++ trunk/forge/portal-extensions/polls/src/web/WEB-INF/portlet-instances.xml 2006-01-10 23:00:47 UTC (rev 2057) @@ -4,4 +4,14 @@ <instance-name>PollsPortletInstance</instance-name> <component-ref>PollsPortlet</component-ref> </instance> + <instance> + <instance-name>PollsPortletInstanceRandom</instance-name> + <component-ref>PollsPortlet</component-ref> + <preferences> + <preference> + <name>random</name> + <value>all</value> + </preference> + </preferences> + </instance> </instances> Modified: trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml =================================================================== --- trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml 2006-01-10 22:22:30 UTC (rev 2056) +++ trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml 2006-01-10 23:00:47 UTC (rev 2057) @@ -74,13 +74,13 @@ <height>1</height> <window-state>normal</window-state> </window> - <window> + <!--<window> <window-name>BlogPortletWindowDefaultDefault</window-name> <instance-ref>blog.BlogPortlet.BlogPortletInstance</instance-ref> <default>true</default> <region>center</region> <height>2</height> - </window> + </window>--> <window> <window-name>NavigationPortletWindowDefaultDefault</window-name> <instance-ref>navigation.NavigationPortlet.NavigationPortletInstance</instance-ref> @@ -95,6 +95,20 @@ <height>2</height> <window-state>normal</window-state> </window> +<!-- <window> + <window-name>PollsPortletWindowDefaultRandom</window-name> + <instance-ref>polls.PollsPortlet.PollsPortletInstanceRandom</instance-ref> + <region>right</region> + <height>0</height> + <window-state>normal</window-state> + </window>--> + <window> + <window-name>FreezonePortletWindowDefaultRight</window-name> + <instance-ref>prj-freezone.PrjFreezonePortlet.FreezoneRightPanelPortletInstance</instance-ref> + <default>true</default> + <region>right</region> + <height>1</height> + </window> </page> @@ -270,6 +284,13 @@ <region>center</region> <height>0</height> </window> + <!--<window> + <window-name>PollsPortletWindowInfo</window-name> + <instance-ref>polls.PollsPortlet.PollsPortletInstance</instance-ref> + <region>right</region> + <height>1</height> + <window-state>normal</window-state> + </window>--> </page> <page> @@ -330,13 +351,7 @@ <height>1</height> <window-state>normal</window-state> </window> - <!-- <window> - <window-name>PollsPortletWindowDefaultDownloads</window-name> - <instance-ref>polls.PollsPortlet.PollsPortletInstance</instance-ref> - <region>center</region> - <height>2</height> - <window-state>normal</window-state> - </window>--> + </page> <page> |
From: <jbo...@li...> - 2006-01-10 22:22:33
|
Author: mar...@jb... Date: 2006-01-10 17:22:30 -0500 (Tue, 10 Jan 2006) New Revision: 2056 Modified: trunk/labs/jbossrules/pom.xml Log: -Added drools-ide to the module list Modified: trunk/labs/jbossrules/pom.xml =================================================================== --- trunk/labs/jbossrules/pom.xml 2006-01-10 22:21:56 UTC (rev 2055) +++ trunk/labs/jbossrules/pom.xml 2006-01-10 22:22:30 UTC (rev 2056) @@ -205,6 +205,7 @@ <modules> <module>drools-core</module> + <module>drools-ide</module> <!-- <module>drools-smf</module> <module>drools-smftest</module> |
From: <jbo...@li...> - 2006-01-10 21:06:35
|
Author: unibrew Date: 2006-01-10 16:06:26 -0500 (Tue, 10 Jan 2006) New Revision: 2053 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterTools.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollVotesDatabase.java Log: [JBLAB-582] Modifying Polls and DownloadCounters to use different dir for their dynamic content. Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterTools.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterTools.java 2006-01-10 21:00:00 UTC (rev 2052) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterTools.java 2006-01-10 21:06:26 UTC (rev 2053) @@ -45,6 +45,15 @@ public static final String FORGE_FILE_ACCESS_DIR="file-access"; /** + * Name of the directory in dynamicly changing portal content dir containing download counters' files. + */ + public static final String DOWNLOAD_COUNTERS_DIR="downloads"; + /** + * Dir in portal-content containing dynamicly changing portal content. + */ + public static final String DYNAMIC_CONTENT_DIR = "dynamic-content"; + + /** * Name of JSP view file. */ public static final String DOWNLOADCOUNTER_JSP="normal.jsp"; @@ -144,7 +153,7 @@ * @return Path to main download counters descriptor. */ public static String getMainXmlPath (String portalName) { - return portalName + File.separator + ProjectsHelper.MEMBERS_DIR + File.separator + ProjectsHelper.DOWNLOADCOUNTERMAIN_DESC; + return DYNAMIC_CONTENT_DIR+File.separator+portalName+File.separator+DOWNLOAD_COUNTERS_DIR+File.separator+ProjectsHelper.DOWNLOADCOUNTERMAIN_DESC; } /** Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2006-01-10 21:00:00 UTC (rev 2052) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollTools.java 2006-01-10 21:06:26 UTC (rev 2053) @@ -88,6 +88,11 @@ public static final String POLLS_DIR="polls"; /** + * Dir for dynamicly changing content in portal. + */ + public static final String DYNAMIC_CONTENT_DIR ="dynamic-content"; + + /** * Name of JSP view file prepared for displaying voting results. */ public static final String POLLS_INFO_JSP="polls_info.jsp"; @@ -129,7 +134,7 @@ * @return Path to polls descriptor. */ public static String getMainXmlPath (final String portalName) { - return portalName + File.separator + ProjectsHelper.MEMBERS_DIR + File.separator + ProjectsHelper.POLLS_DESC; + return DYNAMIC_CONTENT_DIR+File.separator+portalName+File.separator+POLLS_DIR+File.separator+ProjectsHelper.POLLS_DESC; } /** Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollVotesDatabase.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollVotesDatabase.java 2006-01-10 21:00:00 UTC (rev 2052) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/PollVotesDatabase.java 2006-01-10 21:06:26 UTC (rev 2053) @@ -47,7 +47,7 @@ /** * Location where the *database* is stored in content repository. */ - public static final String DATABASE_LOCATION = "default/polls/database/"; + public static final String DATABASE_LOCATION = "dynamic-content/default/polls/database/"; /** * Shotoku Directory object which points to the *database*. |
From: <jbo...@li...> - 2006-01-10 17:37:11
|
Author: mar...@jb... Date: 2006-01-10 12:37:04 -0500 (Tue, 10 Jan 2006) New Revision: 2051 Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/Builder.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/WorkingMemoryImpl.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java Log: Manners -Manners now runs all rules, without exceptions, but it runs forever - so still need to get that right. Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java 2006-01-10 15:54:34 UTC (rev 2050) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java 2006-01-10 17:37:04 UTC (rev 2051) @@ -169,7 +169,6 @@ public void graphClicked(Vertex vertex, MouseEvent e) { - System.out.println( vertex ); infoPane.setText( ((DroolsVertex) vertex).getHtml() ); } Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/Builder.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/Builder.java 2006-01-10 15:54:34 UTC (rev 2050) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/Builder.java 2006-01-10 17:37:04 UTC (rev 2051) @@ -150,6 +150,7 @@ private void addRule(And and, Rule rule) { this.objectSource = null; + this.tupleSource = null; for ( Iterator it = and.getChildren().iterator(); it.hasNext(); ) { Object object = it.next(); Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/WorkingMemoryImpl.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/WorkingMemoryImpl.java 2006-01-10 15:54:34 UTC (rev 2050) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/WorkingMemoryImpl.java 2006-01-10 17:37:04 UTC (rev 2051) @@ -470,7 +470,7 @@ handles ); } handles.add( handle ); - } + } this.ruleBase.assertObject( handle, object, Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java 2006-01-10 15:54:34 UTC (rev 2050) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java 2006-01-10 17:37:04 UTC (rev 2051) @@ -21,6 +21,7 @@ import org.drools.Cheese; import org.drools.FactException; +import org.drools.FactHandle; import org.drools.ReteooJungViewer; import org.drools.RuleBase; import org.drools.RuleIntegrationException; @@ -113,23 +114,23 @@ public void test1() throws DuplicateRuleNameException, InvalidRuleException, IntrospectionException, RuleIntegrationException, RuleSetIntegrationException, InvalidPatternException, FactException, IOException, InterruptedException { RuleSet ruleSet = new RuleSet( "Miss Manners" ); ruleSet.addRule( getAssignFirstSeatRule() ); -// ruleSet.addRule( getMakePath() ); + ruleSet.addRule( getMakePath() ); ruleSet.addRule( getFindSeating() ); -// ruleSet.addRule( getPathDone() ); -// ruleSet.addRule( getAreWeDone() ); -// ruleSet.addRule( getContinueProcessing() ); + ruleSet.addRule( getPathDone() ); + ruleSet.addRule( getAreWeDone() ); + ruleSet.addRule( getContinueProcessing() ); // ruleSet.addRule( getAllDone() ); final RuleBaseImpl ruleBase = new RuleBaseImpl(); ruleBase.addRuleSet( ruleSet ); - final ReteooJungViewer viewer = new ReteooJungViewer(ruleBase); - - javax.swing.SwingUtilities.invokeLater(new Runnable() { - public void run() { - viewer.showGUI(); - } - }); +// final ReteooJungViewer viewer = new ReteooJungViewer(ruleBase); +// +// javax.swing.SwingUtilities.invokeLater(new Runnable() { +// public void run() { +// viewer.showGUI(); +// } +// }); WorkingMemory workingMemory = ruleBase.newWorkingMemory(); @@ -137,16 +138,16 @@ InputStream is = getClass().getResourceAsStream( "/manners16.dat" ); List list = getInputObjects(is); for (Iterator it = list.iterator(); it.hasNext(); ) { - workingMemory.assertObject( it.next() ); + FactHandle handle = workingMemory.assertObject( it.next() ); } workingMemory.assertObject( new Count(0) ); workingMemory.fireAllRules(); - while (viewer.isRunning()) { - Thread.sleep( 1000 ); - } +// while (viewer.isRunning()) { +// Thread.sleep( 1000 ); +// } } @@ -393,7 +394,7 @@ drools.assertObject( path ); - System.out.println( path ); + System.out.println( "make path : " + path ); } catch ( Exception e ) { throw new ConsequenceException( e ); } @@ -527,7 +528,7 @@ leftGuestColumn.addConstraint( getFieldBinding( leftGuestColumn, "name", - "leftGuestHobby" ) ); + "leftGuestName" ) ); leftGuestColumn.addConstraint( getBoundVariableConstraint( leftGuestColumn, "sex", @@ -539,12 +540,12 @@ rightGuestHobbyDeclaration, objectEqualEvaluator ) ); rule.addPattern( leftGuestColumn ); - final Declaration leftGuestNameDeclaration = rule.getDeclaration( "lefttGuestName" ); + final Declaration leftGuestNameDeclaration = rule.getDeclaration( "leftGuestName" ); // --------------- // count : Count() // --------------- - Column count = new Column( 2, + Column count = new Column( 4, countType, "count" ); @@ -573,7 +574,7 @@ // ------------ // not ( Chosen( id == seatingId, guestName == leftGuestName, hobby == rightGuestHobby ) ) // ------------ - Column notChosenColumn = new Column( 4, + Column notChosenColumn = new Column( 5, chosenType ); notChosenColumn.addConstraint( getBoundVariableConstraint( notChosenColumn, @@ -651,7 +652,7 @@ drools.modifyObject( tuple.getFactHandleForDeclaration( contextDeclaration ), context ); - System.out.println( seating ); + System.out.println( "assign seating : " + seating ); } catch ( Exception e ) { throw new ConsequenceException( e ); @@ -692,7 +693,8 @@ // context : Context( state == Context.MAKE_PATH ) // ----------- Column contextColumn = new Column( 0, - contextType ); + contextType, + "context" ); contextColumn.addConstraint( getLiteralConstraint( contextColumn, "state", @@ -740,7 +742,8 @@ context.setState( Context.CHECK_DONE ); drools.modifyObject( tuple.getFactHandleForDeclaration( contextDeclaration ), - context ); + context ); + System.out.println("path done" + seating); } catch ( Exception e ) { throw new ConsequenceException( e ); } @@ -832,7 +835,9 @@ context.setState( Context.PRINT_RESULTS ); drools.modifyObject( tuple.getFactHandleForDeclaration( contextDeclaration ), - context ); + context ); + + System.out.println( "are we done yet" ); } catch ( Exception e ) { throw new ConsequenceException( e ); } @@ -868,7 +873,8 @@ // context : Context( state == Context.CHECK_DONE ) // ----------- Column contextColumn = new Column( 0, - contextType ); + contextType, + "context" ); contextColumn.addConstraint( getLiteralConstraint( contextColumn, "state", @@ -894,7 +900,9 @@ context.setState( Context.ASSIGN_SEATS ); drools.modifyObject( tuple.getFactHandleForDeclaration( contextDeclaration ), - context ); + context ); + + System.out.println("continue processing"); } catch ( Exception e ) { throw new ConsequenceException( e ); } |
From: <jbo...@li...> - 2006-01-10 15:54:37
|
Author: rem...@jb... Date: 2006-01-10 10:54:34 -0500 (Tue, 10 Jan 2006) New Revision: 2050 Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/core/StandardContext.java trunk/labs/jbossweb/src/share/classes/org/apache/catalina/core/mbeans-descriptors.xml Log: - Port new JMX ContextConfig tweaks. Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/core/StandardContext.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/catalina/core/StandardContext.java 2006-01-10 14:20:02 UTC (rev 2049) +++ trunk/labs/jbossweb/src/share/classes/org/apache/catalina/core/StandardContext.java 2006-01-10 15:54:34 UTC (rev 2050) @@ -33,6 +33,7 @@ import java.util.Stack; import java.util.TreeMap; +import javax.management.AttributeNotFoundException; import javax.management.ListenerNotFoundException; import javax.management.MBeanNotificationInfo; import javax.management.MBeanRegistrationException; @@ -44,7 +45,6 @@ import javax.management.NotificationFilter; import javax.management.NotificationListener; import javax.management.ObjectName; -import javax.naming.NamingException; import javax.naming.directory.DirContext; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; @@ -89,7 +89,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.modeler.Registry; -import org.apache.naming.ContextBindings; import org.apache.naming.resources.BaseDirContext; import org.apache.naming.resources.DirContextURLStreamHandler; import org.apache.naming.resources.FileDirContext; @@ -4999,7 +4998,26 @@ .registerComponent(host, parentName, null); mserver.invoke(parentName, "init", new Object[] {}, new String[] {} ); } - ContextConfig config = new ContextConfig(); + + // Add the main configuration listener + LifecycleListener config = null; + try { + Object configClassname = null; + try { + configClassname = mserver.getAttribute(parentName, "configClass"); + } catch (AttributeNotFoundException e) { + // Ignore, it's normal a host may not have this optional attribute + } + if (configClassname != null) { + Class clazz = Class.forName(String.valueOf(configClassname)); + config = (LifecycleListener) clazz.newInstance(); + } else { + config = new ContextConfig(); + } + } catch (Exception e) { + log.warn("Error creating ContextConfig for " + parentName, e); + throw e; + } this.addLifecycleListener(config); if(log.isDebugEnabled()) Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/core/mbeans-descriptors.xml =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/catalina/core/mbeans-descriptors.xml 2006-01-10 14:20:02 UTC (rev 2049) +++ trunk/labs/jbossweb/src/share/classes/org/apache/catalina/core/mbeans-descriptors.xml 2006-01-10 15:54:34 UTC (rev 2050) @@ -248,6 +248,24 @@ type="org.apache.catalina.Valve"/> </operation> + <operation name="addLifecycleListener" + description="Add a lifecycle listener to this Context" + impact="ACTION" + returnType="void"> + <parameter name="listener" + description="New lifecycle listener to be added" + type="org.apache.catalina.LifecycleListener"/> + </operation> + + <operation name="removeLifecycleListener" + description="Remove a lifecycle listener from this Context" + impact="ACTION" + returnType="void"> + <parameter name="listener" + description="New lifecycle listener to be removed" + type="org.apache.catalina.LifecycleListener"/> + </operation> + <operation name="reload" description="Reload the webapplication" impact="ACTION" @@ -384,6 +402,10 @@ description="The auto deploy flag for this Host" type="boolean"/> + <attribute name="configClass" + description="The configuration class for contexts" + type="java.lang.String"/> + <attribute name="deployOnStartup" description="The deploy on startup flag for this Host" type="boolean"/> |
From: <jbo...@li...> - 2006-01-10 14:20:17
|
Author: mla...@jb... Date: 2006-01-10 09:20:02 -0500 (Tue, 10 Jan 2006) New Revision: 2049 Added: trunk/labs/jbosswebnp/src/share/generators/ trunk/labs/jbosswebnp/src/share/generators/README trunk/labs/jbosswebnp/src/share/generators/j2x/ trunk/labs/jbosswebnp/src/share/generators/j2x/J2X.java trunk/labs/jbosswebnp/src/share/generators/j2x/README trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.io.bat trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.lang.bat trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.lang.reflect.bat trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.util.bat trunk/labs/jbosswebnp/src/share/generators/j2x/gen.javax.servlet.bat trunk/labs/jbosswebnp/src/share/generators/j2x/gen.javax.servlet.http.bat trunk/labs/jbosswebnp/src/share/generators/j2x/gen.rt.bat trunk/labs/jbosswebnp/src/share/generators/j2x/servlet-api.jar Log: Initial commit for Java to XML generator. Added: trunk/labs/jbosswebnp/src/share/generators/README =================================================================== --- trunk/labs/jbosswebnp/src/share/generators/README 2006-01-10 13:39:08 UTC (rev 2048) +++ trunk/labs/jbosswebnp/src/share/generators/README 2006-01-10 14:20:02 UTC (rev 2049) @@ -0,0 +1 @@ +Platform independent generators. Added: trunk/labs/jbosswebnp/src/share/generators/j2x/J2X.java =================================================================== --- trunk/labs/jbosswebnp/src/share/generators/j2x/J2X.java 2006-01-10 13:39:08 UTC (rev 2048) +++ trunk/labs/jbosswebnp/src/share/generators/j2x/J2X.java 2006-01-10 14:20:02 UTC (rev 2049) @@ -0,0 +1,257 @@ +/* + * JBoss, the OpenSource J2EE webOS + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ + +import java.io.*; +import java.lang.reflect.*; +import java.lang.annotation.*; + +public class J2X +{ + + public static String toJniType(String t) + { + if (t.charAt(0) == '[') + return t.replace('.', '/'); + if (t.equals("boolean")) + return "Z"; + else if (t.equals("int")) + return "I"; + else if (t.equals("long")) + return "J"; + else if (t.equals("byte")) + return "B"; + else if (t.equals("void")) + return "V"; + else if (t.equals("short")) + return "S"; + else if (t.equals("char")) + return "C"; + else if (t.equals("float")) + return "F"; + else if (t.equals("double")) + return "D"; + else + return ("L" + t + ";").replace('.', '/'); + } + + public static void dumpModifiers(int mod, String p) + { + if (Modifier.isPublic(mod)) + System.out.println(p + "<modifier>public</modifier>"); + if (Modifier.isProtected(mod)) + System.out.println(p + "<modifier>protected</modifier>"); + if (Modifier.isFinal(mod)) + System.out.println(p + "<modifier>final</modifier>"); + if (Modifier.isAbstract(mod)) + System.out.println(p + "<modifier>abstract</modifier>"); + if (Modifier.isStatic(mod)) + System.out.println(p + "<modifier>static</modifier>"); + if (Modifier.isSynchronized(mod)) + System.out.println(p + "<modifier>synchronized</modifier>"); + if (Modifier.isNative(mod)) + System.out.println(p + "<modifier>native</modifier>"); + if (Modifier.isInterface(mod)) + System.out.println(p + "<modifier>interface</modifier>"); + } + + public static void dumpParams(Class [] params, String rt) + { + try { + if (params != null) { + int i; + StringBuilder sig = new StringBuilder("("); + for (i = 0; i < params.length; i++) { + String pt = toJniType(params[i].getName()); + String pn = "arg" + i; + System.out.print(" <param name=\"" + pn); + System.out.print("\" type=\"" + pt); + System.out.println("\"></param>"); + sig.append(pt); + } + sig.append(")"); + sig.append(rt); + System.out.println(" <signature>" + sig.toString() + "</signature>"); + } + } + catch(Exception e) {} + } + + public static void dumpThrows(Class [] ex) + { + try { + if (ex != null) { + int i; + for (i = 0; i < ex.length; i++) { + String pt = toJniType(ex[i].getName()); + System.out.print(" <throws type=\"" + pt); + System.out.println("\"></throws>"); + } + } + } + catch(Exception e) {} + } + + public static void dumpCtor(Constructor c) + { + try { + int mod = c.getModifiers(); + if (Modifier.isPrivate(mod)) + return; + if (c.isSynthetic()) + return; + if (!Modifier.isPublic(mod) && !Modifier.isProtected(mod)) + return; + String rt = "V"; + System.out.println(" <init>"); + dumpModifiers(mod, " "); + System.out.println(" <summary>" + c.toString() + "</summary>"); + dumpParams(c.getParameterTypes(), rt); + dumpThrows(c.getExceptionTypes()); + dumpAnnotations(c.getAnnotations()); + System.out.println(" </init>"); + } + catch(Exception e) {} + } + + public static void dumpMethod(Method m) + { + try { + int mod = m.getModifiers(); + if (Modifier.isPrivate(mod)) + return; + if (m.isSynthetic()) + return; + if (m.isBridge()) + return; + if (m.isVarArgs()) + return; + if (!Modifier.isPublic(mod) && !Modifier.isProtected(mod)) + return; + String rt = toJniType(m.getReturnType().getName()); + System.out.println(" <method name=\"" + m.getName() + "\">"); + dumpModifiers(mod, " "); + System.out.println(" <summary>" + m.toString() + "</summary>"); + dumpParams(m.getParameterTypes(), rt); + if (!rt.equals("V")) + System.out.println(" <returns type=\"" + rt + "\"></returns>"); + dumpThrows(m.getExceptionTypes()); + dumpAnnotations(m.getAnnotations()); + System.out.println(" </method>"); + } + catch(Exception e) {} + } + + public static void dumpField(Field f) + { + try { + int mod = f.getModifiers(); + if (Modifier.isNative(mod)) + return; + if (Modifier.isPrivate(mod)) + return; + if (f.isSynthetic()) + return; + if (!Modifier.isPublic(mod) && !Modifier.isProtected(mod)) + return; + String rt = toJniType(f.getType().getName()); + System.out.println(" <field name=\"" + f.getName() + "\">"); + dumpModifiers(mod, " "); + System.out.println(" <summary>" + f.toString() + "</summary>"); + System.out.println(" <signature>" + rt + "</signature>"); + Object val = null; + try { + val = f.get(f); + } + catch(Exception e) {} + if (val != null) { + System.out.println(" <value>" + val.toString() + "</value>"); + } + dumpAnnotations(f.getAnnotations()); + System.out.println(" </field>"); + } + catch(Exception e) {} + } + + public static void dumpAnnotations(Annotation [] ann) + { + try { + if (ann != null) { + int i; + for (i = 0; i < ann.length; i++) { + System.out.print(" <annotation>"); + System.out.print(ann[i].toString()); + System.out.println("</annotation>"); + } + } + } + catch(Exception e) {} + } + + public J2X(String className) + { + try { + int i; + + Class clazz = ClassLoader.getSystemClassLoader().loadClass(className); + System.out.println(" <class>"); + System.out.println(" <name>" + clazz.getName() + "</name>"); + if (clazz.getSuperclass() != null) + System.out.println(" <extends>" + clazz.getSuperclass().getName() + "</extends>"); + else + System.out.println(" <extends>java.lang.Object</extends>"); + + dumpModifiers(clazz.getModifiers(), " "); + System.out.println(" <summary>" + clazz.toString() + "</summary>"); + Constructor[] ctors = clazz.getDeclaredConstructors(); + if (ctors != null) { + for (i = 0; i < ctors.length; i++) { + dumpCtor(ctors[i]); + } + } + Method[] methods = clazz.getDeclaredMethods(); + if (methods != null) { + for (i = 0; i < methods.length; i++) { + dumpMethod(methods[i]); + } + } + Field[] fields = clazz.getDeclaredFields(); + if (fields != null) { + for (i = 0; i < fields.length; i++) { + dumpField(fields[i]); + } + } + System.out.println(" </class>"); + } + catch(Exception e) { + System.err.println("Failed " + className); + e.printStackTrace(); + } + } + + public static void main(String[] args) + { + try { + if (args.length < 1) { + System.err.println("Usage: DumpJavaClass <Class Name>"); + return; + } + if (args[0].equals("head")) { + System.out.println("<?xml version=\"1.0\"?>"); + System.out.println("<classes>"); + } + else if (args[0].equals("tail")) { + System.out.println("</classes>"); + } + else { + J2X generator = new J2X(args[0]); + } + } + catch(Exception e) { + e.printStackTrace(); + } + } +} Added: trunk/labs/jbosswebnp/src/share/generators/j2x/README =================================================================== --- trunk/labs/jbosswebnp/src/share/generators/j2x/README 2006-01-10 13:39:08 UTC (rev 2048) +++ trunk/labs/jbosswebnp/src/share/generators/j2x/README 2006-01-10 14:20:02 UTC (rev 2049) @@ -0,0 +1,3 @@ +Use Java5 + +javac J2X.java Added: trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.io.bat =================================================================== --- trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.io.bat 2006-01-10 13:39:08 UTC (rev 2048) +++ trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.io.bat 2006-01-10 14:20:02 UTC (rev 2049) @@ -0,0 +1,14 @@ +@echo off +java J2X head >java.io.xml + +java J2X java.io.InputStream >>java.io.xml +java J2X java.io.FilterInputStream >>java.io.xml +java J2X java.io.BufferedInputStream >>java.io.xml +java J2X java.io.ByteArrayInputStream >>java.io.xml +java J2X java.io.OutputStream >>java.io.xml +java J2X java.io.FilterOutputStream >>java.io.xml +java J2X java.io.BufferedOutputStream >>java.io.xml +java J2X java.io.ByteArrayOutputStream >>java.io.xml +java J2X java.io.IOException >>java.io.xml + +java J2X tail >>java.io.xml Added: trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.lang.bat =================================================================== --- trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.lang.bat 2006-01-10 13:39:08 UTC (rev 2048) +++ trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.lang.bat 2006-01-10 14:20:02 UTC (rev 2049) @@ -0,0 +1,40 @@ +@echo off +java J2X head >java.lang.xml +java J2X java.lang.Object >>java.lang.xml +java J2X java.lang.Class >>java.lang.xml +java J2X java.lang.ClassLoader >>java.lang.xml +java J2X java.lang.Package >>java.lang.xml +java J2X java.lang.Runtime >>java.lang.xml +java J2X java.lang.SecurityManager >>java.lang.xml +java J2X java.lang.StackTraceElement >>java.lang.xml +java J2X java.lang.System >>java.lang.xml +java J2X java.lang.Throwable >>java.lang.xml + +java J2X java.lang.Exception >>java.lang.xml +java J2X java.lang.ClassCastException >>java.lang.xml +java J2X java.lang.ClassNotFoundException >>java.lang.xml +java J2X java.lang.CloneNotSupportedException >>java.lang.xml +java J2X java.lang.IllegalAccessException >>java.lang.xml +java J2X java.lang.IllegalArgumentException >>java.lang.xml +java J2X java.lang.IllegalStateException >>java.lang.xml +java J2X java.lang.IndexOutOfBoundsException >>java.lang.xml +java J2X java.lang.InstantiationException >>java.lang.xml +java J2X java.lang.NegativeArraySizeException >>java.lang.xml +java J2X java.lang.NoSuchFieldException >>java.lang.xml +java J2X java.lang.NoSuchMethodException >>java.lang.xml +java J2X java.lang.NullPointerException >>java.lang.xml +java J2X java.lang.NumberFormatException >>java.lang.xml +java J2X java.lang.RuntimeException >>java.lang.xml +java J2X java.lang.SecurityException >>java.lang.xml +java J2X java.lang.TypeNotPresentException >>java.lang.xml +java J2X java.lang.UnsupportedOperationException >>java.lang.xml + +java J2X java.lang.Error >>java.lang.xml +java J2X java.lang.InternalError >>java.lang.xml +java J2X java.lang.OutOfMemoryError >>java.lang.xml +java J2X java.lang.StackOverflowError >>java.lang.xml +java J2X java.lang.UnknownError >>java.lang.xml +java J2X java.lang.LinkageError >>java.lang.xml +java J2X java.lang.UnsatisfiedLinkError >>java.lang.xml +java J2X java.lang.VirtualMachineError >>java.lang.xml +java J2X tail >>java.lang.xml Added: trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.lang.reflect.bat =================================================================== --- trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.lang.reflect.bat 2006-01-10 13:39:08 UTC (rev 2048) +++ trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.lang.reflect.bat 2006-01-10 14:20:02 UTC (rev 2049) @@ -0,0 +1,13 @@ +@echo off +java J2X head >java.lang.reflect.xml + +java J2X java.lang.reflect.Type >>java.lang.reflect.xml +java J2X java.lang.reflect.AccessibleObject >>java.lang.reflect.xml +java J2X java.lang.reflect.Array >>java.lang.reflect.xml +java J2X java.lang.reflect.Constructor >>java.lang.reflect.xml +java J2X java.lang.reflect.Field >>java.lang.reflect.xml +java J2X java.lang.reflect.Method >>java.lang.reflect.xml +java J2X java.lang.reflect.Modifier >>java.lang.reflect.xml +java J2X java.lang.reflect.Proxy >>java.lang.reflect.xml + +java J2X tail >>java.lang.reflect.xml Added: trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.util.bat =================================================================== --- trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.util.bat 2006-01-10 13:39:08 UTC (rev 2048) +++ trunk/labs/jbosswebnp/src/share/generators/j2x/gen.java.util.bat 2006-01-10 14:20:02 UTC (rev 2049) @@ -0,0 +1,22 @@ +@echo off +java J2X head >java.util.xml + +java J2X java.util.AbstractCollection >>java.util.xml +java J2X java.util.AbstractList >>java.util.xml +java J2X java.util.AbstractSequentialList >>java.util.xml +java J2X java.util.Calendar >>java.util.xml +java J2X java.util.Currency >>java.util.xml +java J2X java.util.Date >>java.util.xml +java J2X java.util.Dictionary >>java.util.xml +java J2X java.util.Enumeration >>java.util.xml +java J2X java.util.EventObject >>java.util.xml +java J2X java.util.Hashtable >>java.util.xml +java J2X java.util.LinkedList >>java.util.xml +java J2X java.util.Locale >>java.util.xml +java J2X java.util.Properties >>java.util.xml +java J2X java.util.ResourceBundle >>java.util.xml +java J2X java.util.TimeZone >>java.util.xml +java J2X java.util.Vector >>java.util.xml +java J2X java.util.NoSuchElementException >>java.util.xml + +java J2X tail >>java.util.xml Added: trunk/labs/jbosswebnp/src/share/generators/j2x/gen.javax.servlet.bat =================================================================== --- trunk/labs/jbosswebnp/src/share/generators/j2x/gen.javax.servlet.bat 2006-01-10 13:39:08 UTC (rev 2048) +++ trunk/labs/jbosswebnp/src/share/generators/j2x/gen.javax.servlet.bat 2006-01-10 14:20:02 UTC (rev 2049) @@ -0,0 +1,52 @@ +@echo off +setlocal +set CLASSPATH=.;./servlet-api.jar +java J2X head >javax.servlet.xml + +java J2X javax.servlet.Servlet >>javax.servlet.xml +java J2X javax.servlet.ServletConfig >>javax.servlet.xml +java J2X javax.servlet.ServletContext >>javax.servlet.xml +java J2X javax.servlet.ServletContextAttributeEvent >>javax.servlet.xml +java J2X javax.servlet.ServletContextAttributeListener >>javax.servlet.xml +java J2X javax.servlet.ServletContextEvent >>javax.servlet.xml +java J2X javax.servlet.ServletContextListener >>javax.servlet.xml +java J2X javax.servlet.ServletException >>javax.servlet.xml +java J2X javax.servlet.ServletInputStream >>javax.servlet.xml +java J2X javax.servlet.ServletOutputStream >>javax.servlet.xml +java J2X javax.servlet.ServletRequest >>javax.servlet.xml +java J2X javax.servlet.ServletRequestAttributeEvent >>javax.servlet.xml +java J2X javax.servlet.ServletRequestAttributeListener >>javax.servlet.xml +java J2X javax.servlet.ServletRequestEvent >>javax.servlet.xml +java J2X javax.servlet.ServletRequestListener >>javax.servlet.xml +java J2X javax.servlet.ServletRequestWrapper >>javax.servlet.xml +java J2X javax.servlet.ServletResponse >>javax.servlet.xml +java J2X javax.servlet.ServletResponseWrapper >>javax.servlet.xml +java J2X javax.servlet.SingleThreadModel >>javax.servlet.xml +java J2X javax.servlet.Filter >>javax.servlet.xml +java J2X javax.servlet.FilterChain >>javax.servlet.xml +java J2X javax.servlet.FilterConfig >>javax.servlet.xml +java J2X javax.servlet.GenericServlet >>javax.servlet.xml +java J2X javax.servlet.RequestDispatcher >>javax.servlet.xml +java J2X javax.servlet.UnavailableException >>javax.servlet.xml + +REM javax.servlet.http package + +java J2X javax.servlet.http.Cookie >>javax.servlet.xml +java J2X javax.servlet.http.HttpServlet >>javax.servlet.xml +java J2X javax.servlet.http.HttpServletRequest >>javax.servlet.xml +java J2X javax.servlet.http.HttpServletRequestWrapper >>javax.servlet.xml +java J2X javax.servlet.http.HttpServletResponse >>javax.servlet.xml +java J2X javax.servlet.http.HttpServletResponseWrapper >>javax.servlet.xml +java J2X javax.servlet.http.HttpSession >>javax.servlet.xml +java J2X javax.servlet.http.HttpSessionActivationListener >>javax.servlet.xml +java J2X javax.servlet.http.HttpSessionAttributeListener >>javax.servlet.xml +java J2X javax.servlet.http.HttpSessionBindingEvent >>javax.servlet.xml +java J2X javax.servlet.http.HttpSessionBindingListener >>javax.servlet.xml +java J2X javax.servlet.http.HttpSessionContext >>javax.servlet.xml +java J2X javax.servlet.http.HttpSessionEvent >>javax.servlet.xml +java J2X javax.servlet.http.HttpSessionListener >>javax.servlet.xml +java J2X javax.servlet.http.HttpUtils >>javax.servlet.xml +java J2X javax.servlet.http.NoBodyOutputStream >>javax.servlet.xml +java J2X javax.servlet.http.NoBodyResponse >>javax.servlet.xml + +java J2X tail >>javax.servlet.xml Added: trunk/labs/jbosswebnp/src/share/generators/j2x/gen.javax.servlet.http.bat =================================================================== --- trunk/labs/jbosswebnp/src/share/generators/j2x/gen.javax.servlet.http.bat 2006-01-10 13:39:08 UTC (rev 2048) +++ trunk/labs/jbosswebnp/src/share/generators/j2x/gen.javax.servlet.http.bat 2006-01-10 14:20:02 UTC (rev 2049) @@ -0,0 +1,24 @@ +@echo off +setlocal +set CLASSPATH=.;./servlet-api.jar +java J2X head >javax.servlet.http.xml + +java J2X javax.servlet.http.Cookie >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpServlet >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpServletRequest >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpServletRequestWrapper >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpServletResponse >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpServletResponseWrapper >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpSession >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpSessionActivationListener >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpSessionAttributeListener >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpSessionBindingEvent >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpSessionBindingListener >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpSessionContext >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpSessionEvent >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpSessionListener >>javax.servlet.http.xml +java J2X javax.servlet.http.HttpUtils >>javax.servlet.http.xml +java J2X javax.servlet.http.NoBodyOutputStream >>javax.servlet.http.xml +java J2X javax.servlet.http.NoBodyResponse >>javax.servlet.http.xml + +java J2X tail >>javax.servlet.http.xml Added: trunk/labs/jbosswebnp/src/share/generators/j2x/gen.rt.bat =================================================================== --- trunk/labs/jbosswebnp/src/share/generators/j2x/gen.rt.bat 2006-01-10 13:39:08 UTC (rev 2048) +++ trunk/labs/jbosswebnp/src/share/generators/j2x/gen.rt.bat 2006-01-10 14:20:02 UTC (rev 2049) @@ -0,0 +1,83 @@ +@echo off +java J2X head >java.rt.xml +java J2X java.lang.Object >>java.rt.xml +java J2X java.lang.Class >>java.rt.xml +java J2X java.lang.ClassLoader >>java.rt.xml +java J2X java.lang.Package >>java.rt.xml +java J2X java.lang.Runtime >>java.rt.xml +java J2X java.lang.SecurityManager >>java.rt.xml +java J2X java.lang.StackTraceElement >>java.rt.xml +java J2X java.lang.System >>java.rt.xml +java J2X java.lang.Throwable >>java.rt.xml + +java J2X java.lang.Exception >>java.rt.xml +java J2X java.lang.ClassCastException >>java.rt.xml +java J2X java.lang.ClassNotFoundException >>java.rt.xml +java J2X java.lang.CloneNotSupportedException >>java.rt.xml +java J2X java.lang.IllegalAccessException >>java.rt.xml +java J2X java.lang.IllegalArgumentException >>java.rt.xml +java J2X java.lang.IllegalStateException >>java.rt.xml +java J2X java.lang.IndexOutOfBoundsException >>java.rt.xml +java J2X java.lang.InstantiationException >>java.rt.xml +java J2X java.lang.NegativeArraySizeException >>java.rt.xml +java J2X java.lang.NoSuchFieldException >>java.rt.xml +java J2X java.lang.NoSuchMethodException >>java.rt.xml +java J2X java.lang.NullPointerException >>java.rt.xml +java J2X java.lang.NumberFormatException >>java.rt.xml +java J2X java.lang.RuntimeException >>java.rt.xml +java J2X java.lang.SecurityException >>java.rt.xml +java J2X java.lang.TypeNotPresentException >>java.rt.xml +java J2X java.lang.UnsupportedOperationException >>java.rt.xml + +java J2X java.lang.Error >>java.rt.xml +java J2X java.lang.InternalError >>java.rt.xml +java J2X java.lang.OutOfMemoryError >>java.rt.xml +java J2X java.lang.StackOverflowError >>java.rt.xml +java J2X java.lang.UnknownError >>java.rt.xml +java J2X java.lang.LinkageError >>java.rt.xml +java J2X java.lang.UnsatisfiedLinkError >>java.rt.xml +java J2X java.lang.VirtualMachineError >>java.rt.xml + +REM java.io +java J2X java.io.InputStream >>java.rt.xml +java J2X java.io.FilterInputStream >>java.rt.xml +java J2X java.io.BufferedInputStream >>java.rt.xml +java J2X java.io.ByteArrayInputStream >>java.rt.xml +java J2X java.io.OutputStream >>java.rt.xml +java J2X java.io.FilterOutputStream >>java.rt.xml +java J2X java.io.BufferedOutputStream >>java.rt.xml +java J2X java.io.ByteArrayOutputStream >>java.rt.xml +java J2X java.io.IOException >>java.rt.xml + +REM java.lang.reflect +java J2X java.lang.reflect.Type >>java.rt.xml +java J2X java.lang.reflect.AccessibleObject >>java.rt.xml +java J2X java.lang.reflect.Array >>java.rt.xml +java J2X java.lang.reflect.Constructor >>java.rt.xml +java J2X java.lang.reflect.Field >>java.rt.xml +java J2X java.lang.reflect.Method >>java.rt.xml +java J2X java.lang.reflect.Modifier >>java.rt.xml +java J2X java.lang.reflect.Proxy >>java.rt.xml + +REM java.lang.util +java J2X java.util.AbstractCollection >>java.rt.xml +java J2X java.util.AbstractList >>java.rt.xml +java J2X java.util.AbstractSequentialList >>java.rt.xml +java J2X java.util.Calendar >>java.rt.xml +java J2X java.util.Currency >>java.rt.xml +java J2X java.util.Date >>java.rt.xml +java J2X java.util.Dictionary >>java.rt.xml +java J2X java.util.Enumeration >>java.rt.xml +java J2X java.util.EventObject >>java.rt.xml +java J2X java.util.Hashtable >>java.rt.xml +java J2X java.util.LinkedList >>java.rt.xml +java J2X java.util.Locale >>java.rt.xml +java J2X java.util.Properties >>java.rt.xml +java J2X java.util.ResourceBundle >>java.rt.xml +java J2X java.util.TimeZone >>java.rt.xml +java J2X java.util.Vector >>java.rt.xml +java J2X java.util.NoSuchElementException >>java.rt.xml + + +java J2X tail >>java.rt.xml + Added: trunk/labs/jbosswebnp/src/share/generators/j2x/servlet-api.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/jbosswebnp/src/share/generators/j2x/servlet-api.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream |
From: <jbo...@li...> - 2006-01-10 13:39:25
|
Author: mla...@jb... Date: 2006-01-10 08:39:08 -0500 (Tue, 10 Jan 2006) New Revision: 2048 Added: trunk/labs/jbosswebnp/LICENSE trunk/labs/jbosswebnp/README trunk/labs/jbosswebnp/src/ trunk/labs/jbosswebnp/src/README trunk/labs/jbosswebnp/src/linux/ trunk/labs/jbosswebnp/src/linux/README trunk/labs/jbosswebnp/src/share/ trunk/labs/jbosswebnp/src/share/README trunk/labs/jbosswebnp/src/share/classes/ trunk/labs/jbosswebnp/src/share/classes/README trunk/labs/jbosswebnp/src/share/native/ trunk/labs/jbosswebnp/src/share/native/README trunk/labs/jbosswebnp/src/share/native/build/ trunk/labs/jbosswebnp/src/share/native/build/README trunk/labs/jbosswebnp/src/share/native/srclib/ trunk/labs/jbosswebnp/src/share/native/srclib/README trunk/labs/jbosswebnp/src/solaris/ trunk/labs/jbosswebnp/src/solaris/README trunk/labs/jbosswebnp/src/windows/ trunk/labs/jbosswebnp/src/windows/README trunk/labs/jbosswebnp/src/windows/classes/ trunk/labs/jbosswebnp/src/windows/classes/README trunk/labs/jbosswebnp/src/windows/generators/ trunk/labs/jbosswebnp/src/windows/generators/README trunk/labs/jbosswebnp/src/windows/native/ trunk/labs/jbosswebnp/src/windows/native/README trunk/labs/jbosswebnp/xdocs/ trunk/labs/jbosswebnp/xdocs/style.css trunk/labs/jbosswebnp/xdocs/style.xsl Log: The saga has been started! Added: trunk/labs/jbosswebnp/LICENSE =================================================================== --- trunk/labs/jbosswebnp/LICENSE 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/LICENSE 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + Added: trunk/labs/jbosswebnp/README =================================================================== --- trunk/labs/jbosswebnp/README 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/README 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1,17 @@ +APPARATUS, METHOD AND COMPUTER PROGRAM PRODUCT FOR +FACILITATING THE INTEROPERABILITY OF VIRTUAL MACHINES. + +Source file organization +------------------------- +/src Root of all source (java, native) +/src/share Shared source for all platforms +/src/share/classes Java classes +/src/share/native Shared native code +/src/share/srclib Shared native third-party libraries + apr, openssl, etc... +/src/linux Linux specific sources +/src/solaris Solaris specific sources +/src/windows Windows specific sources +/src/windows/classes Windows specific Java code +/src/windows/native Windows specific native code +/xdocs XML documentation sources Added: trunk/labs/jbosswebnp/src/README =================================================================== --- trunk/labs/jbosswebnp/src/README 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/src/README 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1 @@ +Root of all source code. Added: trunk/labs/jbosswebnp/src/linux/README =================================================================== --- trunk/labs/jbosswebnp/src/linux/README 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/src/linux/README 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1 @@ +Linux specific sources. Added: trunk/labs/jbosswebnp/src/share/README =================================================================== --- trunk/labs/jbosswebnp/src/share/README 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/src/share/README 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1 @@ +Shared source for all platforms Added: trunk/labs/jbosswebnp/src/share/classes/README =================================================================== --- trunk/labs/jbosswebnp/src/share/classes/README 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/src/share/classes/README 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1 @@ +Shared Java code. Added: trunk/labs/jbosswebnp/src/share/native/README =================================================================== --- trunk/labs/jbosswebnp/src/share/native/README 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/src/share/native/README 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1 @@ +Shared native code. Added: trunk/labs/jbosswebnp/src/share/native/build/README =================================================================== --- trunk/labs/jbosswebnp/src/share/native/build/README 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/src/share/native/build/README 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1 @@ +Shared native build tools and resources. Added: trunk/labs/jbosswebnp/src/share/native/srclib/README =================================================================== --- trunk/labs/jbosswebnp/src/share/native/srclib/README 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/src/share/native/srclib/README 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1 @@ +Shared native third-party libraries. Added: trunk/labs/jbosswebnp/src/solaris/README =================================================================== --- trunk/labs/jbosswebnp/src/solaris/README 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/src/solaris/README 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1 @@ +Solaris specific sources. Added: trunk/labs/jbosswebnp/src/windows/README =================================================================== --- trunk/labs/jbosswebnp/src/windows/README 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/src/windows/README 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1 @@ +Windows specific sources. Added: trunk/labs/jbosswebnp/src/windows/classes/README =================================================================== --- trunk/labs/jbosswebnp/src/windows/classes/README 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/src/windows/classes/README 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1 @@ +Windows specific Java code. Added: trunk/labs/jbosswebnp/src/windows/generators/README =================================================================== --- trunk/labs/jbosswebnp/src/windows/generators/README 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/src/windows/generators/README 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1 @@ +Proxy code generators. Added: trunk/labs/jbosswebnp/src/windows/native/README =================================================================== --- trunk/labs/jbosswebnp/src/windows/native/README 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/src/windows/native/README 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1 @@ +Windows specific native code. Added: trunk/labs/jbosswebnp/xdocs/style.css =================================================================== --- trunk/labs/jbosswebnp/xdocs/style.css 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/xdocs/style.css 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1,218 @@ +html { + font-size: 14px; +} + +body { + background-color: #ffffff; + padding: 0 1em 0 0; + margin: 0; + font-family: Helvetica, Arial, sans-serif; + font-weight: normal; +} + +h1 { + padding: 0.2em; + margin: 0; + background-color: inherit; + text-decoration: none; + font-size: 1.6em; + font-weight: bold; +} + +h2 { + padding: 0.2em 0 0.2em 0.7em; + margin: 0 ; + text-decoration: none; + font-size: 1.4em; + font-weight: bold; +} + +h2 a, +h2 a:hover, +h2 a:active { + color: inherit; + background-color: inherit; + text-decoration: none; +} + +h3 { + background-color: inherit; + text-decoration: none; + font-weight: bold; + font-size: 1.2em; + padding: 0; + margin: 0 ; +} + +h4 { + background-color: inherit; + text-decoration: none; + font-weight: bold; + font-size: 1.1em; + padding: 0; + margin: 0 ; +} + +/* margin adjustment */ +h3 + *, h4 + * { + margin-top: 0; +} + +strong { + font-weight: bold; +} + +q, em, var { + font-style: italic; +} + +/* fixup IE & Opera + * otherwise they forget to inherit + * the computed font-size value + */ +table, code { + font-size: 1em; +} + +a:link, +a:visited, +a:active { + color: #0073c7; + background-color: inherit; +} + +a:link:hover, +a:visited:hover { + color: #0073c7; + background-color: inherit; +} + +div.screen { + background-color: #000000; + font-size: 1em; + color: #ffffff; + margin: 1em 2em 1em 1em; +} + +div.example { + background-color: #e5ecf3; + color: #000000; + padding: 0.5em; + margin: 1em 2em 1em 1em; +} + +div.warn { + color: #ed2e38; +} + +pre, code { + font-family: Andale Mono, Courier New, Courier, monospace; + font-weight: normal; + font-style: normal; + font-size: 1em; +} +em.screen { + font-weight: normal; + font-style: normal; + font-size: 1em; + color: #c0c0c0; +} +p.screen { + background-color: #000000; + border-style: none; + color: #c0c0c0; + margin-left: 0.5em; + margin-right: 0px; + text-align: left; + font-size: 1em; +} +b.screen { + font-weight: normal; + font-style: normal; + color: #c0c0c0; + font-size: 1em; +} + +b.note { + font-weight: normal; + font-style: italic; + color: #c0c0c0; + font-size: 1em; +} + +code.screen { + font-family: Andale Mono, Courier New, Courier, monospace; + background-color: #000000; + border-style: none; + color: #c0c0c0; + margin-left: 0.5em; + margin-right: 0px; + text-align: left; +} +b.code { + font-family: Andale Mono, Courier New, Courier, monospace; + font-weight: normal; + font-style: normal; + font-size: 1em; + color: #023264; +} +p.todo { + background-color: #ffffff; + border-style: none; + color: #000000; + margin-left: 1.5em; + margin-right: 0.5em; + text-align: justify; + font-size: 0.8em; +} + +td.section { + background-color: #023264; + color: #ffffff; + font-weight: bold; + font-size: 1.2em; + padding-left: 0.5em; +} + +td.subsection { + background-color: #557697; + color: #ffffff; + font-weight: bold; + font-size: 1em; + padding-left: 0.5em; +} + +th.directive { + background-color: #e5ecf3; + color: #405871; + font-weight: bold; + font-size: 1em; +} + +th.attribute { + background-color: #e5ecf3; + color: #405871; + font-weight: bold; + font-size: 1em; +} + +table.screen { + background-color: #000000; + border: 1px solid; +} + +td.screen { + padding-left: 0.5em; + background-color: #000000; + text-align: left; +} + +td.figure { + background-color: #ffffff; + color: #000000; + font-family: Andale Mono, Courier New, Courier, monospace; + font-weight: normal; + font-style: italic; + font-size: 0.8em; + text-align: justify; +} Added: trunk/labs/jbosswebnp/xdocs/style.xsl =================================================================== --- trunk/labs/jbosswebnp/xdocs/style.xsl 2006-01-10 00:54:41 UTC (rev 2047) +++ trunk/labs/jbosswebnp/xdocs/style.xsl 2006-01-10 13:39:08 UTC (rev 2048) @@ -0,0 +1,677 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- Content Stylesheet for "jbossweb-docs" Documentation --> + +<!-- $Id: style.xsl,v 1.0 2005/01/03 23:20:05 markt Exp $ --> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + + <!-- Output method --> + <xsl:output method="html" encoding="iso-8859-1" indent="no"/> + + <!-- Defined parameters (overrideable) --> + <xsl:param name="home-name" select="'JBoss Inc.'"/> + <xsl:param name="home-href" select="'http://www.jboss.com/'"/> + <xsl:param name="home-logo" select="'/images/jbosslogo.gif'"/> + <xsl:param name="printer-logo" select="'/images/printer.gif'"/> + <xsl:param name="relative-path" select="'.'"/> + <xsl:param name="void-image" select="'/images/void.gif'"/> + <xsl:param name="project-menu" select="'menu'"/> + <xsl:param name="standalone" select="''"/> + <xsl:param name="buglink" select="'http://jira.jboss.com/jira/browse/JBWEB-'"/> + <xsl:param name="home-site" select="'http://labs.jboss.com/portal/index.html?ctrl:id=page.default.info&project=jbossweb'"/> + <!-- Process an entire document into an HTML page --> + <xsl:template match="document"> + <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> + + <xsl:comment> + !!! This file is generated from xml source: DO NOT EDIT !!! + </xsl:comment> + <head> + <title><xsl:value-of select="project/title"/> - <xsl:value-of select="properties/title"/></title> + <xsl:for-each select="properties/author"> + <xsl:variable name="name"> + <xsl:value-of select="."/> + </xsl:variable> + <xsl:variable name="email"> + <xsl:value-of select="@email"/> + </xsl:variable> + <meta name="author" value="{$name}"/> + <meta name="email" value="{$email}"/> + </xsl:for-each> + <link href="{$relative-path}/style.css" type="text/css" rel="stylesheet"/> + </head> + <body> + <table border="0" width="100%" cellspacing="4"> + <xsl:comment>PAGE HEADER</xsl:comment> + <tr><td colspan="2"> + <xsl:comment>JBOSS LOGO</xsl:comment> + <xsl:variable name="alt"> + <xsl:value-of select="$home-name"/> + </xsl:variable> + <xsl:variable name="href"> + <xsl:value-of select="$home-href"/> + </xsl:variable> + <xsl:variable name="src"> + <xsl:value-of select="$relative-path"/><xsl:value-of select="$home-logo"/> + </xsl:variable> + <a href="{$href}"> + <img src="{$src}" align="left" alt="{$alt}" border="0"/> + </a> + <xsl:if test="project/logo"> + <xsl:variable name="alt"> + <xsl:value-of select="project/logo"/> + </xsl:variable> + <xsl:variable name="home"> + <xsl:value-of select="project/@href"/> + </xsl:variable> + <xsl:variable name="src"> + <xsl:value-of select="$relative-path"/><xsl:value-of select="project/logo/@href"/> + </xsl:variable> + + <xsl:comment>PROJECT LOGO</xsl:comment> + <a href="{$home-site}"> + <img src="{$src}" align="right" alt="{$alt}" border="0"/> + </a> + </xsl:if> + </td></tr> + + <xsl:comment>HEADER SEPARATOR</xsl:comment> + <tr> + <td colspan="2"> + <hr noshade="noshade" size="1"/> + </td> + </tr> + + <tr> + + <!-- Don't generate a menu if styling printer friendly docs --> + <xsl:if test="$project-menu = 'menu'"> + <xsl:comment>LEFT SIDE NAVIGATION</xsl:comment> + <td width="20%" valign="top" nowrap="true"> + <xsl:apply-templates select="project/body/menu"/> + </td> + </xsl:if> + + <xsl:comment>RIGHT SIDE MAIN BODY</xsl:comment> + <td width="80%" valign="top" align="left"> + <table border="0" width="100%" cellspacing="4"> + <tr> + <td align="left" valign="top"> + <h1><xsl:value-of select="project/title"/></h1> + <h2><xsl:value-of select="properties/title"/></h2> + </td> + <td align="right" valign="top" nowrap="true"> + <!-- Add the printer friendly link for docs with a menu --> + <xsl:if test="$project-menu = 'menu'"> + <xsl:variable name="src"> + <xsl:value-of select="$relative-path"/><xsl:value-of select="$printer-logo"/> + </xsl:variable> + <xsl:variable name="url"> + <xsl:value-of select="/document/@url"/> + </xsl:variable> + <small> + <a href="printer/{$url}"> + <img src="{$src}" border="0" alt="Printer Friendly Version"/> + <br />print-friendly<br />version + </a> + </small> + </xsl:if> + <xsl:if test="$project-menu != 'menu'"> + <xsl:variable name="void"> + <xsl:value-of select="$relative-path"/><xsl:value-of select="$void-image"/> + </xsl:variable> + <img src="{$void}" width="1" height="1" vspace="0" hspace="0" border="0"/> + </xsl:if> + </td> + </tr> + </table> + <xsl:apply-templates select="body/section"/> + </td> + </tr> + + <xsl:comment>FOOTER SEPARATOR</xsl:comment> + <tr> + <td colspan="2"> + <hr noshade="noshade" size="1"/> + </td> + </tr> + + <xsl:comment>PAGE FOOTER</xsl:comment> + <tr><td colspan="2"> + <div align="center"><font color="#525D76" size="-1"><em> + Copyright © 2005, JBoss Inc. + </em></font></div> + </td></tr> + + </table> + </body> + </html> + + </xsl:template> + + + <!-- Process a menu for the navigation bar --> + <xsl:template match="menu"> + <p><strong><xsl:value-of select="@name"/></strong></p> + <ul> + <xsl:apply-templates select="item"/> + </ul> + </xsl:template> + + + <!-- Process a menu item for the navigation bar --> + <xsl:template match="item"> + <xsl:variable name="href"> + <xsl:value-of select="@href"/> + </xsl:variable> + <li><a href="{$href}"><xsl:value-of select="@name"/></a></li> + </xsl:template> + + <!-- Process a figure --> + <xsl:template match="figure"> + <xsl:variable name="src"> + <xsl:value-of select="$relative-path"/><xsl:value-of select="@src"/> + </xsl:variable> + <xsl:variable name="name"> + <xsl:value-of select="@name"/> + </xsl:variable> + <table border="0" cellspacing="0" cellpadding="0"> + <tr><td><img src="{$src}" alt="{$name}" border="0"/></td></tr> + <tr><td class="figure"><xsl:value-of select="@name"/>. <xsl:value-of select="@text"/></td></tr> + </table> + </xsl:template> + + <xsl:template match="image"> + <xsl:variable name="src"> + <xsl:value-of select="$relative-path"/><xsl:value-of select="@src"/> + </xsl:variable> + <xsl:variable name="alt"> + <xsl:value-of select="@alt"/> + </xsl:variable> + <img src="{$src}" alt="{$alt}" border="0"/> + </xsl:template> + + <!-- Process a documentation section --> + <xsl:template match="section"> + <xsl:variable name="name"> + <xsl:value-of select="@name"/> + </xsl:variable> + <table border="0" cellspacing="0" cellpadding="0" width="100%"> + <!-- Section heading --> + <tr><td class="section" colspan="2"> + <a name="{$name}"> + <xsl:value-of select="@name"/></a> + </td></tr> + <!-- Section body --> + <tr> + <td width="20px"></td> + <td><br /> + <xsl:apply-templates/> + </td></tr> + </table> + </xsl:template> + + + <!-- Process a documentation subsection --> + <xsl:template match="subsection"> + <xsl:variable name="name"> + <xsl:value-of select="@name"/> + </xsl:variable> + <table border="0" cellspacing="0" cellpadding="2" width="100%"> + <!-- Subsection heading --> + <tr><td class="subsection" colspan="2"> + <a name="{$name}"> + <xsl:value-of select="@name"/></a> + </td></tr> + <!-- Subsection body --> + <tr> + <td width="20px"></td> + <td><br /> + <xsl:apply-templates/> + </td></tr> + </table> + <br/> + </xsl:template> + + + <!-- Process an attributes list with nested attribute elements --> + <xsl:template match="attributes"> + <table border="1" cellpadding="5" width="100%"> + <tr> + <th width="15%" class="directive"> + <xsl:choose> + <xsl:when test="@name != ''"> + <xsl:value-of select="@name"/> + </xsl:when> + <xsl:otherwise> + Attribute + </xsl:otherwise> + </xsl:choose> + </th> + <th width="85%" class="directive"> + <xsl:choose> + <xsl:when test="@value != ''"> + <xsl:value-of select="@value"/> + </xsl:when> + <xsl:otherwise> + Description + </xsl:otherwise> + </xsl:choose> + </th> + </tr> + <xsl:for-each select="attribute"> + <tr> + <td align="left" valign="center"> + <xsl:if test="@required = 'true'"> + <strong><code><xsl:value-of select="@name"/></code></strong> + </xsl:if> + <xsl:if test="@required != 'true'"> + <code><xsl:value-of select="@name"/></code> + </xsl:if> + </td> + <td align="left" valign="center"> + <xsl:apply-templates/> + </td> + </tr> + </xsl:for-each> + </table> + </xsl:template> + + <!-- Process an directives list with nested directive elements --> + <xsl:template match="directives"> + <table border="1" cellpadding="5" width="100%"> + <tr> + <th width="15%" class="directive"> + <xsl:choose> + <xsl:when test="@name != ''"> + <xsl:value-of select="@name"/> + </xsl:when> + <xsl:otherwise> + Directive + </xsl:otherwise> + </xsl:choose> + </th> + <th width="10%" class="directive"> + <xsl:choose> + <xsl:when test="@default != ''"> + <xsl:value-of select="@default"/> + </xsl:when> + <xsl:otherwise> + Default + </xsl:otherwise> + </xsl:choose> + </th> + <th width="75%" class="directive"> + <xsl:choose> + <xsl:when test="@description != ''"> + <xsl:value-of select="@description"/> + </xsl:when> + <xsl:otherwise> + Description + </xsl:otherwise> + </xsl:choose> + </th> + </tr> + <xsl:for-each select="directive"> + <tr> + <td align="left" valign="center"> + <xsl:if test="@required = 'true'"> + <strong><code><xsl:value-of select="@name"/></code></strong> + </xsl:if> + <xsl:if test="@required != 'true'"> + <code><xsl:value-of select="@name"/></code> + </xsl:if> + </td> + <xsl:choose> + <xsl:when test="@default != ''"> + <td align="center" valign="center"> + <code><xsl:value-of select="@default"/></code> + </td> + </xsl:when> + <xsl:otherwise> + <td align="center" valign="center"> + <code>-</code> + </td> + </xsl:otherwise> + </xsl:choose> + <td align="left" valign="center"> + <xsl:apply-templates/> + </td> + </tr> + </xsl:for-each> + </table> + </xsl:template> + + <!-- Fix relative links in printer friendly versions of the docs --> + <xsl:template match="a"> + <xsl:variable name="href" select="@href"/> + <xsl:choose> + <xsl:when test="$standalone = 'standalone'"> + <xsl:apply-templates/> + </xsl:when> + <xsl:when test="$project-menu != 'menu' and starts-with(@href,'../')"> + <a href="../{$href}"><xsl:apply-templates/></a> + </xsl:when> + <xsl:when test="$project-menu != 'menu' and starts-with(@href,'./') and contains(substring(@href,3),'/')"> + <a href=".{$href}"><xsl:apply-templates/></a> + </xsl:when> + <xsl:when test="$project-menu != 'menu' and not(contains(@href,'//')) and not(starts-with(@href,'/')) and not(starts-with(@href,'#')) and contains(@href,'/')"> + <a href="../{$href}"><xsl:apply-templates/></a> + </xsl:when> + <xsl:when test="$href != ''"> + <a href="{$href}"><xsl:apply-templates/></a> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="name" select="@name"/> + <a name="{$name}"><xsl:apply-templates/></a> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Warning --> + <xsl:template match="warn"> + <p> + <div class="warn"> + <xsl:apply-templates/> + </div> + </p> + </xsl:template> + <xsl:template match="home"> + <a href="{$home-site}"> + <xsl:apply-templates/> + </a> + </xsl:template> + + <!-- Changelog related tags --> + <xsl:template match="changelog"> + <table border="0" cellpadding="2" cellspacing="2"> + <xsl:apply-templates/> + </table> + </xsl:template> + + <xsl:template match="changelog/add"> + <tr> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/add.gif</xsl:variable> + <td valign="top"><img alt="add" class="icon" src="{$src}"/></td> + <td><xsl:apply-templates/></td> + </tr> + </xsl:template> + + <xsl:template match="changelog/update"> + <tr> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/update.gif</xsl:variable> + <td valign="top"><img alt="update" class="icon" src="{$src}"/></td> + <td><xsl:apply-templates/></td> + </tr> + </xsl:template> + + <xsl:template match="changelog/design"> + <tr> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/design.gif</xsl:variable> + <td valign="top"><img alt="design" class="icon" src="{$src}"/></td> + <td><xsl:apply-templates/></td> + </tr> + </xsl:template> + + <xsl:template match="changelog/docs"> + <tr> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/docs.gif</xsl:variable> + <td valign="top"><img alt="docs" class="icon" src="{$src}"/></td> + <td><xsl:apply-templates/></td> + </tr> + </xsl:template> + + <xsl:template match="changelog/fix"> + <tr> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/fix.gif</xsl:variable> + <td valign="top"><img alt="fix" class="icon" src="{$src}"/></td> + <td><xsl:apply-templates/></td> + </tr> + </xsl:template> + + <xsl:template match="changelog/scode"> + <tr> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/code.gif</xsl:variable> + <td valign="top"><img alt="code" class="icon" src="{$src}"/></td> + <td><xsl:apply-templates/></td> + </tr> + </xsl:template> + + <!-- Process an attributes list with nested attribute elements --> + <xsl:template match="status"> + <table border="1" cellpadding="5" width="100%"> + <tr> + <th class="attribute"> + Priority + </th> + <th class="attribute"> + Progress + </th> + <th class="attribute"> + Estimated + </th> + <th width="75%" class="attribute"> + Action Item + </th> + <th width="75%" class="attribute"> + Volunteers + </th> + <xsl:for-each select="item"> + <tr> + <td align="left" valign="top"> + <xsl:choose> + <xsl:when test="@priority = 'hi'"> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/upr.gif</xsl:variable> + <img alt="High" class="icon" src="{$src}"/> + </xsl:when> + <xsl:when test="@priority = 'low'"> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/downg.gif</xsl:variable> + <img alt="Low" class="icon" src="{$src}"/> + </xsl:when> + <xsl:when test="@priority = 'done'"> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/ok.gif</xsl:variable> + <img alt="Done" class="icon" src="{$src}"/> + </xsl:when> + <xsl:when test="@priority = 'del'"> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/x.gif</xsl:variable> + <img alt="Removed" class="icon" src="{$src}"/> + </xsl:when> + <xsl:when test="@priority = 'lock'"> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/lock.gif</xsl:variable> + <img alt="Locked" class="icon" src="{$src}"/> + </xsl:when> + <xsl:when test="@priority = 'block'"> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/excl.gif</xsl:variable> + <img alt="Blocker" class="icon" src="{$src}"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@priority"/> + </xsl:otherwise> + </xsl:choose> + </td> + <td align="left" valign="top"> + <xsl:choose> + <xsl:when test="@progress != ''"> + <xsl:variable name="rank"><xsl:value-of select="@progress"/></xsl:variable> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/rank<xsl:value-of select="@progress"/>.gif</xsl:variable> + <img alt="{$rank}0%" class="icon" src="{$src}"/> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/rank0.gif</xsl:variable> + <img alt="0%" class="icon" src="{$src}"/> + </xsl:otherwise> + </xsl:choose> + </td> + + <td align="left" valign="top"> + <xsl:value-of select="@estimate"/> + </td> + <td align="left" valign="top"> + <xsl:apply-templates/> + </td> + <td align="left" valign="top"> + <xsl:value-of select="@owner"/> + </td> + </tr> + </xsl:for-each> + </tr> + </table> + </xsl:template> + + <!-- Link to a bug report --> + <xsl:template match="bug"> + <xsl:variable name="link"><xsl:value-of select="$buglink"/><xsl:value-of select="text()"/></xsl:variable> + <a href="{$link}"><xsl:apply-templates/></a> + </xsl:template> + + + <xsl:template match="code"> + <b class="code"><xsl:apply-templates select="text()"/></b> + </xsl:template> + + <xsl:template match="todo"> + <p class="todo"> + This paragraph has not been written yet, but <b>you</b> can contribute to it. + <xsl:if test="string-length(@note) > 0"> + The original author left a note attached to this TO-DO item: + <b><xsl:value-of select="@note"/></b> + </xsl:if> + </p> + </xsl:template> + + <!-- Process a source code example --> + <xsl:template match="source"> + <xsl:variable name="void"> + <xsl:value-of select="$relative-path"/><xsl:value-of select="$void-image"/> + </xsl:variable> + <div class="example"><pre> + <xsl:value-of select="."/> + </pre> + </div> + </xsl:template> + + <!-- Screens --> + + <xsl:template match="screen"> + <xsl:variable name="void"> + <xsl:value-of select="$relative-path"/><xsl:value-of select="$void-image"/> + </xsl:variable> + <div class="screen"> + <table width="100%" class="screen" cellspacing="0" cellpadding="10"> + <tr> + <td class="screen"> + <xsl:apply-templates select="note|wait|type|typedos|type5250|typenext|read"/> + </td> + </tr> + </table> + </div> + </xsl:template> + + <xsl:template match="note"> + <code> + <nobr> + <xsl:text>. </xsl:text> + <b class="note"><xsl:value-of select="text()"/></b> + </nobr> + </code> + <br/> + </xsl:template> + + <xsl:template match="wait"> + <code> + <nobr> + <xsl:text>. </xsl:text> + <b class="screen">[...]</b> + </nobr> + </code> + <br/> + </xsl:template> + + <xsl:template match="type"> + <code> + <nobr> + <em class="screen"> + <xsl:text>[user@host] ~</xsl:text> + <xsl:if test="string-length(@dir) > 0"> + <xsl:text>/</xsl:text> + <xsl:value-of select="@dir"/> + </xsl:if> + <xsl:text> $ </xsl:text> + </em> + <xsl:if test="string-length(text()) > 0"> + <b class="screen"><xsl:value-of select="text()"/></b> + </xsl:if> + </nobr> + </code> + <br/> + </xsl:template> + + <xsl:template match="typedos"> + <code> + <nobr> + <em class="screen"> + <xsl:text>C:\</xsl:text> + <xsl:if test="string-length(@dir) > 0"> + <xsl:value-of select="@dir"/> + </xsl:if> + <xsl:text>> </xsl:text> + </em> + <xsl:if test="string-length(text()) > 0"> + <b class="screen"><xsl:value-of select="text()"/></b> + </xsl:if> + </nobr> + </code> + <br/> + </xsl:template> + + <xsl:template match="type5250"> + <code> + <nobr> + <em class="screen"> + <xsl:text>===></xsl:text> + </em> + <xsl:if test="string-length(text()) > 0"> + <b class="screen"><xsl:value-of select="text()"/></b> + </xsl:if> + </nobr> + </code> + <br/> + </xsl:template> + + <xsl:template match="typenext"> + <code> + <nobr> + <em class="screen"> + <xsl:text> </xsl:text> + </em> + <xsl:if test="string-length(text()) > 0"> + <b class="screen"><xsl:value-of select="text()"/></b> + </xsl:if> + </nobr> + </code> + <br/> + </xsl:template> + + <xsl:template match="read"> + <code class="screen"> + <nobr> + <xsl:apply-templates select="text()|enter"/> + </nobr> + </code> + <br/... [truncated message content] |
From: <jbo...@li...> - 2006-01-10 00:54:55
|
Author: mic...@jb... Date: 2006-01-09 19:54:41 -0500 (Mon, 09 Jan 2006) New Revision: 2047 Added: trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/ trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/Demo.java trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/ExpressionExpander.java trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/PseudoNaturalExpander.java Modified: trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/natural/grammar/SimpleGrammar.java Log: grammar from a properties object Modified: trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/natural/grammar/SimpleGrammar.java =================================================================== --- trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/natural/grammar/SimpleGrammar.java 2006-01-09 23:48:15 UTC (rev 2046) +++ trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/natural/grammar/SimpleGrammar.java 2006-01-10 00:54:41 UTC (rev 2047) @@ -24,6 +24,10 @@ dictionary = new HashMap(); } + public SimpleGrammar(Properties props) { + dictionary = props; + } + public void addToDictionary(String token, String expression) { if (dictionary.containsKey(token)) { throw new NaturalLanguageException("The token [" + token + "] is already in the dictionary."); Added: trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/Demo.java =================================================================== --- trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/Demo.java 2006-01-09 23:48:15 UTC (rev 2046) +++ trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/Demo.java 2006-01-10 00:54:41 UTC (rev 2047) @@ -0,0 +1,32 @@ +package org.drools.parser; + +import java.util.Properties; + +public class Demo { + + /** + * @param args + */ + public static void main(String[] args) { + Properties grammar = new Properties(); + grammar.setProperty("is located in", "${left}.getLocation().equals(\"${right}\")"); + grammar.setProperty("before", "${left}.compareTo(${right}) < 0"); + grammar.setProperty("name is", "${left}( name=='${right}' )"); + grammar.setProperty("with attributes", "${left}( ${right} )"); + grammar.setProperty("is", "=="); + grammar.setProperty("and", "&&"); + grammar.setProperty("or", "||"); + + ExpressionExpander expander = new PseudoNaturalExpander(grammar); + + + System.out.println(expander.expandExpression("bob is located in atlanta")); + System.out.println(expander.expandExpression("event before Today")); + System.out.println(expander.expandExpression("Persons name is Michael")); + System.out.println(expander.expandExpression("Person with attributes [age < 21]")); + System.out.println(expander.expandExpression("Person ( age is 21 and city is Atlanta or height is 160 )")); + + + } + +} Property changes on: trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/Demo.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/ExpressionExpander.java =================================================================== --- trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/ExpressionExpander.java 2006-01-09 23:48:15 UTC (rev 2046) +++ trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/ExpressionExpander.java 2006-01-10 00:54:41 UTC (rev 2047) @@ -0,0 +1,8 @@ +package org.drools.parser; + +public interface ExpressionExpander { + + String expandExpression(String expr); + boolean isExpanded(String expression); + +} Property changes on: trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/ExpressionExpander.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/PseudoNaturalExpander.java =================================================================== --- trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/PseudoNaturalExpander.java 2006-01-09 23:48:15 UTC (rev 2046) +++ trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/PseudoNaturalExpander.java 2006-01-10 00:54:41 UTC (rev 2047) @@ -0,0 +1,31 @@ +package org.drools.parser; + +import java.util.Properties; + +import org.drools.natural.NaturalLanguageCompiler; +import org.drools.natural.grammar.SimpleGrammar; + +public class PseudoNaturalExpander + implements + ExpressionExpander { + + private NaturalLanguageCompiler compiler; + + public PseudoNaturalExpander(Properties grammar) { + SimpleGrammar g = new SimpleGrammar(grammar); + compiler = new NaturalLanguageCompiler(g); + } + + public String expandExpression(String expr) { + return compiler.compileNaturalExpression(expr); + } + + public boolean isExpanded(String expression) { + if (expression.startsWith("--")) { + return true; + } else { + return false; + } + } + +} Property changes on: trunk/labs/jbossrules/drools-natural-dsl/src/main/java/org/drools/parser/PseudoNaturalExpander.java ___________________________________________________________________ Name: svn:eol-style + native |
From: <jbo...@li...> - 2006-01-09 23:48:19
|
Author: mar...@jb... Date: 2006-01-09 18:48:15 -0500 (Mon, 09 Jan 2006) New Revision: 2046 Added: trunk/labs/jbossrules/drools-core/src/test/resources/manners16.dat Log: -added manners16.dat Added: trunk/labs/jbossrules/drools-core/src/test/resources/manners16.dat =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/resources/manners16.dat 2006-01-09 23:44:44 UTC (rev 2045) +++ trunk/labs/jbossrules/drools-core/src/test/resources/manners16.dat 2006-01-09 23:48:15 UTC (rev 2046) @@ -0,0 +1,42 @@ +(guest (name n1) (sex f) (hobby h3)) +(guest (name n1) (sex f) (hobby h1)) +(guest (name n1) (sex f) (hobby h2)) +(guest (name n2) (sex f) (hobby h3)) +(guest (name n2) (sex f) (hobby h2)) +(guest (name n3) (sex m) (hobby h1)) +(guest (name n3) (sex m) (hobby h3)) +(guest (name n4) (sex m) (hobby h2)) +(guest (name n4) (sex m) (hobby h1)) +(guest (name n5) (sex m) (hobby h2)) +(guest (name n5) (sex m) (hobby h3)) +(guest (name n6) (sex m) (hobby h2)) +(guest (name n6) (sex m) (hobby h1)) +(guest (name n7) (sex f) (hobby h2)) +(guest (name n7) (sex f) (hobby h1)) +(guest (name n7) (sex f) (hobby h3)) +(guest (name n8) (sex f) (hobby h3)) +(guest (name n8) (sex f) (hobby h2)) +(guest (name n9) (sex f) (hobby h1)) +(guest (name n9) (sex f) (hobby h3)) +(guest (name n9) (sex f) (hobby h2)) +(guest (name n10) (sex m) (hobby h2)) +(guest (name n10) (sex m) (hobby h3)) +(guest (name n11) (sex m) (hobby h3)) +(guest (name n11) (sex m) (hobby h2)) +(guest (name n11) (sex m) (hobby h1)) +(guest (name n12) (sex m) (hobby h3)) +(guest (name n12) (sex m) (hobby h1)) +(guest (name n13) (sex m) (hobby h2)) +(guest (name n13) (sex m) (hobby h3)) +(guest (name n13) (sex m) (hobby h1)) +(guest (name n14) (sex f) (hobby h3)) +(guest (name n14) (sex f) (hobby h1)) +(guest (name n15) (sex f) (hobby h3)) +(guest (name n15) (sex f) (hobby h1)) +(guest (name n15) (sex f) (hobby h2)) +(guest (name n16) (sex f) (hobby h3)) +(guest (name n16) (sex f) (hobby h2)) +(guest (name n16) (sex f) (hobby h1)) +(last_seat (seat 16)) + +(context (state start)) |
From: <jbo...@li...> - 2006-01-09 23:44:51
|
Author: mar...@jb... Date: 2006-01-09 18:44:44 -0500 (Mon, 09 Jan 2006) New Revision: 2045 Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java Log: JungViewer -tidyups Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java 2006-01-09 20:24:42 UTC (rev 2044) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java 2006-01-09 23:44:44 UTC (rev 2045) @@ -2,14 +2,14 @@ import java.awt.BorderLayout; import java.awt.Color; -import java.awt.Component; -import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Paint; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import javax.swing.BorderFactory; import javax.swing.JButton; @@ -20,7 +20,6 @@ import javax.swing.JSplitPane; import org.drools.reteoo.ReteooToJungVisitor; -import org.drools.reteoo.ReteooToJungVisitor.BaseNodeVertex; import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.graph.Vertex; @@ -30,11 +29,8 @@ import edu.uci.ics.jung.graph.decorators.EdgeShape; import edu.uci.ics.jung.graph.decorators.EllipseVertexShapeFunction; import edu.uci.ics.jung.graph.decorators.PickableEdgePaintFunction; -import edu.uci.ics.jung.graph.decorators.PickableVertexPaintFunction; import edu.uci.ics.jung.graph.decorators.VertexPaintFunction; import edu.uci.ics.jung.graph.impl.DirectedSparseGraph; -import edu.uci.ics.jung.graph.impl.SparseGraph; -import edu.uci.ics.jung.graph.impl.SparseTree; import edu.uci.ics.jung.visualization.DefaultGraphLabelRenderer; import edu.uci.ics.jung.visualization.GraphMouseListener; import edu.uci.ics.jung.visualization.GraphZoomScrollPane; @@ -43,16 +39,14 @@ import edu.uci.ics.jung.visualization.ShapePickSupport; import edu.uci.ics.jung.visualization.VisualizationViewer; import edu.uci.ics.jung.visualization.contrib.DAGLayout; -import edu.uci.ics.jung.visualization.contrib.TreeLayout; import edu.uci.ics.jung.visualization.control.CrossoverScalingControl; import edu.uci.ics.jung.visualization.control.CrossoverScalingGraphMousePlugin; import edu.uci.ics.jung.visualization.control.PickingGraphMousePlugin; import edu.uci.ics.jung.visualization.control.PluggableGraphMouse; +import edu.uci.ics.jung.visualization.control.RotatingGraphMousePlugin; import edu.uci.ics.jung.visualization.control.ScalingControl; import edu.uci.ics.jung.visualization.control.ViewScalingGraphMousePlugin; -import samples.graph.TreeLayoutDemo; - public class ReteooJungViewer extends JFrame { /** @@ -65,14 +59,12 @@ */ VisualizationViewer vv; - public static void createAndShowGUI(RuleBase ruleBase) { - ReteooJungViewer viewer = new ReteooJungViewer( ruleBase );; - } + private boolean running; public ReteooJungViewer(RuleBase ruleBase) { // Setup a standard left/right splitPane - JPanel leftPanel = new JPanel(new BorderLayout()); - JPanel rightPanel = new JPanel(new BorderLayout()); + JPanel leftPanel = new JPanel( new BorderLayout() ); + JPanel rightPanel = new JPanel( new BorderLayout() ); JSplitPane splitPane = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, leftPanel, rightPanel ); @@ -86,9 +78,9 @@ visitor.visit( ruleBase ); final PluggableRenderer pr = new PluggableRenderer(); - + pr.setEdgeShapeFunction( new EdgeShape.QuadCurve() ); - + pr.setVertexPaintFunction( new VertexPaintFunction() { public Paint getFillPaint(Vertex v) { return ((DroolsVertex) v).getFillPaint(); @@ -113,8 +105,8 @@ this.vv = new VisualizationViewer( layout, pr, - new Dimension( 600, - 600 ) ); + new Dimension( 800, + 800 ) ); this.vv.setBackground( Color.white ); this.vv.setPickSupport( new ShapePickSupport() ); @@ -124,6 +116,7 @@ graphMouse.add( new PickingGraphMousePlugin() ); graphMouse.add( new ViewScalingGraphMousePlugin() ); graphMouse.add( new CrossoverScalingGraphMousePlugin() ); + graphMouse.add( new RotatingGraphMousePlugin() ); this.vv.setGraphMouse( graphMouse ); @@ -167,9 +160,9 @@ // Put the editor pane in a scroll pane. JScrollPane infoScrollPane = new JScrollPane( infoPane ); infoScrollPane.setPreferredSize( new Dimension( 250, - 600 ) ); + 800 ) ); infoScrollPane.setMinimumSize( new Dimension( 50, - 600 ) ); + 800 ) ); // Add a mouse listener to update the info panel when a node is clicked this.vv.addGraphMouseListener( new GraphMouseListener() { @@ -192,10 +185,25 @@ rightPanel.add( infoScrollPane ); + } + + public void showGUI() { pack(); setVisible( true ); + this.running = true; + + addWindowListener( new WindowAdapter() { + public void windowClosing(WindowEvent e) { + ReteooJungViewer viewer = (ReteooJungViewer) e.getSource(); + viewer.running = false; + } + } ); } + public boolean isRunning() { + return this.running; + } + public interface DroolsVertex { public String getHtml(); Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java 2006-01-09 20:24:42 UTC (rev 2044) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java 2006-01-09 23:44:44 UTC (rev 2045) @@ -81,11 +81,11 @@ */ private Map visitedNodes = new HashMap(); - Graph graph; + private Graph graph; - Vertex rootVertex; + private Vertex rootVertex; - Vertex parentVertex; + private Vertex parentVertex; /** * Constructor. Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java 2006-01-09 20:24:42 UTC (rev 2044) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java 2006-01-09 23:44:44 UTC (rev 2045) @@ -123,9 +123,11 @@ final RuleBaseImpl ruleBase = new RuleBaseImpl(); ruleBase.addRuleSet( ruleSet ); + final ReteooJungViewer viewer = new ReteooJungViewer(ruleBase); + javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { - ReteooJungViewer.createAndShowGUI(ruleBase); + viewer.showGUI(); } }); @@ -137,13 +139,12 @@ for (Iterator it = list.iterator(); it.hasNext(); ) { workingMemory.assertObject( it.next() ); } - //System.out.println( list ); workingMemory.assertObject( new Count(0) ); workingMemory.fireAllRules(); - while (true) { + while (viewer.isRunning()) { Thread.sleep( 1000 ); } |
Author: unibrew Date: 2006-01-09 13:02:16 -0500 (Mon, 09 Jan 2006) New Revision: 2043 Added: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Sorting.java Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Counter.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterDescriptor.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterPortlet.java Log: [JBLAB-581] Adding new features. Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Counter.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Counter.java 2006-01-09 17:22:30 UTC (rev 2042) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Counter.java 2006-01-09 18:02:16 UTC (rev 2043) @@ -49,6 +49,11 @@ private Boolean visible; /** + * It informs in what way the counter have to be sorted. + */ + private Sorting sorting; + + /** * Main constructor simply initiates values. * * @param value @@ -56,10 +61,11 @@ * @param projectId * Name of project for this counter. */ - Counter (long value,String projectId,Boolean visible) { + Counter (long value,String projectId,Boolean visible,Sorting sorting) { this.value=value; this.projectId=projectId; this.visible = visible; + this.sorting = sorting; } /** @@ -99,7 +105,7 @@ * Method sets visibility of the counter. * @param visible */ - public void setVisible(Boolean visible) { + void setVisible(Boolean visible) { this.visible = visible; } @@ -109,4 +115,21 @@ public String toString () { return Long.toString(value); } + + /** + * Method returns the enum information about how the counter have to be sorted. + * @return + * Sorting order information. + */ + public Sorting getSorting() { + return sorting; + } + + /** + * Sets new sorting. + * @param sorting + */ + public void setSorting(Sorting sorting) { + this.sorting = sorting; + } } Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterDescriptor.java 2006-01-09 17:22:30 UTC (rev 2042) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCounterDescriptor.java 2006-01-09 18:02:16 UTC (rev 2043) @@ -26,8 +26,6 @@ import java.io.IOException; import java.io.InputStream; import java.util.Hashtable; -import java.util.LinkedList; -import java.util.List; import java.util.Map; import org.apache.xerces.parsers.DOMParser; @@ -54,6 +52,11 @@ private Map<String,Boolean> links; /** + * Describes the order in which counters are requested to be displayed. + */ + private Sorting sorting; + + /** * Name of tag in counter.xml containing counter link. */ public static final String LINK = "link"; @@ -69,6 +72,11 @@ public static final String VISIBILITY = "visible"; /** + * This variable contains name of the sorting attribute. + */ + public static final String SORTING = "sorting"; + + /** * This variable contains value for attributes which means TRUE. */ public static final String TRUE = "true"; @@ -104,6 +112,20 @@ // Parsing and gettting download links which are requested to be tracked by download counter. links = new Hashtable<String,Boolean>(); + + // Resolving way of sorting counters. + sorting = Sorting.RANDOM; + String sortingAtt = XmlTools.getAttributeValue(doc.getDocumentElement(),SORTING); + if (sortingAtt!=null && + (sortingAtt.compareToIgnoreCase(Sorting.ASCENDING.name())==0 + || sortingAtt.compareToIgnoreCase(Sorting.ASC.name())==0)) { + sorting = Sorting.ASCENDING; + } else if (sortingAtt!=null && + (sortingAtt.compareToIgnoreCase(Sorting.DESCENDING.name())==0 + || sortingAtt.compareToIgnoreCase(Sorting.DESC.name())==0)) { + sorting = Sorting.DESCENDING; + } + for (int i = 0; i < nodes.getLength(); i++) { n = nodes.item(i); if (n.getNodeType() == Node.ELEMENT_NODE) { @@ -131,6 +153,15 @@ } /** + * Returns sorting description for counters. + * @return + * Requested sorting order. + */ + public Sorting getSorting () { + return sorting; + } + + /** * Method simply returns links from the xml descriptor which are requested to be tracked. * @return * List<String> of download links. Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java 2006-01-09 17:22:30 UTC (rev 2042) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDescriptor.java 2006-01-09 18:02:16 UTC (rev 2043) @@ -25,15 +25,18 @@ import java.io.File; import java.io.InputStream; +import java.util.Comparator; import java.util.HashSet; import java.util.Hashtable; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeMap; import org.apache.xerces.parsers.DOMParser; import org.jboss.forge.common.XmlTools; +import org.jboss.logging.Logger; import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Directory; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; @@ -50,7 +53,7 @@ * @author Ryszard Kozmik */ -public class DownloadCountersDescriptor extends AbstractDescriptor{ +public class DownloadCountersDescriptor extends AbstractDescriptor { /** * Name of tag in counters.xml containing counter value. @@ -78,6 +81,11 @@ public static final String VISIBILITY = "visible"; /** + * This variable contains name of the sorting attribute. + */ + public static final String SORTING = "sorting"; + + /** * This variable contains value for attributes which means TRUE. */ public static final String TRUE = "true"; @@ -98,6 +106,11 @@ private ContentManager contentManager; /** + * Logger is used for displaying messages. + */ + private Logger logger; + + /** * This boolean variable turns to true if one of the counters * has been incremented. If value is true the downloadCounters Map * will be synchronized with a main xml descriptor @@ -118,6 +131,9 @@ // Just initializing the changeStatus variable changeStatus=false; + // Initializing logger. + logger = Logger.getLogger(this.getClass()); + // Getting the path to main dowload counters descriptor. String pathToCountersXml = File.separator + DownloadCounterTools.getMainXmlPath(portalName); @@ -143,8 +159,7 @@ synchronizeCounters(descriptors); } catch (Exception e) { - System.out.println ("[DOWNLOADCOUNTERS] Failed to initialize downloadCounters."); - e.printStackTrace(); + logger.error ("Failed to initialize downloadCounters.",e); } } @@ -173,8 +188,7 @@ try { membersDir = contentManager.getDirectory(portalName+File.separator+ProjectsHelper.MEMBERS_DIR); } catch (ResourceDoesNotExist e) { - e.printStackTrace(); - System.out.println ("[DOWNLOADCOUNTERSDESCRIPTOR] Members directory not exists."); + logger.error ("Members directory not exists.",e); return null; } @@ -240,6 +254,7 @@ for (String link:xmlProjectLinks.keySet()) { if (links.keySet().contains(link)) { setCounterVisibility (link,links.get(link)); + setCounterSorting (link,counterDesc.getSorting()); links.keySet().remove(link); } else { linksToDelete.add(link); @@ -248,12 +263,11 @@ removeLinksFromCounting(linksToDelete); - addLinksForCounting (links,projectId); + addLinksForCounting (links,projectId,counterDesc.getSorting()); } catch (Exception e) { - System.out.println ("[DOWNLOADCOUNTER] Problem with opening project "+ - projectId+" download counter descriptor."); - e.printStackTrace(); + logger.warn("Problem with opening project "+ + projectId+" download counter descriptor.",e); } } @@ -290,6 +304,17 @@ } /** + * Method sets sorting order in which this counter will be displayed. + * @param link + * The link to the counter. + * @param sorting + * Requested sorting order. + */ + private synchronized void setCounterSorting (String link,Sorting sorting) { + downloadCounters.get(link).setSorting(sorting); + } + + /** * Method adds links which are wished to be tracked. * * @param links @@ -297,10 +322,10 @@ * @param projectId * Project id name for which the links are added. */ - private synchronized void addLinksForCounting (Map<String,Boolean> links,String projectId) { + private synchronized void addLinksForCounting (Map<String,Boolean> links,String projectId,Sorting sorting) { // Adding new download links for tracking. for (String link:links.keySet()) { - downloadCounters.put(link,new Counter(0,projectId,links.get(link))); + downloadCounters.put(link,new Counter(0,projectId,links.get(link),sorting)); } } @@ -353,7 +378,53 @@ */ public synchronized Map<String,Long> getValuesForPortlet (String projectId) { Map<String,Boolean> links = getProjectLinks(projectId); - Map<String,Long> values = new Hashtable<String,Long>(links.size()); + Map<String,Long> values = null; + if (links.size()==0) { + values = new Hashtable<String,Long>(0); + return values; + } + + // Resolving way of sorting for counters. + Sorting sorting = downloadCounters.get(links.keySet().iterator().next()).getSorting(); + if (sorting==Sorting.ASC || sorting==Sorting.ASCENDING) { + values = new TreeMap<String,Long>(new Comparator<String>() { + /** + * This method is used for comparing counters taking to consideration their values. + * If defines ascending order. + * @param o1 + * First link to compare. + * @param o2 + * Second link to compare. + * @return + * negative integer - when counter for the first link is lower than for second one + * zero - when counters for both links are equal + * positive integer - when counter for the first link is greater than for second one + */ + public synchronized int compare(String link1, String link2) { + return (int)(downloadCounters.get(link1).getValue()-downloadCounters.get(link2).getValue()); + } + }); + } else if (sorting==Sorting.DESC || sorting==Sorting.DESCENDING) { + values = new TreeMap<String,Long>(new Comparator<String>() { + /** + * This method is used for comparing counters taking to consideration their values. + * It defines descending order. + * @param o1 + * First link to compare. + * @param o2 + * Second link to compare. + * @return + * negative integer - when counter for the first link is greater than for second one + * zero - when counters for both links are equal + * positive integer - when counter for the first link is lower than for second one + */ + public synchronized int compare(String link1, String link2) { + return (int)(downloadCounters.get(link2).getValue()-downloadCounters.get(link1).getValue()); + } + }); + } else { + values = new Hashtable<String,Long>(links.size()); + } for (String link : links.keySet()) { if (links.get(link)) { values.put(link,downloadCounters.get(link).getValue()); @@ -417,6 +488,9 @@ Node counterVisibility = doc.createAttribute(VISIBILITY); counterVisibility.appendChild(doc.createTextNode(temporary.getVisible().toString())); newCounter.getAttributes().setNamedItem(counterVisibility); + Node counterSorting = doc.createAttribute(SORTING); + counterSorting.appendChild(doc.createTextNode(temporary.getSorting().name())); + newCounter.getAttributes().setNamedItem(counterSorting); Node newLink = doc.createElement(LINK); Node newLinkText = doc.createTextNode(link); @@ -501,6 +575,17 @@ n = nodes.item(i); if (n.getNodeType() == Node.ELEMENT_NODE) { if (n.getNodeName().equals(DownloadCountersDescriptor.COUNTER)) { + Sorting tempSorting = Sorting.RANDOM; + String sortingAtt = XmlTools.getAttributeValue(n,SORTING); + if (sortingAtt!=null && + (sortingAtt.compareToIgnoreCase(Sorting.ASCENDING.name())==0 + || sortingAtt.compareToIgnoreCase(Sorting.ASC.name())==0)) { + tempSorting = Sorting.ASCENDING; + } else if (sortingAtt!=null && + (sortingAtt.compareToIgnoreCase(Sorting.DESCENDING.name())==0 + || sortingAtt.compareToIgnoreCase(Sorting.DESC.name())==0)) { + tempSorting = Sorting.DESCENDING; + } NodeList counterProps = n.getChildNodes(); String tempLink = null; String tempValue = null; @@ -524,7 +609,7 @@ } } if (tempLink!=null && tempValue!=null && tempId!=null) { - values.put(tempLink,new Counter(Long.valueOf(tempValue),tempId,visibility)); + values.put(tempLink,new Counter(Long.valueOf(tempValue),tempId,visibility,tempSorting)); } } } @@ -532,4 +617,6 @@ return values; } + + } Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java 2006-01-09 17:22:30 UTC (rev 2042) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersWatcher.java 2006-01-09 18:02:16 UTC (rev 2043) @@ -23,7 +23,6 @@ package org.jboss.forge.common.projects; -import java.util.Collection; import java.util.Set; import org.jboss.forge.common.service.NodeWatcher; Added: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Sorting.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Sorting.java 2006-01-09 17:22:30 UTC (rev 2042) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Sorting.java 2006-01-09 18:02:16 UTC (rev 2043) @@ -0,0 +1,5 @@ +package org.jboss.forge.common.projects; + +public enum Sorting { + ASCENDING,ASC,DESCENDING,DESC,RANDOM +} Modified: trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterPortlet.java 2006-01-09 17:22:30 UTC (rev 2042) +++ trunk/forge/portal-extensions/forge-file-access/src/java/org/jboss/forge/fileaccess/portlet/DownloadCounterPortlet.java 2006-01-09 18:02:16 UTC (rev 2043) @@ -41,8 +41,9 @@ import org.jboss.shotoku.aop.Inject; /** + * DownloadCounters portlet. + * * @author Ryszard Kozmik - * Downlaod Counter portlet. */ public class DownloadCounterPortlet extends JBossPortlet { |
From: <jbo...@li...> - 2006-01-09 17:22:37
|
Author: mar...@jb... Date: 2006-01-09 12:22:30 -0500 (Mon, 09 Jan 2006) New Revision: 2042 Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java Log: JungReteooViewer -Set the layout to have a JSplitPane Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java 2006-01-09 15:21:07 UTC (rev 2041) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java 2006-01-09 17:22:30 UTC (rev 2042) @@ -2,6 +2,7 @@ import java.awt.BorderLayout; import java.awt.Color; +import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; @@ -16,6 +17,7 @@ import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; +import javax.swing.JSplitPane; import org.drools.reteoo.ReteooToJungVisitor; import org.drools.reteoo.ReteooToJungVisitor.BaseNodeVertex; @@ -30,6 +32,7 @@ import edu.uci.ics.jung.graph.decorators.PickableEdgePaintFunction; import edu.uci.ics.jung.graph.decorators.PickableVertexPaintFunction; import edu.uci.ics.jung.graph.decorators.VertexPaintFunction; +import edu.uci.ics.jung.graph.impl.DirectedSparseGraph; import edu.uci.ics.jung.graph.impl.SparseGraph; import edu.uci.ics.jung.graph.impl.SparseTree; import edu.uci.ics.jung.visualization.DefaultGraphLabelRenderer; @@ -55,41 +58,46 @@ /** * the graph */ - Graph graph; + Graph graph; /** * the visual component and renderer for the graph */ VisualizationViewer vv; - // public static void main(String[] args) { - // javax.swing.SwingUtilities.invokeLater(new Runnable() { - // public void run() { - // createAndShowGUI(); - // } - // }); - // } - public static void createAndShowGUI(RuleBase ruleBase) { - ReteooJungViewer viewer = new ReteooJungViewer(ruleBase);; + ReteooJungViewer viewer = new ReteooJungViewer( ruleBase );; } public ReteooJungViewer(RuleBase ruleBase) { - ReteooToJungVisitor visitor = new ReteooToJungVisitor(); + // Setup a standard left/right splitPane + JPanel leftPanel = new JPanel(new BorderLayout()); + JPanel rightPanel = new JPanel(new BorderLayout()); + JSplitPane splitPane = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, + leftPanel, + rightPanel ); + splitPane.setDividerLocation( 0.75 ); + splitPane.setResizeWeight( 1 ); + getContentPane().add( splitPane ); + + // Create the graph and parse it to the visitor where it will parse the rulebase and attach the vertices + this.graph = new DirectedSparseGraph(); + ReteooToJungVisitor visitor = new ReteooToJungVisitor( this.graph ); visitor.visit( ruleBase ); - this.graph = visitor.getGraph(); final PluggableRenderer pr = new PluggableRenderer(); - pr.setVertexPaintFunction(new VertexPaintFunction() { + pr.setEdgeShapeFunction( new EdgeShape.QuadCurve() ); + + pr.setVertexPaintFunction( new VertexPaintFunction() { public Paint getFillPaint(Vertex v) { - return ((HtmlContent) v).getFillPaint(); + return ((DroolsVertex) v).getFillPaint(); } public Paint getDrawPaint(Vertex v) { - return ((HtmlContent) v).getDrawPaint(); + return ((DroolsVertex) v).getDrawPaint(); } - }); + } ); pr.setEdgePaintFunction( new PickableEdgePaintFunction( pr, Color.black, @@ -97,27 +105,21 @@ pr.setGraphLabelRenderer( new DefaultGraphLabelRenderer( Color.cyan, Color.cyan ) ); - pr.setVertexShapeFunction( new EllipseVertexShapeFunction( new ConstantVertexSizeFunction(14), - new ConstantVertexAspectRatioFunction(1.0f)) ); + // Sets the size of the nodes + pr.setVertexShapeFunction( new EllipseVertexShapeFunction( new ConstantVertexSizeFunction( 14 ), + new ConstantVertexAspectRatioFunction( 1.0f ) ) ); Layout layout = new DAGLayout( this.graph ); this.vv = new VisualizationViewer( layout, - pr, - new Dimension( 600, - 600 ) ); - + pr, + new Dimension( 600, + 600 ) ); + + this.vv.setBackground( Color.white ); this.vv.setPickSupport( new ShapePickSupport() ); - pr.setEdgeShapeFunction( new EdgeShape.QuadCurve() ); - this.vv.setBackground( Color.white ); - - // add a listener for ToolTips this.vv.setToolTipFunction( new DefaultToolTipFunction() ); - Container content = getContentPane(); - final GraphZoomScrollPane panel = new GraphZoomScrollPane( this.vv ); - content.add( panel ); - final PluggableGraphMouse graphMouse = new PluggableGraphMouse(); graphMouse.add( new PickingGraphMousePlugin() ); graphMouse.add( new ViewScalingGraphMousePlugin() ); @@ -144,27 +146,38 @@ } } ); + final GraphZoomScrollPane graphPanel = new GraphZoomScrollPane( this.vv ); + leftPanel.add( graphPanel ); + + // Add the zoom controls JPanel scaleGrid = new JPanel( new GridLayout( 1, 0 ) ); scaleGrid.setBorder( BorderFactory.createTitledBorder( "Zoom" ) ); - JPanel controls = new JPanel(); scaleGrid.add( plus ); scaleGrid.add( minus ); controls.add( scaleGrid ); - content.add( controls, - BorderLayout.SOUTH ); + leftPanel.add( controls, + BorderLayout.SOUTH ); - final JEditorPane editorPane = new JEditorPane(); - editorPane.setEditable( false ); - editorPane.setContentType( "text/html" ); + final JEditorPane infoPane = new JEditorPane(); + infoPane.setEditable( false ); + infoPane.setContentType( "text/html" ); + // Put the editor pane in a scroll pane. + JScrollPane infoScrollPane = new JScrollPane( infoPane ); + infoScrollPane.setPreferredSize( new Dimension( 250, + 600 ) ); + infoScrollPane.setMinimumSize( new Dimension( 50, + 600 ) ); + + // Add a mouse listener to update the info panel when a node is clicked this.vv.addGraphMouseListener( new GraphMouseListener() { public void graphClicked(Vertex vertex, MouseEvent e) { System.out.println( vertex ); - editorPane.setText( ((HtmlContent)vertex).getHtml() ); + infoPane.setText( ((DroolsVertex) vertex).getHtml() ); } public void graphPressed(Vertex vertex, @@ -177,24 +190,17 @@ } ); - // Put the editor pane in a scroll pane. - JScrollPane editorScrollPane = new JScrollPane( editorPane ); - editorScrollPane.setPreferredSize( new Dimension( 250, - 145 ) ); - editorScrollPane.setMinimumSize( new Dimension( 10, - 10 ) ); - content.add( editorScrollPane, - BorderLayout.EAST ); - + rightPanel.add( infoScrollPane ); + pack(); - setVisible( true ); + setVisible( true ); } - - public interface HtmlContent { + + public interface DroolsVertex { public String getHtml(); - + public Paint getFillPaint(); - + public Paint getDrawPaint(); } } Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java 2006-01-09 15:21:07 UTC (rev 2041) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java 2006-01-09 17:22:30 UTC (rev 2042) @@ -47,7 +47,7 @@ import java.util.List; import java.util.Map; -import org.drools.ReteooJungViewer.HtmlContent; +import org.drools.ReteooJungViewer.DroolsVertex; import org.drools.rule.LiteralConstraint; import org.drools.spi.Field; @@ -90,7 +90,8 @@ /** * Constructor. */ - public ReteooToJungVisitor() { + public ReteooToJungVisitor(Graph graph) { + this.graph = graph; } public Graph getGraph() { @@ -115,7 +116,6 @@ this.rootVertex ); } - this.graph = new DirectedSparseGraph(); this.graph.addVertex( this.rootVertex ); this.parentVertex = this.rootVertex; for ( Iterator i = rete.getObjectTypeNodeIterator(); i.hasNext(); ) { @@ -375,7 +375,7 @@ public static abstract class BaseNodeVertex extends DirectedSparseVertex implements - HtmlContent { + DroolsVertex { public BaseNodeVertex() { super(); |
From: <jbo...@li...> - 2006-01-09 15:21:13
|
Author: wrzep Date: 2006-01-09 10:21:07 -0500 (Mon, 09 Jan 2006) New Revision: 2041 Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java Log: final version http://jira.jboss.com/jira/browse/JBLAB-540 Pawel Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2006-01-09 14:25:46 UTC (rev 2040) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2006-01-09 15:21:07 UTC (rev 2041) @@ -31,6 +31,7 @@ import java.util.Date; import java.text.DateFormat; +import java.text.DecimalFormat; import java.util.SimpleTimeZone; import java.net.URL; @@ -187,7 +188,6 @@ if ((image == null) || (image.length() == 0)) { image = item.getAttributeValue("itunes:image", "href"); - System.out.println("item itunes:image" + image); } if ((image != null) && (image.length() != 0)) { @@ -218,7 +218,10 @@ if (enclosureLocation != null) { nodeContext.put("enclosure-link", enclosureLocation.toString()); nodeContext.put("enclosure-type", enclosure.getType()); - nodeContext.put("enclosure-size", Math.round(enclosure.getLength() / BYTES_IN_MB)); + + DecimalFormat decimaFormat = new DecimalFormat("##.#"); + String size = decimaFormat.format(((float)enclosure.getLength() / (float)BYTES_IN_MB)); + nodeContext.put("enclosure-size", size); } } @@ -259,7 +262,6 @@ if ((image == null) || (image.length() == 0)) { image = channel.getAttributeValue("itunes:image", "href"); - System.out.println("itunes:image href=" + image); } if ((image != null) && (image.length() != 0)) { |
From: <jbo...@li...> - 2006-01-09 14:25:55
|
Author: wrzep Date: 2006-01-09 09:25:46 -0500 (Mon, 09 Jan 2006) New Revision: 2040 Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java Log: fixed minor problems with itunes tags parsing http://jira.jboss.com/jira/browse/JBLAB-540 Pawel Modified: trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java =================================================================== --- trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2006-01-09 12:39:54 UTC (rev 2039) +++ trunk/forge/portal-extensions/forge-podcast/src/java/org/jboss/forge/podcast/Podcast.java 2006-01-09 14:25:46 UTC (rev 2040) @@ -186,7 +186,8 @@ image = imageProperties[1]; if ((image == null) || (image.length() == 0)) { - image = item.getElementValue("itunes:image"); + image = item.getAttributeValue("itunes:image", "href"); + System.out.println("item itunes:image" + image); } if ((image != null) && (image.length() != 0)) { @@ -257,11 +258,12 @@ } if ((image == null) || (image.length() == 0)) { - image = channel.getElementValue("itunes:image"); + image = channel.getAttributeValue("itunes:image", "href"); + System.out.println("itunes:image href=" + image); } if ((image != null) && (image.length() != 0)) { - nodeContext.put("channel-image", channelImage.getLocation().toString()); + nodeContext.put("channel-image", image); nodeContext.next("channel-hasImage"); } else { nodeContext.next("channel-hasNotImage"); |
From: <jbo...@li...> - 2006-01-09 11:38:47
|
Author: mar...@jb... Date: 2006-01-09 06:38:32 -0500 (Mon, 09 Jan 2006) New Revision: 2038 Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java Log: -Make Jung Balls bigger Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java 2006-01-09 09:21:42 UTC (rev 2037) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java 2006-01-09 11:38:32 UTC (rev 2038) @@ -22,6 +22,8 @@ import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.graph.Vertex; +import edu.uci.ics.jung.graph.decorators.ConstantVertexAspectRatioFunction; +import edu.uci.ics.jung.graph.decorators.ConstantVertexSizeFunction; import edu.uci.ics.jung.graph.decorators.DefaultToolTipFunction; import edu.uci.ics.jung.graph.decorators.EdgeShape; import edu.uci.ics.jung.graph.decorators.EllipseVertexShapeFunction; @@ -87,7 +89,7 @@ public Paint getDrawPaint(Vertex v) { return ((HtmlContent) v).getDrawPaint(); } - }); + }); pr.setEdgePaintFunction( new PickableEdgePaintFunction( pr, Color.black, @@ -95,7 +97,8 @@ pr.setGraphLabelRenderer( new DefaultGraphLabelRenderer( Color.cyan, Color.cyan ) ); - pr.setVertexShapeFunction( new EllipseVertexShapeFunction() ); + pr.setVertexShapeFunction( new EllipseVertexShapeFunction( new ConstantVertexSizeFunction(14), + new ConstantVertexAspectRatioFunction(1.0f)) ); Layout layout = new DAGLayout( this.graph ); Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java 2006-01-09 09:21:42 UTC (rev 2037) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java 2006-01-09 11:38:32 UTC (rev 2038) @@ -302,7 +302,6 @@ } public String getHtml() { - this.node.getJoinNodeBinder(). return "JoinNode : " + this.node.getId(); } @@ -379,6 +378,7 @@ HtmlContent { public BaseNodeVertex() { super(); + } public String getHtml() { |
From: <jbo...@li...> - 2006-01-09 09:21:50
|
Author: rem...@jb... Date: 2006-01-09 04:21:42 -0500 (Mon, 09 Jan 2006) New Revision: 2037 Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/servlets/CGIServlet.java Log: - Win2k3 fix. Modified: trunk/labs/jbossweb/src/share/classes/org/apache/catalina/servlets/CGIServlet.java =================================================================== --- trunk/labs/jbossweb/src/share/classes/org/apache/catalina/servlets/CGIServlet.java 2006-01-09 08:09:02 UTC (rev 2036) +++ trunk/labs/jbossweb/src/share/classes/org/apache/catalina/servlets/CGIServlet.java 2006-01-09 09:21:42 UTC (rev 2037) @@ -236,7 +236,7 @@ * * @author Martin T Dengler [ro...@ma...] * @author Amy Roh - * @version $Revision: 359869 $, $Date: 2005-12-29 19:42:08 +0100 (jeu., 29 déc. 2005) $ + * @version $Revision: 366305 $, $Date: 2006-01-05 22:51:10 +0100 (jeu., 05 janv. 2006) $ * @since Tomcat 4.0 * */ @@ -670,7 +670,7 @@ p = r.exec( "command.com /c set" ); ignoreCase = true; } else if ( (OS.indexOf("nt") > -1) - || (OS.indexOf("windows 2000") > -1) + || (OS.indexOf("windows 20") > -1) || (OS.indexOf("windows xp") > -1) ) { // thanks to JuanFran for the xp fix! p = r.exec( "cmd.exe /c set" ); @@ -709,7 +709,7 @@ * <p> * </p> * - * @version $Revision: 359869 $, $Date: 2005-12-29 19:42:08 +0100 (jeu., 29 déc. 2005) $ + * @version $Revision: 366305 $, $Date: 2006-01-05 22:51:10 +0100 (jeu., 05 janv. 2006) $ * @since Tomcat 4.0 * */ @@ -1423,7 +1423,7 @@ * and <code>setResponse</code> methods, respectively. * </p> * - * @version $Revision: 359869 $, $Date: 2005-12-29 19:42:08 +0100 (jeu., 29 déc. 2005) $ + * @version $Revision: 366305 $, $Date: 2006-01-05 22:51:10 +0100 (jeu., 05 janv. 2006) $ */ protected class CGIRunner { |
Author: mic...@jb... Date: 2006-01-09 03:09:02 -0500 (Mon, 09 Jan 2006) New Revision: 2036 Added: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/ApplicationDataDef.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/FunctionDef.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/ImportDef.java trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/ApplicationDataDef.hbm.xml trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/FunctionDef.hbm.xml trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/ImportDef.hbm.xml Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/IVersionable.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleDef.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepositoryImpl.java trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetDef.hbm.xml trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/Tag.hbm.xml trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RulePersistenceTest.java trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RuleSetPersistenceTest.java trunk/labs/jbossrules/drools-repository/src/test/resources/hibernate.cfg.xml Log: more working. Still some broken bits. Added: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/ApplicationDataDef.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/ApplicationDataDef.java 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/ApplicationDataDef.java 2006-01-09 08:09:02 UTC (rev 2036) @@ -0,0 +1,75 @@ +package org.drools.repository; + +/** + * Application data contains a definition of objects that may be provided to the + * rule engine to support the execution of rules. + * + * + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + */ +public class ApplicationDataDef extends Persistent + implements + IVersionable { + + private static final long serialVersionUID = 609004561319545529L; + + private String versionComment; + private long versionNumber; + private String identifier; + private String type; + + /** + * @param identifier + * the id by which the app data will be referenced in a rule. + * @param type + * The type of the object that will be bound to the identifier + * for the ruleset. + */ + public ApplicationDataDef(String identifier, + String type) { + this.identifier = identifier; + this.type = type; + } + + ApplicationDataDef() { + } + + public String getIdentifier() { + return identifier; + } + + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public IVersionable copy() { + ApplicationDataDef clone = new ApplicationDataDef( this.identifier, + this.type ); + return clone; + } + + public String getVersionComment() { + return versionComment; + } + + public void setVersionComment(String versionComment) { + this.versionComment = versionComment; + } + + public long getVersionNumber() { + return versionNumber; + } + + public void setVersionNumber(long versionNumber) { + this.versionNumber = versionNumber; + } + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/ApplicationDataDef.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/FunctionDef.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/FunctionDef.java 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/FunctionDef.java 2006-01-09 08:09:02 UTC (rev 2036) @@ -0,0 +1,78 @@ +package org.drools.repository; + +/** + * A FunctionDef contains the definition of a function that is used in one or more rules. + * Functions can be written in any language that is supported by the semantic framework. + * + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + */ +public class FunctionDef extends Persistent + implements + IVersionable { + + private static final long serialVersionUID = -7585928690157539970L; + + private long versionNumber; + private String versionComment; + private String functionContent; + private String description; + private String language; + + public String getLanguage(){ + return language; + } + + public void setLanguage(String language){ + this.language = language; + } + + public FunctionDef(String functionContent, String description) { + this.functionContent = functionContent; + this.description = description; + this.language = ""; + } + + FunctionDef() {} + + public IVersionable copy(){ + FunctionDef clone = new FunctionDef(this.functionContent, this.description); + clone.language = this.language; + return clone; + } + + public String getDescription(){ + return description; + } + + public void setDescription(String description){ + this.description = description; + } + + public String getFunctionContent(){ + return functionContent; + } + + public void setFunctionContent(String functionContent){ + this.functionContent = functionContent; + } + + + + public void setVersionNumber(long versionNumber){ + + this.versionNumber = versionNumber; + } + + public void setVersionComment(String comment){ + this.versionComment = comment; + } + + public long getVersionNumber(){ + return this.versionNumber; + } + + public String getVersionComment(){ + return this.versionComment; + } + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/FunctionDef.java ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/IVersionable.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/IVersionable.java 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/IVersionable.java 2006-01-09 08:09:02 UTC (rev 2036) @@ -3,12 +3,24 @@ /** All assets that support major versioning must implement this. */ interface IVersionable { - /** must create a fresh copy OF THE SAME TYPE, with a null Id */ + /** of course they have to have an id ! + * Ids are always assigned by the database. + */ + Long getId(); + + /** Must create a fresh copy OF THE SAME TYPE, with a null Id */ IVersionable copy(); + /** + * The version number is used to group assets together in a RuleSet for instance + * The version number should NOT only be set by the repository, not by users. + */ void setVersionNumber(long versionNumber); + /** The version comment is used when major versions are created */ void setVersionComment(String comment); + + String getVersionComment(); long getVersionNumber(); Added: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/ImportDef.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/ImportDef.java 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/ImportDef.java 2006-01-09 08:09:02 UTC (rev 2036) @@ -0,0 +1,54 @@ +package org.drools.repository; + +/** + * This holds a type import for a ruleset. + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + */ +public class ImportDef extends Persistent + implements + IVersionable { + + private static final long serialVersionUID = -5509795356918241886L; + + private long versionNumber; + private String versionComment; + private String type; + + /** + * @param type The type to import into the ruleset. + */ + public ImportDef(String type) { + this.type = type; + } + + ImportDef() {} + + /** The type to import into the ruleset */ + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + public String getVersionComment() { + return versionComment; + } + public void setVersionComment(String versionComment) { + this.versionComment = versionComment; + } + public long getVersionNumber() { + return versionNumber; + } + public void setVersionNumber(long versionNumber) { + this.versionNumber = versionNumber; + } + + public IVersionable copy() { + // TODO Auto-generated method stub + return new ImportDef(this.type); + } + + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/ImportDef.java ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleDef.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleDef.java 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleDef.java 2006-01-09 08:09:02 UTC (rev 2036) @@ -176,4 +176,8 @@ return newVersion; } + public String toString() { + return "{ id = " + this.getId() + "name= (" + this.name + ") version = " + this.getVersionNumber() + " }"; + } + } Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java 2006-01-09 08:09:02 UTC (rev 2036) @@ -1,227 +1,326 @@ package org.drools.repository; -import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; -import java.util.List; import java.util.Set; /** - * The ruleset definition contains a grouping of rules for editing/release. - * The workingVersionNumber drives what version of rules will be included in this ruleset. - * Changing this number will mean that different versions of ruledefs are loaded etc. + * The ruleset definition contains a grouping of rules for editing/release. The + * workingVersionNumber drives what version of rules will be included in this + * ruleset. Changing this number will mean that different versions of ruledefs + * are loaded etc. * * @author <a href="mailto:mic...@gm..."> Michael Neale</a> */ -public class RuleSetDef extends Persistent implements Comparable { +public class RuleSetDef extends Persistent + implements + Comparable { private static final long serialVersionUID = 608068118653708104L; - - private String name; - private MetaData metaData; - private Set rules; - private Set tags; - private long workingVersionNumber; - private Set versionHistory; - private Set attachments; - public RuleSetDef(String name, MetaData meta) { + private String name; + private MetaData metaData; + private Set rules; + private Set tags; + private long workingVersionNumber; + private Set versionHistory; + private Set attachments; + private Set imports; + private Set applicationData; + private Set functions; + + public RuleSetDef(String name, + MetaData meta) { this.name = name; this.metaData = meta; this.tags = new HashSet(); this.rules = new HashSet(); this.attachments = new HashSet(); this.versionHistory = new HashSet(); + this.functions = new HashSet(); + this.applicationData = new HashSet(); + this.imports = new HashSet(); this.workingVersionNumber = 1; - } - + } + /** - * This is not for public consumption. Use the - * proper constructor instead. + * This is not for public consumption. Use the proper constructor instead. */ - RuleSetDef() { - } - + RuleSetDef() { + } - public Set getVersionHistory(){ + public Set getVersionHistory() { return versionHistory; } - - void setVersionHistory(Set versionHistory){ + void setVersionHistory(Set versionHistory) { this.versionHistory = versionHistory; } + public RuleSetDef addRule(RuleDef rule) { + return addAssetToSet( rule, + this.rules ); + } + + public RuleSetDef addAttachment(RuleSetAttachment attachmentFile) { + return addAssetToSet( attachmentFile, + this.attachments ); + } + + public RuleSetDef addImport(ImportDef importDef) { + return addAssetToSet( importDef, + this.imports ); + } + + public RuleSetDef addApplicationData(ApplicationDataDef appData) { + return addAssetToSet( appData, + this.applicationData ); + } + /** - * This adds a rule to the ruleset. + * Removes a rule from the current ruleset. This + * DOES NOT delete the rule, and DOES NOT effect any other versions + * of the ruleset. + */ + public void removeRule(RuleDef rule) { + //rule.setVersionNumber(-1); + this.rules.remove(rule); + } + + public void removeFunction(FunctionDef function) { + this.functions.remove(function); + } + + public void removeApplicationData(ApplicationDataDef appData) { + this.applicationData.remove(appData); + } + + public void removeImport(ImportDef imp) { + this.imports.remove(imp); + } + + public void removeAttachment(RuleSetAttachment attachment) { + this.attachments.remove(attachment); + } + + public RuleSetDef addFunction(FunctionDef function) { + return addAssetToSet( function, + this.functions ); + } + + /** + * This adds a versionable asset to the specified set. * - * If the rule already has an Id, and it is a different version number, then - * it will be copied for this ruleset. - * If it has the same version number, then it will be shared. + * Copy/versus linking: If the asset already has an Id, and it is a + * different version number, then it will be copied for the set. If it has + * the same version number, then it will be shared. Sharing is generally not + * recommended, but can be useful. */ - public RuleSetDef addRule(RuleDef rule) { - if (rule.getId() == null) { - rule.setVersionNumber(this.workingVersionNumber); - this.rules.add(rule); - } else if (rule.getVersionNumber() == this.workingVersionNumber) { - this.rules.add(rule); - } else { - RuleDef copy = (RuleDef) rule.copy(); - copy.setVersionNumber(this.workingVersionNumber); - copy.setVersionComment("Copied for this version."); - this.rules.add(copy); + RuleSetDef addAssetToSet(IVersionable asset, + Set set) { + if ( asset.getId() == null ) { + asset.setVersionNumber( this.workingVersionNumber ); + asset.setVersionComment( "New" ); + set.add( asset ); } + else if ( asset.getVersionNumber() == this.workingVersionNumber ) { + set.add( asset ); + } + else { + IVersionable copy = asset.copy(); + copy.setVersionNumber( this.workingVersionNumber ); + copy.setVersionComment( "Copied for this version." ); + set.add( copy ); + } return this; } - - public RuleSetDef addAttachment(RuleSetAttachment attachmentFile) { - attachmentFile.setVersionNumber(this.workingVersionNumber); - this.attachments.add(attachmentFile); - return this; - } - - public MetaData getMetaData(){ + + public MetaData getMetaData() { return metaData; } - public void setMetaData(MetaData metaData){ + + public void setMetaData(MetaData metaData) { this.metaData = metaData; } - - + /** The list of rules that are currently loaded for this ruleset */ - public Set getRules(){ + public Set getRules() { return rules; } - private void setRules(Set rules){ + + private void setRules(Set rules) { this.rules = rules; } - - public String getName(){ + + public String getName() { return name; } - private void setName(String name){ + + private void setName(String name) { this.name = name; } - public Set getTags(){ + public Set getTags() { return tags; } - private void setTags(Set tags){ + private void setTags(Set tags) { this.tags = tags; } - + public RuleSetDef addTag(String tag) { - this.tags.add(new Tag(tag)); + this.tags.add( new Tag( tag ) ); return this; } - public long getWorkingVersionNumber(){ + public long getWorkingVersionNumber() { return workingVersionNumber; } /** - * This will only be set when loading the RuleSet from the repository. - * When you load a ruleset, a version number is specified. - * This property is not persistent, as multiple people could be working on different versions - * at the same time. + * This will only be set when loading the RuleSet from the repository. When + * you load a ruleset, a version number is specified. This property is not + * persistent, as multiple people could be working on different versions at + * the same time. * - * DO NOT set this property. + * DO NOT set this property MANUALLY !!! * * @param workingVersionNumber */ - public void setWorkingVersionNumber(long workingVersionNumber){ + public void setWorkingVersionNumber(long workingVersionNumber) { this.workingVersionNumber = workingVersionNumber; } - /** - * This method increments the working version of the ruleset, creating a brand new version. - * This records the event in the version history. + /** + * This method increments the working version of the ruleset, creating a + * brand new version. This records the event in the version history. * - * Typically you would call this method when you want to make a stable version of a rule set (lock in all - * the related assets) and then move on to an "editing" version. You can always switch back to a previous version + * Typically you would call this method when you want to make a stable + * version of a rule set (lock in all the related assets) and then move on + * to an "editing" version. You can always switch back to a previous version * of a rulebase. * - * All rules and ruleset-attachments etc that are - * connected to this version of the ruleset are cloned with the new workingVersionNumber. + * All rules and ruleset-attachments etc that are connected to this version + * of the ruleset are cloned with the new workingVersionNumber. * - * This means that the previous state of the RuleSet is kept in tact (for instance, as a release of rules). - * Rules can then be edited, removed and so on without effecting any previous versions of rules and the ruleset. + * This means that the previous state of the RuleSet is kept in tact (for + * instance, as a release of rules). Rules can then be edited, removed and + * so on without effecting any previous versions of rules and the ruleset. * - * Previous rules can be retrieved by changing the value of workingVersionNumber. + * Previous rules can be retrieved by changing the value of + * workingVersionNumber. * - * Note that further to this, rules themselves will be versioned on save (think of that versioning as - * "minor" versions, and this sort of ruleset versions as major versions). + * Note that further to this, rules themselves will be versioned on save + * (think of that versioning as "minor" versions, and this sort of ruleset + * versions as major versions). * - * Ideally once a new version is created, the RuleSet should be stored and then loaded fresh, - * which will hide the non working versions of the rules. + * Ideally once a new version is created, the RuleSet should be stored and + * then loaded fresh, which will hide the non working versions of the rules. * - */ - public void createNewVersion(String comment, String newStatus) { + */ + public void createNewVersion(String comment, + String newStatus) { this.workingVersionNumber++; addNewVersionHistory( newStatus ); + + createAndAddNewVersions( this.rules, + comment, + this.workingVersionNumber ); + + createAndAddNewVersions( this.attachments, + comment, + this.workingVersionNumber ); + + createAndAddNewVersions( this.functions, + comment, + this.workingVersionNumber ); + + createAndAddNewVersions( this.applicationData, + comment, + this.workingVersionNumber ); - - //now have to create new rules and add to the collection - createAndAddNewVersions( this.rules, comment, this.workingVersionNumber ); - - //now attachments - createAndAddNewVersions( this.attachments, comment, this.workingVersionNumber ); + createAndAddNewVersions( this.imports, + comment, + this.workingVersionNumber ); - //create new functions, app data and imports etc. - System.out.println("DON'T FORGET FUNCTIONS ETC !!"); - } - private void addNewVersionHistory(String newStatus){ + private void addNewVersionHistory(String newStatus) { RuleSetVersionInfo newVersion = new RuleSetVersionInfo(); - newVersion.setStatus(newStatus); - newVersion.setVersionNumber(this.workingVersionNumber); - this.versionHistory.add(newVersion); + newVersion.setStatus( newStatus ); + newVersion.setVersionNumber( this.workingVersionNumber ); + this.versionHistory.add( newVersion ); } - /** This will work on any set of <code>IVersionable</code> objects. They are copied, and - * then added to the original set (with null Ids). The comment is added, as is the new version number. + /** + * This will work on any set of <code>IVersionable</code> objects. They + * are copied, and then added to the original set (with null Ids). The + * comment is added, as is the new version number. */ - private void createAndAddNewVersions(Set assets, String comment, long newVersionNumber){ - //as the Ids are null, copied objects - //will get a new identity, and have the new workingVersionNumber + private void createAndAddNewVersions(Set assets, + String comment, + long newVersionNumber) { + // as the Ids are null, copied objects + // will get a new identity, and have the new workingVersionNumber Set newVersions = new HashSet(); for ( Iterator iter = assets.iterator(); iter.hasNext(); ) { IVersionable old = (IVersionable) iter.next(); - if (old.getVersionNumber() == newVersionNumber - 1) { - //we only want to clone rules that are for the version being cloned + if ( old.getVersionNumber() == newVersionNumber - 1 ) { + // we only want to clone rules that are for the version being + // cloned IVersionable clone = (IVersionable) old.copy(); - clone.setVersionComment(comment); - clone.setVersionNumber(newVersionNumber); - newVersions.add(clone); + clone.setVersionComment( comment ); + clone.setVersionNumber( newVersionNumber ); + newVersions.add( clone ); } } - assets.addAll(newVersions); + assets.addAll( newVersions ); } - - - + public String toString() { - return "{ name=" + this.name + " , workingVersionNumber=" + this.workingVersionNumber + " }"; + return "{ name=" + this.name + " , workingVersionNumber=" + this.workingVersionNumber + " ruleCount:" + + this.rules.size() + " }"; } /** The name provides the natural ordering */ - public int compareTo(Object arg){ - if (arg instanceof RuleSetDef) { - return ((RuleSetDef) arg).name.compareTo(this.name); + public int compareTo(Object arg) { + if ( arg instanceof RuleSetDef ) { + return ((RuleSetDef) arg).name.compareTo( this.name ); } return 0; } - public Set getAttachments(){ + public Set getAttachments() { return attachments; } - private void setAttachments(Set attachments){ + private void setAttachments(Set attachments) { this.attachments = attachments; } - - + + public Set getApplicationData() { + return applicationData; + } + + private void setApplicationData(Set applicationData) { + this.applicationData = applicationData; + } + + public Set getFunctions() { + return functions; + } + + private void setFunctions(Set functions) { + this.functions = functions; + } + + public Set getImports() { + return imports; + } + + private void setImports(Set imports) { + this.imports = imports; + } + } Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepositoryImpl.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepositoryImpl.java 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepositoryImpl.java 2006-01-09 08:09:02 UTC (rev 2036) @@ -9,24 +9,26 @@ import org.hibernate.Session; - +/** + * The repository manager takes care of storing and sychronising the repository data with + * the repository database. + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + */ public class RepositoryImpl implements Repository { /** This will simply save the current version of the rule */ - public RuleDef save(RuleDef newRule) { + public void save(RuleDef newRule) { Session session = getSession(); session.beginTransaction(); session.saveOrUpdate(newRule); session.getTransaction().commit(); - - return newRule; } - //DODGY METHODS START + public RuleDef loadRule(String ruleName, long versionNumber) { Session session = getSession(); session.beginTransaction(); @@ -49,7 +51,6 @@ session.getTransaction().commit(); return result; } - //DODGY METHODS END public List findRulesByTag(String tag) { Session session = getSession(); @@ -63,15 +64,18 @@ - public RuleSetDef save(RuleSetDef ruleSet) { + /** Save the ruleset. The Ruleset will not be reloaded. */ + public void save(RuleSetDef ruleSet) { Session session = getSession(); session.beginTransaction(); session.saveOrUpdate(ruleSet); session.getTransaction().commit(); - return ruleSet; } - /** This loads a RuleSet with the appropriate workingVersionNumber applied to its assets. + /** + * This loads a RuleSet with the appropriate workingVersionNumber applied to its assets. + * @param workingVersionNumber The version of the ruleset and rules you want to work on. + * @param ruleSetName The ruleset name to retrieve (ruleset names must be unique). */ public RuleSetDef loadRuleSet(String ruleSetName, long workingVersionNumber) { Session session = getSession(); @@ -82,9 +86,9 @@ RuleSetDef def = (RuleSetDef) session.createQuery("from RuleSetDef where name = :name") - .setString("name", ruleSetName ).uniqueResult(); + .setString("name", ruleSetName ).uniqueResult(); + def.setWorkingVersionNumber(workingVersionNumber); - def.setWorkingVersionNumber(workingVersionNumber); removeVersionFilter( session ); session.getTransaction().commit(); return def; Added: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/ApplicationDataDef.hbm.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/ApplicationDataDef.hbm.xml 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/ApplicationDataDef.hbm.xml 2006-01-09 08:09:02 UTC (rev 2036) @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> + +<hibernate-mapping> + <class name="org.drools.repository.ApplicationDataDef" table="APP_DATA_DEFINITIONS"> + <id name="id" column="APP_DATA_ID"> + <generator class="native" /> + </id> + <property name="type" /> + <property name="identifier" /> + <property name="versionComment" /> + <property name="versionNumber" /> + </class> +</hibernate-mapping> \ No newline at end of file Property changes on: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/ApplicationDataDef.hbm.xml ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/FunctionDef.hbm.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/FunctionDef.hbm.xml 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/FunctionDef.hbm.xml 2006-01-09 08:09:02 UTC (rev 2036) @@ -0,0 +1,17 @@ +<?xml version="1.0"?> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> + +<hibernate-mapping> + <class name="org.drools.repository.FunctionDef" table="FUNCTION_DEFINITIONS"> + <id name="id" column="FUNCTION_ID"> + <generator class="native"/> + </id> + <property name="description" /> + <property name="functionContent" /> + <property name="language" /> + <property name="versionComment" /> + <property name="versionNumber" /> + </class> +</hibernate-mapping> \ No newline at end of file Property changes on: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/FunctionDef.hbm.xml ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/ImportDef.hbm.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/ImportDef.hbm.xml 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/ImportDef.hbm.xml 2006-01-09 08:09:02 UTC (rev 2036) @@ -0,0 +1,15 @@ +<?xml version="1.0"?> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> + +<hibernate-mapping> + <class name="org.drools.repository.ImportDef" table="IMPORT_DEFINITIONS"> + <id name="id" column="IMPORT_ID"> + <generator class="native"/> + </id> + <property name="type" /> + <property name="versionComment" /> + <property name="versionNumber" /> + </class> +</hibernate-mapping> \ No newline at end of file Property changes on: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/ImportDef.hbm.xml ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetDef.hbm.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetDef.hbm.xml 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetDef.hbm.xml 2006-01-09 08:09:02 UTC (rev 2036) @@ -35,28 +35,44 @@ <set name="tags" table="RULESET_TAGS" lazy="false" cascade="all"> <key column="RULESET_ID"/> <one-to-many class="org.drools.repository.Tag"/> - </set> + </set> + <set name="versionHistory" table="RULESET_VERSION_HISTORY" lazy="false" cascade="all"> + <key column="RULESET_ID" /> + <one-to-many class="org.drools.repository.RuleSetVersionInfo"/> + </set> - <set name="rules" table="RULESET_RULES" lazy="false" cascade="all"> + <!-- now come the versioned assets --> + <set name="rules" lazy="false" cascade="all"> <key column="RULESET_ID"/> <one-to-many class="org.drools.repository.RuleDef"/> <filter name="workingVersionFilter" condition=":filteredVersionNumber = versionNumber" /> </set> - - <set name="versionHistory" table="RULESET_VERSION_HISTORY" lazy="false" cascade="all"> - <key column="RULESET_ID" /> - <one-to-many class="org.drools.repository.RuleSetVersionInfo"/> - </set> - + <set name="attachments" lazy="false" cascade="all"> <key column="RULESET_ID"/> <one-to-many class="org.drools.repository.RuleSetAttachment"/> <filter name="workingVersionFilter" condition=":filteredVersionNumber = versionNumber" /> </set> - - + <set name="imports" lazy="false" cascade="all"> + <key column="RULESET_ID"/> + <one-to-many class="org.drools.repository.ImportDef"/> + <filter name="workingVersionFilter" condition=":filteredVersionNumber = versionNumber" /> + </set> + + <set name="functions" lazy="false" cascade="all"> + <key column="RULESET_ID"/> + <one-to-many class="org.drools.repository.FunctionDef"/> + <filter name="workingVersionFilter" condition=":filteredVersionNumber = versionNumber" /> + </set> + + <set name="applicationData" lazy="false" cascade="all"> + <key column="RULESET_ID"/> + <one-to-many class="org.drools.repository.ApplicationDataDef"/> + <filter name="workingVersionFilter" condition=":filteredVersionNumber = versionNumber" /> + </set> + </class> <!-- This magic allows us to have a view of working versions only --> Modified: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/Tag.hbm.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/Tag.hbm.xml 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/Tag.hbm.xml 2006-01-09 08:09:02 UTC (rev 2036) @@ -8,7 +8,10 @@ <!-- NOTE I really want to make tag strings normalised Need to add in logic for finding existing tags of same value - Or else use string as ID (not the best idea).--> + Or else use string as ID (not the best idea). + TODO: probably best to have a method with top 1000 tags cached - they re-use identity. + Then can look it up as needed. + --> <class name="org.drools.repository.Tag" table="DROOLS_TAGS"> <id name="id" column="TAG_ID"> <generator class="native" /> Modified: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RulePersistenceTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RulePersistenceTest.java 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RulePersistenceTest.java 2006-01-09 08:09:02 UTC (rev 2036) @@ -12,17 +12,16 @@ public void testStoreNewRuleDef() throws Exception { RepositoryImpl repo = getRepo(); - RuleDef def = repo.save(new RuleDef("myRule", "A rule")); + RuleDef def = new RuleDef("myRule", "A rule"); + repo.save(def); assertNotNull(def.getId()); - def = repo.save(new RuleDef("myRule2", "A rule2")); + repo.save(new RuleDef("myRule2", "A rule2")); def = new RuleDef("myRule3", "A rule3"); def.addTag("tag1").addTag("tag2").addTag("HR"); - def = repo.save(def); + repo.save(def); assertNotNull(def.getId()); } - - - + public void testRetreieveRuleWithTags() { RepositoryImpl repo = getRepo(); RuleDef newRule = new RuleDef("my rule", "content"); @@ -39,8 +38,7 @@ assertTrue(tagList[0].equals("HR") || tagList[0].equals("SALARY")); List rules = repo.findRulesByTag("HR"); - assertTrue(rules.size() > 0); - + assertTrue(rules.size() > 0); } public void testRuleCopy() { Modified: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RuleSetPersistenceTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RuleSetPersistenceTest.java 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RuleSetPersistenceTest.java 2006-01-09 08:09:02 UTC (rev 2036) @@ -4,15 +4,14 @@ import java.util.Iterator; import java.util.Set; -import org.drools.repository.AttachmentFile; -import org.drools.repository.MetaData; -import org.drools.repository.RuleDef; -import org.drools.repository.RuleSetAttachment; -import org.drools.repository.RuleSetDef; -import org.drools.repository.RuleSetVersionInfo; import org.drools.repository.db.PersistentCase; import org.drools.repository.db.RepositoryImpl; +/** + * Some quasi unit tests, and some quasi integration tests including versioning. + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + * + */ public class RuleSetPersistenceTest extends PersistentCase { public void testLoadSaveRuleSet() { @@ -87,7 +86,41 @@ assertEquals(2, def2.getVersionHistory().size()); } - public void testNewVersioning() { + public void testRemoveAsset() { + RuleSetDef def = new RuleSetDef("addRemove", null); + RuleDef rule = new RuleDef("addRemove Rule", "xxx"); + def.addRule(rule); + + RepositoryImpl repo = getRepo(); + + //save and load it fresh + repo.save(def); + def = repo.loadRuleSet("addRemove", 1); + assertEquals(1, def.getRules().size()); + + //create a new version + def.createNewVersion("new version", null); + repo.save(def); + + //load it fresh, and the remove the only rule + def = repo.loadRuleSet("addRemove", 2); + RuleDef onlyRule = (RuleDef) def.getRules().iterator().next(); + def.removeRule(onlyRule); + //assertEquals(0, def.getRules().size()); + repo.save(def); + + //load the new one, check its not there + def = repo.loadRuleSet("addRemove", 2); + assertEquals(0, def.getRules().size()); + + //load the old version, check its there + def = repo.loadRuleSet("addRemove", 1); + assertEquals(1, def.getRules().size()); + + + } + + public void testIntegrationNewVersioning() { RuleSetDef set = new RuleSetDef("InMemory", null); RuleDef def1 = new RuleDef("Rule1", "blah"); RuleDef def2 = new RuleDef("Rule2", "blah2"); @@ -144,8 +177,63 @@ assertEquals(1, att.getVersionNumber()); assertFalse("New version".equals(att.getVersionComment())); + RuleDef newRule = new RuleDef("blah42", "blah42"); + loaded.addRule(newRule); + //add some other assets to it. + loaded + .addApplicationData(new ApplicationDataDef("x", "XX")) + .addFunction(new FunctionDef("My func", "yeah")) + .addImport(new ImportDef("com.allenparsons.project")); + repo.save(loaded); + assertEquals(loaded.getWorkingVersionNumber(), newRule.getVersionNumber()); + assertNotNull(newRule.getId()); + loaded = repo.loadRuleSet("InMemory", 1); + assertEquals(1, loaded.getApplicationData().size()); + assertEquals(1, loaded.getFunctions().size()); + assertEquals(1, loaded.getImports().size()); + loaded = repo.loadRuleSet("InMemory", 2); + assertEquals(0, loaded.getApplicationData().size()); + assertEquals(0, loaded.getFunctions().size()); + assertEquals(0, loaded.getImports().size()); } + public void testParallelVersions() { + RuleSetDef def = new RuleSetDef("para", null); + def.addRule(new RuleDef("para1","sss")); + + RepositoryImpl repo = getRepo(); + repo.save(def); + + //create a new version + def = repo.loadRuleSet("para", 1); + def.createNewVersion("yeah", null); + repo.save(def); + + //load em up + RuleSetDef old = repo.loadRuleSet("para", 1); + RuleSetDef newRs = repo.loadRuleSet("para", 2); + assertEquals(1, old.getRules().size()); + assertEquals(1, newRs.getRules().size()); + + + newRs.addRule(new RuleDef("para2", "xxx")); + repo.save(newRs); + + + newRs = repo.loadRuleSet("para", 2); + old = repo.loadRuleSet("para", 1); + assertEquals(2, newRs.getRules().size()); + assertEquals(1, old.getRules().size()); + RuleDef originalRule = (RuleDef) old.getRules().iterator().next(); + //check that the original one still has the right version number + assertEquals(1, originalRule.getVersionNumber()); + + + + + + } + } Modified: trunk/labs/jbossrules/drools-repository/src/test/resources/hibernate.cfg.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/resources/hibernate.cfg.xml 2006-01-09 04:08:45 UTC (rev 2035) +++ trunk/labs/jbossrules/drools-repository/src/test/resources/hibernate.cfg.xml 2006-01-09 08:09:02 UTC (rev 2036) @@ -38,8 +38,13 @@ <mapping resource="org/drools/repository/RuleSetDef.hbm.xml"/> <mapping resource="org/drools/repository/RuleSetAttachment.hbm.xml"/> <mapping resource="org/drools/repository/RuleSetVersionInfo.hbm.xml"/> + <mapping resource="org/drools/repository/ApplicationDataDef.hbm.xml" /> + <mapping resource="org/drools/repository/FunctionDef.hbm.xml" /> + <mapping resource="org/drools/repository/ImportDef.hbm.xml" /> + + </session-factory> </hibernate-configuration> \ No newline at end of file |
Author: mar...@jb... Date: 2006-01-08 23:08:45 -0500 (Sun, 08 Jan 2006) New Revision: 2035 Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/BetaNodeBinder.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/EvaluatorFactory.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java Log: JungViewer -AlphaNodes now give sensible info when clicked Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java 2006-01-09 03:38:20 UTC (rev 2034) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java 2006-01-09 04:08:45 UTC (rev 2035) @@ -103,6 +103,7 @@ pr, new Dimension( 600, 600 ) ); + this.vv.setPickSupport( new ShapePickSupport() ); pr.setEdgeShapeFunction( new EdgeShape.QuadCurve() ); this.vv.setBackground( Color.white ); Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/BetaNodeBinder.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/BetaNodeBinder.java 2006-01-09 03:38:20 UTC (rev 2034) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/BetaNodeBinder.java 2006-01-09 04:08:45 UTC (rev 2035) @@ -24,6 +24,8 @@ public BetaNodeBinder(BetaNodeConstraint[] constraints) { this.constraints = constraints; } + + //public BetaNodeConstraints[] constraints boolean isAllowed(Object object, FactHandle handle, Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java 2006-01-09 03:38:20 UTC (rev 2034) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java 2006-01-09 04:08:45 UTC (rev 2035) @@ -48,6 +48,8 @@ import java.util.Map; import org.drools.ReteooJungViewer.HtmlContent; +import org.drools.rule.LiteralConstraint; +import org.drools.spi.Field; import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.graph.Vertex; @@ -235,12 +237,18 @@ } public String getHtml() { - return "AlphaNode : " + this.node.getId(); + LiteralConstraint constraint = node.getConstraint(); + Field field = constraint.getField(); + return "AlphaNode<br>field name : " + field.getName() + "<br>evaluator : " + constraint.getEvaluator() + "<br>value : " + field.getValue(); } public String toString() { return "AlphaNode"; } + + public Paint getFillPaint() { + return Color.BLUE; + } } static class LeftInputAdapterNodeVertex extends BaseNodeVertex { @@ -258,6 +266,10 @@ public String toString() { return "leftInputAdapter"; } + + public Paint getFillPaint() { + return Color.YELLOW; + } } static class RightInputAdapterNodeVertex extends BaseNodeVertex { @@ -275,6 +287,10 @@ public String toString() { return "RightInputAdapterNodeVertex"; } + + public Paint getFillPaint() { + return Color.ORANGE; + } } static class JoinNodeVertex extends BaseNodeVertex { @@ -286,12 +302,17 @@ } public String getHtml() { + this.node.getJoinNodeBinder(). return "JoinNode : " + this.node.getId(); } public String toString() { return "JoinNode"; } + + public Paint getFillPaint() { + return Color.GREEN; + } } static class NotNodeVertex extends BaseNodeVertex { @@ -309,6 +330,10 @@ public String toString() { return "NotNode"; } + + public Paint getFillPaint() { + return Color.CYAN; + } } static class TestNodeVertex extends BaseNodeVertex { @@ -343,6 +368,10 @@ public String toString() { return "TerminalNode"; } + + public Paint getFillPaint() { + return Color.DARK_GRAY; + } } public static abstract class BaseNodeVertex extends DirectedSparseVertex Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/EvaluatorFactory.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/EvaluatorFactory.java 2006-01-09 03:38:20 UTC (rev 2034) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/EvaluatorFactory.java 2006-01-09 04:08:45 UTC (rev 2035) @@ -60,6 +60,10 @@ Object object2) { return object1.equals( object2 ); } + + public String toString() { + return "Object =="; + } } static class ObjectNotEqualEvaluator extends BaseEvaluator { @@ -81,8 +85,23 @@ Object object2) { return !object1.equals( object2 ); } + + public String toString() { + return "Object !="; + } } + Evaluator getBooleanEvaluator(int operator) { + switch ( operator ) { + case Evaluator.EQUAL : + return ObjectEqualEvaluator.getInstance(); + case Evaluator.NOT_EQUAL : + return ObjectNotEqualEvaluator.getInstance(); + default : + throw new RuntimeException( "Operator '" + operator + "' does not exist for BooleanEvaluator" ); + } + } + static class BooleanEqualEvaluator extends BaseEvaluator { private static Evaluator INSTANCE; @@ -102,18 +121,11 @@ Object object2) { return ((Boolean)object1).booleanValue() == ((Boolean)object2).booleanValue(); } - } - - Evaluator getBooleanEvaluator(int operator) { - switch ( operator ) { - case Evaluator.EQUAL : - return ObjectEqualEvaluator.getInstance(); - case Evaluator.NOT_EQUAL : - return ObjectNotEqualEvaluator.getInstance(); - default : - throw new RuntimeException( "Operator '" + operator + "' does not exist for BooleanEvaluator" ); - } - } + + public String toString() { + return "Boolean =="; + } + } static class BooleanNotEqualEvaluator extends BaseEvaluator { private static Evaluator INSTANCE; @@ -134,6 +146,10 @@ Object object2) { return ((Boolean)object1).booleanValue() != ((Boolean)object2).booleanValue(); } + + public String toString() { + return "Boolean !="; + } } Evaluator getShortEvaluator(int operator) { @@ -174,6 +190,10 @@ Object object2) { return ((Number) object1).shortValue() == ((Number) object2).shortValue(); } + + public String toString() { + return "Short =="; + } } static class ShortNotEqualEvaluator extends BaseEvaluator { @@ -195,6 +215,10 @@ Object object2) { return ((Number) object1).shortValue() != ((Number) object2).shortValue(); } + + public String toString() { + return "Short !="; + } } static class ShortLessEvaluator extends BaseEvaluator { @@ -216,6 +240,10 @@ Object object2) { return ((Number) object1).shortValue() < ((Number) object2).shortValue(); } + + public String toString() { + return "Short <"; + } } static class ShortLessOrEqualEvaluator extends BaseEvaluator { @@ -237,6 +265,10 @@ Object object2) { return ((Number) object1).shortValue() <= ((Number) object2).shortValue(); } + + public String toString() { + return "Boolean <="; + } } static class ShortGreaterEvaluator extends BaseEvaluator { @@ -258,6 +290,10 @@ Object object2) { return ((Number) object1).shortValue() > ((Number) object2).shortValue(); } + + public String toString() { + return "Short >"; + } } static class ShortGreaterOrEqualEvaluator extends BaseEvaluator { @@ -279,6 +315,10 @@ Object object2) { return ((Number) object1).shortValue() >= ((Number) object2).shortValue(); } + + public String toString() { + return "Short >="; + } } Evaluator getIntegerEvaluator(int operator) { @@ -319,6 +359,10 @@ Object object2) { return ((Number) object1).intValue() == ((Number) object2).intValue(); } + + public String toString() { + return "Integer =="; + } } static class IntegerNotEqualEvaluator extends BaseEvaluator { @@ -340,6 +384,10 @@ Object object2) { return ((Number) object1).intValue() != ((Number) object2).intValue(); } + + public String toString() { + return "Integer !="; + } } static class IntegerLessEvaluator extends BaseEvaluator { @@ -361,6 +409,10 @@ Object object2) { return ((Number) object1).intValue() < ((Number) object2).intValue(); } + + public String toString() { + return "Integer <"; + } } static class IntegerLessOrEqualEvaluator extends BaseEvaluator { @@ -382,6 +434,10 @@ Object object2) { return ((Number) object1).intValue() <= ((Number) object2).intValue(); } + + public String toString() { + return "Integer <="; + } } static class IntegerGreaterEvaluator extends BaseEvaluator { @@ -403,6 +459,10 @@ Object object2) { return ((Number) object1).intValue() > ((Number) object2).intValue(); } + + public String toString() { + return "Integer >"; + } } static class IntegerGreaterOrEqualEvaluator extends BaseEvaluator { @@ -424,5 +484,9 @@ Object object2) { return ((Number) object1).intValue() >= ((Number) object2).intValue(); } + + public String toString() { + return "Integer >="; + } } } Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java 2006-01-09 03:38:20 UTC (rev 2034) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java 2006-01-09 04:08:45 UTC (rev 2035) @@ -33,7 +33,7 @@ return this.evaluator; } - public Object getField() { + public Field getField() { return this.field; } Modified: trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java 2006-01-09 03:38:20 UTC (rev 2034) +++ trunk/labs/jbossrules/drools-core/src/test/java/org/drools/examples/manners/MannersTest.java 2006-01-09 04:08:45 UTC (rev 2035) @@ -112,7 +112,7 @@ public void test1() throws DuplicateRuleNameException, InvalidRuleException, IntrospectionException, RuleIntegrationException, RuleSetIntegrationException, InvalidPatternException, FactException, IOException, InterruptedException { RuleSet ruleSet = new RuleSet( "Miss Manners" ); -// ruleSet.addRule( getAssignFirstSeatRule() ); + ruleSet.addRule( getAssignFirstSeatRule() ); // ruleSet.addRule( getMakePath() ); ruleSet.addRule( getFindSeating() ); // ruleSet.addRule( getPathDone() ); @@ -127,27 +127,26 @@ public void run() { ReteooJungViewer.createAndShowGUI(ruleBase); } - }); + }); + - while (true) { - Thread.sleep( 1000 ); + WorkingMemory workingMemory = ruleBase.newWorkingMemory(); + + InputStream is = getClass().getResourceAsStream( "/manners16.dat" ); + List list = getInputObjects(is); + for (Iterator it = list.iterator(); it.hasNext(); ) { + workingMemory.assertObject( it.next() ); } + //System.out.println( list ); + workingMemory.assertObject( new Count(0) ); -// -// WorkingMemory workingMemory = ruleBase.newWorkingMemory(); -// -// InputStream is = getClass().getResourceAsStream( "/manners16.dat" ); -// List list = getInputObjects(is); -// for (Iterator it = list.iterator(); it.hasNext(); ) { -// workingMemory.assertObject( it.next() ); -// } -// //System.out.println( list ); -// -// workingMemory.assertObject( new Count(0) ); -// -// workingMemory.fireAllRules(); + workingMemory.fireAllRules(); + while (true) { + Thread.sleep( 1000 ); + } + } /** |
From: <jbo...@li...> - 2006-01-09 03:38:26
|
Author: mar...@jb... Date: 2006-01-08 22:38:20 -0500 (Sun, 08 Jan 2006) New Revision: 2034 Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java Log: -JungVisitor and Viewer now uses reflection for nearly all node types and you can specify colors for each node Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java 2006-01-09 03:28:23 UTC (rev 2033) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/ReteooJungViewer.java 2006-01-09 03:38:20 UTC (rev 2034) @@ -5,6 +5,7 @@ import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; +import java.awt.Paint; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; @@ -17,7 +18,7 @@ import javax.swing.JScrollPane; import org.drools.reteoo.ReteooToJungVisitor; -import org.drools.reteoo.ReteooToJungVisitor.ReteooNodeVertex; +import org.drools.reteoo.ReteooToJungVisitor.BaseNodeVertex; import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.graph.Vertex; @@ -26,6 +27,7 @@ import edu.uci.ics.jung.graph.decorators.EllipseVertexShapeFunction; import edu.uci.ics.jung.graph.decorators.PickableEdgePaintFunction; import edu.uci.ics.jung.graph.decorators.PickableVertexPaintFunction; +import edu.uci.ics.jung.graph.decorators.VertexPaintFunction; import edu.uci.ics.jung.graph.impl.SparseGraph; import edu.uci.ics.jung.graph.impl.SparseTree; import edu.uci.ics.jung.visualization.DefaultGraphLabelRenderer; @@ -76,11 +78,17 @@ this.graph = visitor.getGraph(); final PluggableRenderer pr = new PluggableRenderer(); + + pr.setVertexPaintFunction(new VertexPaintFunction() { + public Paint getFillPaint(Vertex v) { + return ((HtmlContent) v).getFillPaint(); + } - pr.setVertexPaintFunction( new PickableVertexPaintFunction( pr, - Color.black, - Color.white, - Color.yellow ) ); + public Paint getDrawPaint(Vertex v) { + return ((HtmlContent) v).getDrawPaint(); + } + }); + pr.setEdgePaintFunction( new PickableEdgePaintFunction( pr, Color.black, Color.cyan ) ); @@ -180,5 +188,9 @@ public interface HtmlContent { public String getHtml(); + + public Paint getFillPaint(); + + public Paint getDrawPaint(); } } Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java 2006-01-09 03:28:23 UTC (rev 2033) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java 2006-01-09 03:38:20 UTC (rev 2034) @@ -40,21 +40,21 @@ * */ +import java.awt.Color; +import java.awt.Paint; import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Map; -import java.util.Set; +import org.drools.ReteooJungViewer.HtmlContent; + import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.graph.Vertex; import edu.uci.ics.jung.graph.impl.DirectedSparseEdge; import edu.uci.ics.jung.graph.impl.DirectedSparseGraph; import edu.uci.ics.jung.graph.impl.DirectedSparseVertex; -import edu.uci.ics.jung.graph.impl.SparseGraph; -import edu.uci.ics.jung.graph.impl.UndirectedSparseEdge; import edu.uci.ics.jung.visualization.VisualizationViewer; -import org.drools.ReteooJungViewer.HtmlContent; /** * Produces a graph in GraphViz DOT format. @@ -81,8 +81,6 @@ Graph graph; - VisualizationViewer vv; - Vertex rootVertex; Vertex parentVertex; @@ -98,25 +96,6 @@ } /** - * Default visitor if an unknown object is visited. - */ - public void visitObject(Object object) { - Vertex vertex = this.graph.addVertex( new UnkownVertex() ); - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - } - - /** - * Null visitor if a NULL object gets visited. Unique String objects are - * generated to ensure every NULL object is distinct. - */ - public void visitNull() { - Vertex vertex = this.graph.addVertex( new UnkownVertex() ); - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - } - - /** * RuleBaseImpl visits its Rete. */ public void visitRuleBaseImpl(RuleBaseImpl ruleBase) { @@ -143,40 +122,17 @@ } } - /** - * ObjectTypeNode displays its objectType and then visits each of its - * ParameterNodes. - */ - public void visitObjectTypeNode(ObjectTypeNode node) { - Vertex vertex = (ObjectTypeNodeVertex) this.visitedNodes.get( dotId( node ) ); + public void visitBaseNode(BaseNode node) { + Vertex vertex = (Vertex) this.visitedNodes.get( dotId( node ) ); if ( vertex == null ) { - vertex = new ObjectTypeNodeVertex( node ); - this.graph.addVertex( vertex ); - this.visitedNodes.put( dotId( node ), - vertex ); - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - Vertex oldParentVertex = this.parentVertex; - this.parentVertex = vertex; - - //makeNode( node, - // "ObjectTypeNode", - // "objectType: " + node.getObjectType( ) ); - for ( Iterator i = node.getObjectSinks().iterator(); i.hasNext(); ) { - Object nextNode = i.next(); - visitNode( nextNode ); + try { + String name = node.getClass().getName(); + name = name.substring( name.lastIndexOf( '.' ) + 1 ) + "Vertex"; + Class clazz = Class.forName( "org.drools.reteoo.ReteooToJungVisitor$" + name ); + vertex = (Vertex) clazz.getConstructor( new Class[]{node.getClass()} ).newInstance( new Object[]{node} ); + } catch ( Exception e ) { + throw new RuntimeException( "problem visiting node " + node.getClass().getName(), e); } - this.parentVertex = oldParentVertex; - } else { - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - } - } - - public void visitAlphaNode(AlphaNode node) { - Vertex vertex = (AlphaNodeVertex) this.visitedNodes.get( dotId( node ) ); - if ( vertex == null ) { - vertex = new AlphaNodeVertex( node ); this.graph.addVertex( vertex ); this.visitedNodes.put( dotId( node ), vertex ); @@ -185,160 +141,27 @@ Vertex oldParentVertex = this.parentVertex; this.parentVertex = vertex; - for ( Iterator i = node.getObjectSinks().iterator(); i.hasNext(); ) { - Object nextNode = i.next(); - visitNode( nextNode ); + List list = null; + if ( node instanceof ObjectSource ) { + list = ((ObjectSource) node).getObjectSinks(); + } else if ( node instanceof TupleSource ) { + list = ((TupleSource) node).getTupleSinks(); } - this.parentVertex = oldParentVertex; - } else { - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - } - } - public void visitRightInputAdapterNode(RightInputAdapterNode node) { - Vertex vertex = (RightInputAdapterNodeVertex) this.visitedNodes.get( dotId( node ) ); - if ( vertex == null ) { - vertex = new RightInputAdapterNodeVertex( node ); - this.graph.addVertex( vertex ); - this.visitedNodes.put( dotId( node ), - vertex ); - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - Vertex oldParentVertex = this.parentVertex; - this.parentVertex = vertex; - - for ( Iterator i = node.getObjectSinks().iterator(); i.hasNext(); ) { - Object nextNode = i.next(); - visitNode( nextNode ); + if ( list != null ) { + for ( Iterator it = list.iterator(); it.hasNext(); ) { + Object nextNode = it.next(); + visitNode( nextNode ); + } } - this.parentVertex = oldParentVertex; + this.parentVertex = oldParentVertex; } else { this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - } - } - - public void visitLeftInputAdapterNode(LeftInputAdapterNode node) { - Vertex vertex = (LeftInputAdapterNodeVertex) this.visitedNodes.get( dotId( node ) ); - if ( vertex == null ) { - vertex = new LeftInputAdapterNodeVertex( node ); - this.graph.addVertex( vertex ); - this.visitedNodes.put( dotId( node ), - vertex ); - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, vertex ) ); - Vertex oldParentVertex = this.parentVertex; - this.parentVertex = vertex; - - for ( Iterator i = node.getTupleSinks().iterator(); i.hasNext(); ) { - Object nextNode = i.next(); - visitNode( nextNode ); - } - this.parentVertex = oldParentVertex; - } else { - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); } } - public void visitJoinNode(JoinNode node) { - Vertex vertex = (JoinNodeVertex) this.visitedNodes.get( dotId( node ) ); - if ( vertex == null ) { - vertex = new JoinNodeVertex( node ); - this.graph.addVertex( vertex ); - this.visitedNodes.put( dotId( node ), - vertex ); - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - Vertex oldParentVertex = this.parentVertex; - this.parentVertex = vertex; - - for ( Iterator i = node.getTupleSinks().iterator(); i.hasNext(); ) { - Object nextNode = i.next(); - visitNode( nextNode ); - } - this.parentVertex = oldParentVertex; - } else { - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - } - } - - public void visitNotNode(NotNode node) { - Vertex vertex = (NotNodeVertex) this.visitedNodes.get( dotId( node ) ); - if ( vertex == null ) { - vertex = new NotNodeVertex( node ); - this.graph.addVertex( vertex ); - this.visitedNodes.put( dotId( node ), - vertex ); - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - Vertex oldParentVertex = this.parentVertex; - this.parentVertex = vertex; - - for ( Iterator i = node.getTupleSinks().iterator(); i.hasNext(); ) { - Object nextNode = i.next(); - visitNode( nextNode ); - } - this.parentVertex = oldParentVertex; - } else { - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - } - } - - public void visitTestNode(TestNode node) { - Vertex vertex = (TestNodeVertex) this.visitedNodes.get( dotId( node ) ); - if ( vertex == null ) { - vertex = new TestNodeVertex( node ); - this.graph.addVertex( vertex ); - this.visitedNodes.put( dotId( node ), - vertex ); - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - Vertex oldParentVertex = this.parentVertex; - this.parentVertex = vertex; - - for ( Iterator i = node.getTupleSinks().iterator(); i.hasNext(); ) { - Object nextNode = i.next(); - visitNode( nextNode ); - } - this.parentVertex = oldParentVertex; - } else { - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - } - } - - // /** - // * ConditionNode displays its condition and tuple Declarations and then - // * visits its TupleSink. - // */ - // public void visitConditionNode(ConditionNode node) - // { - // makeTupleSourceNode( node, - // "ConditionNode", - // "TupleSource/TupleSink", - // "condition: " + node.getCondition( ) + newline + format( node.getTupleDeclarations( ), - // "tuple" ) ); - // } - /** - * TerminalNode displays its rule. - */ - public void visitTerminalNode(TerminalNode node) { - Vertex vertex = this.graph.addVertex( new TerminalNodeVertex( node ) ); - this.graph.addEdge( new DroolsDirectedEdge( this.parentVertex, - vertex ) ); - - // makeNode( node, - // "TerminalNode", - // "TupleSink", - // "rule: " + node.getRule( ).getName( ) ); - } - - /** * Helper method to ensure nodes are not visited more than once. */ private void visitNode(Object node) { @@ -365,7 +188,7 @@ // } } - class ReteNodeVertex extends ReteooNodeVertex { + static class ReteNodeVertex extends BaseNodeVertex { private final Rete node; public ReteNodeVertex(Rete node) { @@ -382,7 +205,7 @@ } } - class ObjectTypeNodeVertex extends ReteooNodeVertex { + static class ObjectTypeNodeVertex extends BaseNodeVertex { private final ObjectTypeNode node; public ObjectTypeNodeVertex(ObjectTypeNode node) { @@ -391,15 +214,19 @@ } public String getHtml() { - return "ObjectTypeNode : " + this.node.getId(); + return "ObjectTypeNode : " + this.node.getObjectType(); } public String toString() { return "ObjectTypeNode"; } + + public Paint getFillPaint() { + return Color.RED; + } } - class AlphaNodeVertex extends ReteooNodeVertex { + static class AlphaNodeVertex extends BaseNodeVertex { private final AlphaNode node; public AlphaNodeVertex(AlphaNode node) { @@ -416,7 +243,7 @@ } } - class LeftInputAdapterNodeVertex extends ReteooNodeVertex { + static class LeftInputAdapterNodeVertex extends BaseNodeVertex { private final LeftInputAdapterNode node; public LeftInputAdapterNodeVertex(LeftInputAdapterNode node) { @@ -433,7 +260,7 @@ } } - class RightInputAdapterNodeVertex extends ReteooNodeVertex { + static class RightInputAdapterNodeVertex extends BaseNodeVertex { private final RightInputAdapterNode node; public RightInputAdapterNodeVertex(RightInputAdapterNode node) { @@ -450,7 +277,7 @@ } } - class JoinNodeVertex extends ReteooNodeVertex { + static class JoinNodeVertex extends BaseNodeVertex { private final JoinNode node; public JoinNodeVertex(JoinNode node) { @@ -467,7 +294,7 @@ } } - class NotNodeVertex extends ReteooNodeVertex { + static class NotNodeVertex extends BaseNodeVertex { private final NotNode node; public NotNodeVertex(NotNode node) { @@ -484,7 +311,7 @@ } } - class TestNodeVertex extends ReteooNodeVertex { + static class TestNodeVertex extends BaseNodeVertex { private final TestNode node; public TestNodeVertex(TestNode node) { @@ -501,7 +328,7 @@ } } - class TerminalNodeVertex extends ReteooNodeVertex { + static class TerminalNodeVertex extends BaseNodeVertex { private final TerminalNode node; public TerminalNodeVertex(TerminalNode node) { @@ -518,28 +345,23 @@ } } - class UnkownVertex extends ReteooNodeVertex { - - public UnkownVertex() { + public static abstract class BaseNodeVertex extends DirectedSparseVertex + implements + HtmlContent { + public BaseNodeVertex() { super(); } public String getHtml() { - return "Uknown"; + return this.getClass().getName().toString(); } - - public String toString() { - return "Unknown"; + + public Paint getFillPaint() { + return Color.WHITE; } - } - public static abstract class ReteooNodeVertex extends DirectedSparseVertex - implements - HtmlContent { - public ReteooNodeVertex() { - super(); - } - - public abstract String getHtml(); + public Paint getDrawPaint() { + return Color.BLACK; + } } } |
From: <jbo...@li...> - 2006-01-09 03:28:28
|
Author: mic...@jb... Date: 2006-01-08 22:28:23 -0500 (Sun, 08 Jan 2006) New Revision: 2033 Modified: trunk/labs/jbossrules/eclipse-code-style.xml Log: more spaces before brackets Modified: trunk/labs/jbossrules/eclipse-code-style.xml =================================================================== --- trunk/labs/jbossrules/eclipse-code-style.xml 2006-01-09 02:45:27 UTC (rev 2032) +++ trunk/labs/jbossrules/eclipse-code-style.xml 2006-01-09 03:28:23 UTC (rev 2033) @@ -1,13 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<profiles version="9"> -<profile name="codehaus" version="9"> +<profiles version="8"> +<profile name="codehaus2" version="8"> <setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="true"/> <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="83"/> <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="17"/> <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="83"/> <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="83"/> <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="83"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/> <setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="18"/> <setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="0"/> <setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="4"/> @@ -61,7 +60,6 @@ <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/> <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/> <setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/> <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/> <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/> <setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/> @@ -70,11 +68,11 @@ <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation" value="insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/> +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/> +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="insert"/> +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/> +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/> @@ -218,7 +216,6 @@ <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/> |