Bug 236589 - [code generation] Generate observable (introduce observer pattern)
Summary: [code generation] Generate observable (introduce observer pattern)
Status: ASSIGNED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.4   Edit
Hardware: PC Windows XP
: P3 enhancement (vote)
Target Milestone: ---   Edit
Assignee: JDT-UI-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-06-11 06:08 EDT by Benno Baumgartner CLA
Modified: 2008-06-11 09:45 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Benno Baumgartner CLA 2008-06-11 06:08:28 EDT
I20080609-1311

Given:
package test;      
public class E01 {
	private int f1, f2;

	public void setF1(int f1) {
		this.f1 = f1;
	}

	public void setF2(int f2) {
		this.f2 = f2;
	}
}
Should: There should be a refactoring/source action to infer the observer pattern into this type. The result would look something like:

package test;

import java.util.HashSet;
import java.util.Iterator;

public class E01 {
	public interface E01Observer {
		void f2Set(int f2);
		void f1Set(int f1);
	}

	private int f1, f2;
	private final HashSet<E01Observer> observers;
	
	public E01() {
		observers= new HashSet<E01Observer>();	
	}

	public void setF1(int f1) {
		this.f1 = f1;
		
		for (Iterator<E01Observer> iterator = 
			    observers.iterator(); 
		        iterator.hasNext();) {
			
			E01Observer observer = iterator.next();
			observer.f1Set(f1);
		}
	}

	public void setF2(int f2) {
		this.f2 = f2;
		
		for (Iterator<E01Observer> iterator = 
		    observers.iterator(); 
	            iterator.hasNext();) {
		
			E01Observer observer = iterator.next();
			observer.f2Set(f2);
		}
	}
	
	public void addObserver(E01Observer observer) {
		observers.add(observer);
	}
	
	public void removeObserver(E01Observer observer) {
		observers.remove(observer);
	}
}