Я использовал InternalProfileFormHandler
, чтобы добавить товар InternalProfileRepository
. Он успешно добавил элемент (пользователь: iuser310002) в предполагаемый репозиторий. После добавления я получил доступ к dyn/admin, чтобы открыть репозиторий и удаленный элемент, который я только что добавил, используя <remove-item item-descriptor="user" id="iuser310002" />
. Затем я снова использовал вызванный InternalProfileFormHandler, чтобы добавить еще один элемент. Однако на этот раз у меня есть atg.repository.RemovedItemException
, говорящий, что Attempt to use an item which has been removed: user:iuser310002.
atg.repository.RemovedItemException при попытке добавить элемент в репозиторий
Я не уверен, почему он пытается создать нового пользователя с тем же идентификатором, что и раньше, и даже если бы я это сделал, почему элемент, который удаляется, должен вызвать это вопрос. Я использую default idGenerator /atg/dynamo/service/IdGenerator
для InternalProfileRepository, поэтому я не думаю, что я буду генерировать одинаковый идентификатор.
Вот код, который успешно создали деталь раз и отказами во второй раз ...
FormHandlerInvoker invoker = new FormHandlerInvoker("/atg/userprofiling/InternalProfileFormHandler", Nucleus.getSystemNucleus());
try {
String paramName;
int paramCounter = 1;
while((paramName = (String) getCurrentTestParams().get("param" + paramCounter)) != null)
{
invoker.addInput(paramName, (String) getCurrentTestParams().get("value" + paramCounter));
paramCounter++;
}
} catch (ServletException e) {
e.printStackTrace();
}
FormHandlerInvocationResult result;
ProfileFormHandler formHandler = null;
try {
result = invoker.invoke();
formHandler =
(ProfileFormHandler)result.getDefaultFormHandler();
formHandler.handleCreate(result.getRequest(), result.getResponse());
}
Ниже журнал исключение ... которое вызывается метод formHandler.handleCreate вызова.
atg.repository.RemovedItemException: Attempt to use an item which has been removed: user:iuser310002
at atg.adapter.gsa.ItemTransactionState.<init>(ItemTransactionState.java:385)
at atg.adapter.gsa.GSAItem.getItemTransactionState(GSAItem.java:2421)
at atg.adapter.gsa.GSAItem.getItemTransactionState(GSAItem.java:2364)
at atg.adapter.gsa.GSAItem.getItemTransactionStateUnchecked(GSAItem.java:2600)
at atg.adapter.gsa.GSAItem.getPropertyValue(GSAItem.java:1511)
at atg.repository.RepositoryItemImpl.getPropertyValue(RepositoryItemImpl.java:151)
at atg.adapter.composite.CompositeItem.createPropertyQuery(CompositeItem.java:739)
at atg.adapter.composite.CompositeItem.getPropertyLinkedItem(CompositeItem.java:630)
at atg.adapter.composite.CompositeItem.getContributingItem(CompositeItem.java:577)
at atg.adapter.composite.CompositeItem.findContributingItem(CompositeItem.java:561)
at atg.adapter.composite.MutableCompositeItem.findContributingItem(MutableCompositeItem.java:971)
at atg.adapter.composite.MutableCompositeItem.getOrCreateContributingItem(MutableCompositeItem.java:985)
at atg.adapter.composite.MutableCompositeItem.setPropertyValue(MutableCompositeItem.java:210)
at atg.userprofiling.ProfileForm.updateProfileAttributes(ProfileForm.java:3761)
at atg.userprofiling.ProfileForm.updateProfileAttributes(ProfileForm.java:3528)
at atg.userprofiling.ProfileForm.createUser(ProfileForm.java:1507)
at atg.userprofiling.ProfileForm.handleCreate(ProfileForm.java:1214)
at atg.userprofiling.ProfileFormHandler.handleCreate(ProfileFormHandler.java:402)
at atg.scenario.userprofiling.ScenarioProfileFormHandler.handleCreate(ScenarioProfileFormHandler.java:599)
at atg.test.steps.CreateInternalUserStep.runTest(CreateInternalUserStep.java:45)
Это в основном, как это работает. Поэтому, чтобы удалить профиль, вам необходимо сначала выйти из системы (или убить сеанс), а затем вызвать RemoveItem. – radimpe
aaah ... Спасибо за подтверждение. Однако у меня есть последующие сомнения, мы также получили эту проблему, когда добавляем некоторые тестовые данные и удаляем их после наших тестов. Не данные профиля, некоторый новый каталог и т. Д. Добавляются перед тестами и удаляются после тестов. Это вызывает ту же проблему, о которой упоминалось в вопросе, когда мы снова пытаемся запустить тесты без перезагрузки сервера. Вы предлагаете любую работу вокруг? также будет убивать сессию здесь? – Buddha
Сколько экземпляров вы используете и какой тип кэширования у вас есть? Возможно, это также вызывает у вас проблемы. Очистите кэш хранилища после удаления элементов и выясните, все еще проблема. – radimpe