Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / batch generation of equals() and hashCode() / 8 сообщений из 8, страница 1 из 1
26.08.2016, 13:07
    #39298562
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
batch generation of equals() and hashCode()
коллеги подскажите кто знает.

у меня в проекте предусмотренна периодическая генерация классов из XSD-Схемы при помощи JAXB. Эти классы используются в тестах и принимают участия в коллекциях, что ведет к их автоматическому использованию equals() метода. В отдельных случаях я использую фишку eclipse для генерации equals() / hashCode(). Однако когда речь заходит о большом количестве классов, для которых нужно сгенерить эти методы, в ручную выполнять эту работу как-то влом.

Не встречалься ли кто-нибудь с задачей массовой генерацией этих методов ?

спасибо
...
Рейтинг: 0 / 0
26.08.2016, 14:42
    #39298637
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
batch generation of equals() and hashCode()
https://projectlombok.org/

Код: java
1.
2.
@EqualsAndHashCode
Equality made easy: Generates hashCode and equals implementations from the fields of your object.
...
Рейтинг: 0 / 0
26.08.2016, 14:50
    #39298648
no56892
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
batch generation of equals() and hashCode()
Atum1 https://projectlombok.org/

Код: java
1.
2.
@EqualsAndHashCode
Equality made easy: Generates hashCode and equals implementations from the fields of your object.


ИМХО, Это самый убогий "фреймворк" в джаве)).
...
Рейтинг: 0 / 0
26.08.2016, 15:31
    #39298681
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
batch generation of equals() and hashCode()
Atum1 https://projectlombok.org/

Код: java
1.
2.
@EqualsAndHashCode
Equality made easy: Generates hashCode and equals implementations from the fields of your object.



спасибо.
игрушка прикольная. Но не подойдет, потому что надо в каждый класс в ручную впихивать аннотацию @Data. К тому же тогда надо специально JAXB объяснять чтобы он включил в декларацию класса эту аннотацию. Короче тут "овчинка выделки не стоит"
...
Рейтинг: 0 / 0
26.08.2016, 16:29
    #39298719
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
batch generation of equals() and hashCode()
...
Рейтинг: 0 / 0
28.08.2016, 15:26
    #39299169
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
batch generation of equals() and hashCode()
Ну зачем в ручную...

Самое простое написать свой мавен плагин. Котрый так же как и ломбок будет вставлять во все классы что вам нужно

Это просто идея.

У вас в руках самый мощный инструмент java... Неужели вы забыли как раньше сборку делали через Ант и писали руками билд скрипты?


Тут тоже самое .... уважение к платформе...

Укажите папку и что нужно делать с вашим кодом. И всё.


Как вариант просто создать ещё одни базовый абстрактный класс и через всю ту же рефлексию в нем определить два ваших метода в которых бежать по полям реального класса .
...
Рейтинг: 0 / 0
29.08.2016, 15:40
    #39299676
detec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
batch generation of equals() and hashCode()
ИМХО, сильно стрёмный момент в общем случае - доверять автоматике реализацию этих методов с обходом всех полей. В полях могут быть коллекции объектов, к примеру. Если речь идёт о приёме каких-то готовых сущностей через веб-сервис - тогда ещё куда ни шло, а если будет двунаправленный обмен сложными, вложенными объектами, то я бы делал эти методы руками.
...
Рейтинг: 0 / 0
10.10.2016, 17:16
    #39323920
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
batch generation of equals() and hashCode()
задача решилась путем использования плагина
Код: xml
1.
2.
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>



вот цитата из pom:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
		<!-- https://mvnrepository.com/artifact/org.jvnet.jaxb2_commons/jaxb2-basics-runtime -->
		<!-- in order to work with xsd->java transformation, utilize the following dependensies -->
		<dependency>
			<groupId>org.jvnet.jaxb2_commons</groupId>
			<artifactId>jaxb2-basics-runtime</artifactId>
			<version>1.11.1</version>
		</dependency>
		<dependency>
			<groupId>com.sun.xml.bind</groupId>
			<artifactId>jaxb-impl</artifactId>
			<version>2.2.11</version>
		</dependency>
		<dependency>
                       <groupId>com.sun.xml.bind</groupId>
                       <artifactId>jaxb-core</artifactId>
                       <version>2.2.11</version>
                </dependency>


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
	<build>
		<pluginManagement>
			<plugins>
				<!-- If we e.g. execute on JDK 1.7, we should compile for Java 7 to get 
					the same (or higher) JAXB API version as used during the xjc execution. -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<configuration>
						<source>1.8</source>
						<target>1.8</target>
					</configuration>
				</plugin>
				<plugin>
					<!-- ignore m2e error for the maven-jaxb2-plugin -->
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>org.jvnet.jaxb2.maven2</groupId>
										<artifactId>maven-jaxb2-plugin</artifactId>
										<versionRange>[0.12.3,)</versionRange>
										<goals>
											<goal>generate</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>


		<plugins>

			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>

			<plugin>
				<groupId>org.jvnet.jaxb2.maven2</groupId>
				<artifactId>maven-jaxb2-plugin</artifactId>
				<configuration>
					<schemaDirectory>src/main/resources/data_1</schemaDirectory>
					<schemaIncludes>
						<include>*.xsd</include>
					</schemaIncludes>
					<bindingDirectory>${basedir}/src/main/resources/jxb</bindingDirectory>
					<bindingIncludes>
						<include>*.xjb</include>
					</bindingIncludes>
					<generatePackage>com.ciber.tibco.domain</generatePackage>
					<args>
						<arg>-XtoString</arg>
						<arg>-Xequals</arg>
						<arg>-XhashCode</arg>
					</args>
					<plugins>
						<plugin>
							<groupId>org.jvnet.jaxb2_commons</groupId>
							<artifactId>jaxb2-basics</artifactId>
							<version>0.6.4</version>
						</plugin>
					</plugins>
				</configuration>
				<executions>
					<execution>
						<id>generate entity classes from xsd schema</id>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
				</executions>

			</plugin>
		</plugins>
	</build>
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / batch generation of equals() and hashCode() / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]