Bug 780644 (SOA-3083) - Potential API breaks in JBPM
Summary: Potential API breaks in JBPM
Keywords:
Status: CLOSED DEFERRED
Alias: SOA-3083
Product: JBoss Enterprise SOA Platform 4
Classification: JBoss
Component: JBPM - within SOA
Version: 4.3 CP05 CR1
Hardware: Unspecified
OS: Unspecified
urgent
urgent
Target Milestone: ---
: ---
Assignee: Marco Rietveld
QA Contact:
URL: http://jira.jboss.org/jira/browse/SOA...
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-05-24 07:03 UTC by Jiri Pechanec
Modified: 2016-09-20 05:04 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
: 780645 (view as bug list)
Environment:
Last Closed: 2011-06-14 12:13:15 UTC
Type: Bug


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker JBPM-3234 0 None None None Never
Red Hat Issue Tracker SOA-3083 0 None None None Never

Description Jiri Pechanec 2011-05-24 07:03:11 UTC
project_key: SOA

We have identified this changes on public API. It can break legacy applications if they are using it
   [groovy] Missing or changed method public java.lang.Class org.jbpm.instantiation.ProcessClassLoader.findClass(java.lang.String) throws java.lang.ClassNotFoundException on class org.jbpm.instantiation.ProcessClassLoader
   [groovy] Missing or changed method public java.net.URL org.jbpm.instantiation.ProcessClassLoader.findResource(java.lang.String) on class org.jbpm.instantiation.ProcessClassLoader

   [groovy] Missing or changed method public static void org.jbpm.mail.Mail.send(java.util.Properties,java.lang.String,java.util.List,java.lang.String,java.lang.String) on class org.jbpm.mail.Mail
   [groovy] Missing or changed method public static void org.jbpm.mail.Mail.send(java.util.Properties,java.lang.String,java.util.List,java.util.List,java.lang.String,java.lang.String) on class org.jbpm.mail.Mail
   [groovy] Missing or changed method public java.util.List org.jbpm.mail.Mail.getRecipients() on class org.jbpm.mail.Mail
   [groovy] Missing or changed method public java.util.List org.jbpm.mail.Mail.getCcRecipients() on class org.jbpm.mail.Mail
   [groovy] Missing or changed method public java.util.List org.jbpm.mail.Mail.getBccRecipients() on class org.jbpm.mail.Mail

   [groovy] Missing or changed method public synchronized org.jbpm.job.executor.JobExecutor org.jbpm.JbpmConfiguration.getJobExecutor() on class org.jbpm.JbpmConfiguration
   [groovy] Missing or changed method public synchronized java.lang.Object org.jbpm.configuration.JbpmContextInfo.createObject(org.jbpm.configuration.ObjectFactoryImpl) on class org.jbpm.configuration.JbpmContextInfo
   [groovy] Missing or changed method public synchronized java.lang.Object org.jbpm.configuration.ObjectFactoryImpl.createObject(java.lang.String) on class org.jbpm.configuration.ObjectFactoryImpl
   [groovy] Missing or changed method public synchronized boolean org.jbpm.configuration.ObjectFactoryImpl.hasObject(java.lang.String) on class org.jbpm.configuration.ObjectFactoryImpl

   [groovy] Missing or changed method public java.util.Set org.jbpm.job.executor.JobExecutor.getMonitoredJobIds() on class org.jbpm.job.executor.JobExecutor

Comment 1 (please assign to mrietvel@redhat.com) 2011-06-13 14:28:11 UTC
Link: Added: This issue Cloned to SOA-3105


Comment 2 (please assign to mrietvel@redhat.com) 2011-06-13 14:28:31 UTC
Link: Removed: This issue Cloned to SOA-3105 


Comment 3 (please assign to mrietvel@redhat.com) 2011-06-13 14:40:49 UTC
Link: Added: This issue relates to JBPM-3234


Comment 4 (please assign to mrietvel@redhat.com) 2011-06-14 09:38:33 UTC
With regards to the methods which previously had synchronized signatures:

No changes will be made on the following methods: 

- public JbpmConfiguration.getJobExecutor()
- public Object JbpmContextInfo.createObject(ObjectFactoryImpl)
- public Object ObjectFactoryImpl.createObject(String)
- public boolean ObjectFactoryImpl.hasObject(String) 
While the synchronized modifier has been removed from these methods, they are all still thread safe. In all of the methods, there is now a synchronized block being used within the method itself, or otherwise deeper in the method stack: this was (probably) done in order to make the synchronized block as small (and fast) as possible, since there are other things done in the method that can be done outside of a synchronized block (while still keeping the method thread safe). 


Comment 5 (please assign to mrietvel@redhat.com) 2011-06-14 11:54:01 UTC
With regards to the modified methods in ProcessClassLoader: 

- protected Class ProcessClassLoader.findClass(String)
- protected URL ProcessClassLoader.findResource(String) 

These methods were made protected when Alejandro did work for JBPM-2908: StackOverflowError from specific jbpm.cfg.xml configuration. 

I'm would like to leave these methods unchanged for the following reasons: 
- Alejandro made the methods protected (they were public) in order to limit the use of these methods. He probably did this for two reason: 
1. These methods aren't supposed to be used by anything except for the jBPM internal classes. 
2. There isn't any obvious reason why a user would use these methods. In other words, these methods expose internal classloading information that a jBPM user should _not_ be using. (well, in my opinion, then. :) )
(3. Also, in ClassLoader, which ProcessClassLoader extends, these methods are also protected.)

@Jiri, what do you think? 

Comment 6 Jiri Pechanec 2011-06-14 11:57:25 UTC
Please resolve the issue as won't fixed and I'll close it

Comment 7 (please assign to mrietvel@redhat.com) 2011-06-14 12:13:15 UTC
Release Notes Docs Status: Added: Not Required
Release Notes Text: Added: The methods in org.jbpm.mail.Mail and the JobExecutor.getMonitoredJobIds() have been modified so that legacy applications can find the methods they expect.

Other methods (see comments) have been left as is.



Note You need to log in before you can comment on or make changes to this bug.