<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Техно-логи &#187; Development</title>
	<atom:link href="http://www.kurdyukov.com/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kurdyukov.com</link>
	<description>Заметки о разработке и прочей жизни</description>
	<lastBuildDate>Wed, 11 Nov 2009 07:55:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Пропустил Google Developer Day</title>
		<link>http://www.kurdyukov.com/2009/11/11/google-developer-day-missed/</link>
		<comments>http://www.kurdyukov.com/2009/11/11/google-developer-day-missed/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 07:54:44 +0000</pubDate>
		<dc:creator>alik</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.kurdyukov.com/?p=116</guid>
		<description><![CDATA[Вчера в Москве проходил Google Developer Day. На который я не попал, поскольку не знал об этом мероприятии. Так и не нашел способа узнавать о таких событиях своевременно. А вы знаете такой способ?
]]></description>
			<content:encoded><![CDATA[<p>Вчера в Москве проходил Google Developer Day. На который я не попал, поскольку не знал об этом мероприятии. Так и не нашел способа узнавать о таких событиях своевременно. А вы знаете такой способ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurdyukov.com/2009/11/11/google-developer-day-missed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Изящная идея передачи и хранения лицензий</title>
		<link>http://www.kurdyukov.com/2009/10/12/license-gui/</link>
		<comments>http://www.kurdyukov.com/2009/10/12/license-gui/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 18:52:29 +0000</pubDate>
		<dc:creator>alik</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.kurdyukov.com/?p=109</guid>
		<description><![CDATA[Не секрет, что любой современный пользователь покупает массу программ. И каждая из них требует серийного номера. Обычно эти номера приходят по почте. Но с этими длинными последовательностями есть масса проблем &#8211; не все пользователи умеют пользоваться операциями copy и paste. Не все догадываются куда надо вводить номер и т.п. На прошлой неделе я увидел в [...]]]></description>
			<content:encoded><![CDATA[<p>Не секрет, что любой современный пользователь покупает массу программ. И каждая из них требует серийного номера. Обычно эти номера приходят по почте. Но с этими длинными последовательностями есть масса проблем &#8211; не все пользователи умеют пользоваться операциями copy и paste. Не все догадываются куда надо вводить номер и т.п. На прошлой неделе я увидел в программе <a href="http://www.springyarchiver.com/">Springy</a> изящнейнее решение этих проблем.<br />
<span id="more-109"></span><br />
Присылаемый по почте серийник представляет собой не обычную длинную и плохочитаемую последовательность, а симпатичную картинку примерно такого вида:</p>
<p><img src="http://www.kurdyukov.com/wp-content/uploads/2009/10/license.png" alt="license" title="license" width="466" height="287" class="aligncenter size-full wp-image-112" /><br />
Все, что нужно сделать &#8211; это &laquo;бросить&raquo; картинку на окно About Box в специальное место. Данное решение позволяет многократно увеличить объем информации, передаваемой неявным образом, поскольку при помощи стеганографии можно &laquo;подмешать&raquo; в картинку размером около 100кб порядка нескольких килобайт дополнительных данных (зависит от картинки и конкретного алгоритма). И защита от хакеров получается неплохая &#8211; код расшифровки таких стеганограмм может быть распределен по всей программе.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurdyukov.com/2009/10/12/license-gui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Опыт с Spring Roo</title>
		<link>http://www.kurdyukov.com/2009/10/10/spring-roo/</link>
		<comments>http://www.kurdyukov.com/2009/10/10/spring-roo/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 06:05:28 +0000</pubDate>
		<dc:creator>alik</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.kurdyukov.com/?p=95</guid>
		<description><![CDATA[У меня возникла задача создать простенький веб-сайт с функциональностью доступа пользователей сайта к некоторой закрытой информации. При этом регистрация пользователей происходит третьим способом, но через сайт пользователи могут поменять свой пароль. Закрытая часть сайта содержит простенький интерактив по работе с закрытой информацией (создать, изменить, удалить), а также функционал по управлению пользователями &#8211; для админов.
Для такого [...]]]></description>
			<content:encoded><![CDATA[<p>У меня возникла задача создать простенький веб-сайт с функциональностью доступа пользователей сайта к некоторой закрытой информации. При этом регистрация пользователей происходит третьим способом, но через сайт пользователи могут поменять свой пароль. Закрытая часть сайта содержит простенький интерактив по работе с закрытой информацией (создать, изменить, удалить), а также функционал по управлению пользователями &#8211; для админов.<br />
Для такого проекта я решил попробовать Spring Roo.<br />
<span id="more-95"></span><br />
Установка происходит просто, maven у меня уже был развернут. Далее я по инструкциями создал все необхомые вещи:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p95code2'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p952"><td class="code" id="p95code2"><pre class="bash" style="font-family:monospace;">alik-kurdyukovs-computer:testportal alik$ roo
    ____  ____  ____  
   <span style="color: #000000; font-weight: bold;">/</span> __ \<span style="color: #000000; font-weight: bold;">/</span> __ \<span style="color: #000000; font-weight: bold;">/</span> __ \ 
  <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span>_<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span> 
 <span style="color: #000000; font-weight: bold;">/</span> _, _<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span>_<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span>_<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">/</span>  
<span style="color: #000000; font-weight: bold;">/</span>_<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">|</span>_<span style="color: #000000; font-weight: bold;">|</span>\____<span style="color: #000000; font-weight: bold;">/</span>\____<span style="color: #000000; font-weight: bold;">/</span>    1.0.0.RC1 <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">rev</span> <span style="color: #000000;">198</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
&nbsp;
Welcome to Spring Roo. For assistance press TAB or <span style="color: #7a0874; font-weight: bold;">type</span> <span style="color: #ff0000;">&quot;hint&quot;</span> <span style="color: #000000; font-weight: bold;">then</span> hit ENTER.
roo<span style="color: #000000; font-weight: bold;">&gt;</span> create project <span style="color: #660033;">-topLevelPackage</span> ru.test.testportal <span style="color: #660033;">-projectName</span> testportal
Created <span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>alik<span style="color: #000000; font-weight: bold;">/</span>Development<span style="color: #000000; font-weight: bold;">/</span>projects<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>pom.xml
Created SRC_MAIN_JAVA
Created SRC_MAIN_RESOURCES
Created SRC_TEST_JAVA
Created SRC_TEST_RESOURCES
Created SRC_MAIN_WEBAPP
Created SRC_MAIN_RESOURCES<span style="color: #000000; font-weight: bold;">/</span>META-INF<span style="color: #000000; font-weight: bold;">/</span>spring
Managed ROOT<span style="color: #000000; font-weight: bold;">/</span>pom.xml
Created SRC_MAIN_RESOURCES<span style="color: #000000; font-weight: bold;">/</span>META-INF<span style="color: #000000; font-weight: bold;">/</span>spring<span style="color: #000000; font-weight: bold;">/</span>applicationContext.xml
roo<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #c20cb9; font-weight: bold;">install</span> jpa <span style="color: #660033;">-provider</span> HIBERNATE <span style="color: #660033;">-database</span> POSTGRESQL
Created SRC_MAIN_RESOURCES<span style="color: #000000; font-weight: bold;">/</span>META-INF<span style="color: #000000; font-weight: bold;">/</span>persistence.xml
Created SRC_MAIN_RESOURCES<span style="color: #000000; font-weight: bold;">/</span>META-INF<span style="color: #000000; font-weight: bold;">/</span>spring<span style="color: #000000; font-weight: bold;">/</span>database.properties
please enter your database details <span style="color: #000000; font-weight: bold;">in</span> src<span style="color: #000000; font-weight: bold;">/</span>main<span style="color: #000000; font-weight: bold;">/</span>resources<span style="color: #000000; font-weight: bold;">/</span>database.properties
Managed SRC_MAIN_RESOURCES<span style="color: #000000; font-weight: bold;">/</span>META-INF<span style="color: #000000; font-weight: bold;">/</span>spring<span style="color: #000000; font-weight: bold;">/</span>applicationContext.xml
Managed ROOT<span style="color: #000000; font-weight: bold;">/</span>pom.xml
roo<span style="color: #000000; font-weight: bold;">&gt;</span> database properties
database.driverClassName = org.postgresql.Driver
database.password = 
database.url = jdbc:postgresql:<span style="color: #000000; font-weight: bold;">//</span>localhost:<span style="color: #000000;">5432</span>
database.username = 
roo<span style="color: #000000; font-weight: bold;">&gt;</span> database <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #660033;">-key</span> database.url <span style="color: #660033;">-value</span> jdbc:postgresql:<span style="color: #000000; font-weight: bold;">//</span>localhost:<span style="color: #000000;">5432</span><span style="color: #000000; font-weight: bold;">/</span>testportaldb
Managed SRC_MAIN_RESOURCES<span style="color: #000000; font-weight: bold;">/</span>META-INF<span style="color: #000000; font-weight: bold;">/</span>spring<span style="color: #000000; font-weight: bold;">/</span>database.properties
roo<span style="color: #000000; font-weight: bold;">&gt;</span> database <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #660033;">-key</span> database.username <span style="color: #660033;">-value</span> testportal
roo<span style="color: #000000; font-weight: bold;">&gt;</span> database <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #660033;">-key</span> database.password <span style="color: #660033;">-value</span> testportalpass
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add dependency <span style="color: #660033;">-groupId</span> postgresql <span style="color: #660033;">-artifactId</span> postgresql <span style="color: #660033;">-version</span> <span style="color: #000000;">8.3</span>-603.jdbc3
Managed ROOT<span style="color: #000000; font-weight: bold;">/</span>pom.xml
roo<span style="color: #000000; font-weight: bold;">&gt;</span> new persistent class jpa <span style="color: #660033;">-name</span> ~.domain.PortalUser 
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser.java
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_Entity.aj
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_ToString.aj
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_Configurable.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add field string <span style="color: #660033;">-class</span> ~.domain.PortalUser <span style="color: #660033;">-fieldName</span> phoneNumber <span style="color: #660033;">-notNull</span> <span style="color: #660033;">-sizeMax</span> <span style="color: #000000;">20</span>
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser.java
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_JavaBean.aj
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_ToString.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add field string <span style="color: #660033;">-class</span> ~.domain.PortalUser <span style="color: #660033;">-fieldName</span> password <span style="color: #660033;">-notNull</span> <span style="color: #660033;">-sizeMax</span> <span style="color: #000000;">50</span>
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser.java
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_JavaBean.aj
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_ToString.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add field boolean <span style="color: #660033;">-class</span> ~.domain.PortalUser <span style="color: #660033;">-fieldName</span> needChangePassword <span style="color: #660033;">-notNull</span> 
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser.java
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_JavaBean.aj
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_ToString.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add field string <span style="color: #660033;">-class</span> ~.domain.PortalUser <span style="color: #660033;">-fieldName</span> lastName <span style="color: #660033;">-sizeMax</span> <span style="color: #000000;">200</span>           
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser.java
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_JavaBean.aj
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_ToString.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add field string <span style="color: #660033;">-class</span> ~.domain.PortalUser <span style="color: #660033;">-fieldName</span> firstName <span style="color: #660033;">-sizeMax</span> <span style="color: #000000;">200</span>
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser.java
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_JavaBean.aj
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_ToString.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add field string <span style="color: #660033;">-class</span> ~.domain.PortalUser <span style="color: #660033;">-fieldName</span> middleName <span style="color: #660033;">-sizeMax</span> <span style="color: #000000;">200</span>
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser.java
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_JavaBean.aj
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUser_Roo_ToString.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> new persistent class jpa <span style="color: #660033;">-name</span> ~.domain.Payment <span style="color: #660033;">-testAutomatically</span> 
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Payment.java
Created SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain
Created SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PaymentDataOnDemand.java
Created SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PaymentIntegrationTest.java
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Payment_Roo_Entity.aj
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Payment_Roo_ToString.aj
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Payment_Roo_Configurable.aj
Created SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PaymentDataOnDemand_Roo_Configurable.aj
Created SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PaymentDataOnDemand_Roo_DataOnDemand.aj
Created SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PaymentIntegrationTest_Roo_IntegrationTest.aj
Created SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PaymentIntegrationTest_Roo_Configurable.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> new persistent class jpa <span style="color: #660033;">-name</span> ~.domain.Service <span style="color: #660033;">-testAutomatically</span> 
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service.java
Created SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>ServiceDataOnDemand.java
Created SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>ServiceIntegrationTest.java
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service_Roo_Entity.aj
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service_Roo_ToString.aj
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service_Roo_Configurable.aj
Created SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>ServiceDataOnDemand_Roo_Configurable.aj
Created SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>ServiceDataOnDemand_Roo_DataOnDemand.aj
Created SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>ServiceIntegrationTest_Roo_IntegrationTest.aj
Created SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>ServiceIntegrationTest_Roo_Configurable.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add field string <span style="color: #660033;">-class</span> ~.domain.Service <span style="color: #660033;">-fieldName</span> name <span style="color: #660033;">-notNull</span> <span style="color: #660033;">-sizeMax</span> <span style="color: #000000;">50</span>
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service.java
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service_Roo_JavaBean.aj
Managed SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>ServiceDataOnDemand_Roo_DataOnDemand.aj
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service_Roo_ToString.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add field string <span style="color: #660033;">-class</span> ~.domain.Service <span style="color: #660033;">-fieldName</span> description <span style="color: #660033;">-sizeMax</span> <span style="color: #000000;">500</span>        
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service.java
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service_Roo_JavaBean.aj
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service_Roo_ToString.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add field boolean <span style="color: #660033;">-class</span> ~.domain.Service <span style="color: #660033;">-fieldName</span> isEnabled <span style="color: #660033;">-notNull</span> 
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service.java
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service_Roo_JavaBean.aj
Managed SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>ServiceDataOnDemand_Roo_DataOnDemand.aj
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service_Roo_ToString.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add field string <span style="color: #660033;">-class</span> ~.domain.Service <span style="color: #660033;">-fieldName</span> logoName <span style="color: #660033;">-notNull</span> <span style="color: #660033;">-sizeMax</span> <span style="color: #000000;">200</span> 
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service.java
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service_Roo_JavaBean.aj
Managed SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>ServiceDataOnDemand_Roo_DataOnDemand.aj
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Service_Roo_ToString.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add field reference jpa <span style="color: #660033;">-class</span> ~.domain.Payment <span style="color: #660033;">-fieldName</span> service <span style="color: #660033;">-type</span> ~.domain.Service
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Payment.java
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Payment_Roo_JavaBean.aj
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Payment_Roo_ToString.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add field reference jpa <span style="color: #660033;">-class</span> ~.domain.Payment <span style="color: #660033;">-fieldName</span> portalUser <span style="color: #660033;">-type</span> ~.domain.PortalUser
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Payment.java
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Payment_Roo_JavaBean.aj
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Payment_Roo_ToString.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> add field number <span style="color: #660033;">-class</span> ~.domain.Payment <span style="color: #660033;">-fieldName</span> amount <span style="color: #660033;">-type</span> java.math.Decimal
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Payment.java
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Payment_Roo_JavaBean.aj
Managed SRC_TEST_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PaymentDataOnDemand_Roo_DataOnDemand.aj
Managed SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>Payment_Roo_ToString.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> new controller automatic <span style="color: #660033;">-name</span> ~.web.PortalUserController <span style="color: #660033;">-formBackingObject</span> ~.domain.PortalUser
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>web
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>web<span style="color: #000000; font-weight: bold;">/</span>PortalUserController.java
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>testportal-servlet.xml
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>web<span style="color: #000000; font-weight: bold;">/</span>PortalUserController_Roo_Controller.aj
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>images
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>banner-graphic.png
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>springsource-logo.png
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>styles
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>styles<span style="color: #000000; font-weight: bold;">/</span>roo.css
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>header.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>footer.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>includes.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>dataAccessFailure.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>resourceNotFound.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>uncaughtException.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>list.png
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>show.png
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>create.png
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>update.png
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>delete.png
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>portaluser
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>portaluser<span style="color: #000000; font-weight: bold;">/</span>list.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>portaluser<span style="color: #000000; font-weight: bold;">/</span>show.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>portaluser<span style="color: #000000; font-weight: bold;">/</span>create.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>menu.jsp
Managed SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>menu.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>portaluser<span style="color: #000000; font-weight: bold;">/</span>update.jsp
Managed SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>menu.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>urlrewrite.xml
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>web.xml
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>index.jsp
Managed SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>web.xml
Managed ROOT<span style="color: #000000; font-weight: bold;">/</span>pom.xml
roo<span style="color: #000000; font-weight: bold;">&gt;</span> new controller automatic <span style="color: #660033;">-name</span> ~.web.crud.ServiceController <span style="color: #660033;">-formBackingObject</span> ~.domain.Service 
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>web<span style="color: #000000; font-weight: bold;">/</span>crud
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>web<span style="color: #000000; font-weight: bold;">/</span>crud<span style="color: #000000; font-weight: bold;">/</span>ServiceController.java
Managed SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>web.xml
Managed ROOT<span style="color: #000000; font-weight: bold;">/</span>pom.xml
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>web<span style="color: #000000; font-weight: bold;">/</span>crud<span style="color: #000000; font-weight: bold;">/</span>ServiceController_Roo_Controller.aj
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>service
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>service<span style="color: #000000; font-weight: bold;">/</span>list.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>service<span style="color: #000000; font-weight: bold;">/</span>show.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>service<span style="color: #000000; font-weight: bold;">/</span>create.jsp
Managed SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>menu.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>service<span style="color: #000000; font-weight: bold;">/</span>update.jsp
Managed SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>menu.jsp
roo<span style="color: #000000; font-weight: bold;">&gt;</span> new controller automatic <span style="color: #660033;">-name</span> ~.web.crud.PaymentController <span style="color: #660033;">-formBackingObject</span> ~.domain.Payment
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>web<span style="color: #000000; font-weight: bold;">/</span>crud<span style="color: #000000; font-weight: bold;">/</span>PaymentController.java
Managed SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>web.xml
Managed ROOT<span style="color: #000000; font-weight: bold;">/</span>pom.xml
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUserEditor.java
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>ServiceEditor.java
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>web<span style="color: #000000; font-weight: bold;">/</span>crud<span style="color: #000000; font-weight: bold;">/</span>PaymentController_Roo_Controller.aj
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>payment
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>payment<span style="color: #000000; font-weight: bold;">/</span>list.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>payment<span style="color: #000000; font-weight: bold;">/</span>show.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>payment<span style="color: #000000; font-weight: bold;">/</span>create.jsp
Managed SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>menu.jsp
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>payment<span style="color: #000000; font-weight: bold;">/</span>update.jsp
Managed SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>jsp<span style="color: #000000; font-weight: bold;">/</span>menu.jsp
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>PortalUserEditor_Roo_Editor.aj
Created SRC_MAIN_JAVA<span style="color: #000000; font-weight: bold;">/</span>ru<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>testportal<span style="color: #000000; font-weight: bold;">/</span>domain<span style="color: #000000; font-weight: bold;">/</span>ServiceEditor_Roo_Editor.aj
roo<span style="color: #000000; font-weight: bold;">&gt;</span> configure logging <span style="color: #660033;">-level</span> DEBUG <span style="color: #660033;">-package</span> PROJECT 
Created SRC_MAIN_RESOURCES<span style="color: #000000; font-weight: bold;">/</span>META-INF<span style="color: #000000; font-weight: bold;">/</span>spring<span style="color: #000000; font-weight: bold;">/</span>log4j.properties
Managed SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>web.xml
roo<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #c20cb9; font-weight: bold;">install</span> security
Managed ROOT<span style="color: #000000; font-weight: bold;">/</span>pom.xml
Created SRC_MAIN_RESOURCES<span style="color: #000000; font-weight: bold;">/</span>META-INF<span style="color: #000000; font-weight: bold;">/</span>spring<span style="color: #000000; font-weight: bold;">/</span>applicationContext-security.xml
Created SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>login.jsp
Managed SRC_MAIN_WEBAPP<span style="color: #000000; font-weight: bold;">/</span>WEB-INF<span style="color: #000000; font-weight: bold;">/</span>web.xml</pre></td></tr></table></div>

<p>В результате получаем вполне работающее веб-приложение.</p>
<p>Следующий этап &#8211; загрузить приложение в мое любимое IDE, а именно IntelliJ IDEA. Тут меня ждал первый подвох &#8211; текущая релизная версия 8.1 не поддерживает файлы .aj, которые активно используются в полученном проекте. Единственныый вариант &#8211; сказать IDEA, что это просто текстовые файлы. Все возможности по рефакторингу и кросс-ссылочности сразу пропадают. Более того, все методы, определенные в .aj и использованые в других местах (например, в контроллерах) считаются неопределенными. Что сводит все возможности инспекции этого IDE просто бесполезными. Ладно, можно попробовать 9.0 M1 под кодовым названием Maia.</p>
<p>В Maia все несколько лучше &#8211; файлы .aj все считаются файлами с кодом. Но методы, определенные в .aj файлах, по прежнему не считаются &laquo;правильными&raquo; методами. И при их использование IDEA показывает ошибку. Таким образом, приходится признать, что использование Spring Roo совместно с IDEA пока не представляется возможным.</p>
<p>Использование &laquo;родного&raquo; инструментария <a href="http://www.springsource.com/products/sts">SpringSource Tool Suite</a> не наделено всеми описанными проблемами, но это Eclipse, а значит лично мне пользоваться очень неудобно.</p>
<p>Вывод: проект, однозначно, интересный, но не подходит для моих практических задач по причине отсутствия поддержки в IDEA.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurdyukov.com/2009/10/10/spring-roo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как бороться с WebSphere 6.1</title>
		<link>http://www.kurdyukov.com/2009/10/09/websphere-6-1-tuning/</link>
		<comments>http://www.kurdyukov.com/2009/10/09/websphere-6-1-tuning/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 06:03:07 +0000</pubDate>
		<dc:creator>alik</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[websphere]]></category>

		<guid isPermaLink="false">http://www.kurdyukov.com/?p=100</guid>
		<description><![CDATA[Волею судеб, мне надо было размещать мое веб-приложение на java на сервере IBM WebSphere Application Server 6.1. Оказалось, что это задача не вполне банальна, поскольку с полпинка все не заработало. Выяснилось, что надо производить следующие настройки&#8230;

Работа редиректа
По умолчанию, WebSphere начинает проверять наличие URL до того, как фильтры типа URLRewriteFilter применяются к входящему адресу. Что приводит [...]]]></description>
			<content:encoded><![CDATA[<p>Волею судеб, мне надо было размещать мое веб-приложение на java на сервере IBM WebSphere Application Server 6.1. Оказалось, что это задача не вполне банальна, поскольку с полпинка все не заработало. Выяснилось, что надо производить следующие настройки&#8230;<br />
<span id="more-100"></span></p>
<h4>Работа редиректа</h4>
<p>По умолчанию, WebSphere начинает проверять наличие URL до того, как фильтры типа URLRewriteFilter применяются к входящему адресу. Что приводит к полной неработоспособности приложений, который URLRewriteFilter используют. Для починки этой проблемы надо установить параметр &laquo;com.ibm.ws.webcontainer.invokefilterscompatibility&raquo; в &laquo;true&raquo;. (как именно устанавливать &#8211; см. ниже)</p>
<h4>Версия JDK для компиляции JSP</h4>
<p>Не мог себе отказать в удобстве использования синтаксиса java 1.5 в коде jsp. Но WebSphere отказалась компилировать, ссылаясь на неизвестный синтаксис for each. Чтобы для компиляции jsp использовалась java 1.5, надо установить параметр &raquo;   	  com.ibm.ws.jsp.jdkSourceLevel&raquo; в значение &laquo;15&#8243;.</p>
<h4>Как устанавливать параметры</h4>
<ol>
<li>Открываете консоль управления WebSphere</li>
<li>Раскрываете &laquo;Servers&raquo;</li>
<li>Выбираете &laquo;Application Servers&raquo;</li>
<li>Выбираете название сервера, на котором стоит приложение</li>
<li>Раскрываете &laquo;Web Container Settings&raquo; (справа)</li>
<li>Выбираете &laquo;Web Container&raquo;</li>
<li>Выбираете &laquo;Custom Properties&raquo;</li>
<li>Нажимаете кнопку &laquo;New&raquo;</li>
<li>В открывшемся окне заполняете название поля и значение поля, нажимаете &laquo;update&raquo;</li>
<li>В появившемся над таблицей блоке выбираете Save</li>
<li>Перезапускаете сервер</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.kurdyukov.com/2009/10/09/websphere-6-1-tuning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven, Coberturа и генерация базы</title>
		<link>http://www.kurdyukov.com/2009/09/11/maven-cobertur%d0%b0-hibernate/</link>
		<comments>http://www.kurdyukov.com/2009/09/11/maven-cobertur%d0%b0-hibernate/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 06:00:51 +0000</pubDate>
		<dc:creator>alik</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.kurdyukov.com/?p=76</guid>
		<description><![CDATA[В одном из моих проектов coverage кода вычисляется при помощи Cobertura. Этот инструмент считается одним из наиболее адекватных open source инструментов и хорошо интегрирован с Maven. Но у меня возникла проблема с взаимодействием Cobertura и Hibernate3.

В рамках проекта БД создается через goal hbm2ddl мавеновского плагина hibernate3-maven-plugin. На том же проходе создается тестовая БД. На тестовой [...]]]></description>
			<content:encoded><![CDATA[<p>В одном из моих проектов coverage кода вычисляется при помощи <a href="http://cobertura.sourceforge.net/">Cobertura</a>. Этот инструмент считается одним из наиболее адекватных open source инструментов и хорошо интегрирован с Maven. Но у меня возникла проблема с взаимодействием Cobertura и Hibernate3.<br />
<span id="more-76"></span><br />
В рамках проекта БД создается через goal hbm2ddl мавеновского плагина hibernate3-maven-plugin. На том же проходе создается тестовая БД. На тестовой БД тестируется продукт. Для построение отчета по покрытию необходимо инструментировать код системы перед запуском тестов. И тут случается проблема, которая выглядит примерно так:</p>
<pre>
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Unable to load class declared as
<mapping class="ru.myproject.MyEntity"/> in the configuration:
[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.hibernate.MappingException: Unable to load class declared as
<mapping class="ru.myproject.MyEntity"/> in the configuration:
        at org.hibernate.cfg.AnnotationConfiguration.parseMappingElement(AnnotationConfiguration.java:650)
        at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1589)
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1568)
        at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:1047)
        at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:64)
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1542)
        at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:1035)
        at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:64)
        at org.hibernate.cfg.Configuration.configure(Configuration.java:1477)
        at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1023)
        at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:64)
        at org.codehaus.mojo.hibernate3.configuration.AbstractComponentConfiguration.doConfiguration(AbstractComponentConfiguration.java:95)
        at org.codehaus.mojo.hibernate3.configuration.AbstractComponentConfiguration.getConfiguration(AbstractComponentConfiguration.java:56)
        at org.codehaus.mojo.hibernate3.exporter.Hbm2DDLExporterMojo.doExecute(Hbm2DDLExporterMojo.java:87)
        at org.codehaus.mojo.hibernate3.HibernateExporterMojo.execute(HibernateExporterMojo.java:152)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkProjectLifecycle(DefaultLifecycleExecutor.java:1168)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkLifecycle(DefaultLifecycleExecutor.java:1009)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:627)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:553)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:523)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:356)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: java.lang.ClassNotFoundException: ru.myproject.MyEntity
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
        at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195)
        at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255)
        at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274)
        at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:123)
        at org.hibernate.cfg.AnnotationConfiguration.parseMappingElement(AnnotationConfiguration.java:647)
        ... 36 more
