Skip to content

Commit

Permalink
Detect EJB Timer usage (#792)
Browse files Browse the repository at this point in the history
* Adding EJB Timer

* Fix graph and path

* Fix test

* Better version of the rule
  • Loading branch information
agoncal committed Dec 7, 2022
1 parent 7b5c52f commit e74e796
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,19 @@
</technology-identified>
</perform>
</rule>
<rule id="technology-usage-ejb-01400">
<when>
<graph-query discriminator="TechnologyTagModel">
<property name="name">EJB Timer</property>
</graph-query>
</when>
<perform>
<technology-identified name="EJB Timer">
<tag name="Execute"/>
<tag name="Processing"/>
<tag name="Java EE"/>
</technology-identified>
</perform>
</rule>
</rules>
</ruleset>
30 changes: 30 additions & 0 deletions rules/rules-reviewed/technology-usage/ejb.windup.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0"?>
<ruleset
xmlns="http://windup.jboss.org/schema/jboss-ruleset" id="ejb"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">
<metadata>
<description>
This ruleset provides analysis of EJB libraries.
</description>
<dependencies>
<addon id="org.jboss.windup.rules,windup-rules-javaee,3.0.0.Final" />
<addon id="org.jboss.windup.rules,windup-rules-java,3.0.0.Final" />
</dependencies>
</metadata>
<rules>
<rule id="ejb-01000">
<when>
<javaclass references="javax.ejb.{classes}"/>
</when>
<perform>
<classification title="EJB Timer" category-id="information" effort="0">
<description>The application uses EJB timers.</description>
</classification>
<technology-tag level="INFORMATIONAL">EJB Timer</technology-tag>
</perform>
<where param="classes">
<matches pattern="(Schedule|ScheduleExpression|Schedules|TimedObject|Timeout|Timer|TimerConfig|TimerHandle|TimerService)" />
</where>
</rule>
</rules>
</ruleset>
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import javax.ejb.Schedule;
import javax.ejb.Stateless;

@Stateless
public class EJBTimerSchedule {

@Schedule(dayOfMonth = "Last", hour = "23")
public void onEvent() {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import javax.ejb.Timeout;
import javax.ejb.Stateless;

@Stateless
public class EJBTimerTimeout {

@Timeout
public void onEvent() {
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
<?xml version="1.0"?>
<ruletest id="technology-usage-ejb-test" xmlns="http://windup.jboss.org/schema/jboss-ruleset">
<testDataPath>data/ejb/</testDataPath>
<rulePath>../ejb.windup.xml</rulePath>
<rulePath>../ejb-technology-usage.windup.xml</rulePath>
<ruleset>
<rules>
<rule id="technology-usage-ejb-01000-test">
<when>
<not>
<technology-statistics-exists name="Stateless (SLSB)" number-found="2">
<technology-statistics-exists name="Stateless (SLSB)" number-found="4">
<tag name="Connect"/>
<tag name="Bean"/>
<tag name="Java EE"/>
Expand Down Expand Up @@ -60,6 +61,20 @@
<fail message="Entity Bean Technology Statistic Not Found" />
</perform>
</rule>
<rule id="technology-usage-ejb-01400-test">
<when>
<not>
<technology-statistics-exists name="EJB Timer" number-found="1">
<tag name="Execute"/>
<tag name="Processing"/>
<tag name="Java EE"/>
</technology-statistics-exists>
</not>
</when>
<perform>
<fail message="EJB Timer Technology Not Found" />
</perform>
</rule>
</rules>
</ruleset>
</ruletest>

0 comments on commit e74e796

Please sign in to comment.