MJ
On 15 February 2012 15:49, Krzysztof Nielepkowicz
> --
> Wiadomość z grupy Warszawa Java User Group (Warszawa JUG).
> Więcej informacji na stronie
> http://groups.google.com/group/warszawa-jug?hl=pl
> Zachęcamy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
> Oferty pracy dozwolone zgodnie z zasadami na
> http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
Dnia 15-02-2012 o 19:56:24 Maciej Jaśkowski <maciej.j...@gmail.com>
napisał(a):
--
Używam klienta poczty Opera Mail: http://www.opera.com/mail/
Mysle, ze warto zastanowic sie nad stosowaniem AutoBean:
http://code.google.com/p/google-web-toolkit/wiki/AutoBean
Tam masz cos ala-reflection, no i to czesc GWT.
Porzadny przyklad uzycie Autobean znajdziesz w implementacji RequestFactory.
Pawel Szklarz.
2012/2/15 Krzysztof Nielepkowicz <k.p.niel...@gmail.com>:
Rozwi�zaniem dzia�aj�cym, acz by� mo�e niezbyt �adnym i niekoniecznie pasuj�cym akurat do Twojego rozwi�zania (z tego co kojarze jest wykorzystywane m.in. w GWT-Ext) jest u�ycie interfejsu taguj�cego (lub adnotacji na poziomie klasy) wszystkie mo�liwe klasy, kt�re mo�esz chcie� utworzy�. Nast�pnie tworzysz klas� fabryki, generowan� via GWT.create. Klasa fabryki generowana jest poprzez zeskanowanie Twojego kodu, znalezienie wszystkich klas implementuj�cych interfejs taguj�cy i utworzenie metod-fabryk dla ka�dej z nich, oraz jednej metody przyjmuj�cej string z nazw� klasy jako argument i wo�aj�cej ju� odpowiedni� metod�-fabryk�.
Zalet� tego rozwi�zania jest to, �e dzia�a :-) oraz �e nie jest zbyt trudne do zaimplementowania i raczej nie cechuje si� specjalnie wysokim performance hitem (je�li u�yjesz jakiej� sensownej struktury do mapowania string -> odpowiednia metoda-fabryka, np. mapy). Wad� jest oczywi�cie to, �e to "hack" i �e musisz wcze�niej zmieni� wszystkie swoje klasy (kt�re maj� by� generowane) tak, aby implementowa�y wybrany interfejs.
Je�li zmiana klas tak, aby ten interfejs implementowa�y/zawiera�y adnotacj�, nie jest mo�liwa (bo np. to s� klasy do kt�rych kodu nie masz dost�pu), zawsze mo�esz spr�bowa� innego rozwi�zania (np. przygotowa� list� klas kt�re mog� by� tworzone w jakim� pliku konfiguracyjnym).
On Thu, Feb 16, 2012 at 7:21 AM, Paweďż˝ Cesar Sanjuan Szklarz <paw...@gmail.com> wrote:
Czesc
Mysle, ze warto zastanowic sie nad stosowaniem AutoBean:
http://code.google.com/p/google-web-toolkit/wiki/AutoBean
Tam masz cos ala-reflection, no i to czesc GWT.
Porzadny przyklad uzycie Autobean znajdziesz w implementacji RequestFactory.
Pawel Szklarz.
2012/2/15 Krzysztof Nielepkowicz <k.p.niel...@gmail.com>:
> Witam,
>
> Mam drobny problem z rozwi�zaniem problemu dynamicznego tworzenia obiekt�w
> na podstawie klasy. Ale zacznijmy od pocz�tku.
>
>
> mam klasďż˝ :
> public class CustomTable<T extends BasicBean> extends CellTable<T>
> {
> //1)
> ��� private Class<T> genericTypeClass;
> //2)
> ��� ListDataProvider<T> f_pro;
> ��� ...
> ��� ...
>
> ��� /**
> ��� �* Dodaje do do tabelki wiersz - wiersz to gotowa tablica string�w do
> wy�wietlenia,
> ��� �* metoda zmienia t� tablic� na obiekt klasy, kt�rej instancje s�
> przechowywane w tabelce
> ��� �* a nast�pnie dodaje go do listy
> ��� �* @param <U> pomocniczy typ obiektu - rozszerza BasicBean
> ��� �* @param row tablica string�w z kt�rej jest tworzony obiekt - ka�dy
> element tablicy to pole obiektu, kolejno��
> ��� �* ��� ��� musi by� zgodna z kolejno�ci� p�l
> ��� �*/
> ��� @SuppressWarnings("unchecked")
> ��� public <U extends BasicBean>void addRow(String row[]) //3
> ��� {
> ��� ��� try
> ��� ��� {
> //4)
> ��� ��� ��� //ClassType<T> typ =
> TypeOracle.Instance.getClassType(genericTypeClass);
> ��� ��� ��� //Constructor<T> con = typ.findConstructor(new String[]{});
> ��� ��� ��� //U ob = (U)con.newInstance();
>
> ��� ��� ��� U ob = (U) GWT.create(genericTypeClass);��� //5)
> ��� ��� ��� (ob).setFields(row);
> ��� ��� ��� f_pro.getList().add((T)ob);
>
> ��� ��� } catch (Exception e)
> ��� ��� {
> ��� ��� ��� e.printStackTrace();
> ��� ��� }
> ��� }
> ....
> ....
> }
>
> Opis :
>
> 1) genericTypeClass - zmienna przechowywuj�ca Class<T> , ustawiam j� podczas
> inicjalizacji tabelki
> 2) f_pro - dataProvider dla tabelki
> 3) BasicBean - hierarchia bean�w z danymi (u�ycie MyBatisa by�o r�wnie�
> jednym z czynnik�w dla zastosowania idei bean�w) ma wsp�lny korze� - ta
> klasa jest podstawowa - jak �atwo si� z nazwy domy�li� ;)
> 4) pr�ba u�ycia GWT-ENT - dodaje refleksj� dla GWT, jednak wygl�da na to �e
> MVP4G nie toleruje tej biblioteki. Przez chwil� rozwa�alem u�ycie
> GWT-REFLECTION , jednak projekt jest s�abo udokumentowany i wygl�da na to �e
> zarzucony.
> 5) GWT.create(genericTypeClass) powoduje b��d "Only class literals may be
> used as arguments to GWT.create()" , w hosted mode dzia�a :] ale kod js
> tworzony podczas kompilacji GWT jest statyczny i st�d to ograniczenie...
>
> Nowy wiersz tabeli tworz� z tablicy String�w (jedna kontrolka do tworzenia
> wielu rodzaj�w obiekt�w - zawsze zwraca tablic� warto�ci. ) .� Mo�liwe �e
> pomys� na hierarchi� dziedziczenia bean�w jest chybiony, ale dobrze pokazuje
> dotkliwo�� braku konstrukcji typu clazz.newInstance(). Obecnie zastosowa�em
> to po przez zdefiniowanie w klasie opisuj�cej bean'a metody tworz�cej nowego
> - co� na kszta�t clone ale zwracaj�cego niewype�niony obiekt.
>
> Mam nadziej� �e uda�o mi si� w miar� obrazowi i zwi�le przedstawi� problem.
>
> P.S. mia�em napisa� kolejnego posta na blogu o u�yciu refleksji ale p�ki co
> �adnych sukces�w nie osi�gn��em :(
> m�j programistyczny blog : http://kyniek.blogspot.com/
>
> --
> Wiadomo�� z grupy Warszawa Java User Group (Warszawa JUG).
> Wi�cej informacji na stronie
> http://groups.google.com/group/warszawa-jug?hl=pl
> Zach�camy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
> Oferty pracy dozwolone zgodnie z zasadami na
> http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
--
Wiadomo�� z grupy Warszawa Java User Group (Warszawa JUG).
Wi�cej informacji na stronie http://groups.google.com/group/warszawa-jug?hl=pl
Zach�camy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
Oferty pracy dozwolone zgodnie z zasadami na http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
--
Wiadomo�� z grupy Warszawa Java User Group (Warszawa JUG).
Wi�cej informacji na stronie http://groups.google.com/group/warszawa-jug?hl=pl
Zach�camy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
Oferty pracy dozwolone zgodnie z zasadami na http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie
> Wracając do rozwiązania - niekoniecznie jest ono eleganckie, ale po
> napisaniu generatora (przypomniałem sobie że tak można :P ) wiele nie trzeba
> się napisać by osiągnąć cel. Sam generator przypomina mi trochę styl pisania
> w oraclu i jak to doświadczony kolega mnie podsumował "O, Kyniek już
> zauważył że w pl//sql się nie pisze, tylko się generuje" :P Chyba aż napiszę
> posta o hakowaniu GWT :P
Bardzo bym prosił, bo coś mi tu pachnie możliwością
włączenia...Clojure z jego makrami :) Na kanwie tego problemu możnaby
zaprezentować możliwości narzędzi, które być może są bardziej
dopasowane do niego. Tak tylko gdybam głośno.
Jacek
--
Jacek Laskowski
Java EE, functional languages and IBM WebSphere - http://blog.japila.pl
Warszawa JUG conference = Confitura (formerly Javarsovia) :: http://confitura.pl
"Hoping to save time by spending it" by David Blevins (Apache OpenEJB)
co prawda, jeszcze nie doko�czony post (pochorowa�em si� i tak sprawnie
nie pisz� jak bym m�g�) ale dobrze obja�nia ide� :
http://kyniek.blogspot.com/2012/02/dynamiczne-tworzenie-obiektow-w-gwt.html
jutro doko�cz�, ale postanowi�em opublikowa� by� mia� mo�liwo��
zerkni�cia przed prezentacj�. Mam nadziej� �e dotr� na spotkanie jugowe :?
P.S. idďż˝ spaďż˝ :E
On 2012-02-17 10:53, Jacek Laskowski wrote:
2012/2/17 Krzysztof Nielepkowicz<k.p.nielepkowicz@gmail.com>:
Wracając do rozwiązania - niekoniecznie jest ono eleganckie, ale po
napisaniu generatora (przypomniałem sobie że tak można :P ) wiele nie trzeba
się napisać by osiągnąć cel. Sam generator przypomina mi trochę styl pisania
w oraclu i jak to doświadczony kolega mnie podsumował "O, Kyniek już
zauważył że w pl//sql się nie pisze, tylko się generuje" :P Chyba aż napiszę
posta o hakowaniu GWT :P
Bardzo bym prosił, bo coś mi tu pachnie możliwością
włączenia...Clojure z jego makrami :) Na kanwie tego problemu możnaby
Hey,zaprezentować możliwości narzędzi, które być może są bardziej
dopasowane do niego. Tak tylko gdybam głośno.
Jacek
co prawda, jeszcze nie dokończony post (pochorowałem się i tak sprawnie nie piszę jak bym mógł) ale dobrze objaśnia ideę :
http://kyniek.blogspot.com/2012/02/dynamiczne-tworzenie-obiektow-w-gwt.html
jutro dokończę, ale postanowiłem opublikować byś miał możliwość zerknięcia przed prezentacją. Mam nadzieję że dotrę na spotkanie jugowe :?
P.S. idę spać :E
--
Wiadomość z grupy Warszawa Java User Group (Warszawa JUG).
Więcej informacji na stronie http://groups.google.com/group/warszawa-jug?hl=pl
Zachęcamy do odwiedzenia naszej strony domowej http://warszawa.jug.pl
Oferty pracy dozwolone zgodnie z zasadami na http://sites.google.com/site/warszawajug/oferty-pracy-na-grupie