powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Как посчитать хеш класса ?
22 сообщений из 72, страница 3 из 3
Как посчитать хеш класса ?
    #40049065
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner
mayton
Вот будет такой input:

Код: jscript
1.
2.
3.
4.
5.
6.
7.
{ "com.corporation.questioner.MyClass" : {
   extends : BasicClass,
   implements : [ "Interface1"],
   fields : [
      { type : "int", name : "field1"},
      { type : "List", name : "otherClassList"}
   ]
}


Вот считай его MD5 и тут всё учтено что связано с сигнатурами.


а родитель родителя?

Мы ходим по кругу. Твой вопрос в чем? Можно ли принципиально, используя рефлексию извлечь родителей?

Я думаю - да. Можно.

Тебе придется хранить не только поля. Но и всю цепочку родителей. И все композитные классы если они были в полях.
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049066
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Не только композит. Полиморфные методы, абстрактные, наследование, интерфейсы,...
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049069
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
questioner
пропущено...


а родитель родителя?

Мы ходим по кругу. Твой вопрос в чем? Можно ли принципиально, используя рефлексию извлечь родителей?

Я думаю - да. Можно.

Тебе придется хранить не только поля. Но и всю цепочку родителей. И все композитные классы если они были в полях.



Как сделать руками через рефлексию я уж как-нить разберусь) Был вопрос нет ли готовой тулы для этого, чтобы не писать свой велоспед
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049070
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С практической точки зрения это был-бы рандомный шум.

Я - как раз за то чтобы не анализировать сигнатуры, а смотреть с точки зрения бизнеса - какие
были сделаны ФАКТИЧЕСКИ изменения. А то что-же получается. Система стартанула.

Сказала - ойойой - тут около 500 классов изменились. И дальше что? Какая нам с этого польза?

Мне вот как разработчику эта тема - не интересна. Бизнесу - 500 классов тоже никакой инфы не несет.

Ему надо другое. С какого числа в "маркетинг акции" появилось свойство - "привел друга".

Вот это - интересно. Это - экспертный вопрос. И мета-информацию по нем я-бы искал в release-notes.txt
а не в рандомных изменениях классов которые разраб каждый день делает по 100 штук.
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049072
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
По бизнесу делается "версионирование".... Разными методами.
Но ТС наверно не слышал такого.
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049075
SpringMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
questioner

Задача - при старте приложение ответить на вопрос менял ли кто-то что-то в структуре жава объектов начиная с определенного рута с момента прошлого старта.

JsonSchema это другое


А в чем проблема генерить схему и проверять поменялась ли они? Или на каком уровне ты это хочешь делать?
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049082
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
С практической точки зрения это был-бы рандомный шум.

Я - как раз за то чтобы не анализировать сигнатуры, а смотреть с точки зрения бизнеса - какие
были сделаны ФАКТИЧЕСКИ изменения. А то что-же получается. Система стартанула.

Сказала - ойойой - тут около 500 классов изменились. И дальше что? Какая нам с этого польза?

Мне вот как разработчику эта тема - не интересна. Бизнесу - 500 классов тоже никакой инфы не несет.

Ему надо другое. С какого числа в "маркетинг акции" появилось свойство - "привел друга".

Вот это - интересно. Это - экспертный вопрос. И мета-информацию по нем я-бы искал в release-notes.txt
а не в рандомных изменениях классов которые разраб каждый день делает по 100 штук.


В нашем случае будет достаточно свалиться.
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049091
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(разводя руками)

Это странно. Комплекс падает при старте.

Ну ладно. Вам виднее.
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049094
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
(разводя руками)

Это странно. Комплекс падает при старте.

Ну ладно. Вам виднее.


Да, это expected result. Также как приложение не стартует если не все миграции накатились.
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049099
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни один чел топике не одобрил постановку.
Но ТС упрямо - всё хорошо, прекрасная маркиза...
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049100
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я-бы послушал как эту задачу озвучивает бизнес. Не в терминах классов. А в общих словах.
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049315
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner
Додумываешь слова. Про рантайм от меня вообще речи не было

>Не райнайм
>Рефлексия
Яснопонятно. Чтобы за тебя не додумывали попробуй делать избыточное описание своих хотелок. Никто не обязан и не в состоянии знать, какой у тебя там контекст. Сохранишь кучу времени себе и людям.

questioner
Это всё мне известно... у нас вообще всё это в монге хранится и объект в Жысон сохраняется, поэтому не совсем релевантно.
Да и трейдингом мы не занимаемся, поэтому доли секунды не критичны. Нужен просто ответ на вопрос поменялось ли что что-то в структуре объектов или нет. Если да, то метод должен вернуть другой хэш, чем в прошлый раз.