</pre>
<p>Очевидно, что проблема в загрузке классов, но какая именно &#8211; непонятно. Исследование интернета показало, что я не первый наступил на эти &laquo;грабли&raquo;. И что единственное известное решение &#8211; отключить создание DDL и заливку его в БД при помощи инструментированного кода. Для этого в POM файле используем следующую заплатку:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p76code5'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p765"><td class="code" id="p76code5"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.codehaus.mojo<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>hibernate3-maven-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2.2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;components<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;component<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>hbm2ddl<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;implementation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>annotationconfiguration<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/implementation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/component<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/components<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;componentProperties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;drop<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${hibernate.export}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/drop<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;export<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${hibernate.export}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/export<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;jdk5<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/jdk5<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;propertyfile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>target/classes/jdbc.properties<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/propertyfile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;outputfilename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>schema.sql<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/outputfilename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #808080; font-style: italic;">&lt;!-- this is a special define for site building. Have to be turned off to build a site --&gt;</span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;skip<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${hibernate.ddl.skip}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/skip<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/componentProperties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;phase<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>process-test-resources<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/phase<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>hbm2ddl<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;componentProperties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;drop<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/drop<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;export<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/export<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/componentProperties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${jdbc.groupId}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${jdbc.artifactId}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${jdbc.version}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Можно обратить внимание на параметр hibernate.ddl.skip, которым можно управлять из командной строки. Примерно так:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p76code6'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p766"><td class="code" id="p76code6"><pre class="bash" style="font-family:monospace;">mvn -Dhibernate.ddl.skip=<span style="color: #c20cb9; font-weight: bold;">true</span> cobertura:cobertura</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.kurdyukov.com/2009/09/11/maven-cobertur%d0%b0-hibernate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Редактирование БД в Intellij IDEA</title>
		<link>http://www.kurdyukov.com/2009/09/08/edit-db/</link>
		<comments>http://www.kurdyukov.com/2009/09/08/edit-db/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 12:02:33 +0000</pubDate>
		<dc:creator>alik</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.kurdyukov.com/?p=65</guid>
		<description><![CDATA[При разработке приложений с использованием СУБД часто возникает задача посмотреть на содержимое таблиц в БД. В моем случае, проект разрабатывается в Intellij IDEA, версия 8.1. Хочется смотреть и редактировать БД непосредственно из среды разработки. В моем случае используется СУБД PostgreSQL.

Я проверил имеющиеся в IDEA бесплатные плагины на предмет работоспособности.
DBHelper
Ссылка: Plugin homepage
Проверить не удалось, поскольку текущая [...]]]></description>
			<content:encoded><![CDATA[<p>При разработке приложений с использованием СУБД часто возникает задача посмотреть на содержимое таблиц в БД. В моем случае, проект разрабатывается в Intellij IDEA, версия 8.1. Хочется смотреть и редактировать БД непосредственно из среды разработки. В моем случае используется СУБД PostgreSQL.</p>
<p><span id="more-65"></span><br />
Я проверил имеющиеся в IDEA бесплатные плагины на предмет работоспособности.</p>
<p><strong>DBHelper</strong><br />
Ссылка: <a href="http://plugins.intellij.net/plugin/?id=1120">Plugin homepage</a><br />
Проверить не удалось, поскольку текущая последняя версия 1.2.02 не совместима с IDEA 8.1. Поддержка этого плагина, судя по всему, прекращена.</p>
<p><strong>Database Navigator</strong><br />
Ссылка: <a href="http://plugins.intellij.net/plugin/?id=1800">Plugin homepage</a><br />
К сожалению, не применима к моему случаю, поскольку нет поддержки для PostgreSQL. Есть поддержка для Oracle и MySQL. На домашней странице плагина есть вопрос от пользователя о поддержке PostgreSQL, но автор отвечает что поддержки, скорее всего, не будет. Слишком мало запросов на PostgreSQL поступает.</p>
<p>Вывод: по состоянию на сейчас я не смог найти ни одного разумного плугина для решения этой простой задачи. Что печально. Буду использовать консоль psql по старинке.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurdyukov.com/2009/09/08/edit-db/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Перенос Drupal</title>
		<link>http://www.kurdyukov.com/2009/04/16/drupal-migration/</link>
		<comments>http://www.kurdyukov.com/2009/04/16/drupal-migration/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 15:36:32 +0000</pubDate>
		<dc:creator>alik</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://www.kurdyukov.com/?p=43</guid>
		<description><![CDATA[Так получилось, что я в некоторый момент начал хостить на своем сервере веб-сайт своих друзей. Друзья &#8211; люди совершенно некомпьютерные, а сайт поддерживать хотят. Поэтому на сайт был установлен CMS Drupal. В качестве БД был выбран PostgreSQL, поскольку он мне просто больше нравится. И все было бы хорошо, если бы не пришла пора менять хостинг.

В [...]]]></description>
			<content:encoded><![CDATA[<p>Так получилось, что я в некоторый момент начал хостить на своем сервере веб-сайт своих друзей. Друзья &#8211; люди совершенно некомпьютерные, а сайт поддерживать хотят. Поэтому на сайт был установлен CMS Drupal. В качестве БД был выбран PostgreSQL, поскольку он мне просто больше нравится. И все было бы хорошо, если бы не пришла пора менять хостинг.<br />
<span id="more-43"></span><br />
В начале выяснилось, что на новом хостинге пользователь не может создавать объекты внутри схемы &laquo;public&raquo;.</p>
<p>Про схемы надо рассказать отдельно. Когда-то давно PostgreSQL старался походить на Oracle во многих отношениях, в том числе в структуре объектов БД. Так в PostgreSQL появились схемы (schema). Для PostgreSQL схема &#8211; это именованный контейнер для объектов базы (таблицы, индексы, сиквенсы и т.п.). Для определения порядка использования схем в базе существует текстовый параметр search_path. По умолчанию сначала в качестве схемы используется имя пользователя, потом константа public.</p>
<p>К сожалению, на хостинге имя логина к БД содержало символ &laquo;-&raquo;, который запрещен в идентификаторах объектов БД. Пришлось создать схему с другим названием и переместить все объекты туда. В процессе переноса выяснилось, что команда ALTER SOMETHING name SET SCHEMA &#8217;something&#8217; поддерживается только с версии 8.3 базы. Хорошо хоть так, иначе бы пришлось какие-то скрипты нетривиальные писать. Перенеслось, с горем пополам.</p>
<p>Далее выяснилось, что drupal по умолчанию не дружит со схемами в PostgreSQL. По мотивам интернета был написан патч, который позволяет drupal 6.9  задружиться с PostreSQL. Вот патч:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.kurdyukov.com/wp-content/plugins/wp-codebox/wp-codebox.php?p=43&amp;download=pgsql.patch">pgsql.patch</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p438"><td class="code" id="p43code8"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">***</span> database<span style="color: #339933;">.</span>pgsql<span style="color: #339933;">.</span>inc<span style="color: #339933;">.</span>orig     Thu Apr  <span style="color: #cc66cc;">9</span> <span style="color: #208080;">04</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">25</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">13</span> <span style="color: #cc66cc;">2009</span>
<span style="color: #339933;">---</span> database<span style="color: #339933;">.</span>pgsql<span style="color: #339933;">.</span>inc  Thu Apr  <span style="color: #cc66cc;">9</span> <span style="color: #208080;">06</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">48</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">22</span> <span style="color: #cc66cc;">2009</span>
<span style="color: #339933;">***************</span>
<span style="color: #339933;">***</span> <span style="color: #cc66cc;">51</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">56</span> <span style="color: #339933;">****</span>
<span style="color: #339933;">---</span> <span style="color: #cc66cc;">51</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">57</span> <span style="color: #339933;">----</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/parse_url"><span style="color: #990000;">parse_url</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">+</span>   <span style="color: #000088;">$db_and_schema</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/explode"><span style="color: #990000;">explode</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;.&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'path'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$conn_string</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Decode url-encoded information in the db connection string</span>
<span style="color: #339933;">***************</span>
<span style="color: #339933;">***</span> <span style="color: #cc66cc;">63</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">70</span> <span style="color: #339933;">****</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'host'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$conn_string</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">' host='</span><span style="color: #339933;">.</span> <a href="http://www.php.net/urldecode"><span style="color: #990000;">urldecode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'host'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #339933;">!</span>   <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'path'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #339933;">!</span>     <span style="color: #000088;">$conn_string</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">' dbname='</span><span style="color: #339933;">.</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/urldecode"><span style="color: #990000;">urldecode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'path'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'port'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$conn_string</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">' port='</span><span style="color: #339933;">.</span> <a href="http://www.php.net/urldecode"><span style="color: #990000;">urldecode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'port'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">---</span> <span style="color: #cc66cc;">64</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">71</span> <span style="color: #339933;">----</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'host'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$conn_string</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">' host='</span><span style="color: #339933;">.</span> <a href="http://www.php.net/urldecode"><span style="color: #990000;">urldecode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'host'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #339933;">!</span>   <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$db_and_schema</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'0'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #339933;">!</span>     <span style="color: #000088;">$conn_string</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">' dbname='</span><span style="color: #339933;">.</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/urldecode"><span style="color: #990000;">urldecode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$db_and_schema</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'0'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'port'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$conn_string</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">' port='</span><span style="color: #339933;">.</span> <a href="http://www.php.net/urldecode"><span style="color: #990000;">urldecode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'port'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">***************</span>
<span style="color: #339933;">***</span> <span style="color: #cc66cc;">85</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">90</span> <span style="color: #339933;">****</span>
<span style="color: #339933;">---</span> <span style="color: #cc66cc;">86</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">94</span> <span style="color: #339933;">----</span>
    <span style="color: #666666; font-style: italic;">// Restore error tracking setting</span>
    <a href="http://www.php.net/ini_set"><span style="color: #990000;">ini_set</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'track_errors'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$track_errors_previous</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #339933;">+</span>   <span style="color: #666666; font-style: italic;">// set schema</span>
<span style="color: #339933;">+</span>   <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/empty"><span style="color: #990000;">empty</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$db_and_schema</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'1'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <a href="http://www.php.net/pg_query"><span style="color: #990000;">pg_query</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$connection</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'SET search_path TO '</span><span style="color: #339933;">.</span><span style="color: #000088;">$db_and_schema</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'1'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">+</span>
    <a href="http://www.php.net/pg_query"><span style="color: #990000;">pg_query</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$connection</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;set client_encoding=<span style="color: #000099; font-weight: bold;">\&quot;</span>UTF8<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$connection</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>После патча можно указывать в settings.php название базы в виде &laquo;<имя базы>.<имя схемы>&laquo;.</p>
<p>Таким образом, миграция со всеми исследованиями заняла примерно 3 вечера. Получилось немало. Надеюсь, что этот пост поможет кому-то быстрее провести аналогичную миграцию.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurdyukov.com/2009/04/16/drupal-migration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Простой REST для Django</title>
		<link>http://www.kurdyukov.com/2009/02/16/rest-django/</link>
		<comments>http://www.kurdyukov.com/2009/02/16/rest-django/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 11:32:53 +0000</pubDate>
		<dc:creator>alik</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.kurdyukov.com/?p=23</guid>
		<description><![CDATA[Для одного прототипа понадобилось сделать быстренько REST сервис для стандартного набора действий типа Create, Read, Update, Delete (CRUD).
Писать специальный код для этого не хотелось, поэтому мировой разум подсказал решение в виде django-rest-interface.

Сама по себе библиотечка проста и изящна. Единственно НО &#8211; у нее нет классического setup.py, поэтому через easy_install установить не получится.
Использовать сервис надо будет [...]]]></description>
			<content:encoded><![CDATA[<p>Для одного прототипа понадобилось сделать быстренько <a href="http://en.wikipedia.org/wiki/REST">REST</a> сервис для стандартного набора действий типа Create, Read, Update, Delete (CRUD).</p>
<p>Писать специальный код для этого не хотелось, поэтому мировой разум подсказал решение в виде <a href="http://code.google.com/p/django-rest-interface/">django-rest-interface</a>.</p>
<p><span id="more-23"></span><br />
Сама по себе библиотечка проста и изящна. Единственно НО &#8211; у нее нет классического setup.py, поэтому через easy_install установить не получится.</p>
<p>Использовать сервис надо будет из Flex приложения, что тоже имеет особенности, а именно:</p>
<ul>
<li>Flex плохо дружит с XML тэгами с символом &laquo;-&raquo; в названии. А корневой элемент xml сериализатора для REST такой символ содержит</li>
<li>Flex использует теги для обозначения полей, название тега &#8211; это название поля. Сериализатор для полей создает тег field с атрибутом name.</li>
</ul>
<p>Для устранения этих проблем было сделано следующее:<br />
<strong>Создаем свой сериализатор</strong><br />
Сериализатор был сделать на основе стандартного сериализатора xml из поставки Python:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://www.kurdyukov.com/wp-content/plugins/wp-codebox/wp-codebox.php?p=23&amp;download=flexserializer.py">flexserializer.py</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p2313"><td class="code" id="p23code13"><pre class="python" style="font-family:monospace;"><span style="color: #483d8b;">&quot;&quot;&quot;
Flex serializer. Based on XML serializer.
&quot;&quot;&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">conf</span> <span style="color: #ff7700;font-weight:bold;">import</span> settings
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">core</span>.<span style="color: black;">serializers</span> <span style="color: #ff7700;font-weight:bold;">import</span> base
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">db</span> <span style="color: #ff7700;font-weight:bold;">import</span> models
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">utils</span>.<span style="color: black;">xmlutils</span> <span style="color: #ff7700;font-weight:bold;">import</span> SimplerXMLGenerator
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">utils</span>.<span style="color: black;">encoding</span> <span style="color: #ff7700;font-weight:bold;">import</span> smart_unicode
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">xml</span>.<span style="color: black;">dom</span> <span style="color: #ff7700;font-weight:bold;">import</span> pulldom
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> Serializer<span style="color: black;">&#40;</span>base.<span style="color: black;">Serializer</span><span style="color: black;">&#41;</span>:
	<span style="color: #483d8b;">&quot;&quot;&quot;
	Serializes a QuerySet to XML.
	&quot;&quot;&quot;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> indent<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, level<span style="color: black;">&#41;</span>:
		<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">self</span>.<span style="color: black;">options</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'indent'</span>, <span style="color: #008000;">None</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #008000;">None</span>:
			<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">ignorableWhitespace</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span> + <span style="color: #483d8b;">' '</span> <span style="color: #66cc66;">*</span> <span style="color: #008000;">self</span>.<span style="color: black;">options</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'indent'</span>, <span style="color: #008000;">None</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">*</span> level<span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> start_serialization<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
		<span style="color: #483d8b;">&quot;&quot;&quot;
		Start serialization -- open the XML document and the root element.
		&quot;&quot;&quot;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span> = SimplerXMLGenerator<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">stream</span>, <span style="color: #008000;">self</span>.<span style="color: black;">options</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;encoding&quot;</span>, settings.<span style="color: black;">DEFAULT_CHARSET</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">startDocument</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">startElement</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;objects&quot;</span>, <span style="color: black;">&#123;</span><span style="color: #483d8b;">&quot;version&quot;</span> : <span style="color: #483d8b;">&quot;1.0&quot;</span><span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> end_serialization<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
		<span style="color: #483d8b;">&quot;&quot;&quot;
		End serialization -- end the document.
		&quot;&quot;&quot;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">indent</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">endElement</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;objects&quot;</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">endDocument</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> start_object<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, obj<span style="color: black;">&#41;</span>:
		<span style="color: #483d8b;">&quot;&quot;&quot;
		Called as each object is handled.
		&quot;&quot;&quot;</span>
		<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #008000;">hasattr</span><span style="color: black;">&#40;</span>obj, <span style="color: #483d8b;">&quot;_meta&quot;</span><span style="color: black;">&#41;</span>:
			<span style="color: #ff7700;font-weight:bold;">raise</span> base.<span style="color: black;">SerializationError</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Non-model object (%s) encountered during serialization&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: #008000;">type</span><span style="color: black;">&#40;</span>obj<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
		<span style="color: #008000;">self</span>.<span style="color: black;">indent</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">startElement</span><span style="color: black;">&#40;</span>obj.__class__.__name__, <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">indent</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">startElement</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;pk&quot;</span>, <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">characters</span><span style="color: black;">&#40;</span>smart_unicode<span style="color: black;">&#40;</span>obj._get_pk_val<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">endElement</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;pk&quot;</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">startElement</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;model&quot;</span>, <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">characters</span><span style="color: black;">&#40;</span>smart_unicode<span style="color: black;">&#40;</span>obj._meta<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">endElement</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;model&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> end_object<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, obj<span style="color: black;">&#41;</span>:
		<span style="color: #483d8b;">&quot;&quot;&quot;
		Called after handling all fields for an object.
		&quot;&quot;&quot;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">indent</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">endElement</span><span style="color: black;">&#40;</span>obj.__class__.__name__<span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> handle_field<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, obj, field<span style="color: black;">&#41;</span>:
		<span style="color: #483d8b;">&quot;&quot;&quot;
		Called to handle each field on an object (except for ForeignKeys and
		ManyToManyFields)
		&quot;&quot;&quot;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">indent</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">startElement</span><span style="color: black;">&#40;</span>field.<span style="color: black;">name</span>, <span style="color: black;">&#123;</span>
			<span style="color: #483d8b;">&quot;type&quot;</span> : field.<span style="color: black;">get_internal_type</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
		<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;"># Get a &quot;string version&quot; of the object's data (this is handled by the</span>
		<span style="color: #808080; font-style: italic;"># serializer base class).</span>
		<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">getattr</span><span style="color: black;">&#40;</span>obj, field.<span style="color: black;">name</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #008000;">None</span>:
			value = <span style="color: #008000;">self</span>.<span style="color: black;">get_string_value</span><span style="color: black;">&#40;</span>obj, field<span style="color: black;">&#41;</span>
			<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">characters</span><span style="color: black;">&#40;</span>smart_unicode<span style="color: black;">&#40;</span>value<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">else</span>:
			<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">addQuickElement</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;None&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">endElement</span><span style="color: black;">&#40;</span>field.<span style="color: black;">name</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> handle_fk_field<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, obj, field<span style="color: black;">&#41;</span>:
		<span style="color: #483d8b;">&quot;&quot;&quot;
		Called to handle a ForeignKey (we need to treat them slightly
		differently from regular fields).
		&quot;&quot;&quot;</span>
		<span style="color: #008000;">self</span>._start_relational_field<span style="color: black;">&#40;</span>field<span style="color: black;">&#41;</span>
		related = <span style="color: #008000;">getattr</span><span style="color: black;">&#40;</span>obj, field.<span style="color: black;">name</span><span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">if</span> related <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #008000;">None</span>:
			<span style="color: #ff7700;font-weight:bold;">if</span> field.<span style="color: black;">rel</span>.<span style="color: black;">field_name</span> == related._meta.<span style="color: black;">pk</span>.<span style="color: black;">name</span>:
				<span style="color: #808080; font-style: italic;"># Related to remote object via primary key</span>
				related = related._get_pk_val<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
			<span style="color: #ff7700;font-weight:bold;">else</span>:
				<span style="color: #808080; font-style: italic;"># Related to remote object via other field</span>
				related = <span style="color: #008000;">getattr</span><span style="color: black;">&#40;</span>related, field.<span style="color: black;">rel</span>.<span style="color: black;">field_name</span><span style="color: black;">&#41;</span>
			<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">characters</span><span style="color: black;">&#40;</span>smart_unicode<span style="color: black;">&#40;</span>related<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">else</span>:
			<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">addQuickElement</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;None&quot;</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">endElement</span><span style="color: black;">&#40;</span>field.<span style="color: black;">name</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> handle_m2m_field<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, obj, field<span style="color: black;">&#41;</span>:
		<span style="color: #483d8b;">&quot;&quot;&quot;
		Called to handle a ManyToManyField. Related objects are only
		serialized as references to the object's PK (i.e. the related *data*
		is not dumped, just the relation).
		&quot;&quot;&quot;</span>
		<span style="color: #ff7700;font-weight:bold;">if</span> field.<span style="color: black;">creates_table</span>:
			<span style="color: #008000;">self</span>._start_relational_field<span style="color: black;">&#40;</span>field<span style="color: black;">&#41;</span>
			<span style="color: #ff7700;font-weight:bold;">for</span> relobj <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">getattr</span><span style="color: black;">&#40;</span>obj, field.<span style="color: black;">name</span><span style="color: black;">&#41;</span>.<span style="color: black;">iterator</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
				<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">addQuickElement</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;object&quot;</span>, attrs=<span style="color: black;">&#123;</span><span style="color: #483d8b;">&quot;pk&quot;</span> : smart_unicode<span style="color: black;">&#40;</span>relobj._get_pk_val<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
			<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">endElement</span><span style="color: black;">&#40;</span>field.<span style="color: black;">name</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> _start_relational_field<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, field<span style="color: black;">&#41;</span>:
		<span style="color: #483d8b;">&quot;&quot;&quot;
		Helper to output the  element for relational fields
		&quot;&quot;&quot;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">indent</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">xml</span>.<span style="color: black;">startElement</span><span style="color: black;">&#40;</span>field.<span style="color: black;">name</span>, <span style="color: black;">&#123;</span>
			<span style="color: #483d8b;">&quot;rel&quot;</span>  : field.<span style="color: black;">rel</span>.__class__.__name__,
			<span style="color: #483d8b;">&quot;to&quot;</span>   : smart_unicode<span style="color: black;">&#40;</span>field.<span style="color: black;">rel</span>.<span style="color: black;">to</span>._meta<span style="color: black;">&#41;</span>,
		<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>2. Создаем сериализатор для django-rest</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code14'); return false;">View Code</a> PYTHON</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p2314"><td class="code" id="p23code14"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">class</span> FlexResponder<span style="color: black;">&#40;</span>SerializeResponder<span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, paginate_by=<span style="color: #008000;">None</span>, allow_empty=<span style="color: #008000;">False</span><span style="color: black;">&#41;</span>:
		SerializeResponder.<span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #483d8b;">'flex'</span>, <span style="color: #483d8b;">'application/xml'</span>,
					paginate_by=paginate_by, allow_empty=allow_empty<span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> error<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, request, status_code, error_dict=<span style="color: #008000;">None</span><span style="color: black;">&#41;</span>:
		<span style="color: #483d8b;">&quot;&quot;&quot;
		Return XML error response that includes a human readable error
		message, application-specific errors and a machine readable
		status code.
		&quot;&quot;&quot;</span>
		<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">conf</span> <span style="color: #ff7700;font-weight:bold;">import</span> settings
		<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> error_dict:
			error_dict = ErrorDict<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
		response = HttpResponse<span style="color: black;">&#40;</span>mimetype = <span style="color: #008000;">self</span>.<span style="color: black;">mimetype</span><span style="color: black;">&#41;</span>
		response.<span style="color: black;">status_code</span> = status_code
		<span style="color: #dc143c;">xml</span> = SimplerXMLGenerator<span style="color: black;">&#40;</span>response, settings.<span style="color: black;">DEFAULT_CHARSET</span><span style="color: black;">&#41;</span>
		<span style="color: #dc143c;">xml</span>.<span style="color: black;">startDocument</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
		<span style="color: #dc143c;">xml</span>.<span style="color: black;">startElement</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;django-error&quot;</span>, <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
		<span style="color: #dc143c;">xml</span>.<span style="color: black;">addQuickElement</span><span style="color: black;">&#40;</span>name=<span style="color: #483d8b;">&quot;error-message&quot;</span>, contents=<span style="color: #483d8b;">'%d %s'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>status_code, STATUS_CODE_TEXT<span style="color: black;">&#91;</span>status_code<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
		<span style="color: #dc143c;">xml</span>.<span style="color: black;">addQuickElement</span><span style="color: black;">&#40;</span>name=<span style="color: #483d8b;">&quot;status-code&quot;</span>, contents=<span style="color: #008000;">str</span><span style="color: black;">&#40;</span>status_code<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">if</span> error_dict:
			<span style="color: #dc143c;">xml</span>.<span style="color: black;">startElement</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;model-errors&quot;</span>, <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
			<span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: black;">&#40;</span>model_field, errors<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">in</span> error_dict.<span style="color: black;">items</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
				<span style="color: #ff7700;font-weight:bold;">for</span> error <span style="color: #ff7700;font-weight:bold;">in</span> errors:
					<span style="color: #dc143c;">xml</span>.<span style="color: black;">addQuickElement</span><span style="color: black;">&#40;</span>name=model_field, contents=error<span style="color: black;">&#41;</span>
			<span style="color: #dc143c;">xml</span>.<span style="color: black;">endElement</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;model-errors&quot;</span><span style="color: black;">&#41;</span>
		<span style="color: #dc143c;">xml</span>.<span style="color: black;">endElement</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;django-error&quot;</span><span style="color: black;">&#41;</span>
		<span style="color: #dc143c;">xml</span>.<span style="color: black;">endDocument</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">return</span> response</pre></td></tr></table></div>

<p>3. Подключаем сериализатор в Python через settings.py:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code15'); return false;">View Code</a> PYTHON</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p2315"><td class="code" id="p23code15"><pre class="python" style="font-family:monospace;">SERIALIZATION_MODULES = <span style="color: black;">&#123;</span>
	<span style="color: #483d8b;">'flex'</span>: <span style="color: #483d8b;">'myserver.flex_serializer'</span>
<span style="color: black;">&#125;</span></pre></td></tr></table></div>

<p>4. Подключаем сериализатор к коллекции:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p23code16'); return false;">View Code</a> PYTHON</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p2316"><td class="code" id="p23code16"><pre class="python" style="font-family:monospace;">test_resource = Collection<span style="color: black;">&#40;</span>
	queryset = models.<span style="color: black;">Test</span>.<span style="color: black;">objects</span>.<span style="color: #008000;">all</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>,
	responder = FlexResponder<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#41;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.kurdyukov.com/2009/02/16/rest-django/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vista Certified: AppVerifier и логи</title>
		<link>http://www.kurdyukov.com/2009/02/11/vista-certified-appverifier/</link>
		<comments>http://www.kurdyukov.com/2009/02/11/vista-certified-appverifier/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 21:48:14 +0000</pubDate>
		<dc:creator>alik</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[vista]]></category>

		<guid isPermaLink="false">http://www.kurdyukov.com/?p=11</guid>
		<description><![CDATA[В этом цикле постов я буду рассказывать как проходит процесс подготовки некоторого продукта к сертификации уровня &#171;Certified for Windows Vista&#187;.
Общий процесс описан на странице InnovateOn. Не буду повторять шаги из документации.
Первый тест должен проверить ряд моментов, связанных с работой инсталлятора. Для этого надо пользоваться программой AppVerifier, выпущенной MS. Тут у меня начались проблемы&#8230;
Я все сделал [...]]]></description>
			<content:encoded><![CDATA[<p>В этом цикле постов я буду рассказывать как проходит процесс подготовки некоторого продукта к сертификации уровня &laquo;Certified for Windows Vista&raquo;.</p>
<p>Общий процесс описан на странице <a href="http://www.innovateon.com/product_vista.aspx">InnovateOn</a>. Не буду повторять шаги из документации.</p>
<p>Первый тест должен проверить ряд моментов, связанных с работой инсталлятора. Для этого надо пользоваться программой <a href="http://msdn.microsoft.com/en-us/library/ms220948.aspx" target="_blank">AppVerifier</a>, выпущенной MS. Тут у меня начались проблемы&#8230;</p>
<p><span id="more-11"></span>Я все сделал по инструкции, а именно:</p>
<ol>
<li>Запустил AppVerifier</li>
<li>Добавил в него msiexec.exe</li>
<li>Выставил флаги</li>
<li>Переключился под пользователя LogoUser1</li>
<li>Прошел все шали инсталлятора</li>
</ol>
<p>Для просмотра логов я решил вернуться под пользователя Administrator. Но не тут-то было &#8211; в AppVerifier небыло никаких логов. Я попробовал добавить мой msi-файл в список. Результат остался прежним. После экспериментов с этой замечательной прогой выяснилось, что логи все-таки есть. Но доступны они только из-под пользователя LogoUser1.</p>
<p>PS. После использования AppVerifier для msiexec не забывайте удалять его из списка, иначе могут быть проблемы с другими инсталляторами.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurdyukov.com/2009/02/11/vista-certified-appverifier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
