[Fix] Remove version of parsed files in inspector

This commit is contained in:
Robert von Burg 2018-02-02 11:50:00 +01:00
parent ab0930eec8
commit ba115b70c4
3 changed files with 52 additions and 28 deletions

View File

@ -21,9 +21,6 @@ import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import li.strolch.agent.api.ElementMap;
import li.strolch.agent.api.StrolchAgent;
import li.strolch.agent.api.StrolchRealm;
@ -37,6 +34,8 @@ import li.strolch.persistence.api.StrolchDao;
import li.strolch.persistence.api.StrolchPersistenceException;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.runtime.StrolchConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Robert von Burg <eitch@eitchnet.ch>
@ -228,6 +227,7 @@ public abstract class CachedElementMap<T extends StrolchRootElement> implements
* {@link CachedRealm}
*
* @param element
* the element to insert
*/
synchronized void insert(T element) {
getCachedDao().save(element);
@ -235,7 +235,7 @@ public abstract class CachedElementMap<T extends StrolchRootElement> implements
@Override
public synchronized void add(StrolchTransaction tx, T element) {
if (realm.isVersioningEnabled()) {
if (this.realm.isVersioningEnabled()) {
int latestVersion = getLatestVersionFor(tx, element.getType(), element.getId());
Version.setInitialVersionFor(element, latestVersion, tx.getCertificate().getUsername());
} else {
@ -251,7 +251,7 @@ public abstract class CachedElementMap<T extends StrolchRootElement> implements
@Override
public synchronized void addAll(StrolchTransaction tx, List<T> elements) {
for (T element : elements) {
if (realm.isVersioningEnabled()) {
if (this.realm.isVersioningEnabled()) {
int latestVersion = getLatestVersionFor(tx, element.getType(), element.getId());
Version.setInitialVersionFor(element, latestVersion, tx.getCertificate().getUsername());
} else {
@ -267,10 +267,7 @@ public abstract class CachedElementMap<T extends StrolchRootElement> implements
@Override
public synchronized void update(StrolchTransaction tx, T element) {
if (realm.isVersioningEnabled())
Version.updateVersionFor(element, tx.getCertificate().getUsername(), false);
else
Version.setInitialVersionFor(element, -1, tx.getCertificate().getUsername());
updateVersion(tx, element);
// first perform cached change
getCachedDao().update(element);
@ -281,10 +278,7 @@ public abstract class CachedElementMap<T extends StrolchRootElement> implements
@Override
public synchronized void updateAll(StrolchTransaction tx, List<T> elements) {
for (T t : elements) {
if (realm.isVersioningEnabled())
Version.updateVersionFor(t, tx.getCertificate().getUsername(), false);
else
Version.setInitialVersionFor(t, -1, tx.getCertificate().getUsername());
updateVersion(tx, t);
}
// first perform cached change
@ -295,10 +289,7 @@ public abstract class CachedElementMap<T extends StrolchRootElement> implements
@Override
public synchronized void remove(StrolchTransaction tx, T element) {
if (realm.isVersioningEnabled())
Version.updateVersionFor(element, tx.getCertificate().getUsername(), true);
else
Version.setInitialVersionFor(element, -1, tx.getCertificate().getUsername());
updateVersion(tx, element);
if (this.realm.isVersioningEnabled()) {
@ -319,10 +310,7 @@ public abstract class CachedElementMap<T extends StrolchRootElement> implements
@Override
public synchronized void removeAll(StrolchTransaction tx, List<T> elements) {
for (T t : elements) {
if (realm.isVersioningEnabled())
Version.updateVersionFor(t, tx.getCertificate().getUsername(), true);
else
Version.setInitialVersionFor(t, -1, tx.getCertificate().getUsername());
updateVersion(tx, t);
}
if (this.realm.isVersioningEnabled()) {
@ -341,6 +329,14 @@ public abstract class CachedElementMap<T extends StrolchRootElement> implements
}
}
private void updateVersion(StrolchTransaction tx, T element) {
if (this.realm.isVersioningEnabled()) {
Version.updateVersionFor(element, tx.getCertificate().getUsername(), false);
} else {
Version.setInitialVersionFor(element, -1, tx.getCertificate().getUsername());
}
}
@Override
public synchronized long removeAll(StrolchTransaction tx) {
// first perform cached change

View File

@ -1,12 +1,12 @@
/*
* Copyright 2013 Robert von Burg <eitch@eitchnet.ch>
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@ -29,7 +29,7 @@ import li.strolch.model.activity.Activity;
/**
* {@link StrolchElementListener} to store the {@link StrolchRootElement} in {@link Map} objects when parsing an object
* model from an external source
*
*
* @author Robert von Burg <eitch@eitchnet.ch>
*/
public class SimpleStrolchElementListener implements StrolchElementListener {

View File

@ -70,6 +70,7 @@ import li.strolch.service.UpdateActivityService.UpdateActivityArg;
import li.strolch.service.UpdateOrderService.UpdateOrderArg;
import li.strolch.service.UpdateResourceService.UpdateResourceArg;
import li.strolch.service.api.ServiceResult;
import li.strolch.utils.dbc.DBC;
import li.strolch.utils.helper.StringHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -723,6 +724,7 @@ public class Inspector {
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
Resource resource = parseResourceFromXml(type, data);
DBC.INTERIM.assertEquals("Posted id must be same as request!", id, resource.getId());
UpdateResourceService svc = new UpdateResourceService();
UpdateResourceArg arg = new UpdateResourceArg();
@ -772,6 +774,8 @@ public class Inspector {
arg.refreshUnknownVersion = true;
}
DBC.INTERIM.assertEquals("Posted id must be same as request!", id, resource.getId());
// prepare argument
arg.resource = resource;
arg.realm = realm;
@ -798,6 +802,7 @@ public class Inspector {
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
Order order = parseOrderFromXml(type, data);
DBC.INTERIM.assertEquals("Posted id must be same as request!", id, order.getId());
UpdateOrderService svc = new UpdateOrderService();
UpdateOrderArg arg = new UpdateOrderArg();
@ -847,6 +852,8 @@ public class Inspector {
arg.refreshUnknownVersion = true;
}
DBC.INTERIM.assertEquals("Posted id must be same as request!", id, order.getId());
// prepare argument
arg.order = order;
arg.realm = realm;
@ -873,6 +880,7 @@ public class Inspector {
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
Activity activity = parseActivityFromXml(type, data);
DBC.INTERIM.assertEquals("Posted id must be same as request!", id, activity.getId());
UpdateActivityService svc = new UpdateActivityService();
UpdateActivityArg arg = new UpdateActivityArg();
@ -922,6 +930,8 @@ public class Inspector {
arg.refreshUnknownVersion = true;
}
DBC.INTERIM.assertEquals("Posted id must be same as request!", id, activity.getId());
// prepare argument
arg.activity = activity;
arg.realm = realm;
@ -1148,7 +1158,7 @@ public class Inspector {
@Produces(MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_XML)
@Path("{realm}/activities")
public Response addActivitiyAsXml(@Context HttpServletRequest request, @PathParam("realm") String realm,
public Response addActivityAsXml(@Context HttpServletRequest request, @PathParam("realm") String realm,
String data) {
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
@ -1173,7 +1183,7 @@ public class Inspector {
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("{realm}/activities")
public Response addActivitiyAsJson(@Context HttpServletRequest request, @PathParam("realm") String realm,
public Response addActivityAsJson(@Context HttpServletRequest request, @PathParam("realm") String realm,
String data) {
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
@ -1201,7 +1211,7 @@ public class Inspector {
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("{realm}/activities/{type}")
public Response addActivitiyAsJsonFlat(@Context HttpServletRequest request, @PathParam("realm") String realm,
public Response addActivityAsJsonFlat(@Context HttpServletRequest request, @PathParam("realm") String realm,
@PathParam("type") String type, @QueryParam("flat") String flatS, String data) {
Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE);
@ -1295,6 +1305,9 @@ public class Inspector {
""));
resource = listener.getResources().get(0);
resource.setVersion(null);
DBC.INTERIM.assertEquals("Posted type must be same as request!", type, resource.getType());
} catch (Exception e) {
throw new StrolchPersistenceException(
@ -1322,6 +1335,9 @@ public class Inspector {
""));
order = listener.getOrders().get(0);
order.setVersion(null);
DBC.INTERIM.assertEquals("Posted type must be same as request!", type, order.getType());
} catch (Exception e) {
throw new StrolchPersistenceException(
@ -1351,6 +1367,9 @@ public class Inspector {
""));
activity = listener.getActivities().get(0);
activity.setVersion(null);
DBC.INTERIM.assertEquals("Posted type must be same as request!", type, activity.getType());
} catch (Exception e) {
throw new StrolchPersistenceException(
@ -1380,6 +1399,9 @@ public class Inspector {
// parse from complete JSON
ResourceFromJsonVisitor visitor = new ResourceFromJsonVisitor();
resource = visitor.visit(jsonObject);
resource.setVersion(null);
DBC.INTERIM.assertEquals("Posted type must be same as request!", type, resource.getType());
}
return resource;
@ -1404,6 +1426,9 @@ public class Inspector {
// parse from complete JSON
OrderFromJsonVisitor visitor = new OrderFromJsonVisitor();
order = visitor.visit(jsonObject);
order.setVersion(null);
DBC.INTERIM.assertEquals("Posted type must be same as request!", type, order.getType());
}
return order;
@ -1428,6 +1453,9 @@ public class Inspector {
// parse from complete JSON
ActivityFromJsonVisitor visitor = new ActivityFromJsonVisitor();
activity = visitor.visit(jsonObject);
activity.setVersion(null);
DBC.INTERIM.assertEquals("Posted type must be same as request!", type, activity.getType());
}
return activity;