Ты не мог сразу написать, что у тебя там жсон из монги с проекцией на pojo?

У тебя два варианта - или парсить код, или рефлексия в рандайме и падать при запуске/работе/тестах. Я бы выбрал первый вариант, если тебе надо трекать изменения в коде и долбить разрабов по башке. А лучше вообще сделал бы код для json'а генерируемым/частично генерируемым и трекал всё где-то отдельно.
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049317
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
Он хотел одного - готовую либу.
А сам он фиг напишет и тему топика достойно не закроет.
Уже видно по его поведению.
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049386
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Он хотел одного - готовую либу.

Вряд ли он найдёт что-то готовое под такой специфичный изврат. Типа в стат. типизированном яп компилятор и так должен бить по рукам за всякие изменения структуры.
PetroNotC Sharp
А сам он фиг напишет и тему топика достойно не закроет.

И хорошо. Он что-то хочет там с рефлексей, чтобы проект подло падал после недели траходрома с его сборкой.
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049389
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
)) +1
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049769
questioner
SpringMan
Есть такое (всяко есть куча аналогов) - никогда не использовал, но по идее можно генерить, сохранять и сравнивать с предыдущим.
А какая вообще постановка от бизнеса? - вроде задача ясна, но возможно решение не с той стороны


Задача - при старте приложение ответить на вопрос менял ли кто-то что-то в структуре жава объектов начиная с определенного рута с момента прошлого старта.

JsonSchema это другое


а если создать свою статическую мапу <неизмененный Class<?>, хеш>
а потом переделать класслоадер, чтобы он при загрузке классов сверялся с этой хеш мапой, изменился ли хеш класса?
хеш класса считать как то по полям http://commons.apache.org/proper/commons-beanutils/javadocs/v1.9.4/apidocs/index.html
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049911
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner

Это всё мне известно... у нас вообще всё это в монге хранится и объект в Жысон сохраняется, поэтому не совсем релевантно.
Да и трейдингом мы не занимаемся, поэтому доли секунды не критичны. Нужен просто ответ на вопрос поменялось ли что что-то в структуре объектов или нет. Если да, то метод должен вернуть другой хэш, чем в прошлый раз.

Да и вызываться это будет один раз при старте аппликейшена. То бишь грешить на перформанс тут не надо.

Какой-то велосипед изобретаете.

Сохраняйте в монго/JSON номер версии. При считывании сравниваете. Если отличается - ошибка. Ровно так в родной сериализации и сделано

Если процесс разработки поставлен и есть build server, то Subversion при коммитах может в код приложения сам номер версии вписывать.

Если нужно более толлирантный вариант, то достаточно только проверять набор полей. Очень странно, что процедура считывания этого не делает. Если поля в объекте нет, то куда оно его считывать будет? Т.е. эта проверка (на отсутвие полей) уже должна быть реализована. Остается проверка, что не появилось новых полей. Точнее, что после операции считывания не осталось не проиницыализированных полей. Служебные поля, внутренние для объекта и инициализирующиеся кодом, ясное дело операции записи/чтения никак не мешают. Важны только внешние поля (которые сохраняются/загружаются).

Проход по иерархии и цепочки классов так же не нужен. Т.к. операция считывания объекта и так должна такой проход делать неавно (рекурсивно).

IMHO & AFAIK
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049932
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Про версии вы правы и ему говорилось. Не реагирует.
Если нет версии, то считывающий класс не сможет проверить тот набор полей или нет.
Райзе будет.
Код: java
1.
2.
3.
4.
obj.readFromStream(stream){
    field1 читаем
     field2 читаем
    .... 
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049949
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

Если нет версии, то считывающий класс не сможет проверить тот набор полей или нет.
Райзе будет.
Код: java
1.
2.
3.
4.
obj.readFromStream(stream){
    field1 читаем
     field2 читаем
    .... 


почему не сможет?

Если код чтения постороен исходя из полей в классе, то

Вариант поле добавилось в класс - его не будет в JSON - ошибка
Вариант поле удалили в классе - ну нужно дописать обработку ситуации, что остались необработанные поля из JSON. Задача вроде попроще, чем бином Ньютона )))
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049980
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Это если json. Я говорил про байтовый поток в блоб поле бд. Там только данные полей. Без имён и типов.
А если json то конечно,... Там и типы и названия полей и данные и точность и схема и...))))
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40049982
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Пусть хранит прямо файлы исходников MyClass.java))))
...
Рейтинг: 0 / 0
Как посчитать хеш класса ?
    #40050015
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На уровне maven-плагинов можно. Генерить манифесты с контрольными суммами.
...
Рейтинг: 0 / 0
22 сообщений из 72, страница 3 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Как посчитать хеш класса ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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