Skip to content

Commit

Permalink
Refactoring and added issued date to oauth token
Browse files Browse the repository at this point in the history
  • Loading branch information
rubendel committed Sep 18, 2018
1 parent 604714a commit 4ad29cb
Show file tree
Hide file tree
Showing 34 changed files with 5,560 additions and 5,393 deletions.
10,562 changes: 5,282 additions & 5,280 deletions BimServer/generated/org/bimserver/interfaces/SConverter.java

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions BimServer/models/models.ecore
Original file line number Diff line number Diff line change
Expand Up @@ -20947,6 +20947,7 @@
<eStructuralFeatures xsi:type="ecore:EReference" name="authorization" eType="#/4/Authorization"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="user" eType="#/4/User"
eOpposite="#/4/User/oAuthIssuedAuthorizationCodes"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="issued" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Authorization"/>
<eClassifiers xsi:type="ecore:EClass" name="SingleProjectAuthorization" eSuperTypes="#/4/Authorization">
Expand Down
1 change: 1 addition & 0 deletions BimServer/models/models.genmodel
Original file line number Diff line number Diff line change
Expand Up @@ -12520,6 +12520,7 @@
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute models.ecore#/4/OAuthAuthorizationCode/code"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference models.ecore#/4/OAuthAuthorizationCode/authorization"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference models.ecore#/4/OAuthAuthorizationCode/user"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute models.ecore#/4/OAuthAuthorizationCode/issued"/>
</genClasses>
<genClasses ecoreClass="models.ecore#/4/Authorization"/>
<genClasses ecoreClass="models.ecore#/4/SingleProjectAuthorization">
Expand Down
2 changes: 1 addition & 1 deletion BimServer/src/org/bimserver/BimServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@
import org.bimserver.database.berkeley.BerkeleyKeyValueStore;
import org.bimserver.database.berkeley.DatabaseInitException;
import org.bimserver.database.migrations.InconsistentModelsException;
import org.bimserver.database.queries.GeometryAccellerator;
import org.bimserver.database.queries.om.Include;
import org.bimserver.database.queries.om.JsonQueryObjectModelConverter;
import org.bimserver.database.query.conditions.AttributeCondition;
Expand All @@ -70,6 +69,7 @@
import org.bimserver.emf.PackageMetaData;
import org.bimserver.emf.Schema;
import org.bimserver.endpoints.EndPointManager;
import org.bimserver.geometry.accellerator.GeometryAccellerator;
import org.bimserver.interfaces.SConverter;
import org.bimserver.interfaces.objects.SInternalServicePluginConfiguration;
import org.bimserver.interfaces.objects.SPluginBundleVersion;
Expand Down
2 changes: 1 addition & 1 deletion BimServer/src/org/bimserver/database/Database.java
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public class Database implements BimDatabase {
* database-schema change. Do not change this variable when nothing has
* changed in the schema!
*/
public static final int APPLICATION_SCHEMA_VERSION = 42;
public static final int APPLICATION_SCHEMA_VERSION = 43;

public Database(BimServer bimServer, Set<? extends EPackage> emfPackages, KeyValueStore keyValueStore, MetaDataManager metaDataManager) throws DatabaseInitException {
this.cidToEclass = new EClass[Short.MAX_VALUE];
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package org.bimserver.database.migrations.steps;

/******************************************************************************
* Copyright (C) 2009-2018 BIMserver.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see {@literal<http://www.gnu.org/licenses/>}.
*****************************************************************************/

import org.bimserver.database.DatabaseSession;
import org.bimserver.database.migrations.Migration;
import org.bimserver.database.migrations.Schema;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EcorePackage;

public class Step0043 extends Migration {

@Override
public void migrate(Schema schema, DatabaseSession databaseSession) {
EClass oauthCode = schema.getEClass("store", "OAuthAuthorizationCode");
schema.createEAttribute(oauthCode, "issued", EcorePackage.eINSTANCE.getEDate());
}

@Override
public String getDescription() {
return "Added issued date";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
import org.bimserver.database.queries.om.InBoundingBox;
import org.bimserver.database.queries.om.Include;
import org.bimserver.database.queries.om.Include.TypeDef;
import org.bimserver.geometry.accellerator.GeometryObject;
import org.bimserver.geometry.accellerator.Node;
import org.bimserver.database.queries.om.Properties;
import org.bimserver.database.queries.om.QueryException;
import org.bimserver.database.queries.om.QueryPart;
Expand Down
3 changes: 3 additions & 0 deletions BimServer/src/org/bimserver/database/queries/StartFrame.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@

import org.bimserver.BimserverDatabaseException;
import org.bimserver.database.queries.om.Include.TypeDef;
import org.bimserver.geometry.accellerator.GeometryObject;
import org.bimserver.geometry.accellerator.Node;
import org.bimserver.geometry.accellerator.Octree;
import org.bimserver.database.queries.om.QueryException;
import org.bimserver.database.queries.om.QueryPart;
import org.bimserver.database.queries.om.Tiles;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.bimserver.database.queries;
package org.bimserver.geometry.accellerator;

import org.bimserver.interfaces.objects.SDensity;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.bimserver.database.queries;
package org.bimserver.geometry.accellerator;

import java.util.Set;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.bimserver.database.queries;
package org.bimserver.geometry.accellerator;

import java.io.IOException;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
Expand All @@ -11,6 +12,7 @@
import org.bimserver.BimserverDatabaseException;
import org.bimserver.database.DatabaseSession;
import org.bimserver.database.OldQuery;
import org.bimserver.database.queries.QueryObjectProvider;
import org.bimserver.database.queries.om.Include;
import org.bimserver.database.queries.om.Query;
import org.bimserver.database.queries.om.QueryException;
Expand All @@ -24,19 +26,25 @@
import org.bimserver.shared.HashMapVirtualObject;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;

public class GeometryAccellerator {
private BimServer bimServer;
private LoadingCache<OctreeKey, Octree<GeometryObject>> octrees;
private LoadingCache<DensityThresholdKey, DensityThreshold> densityThresholds;
private LoadingCache<ReuseKey, ReuseSet> reuseSets;
private static final Logger LOGGER = LoggerFactory.getLogger(GeometryAccellerator.class);
private final BimServer bimServer;
private final LoadingCache<OctreeKey, Octree<GeometryObject>> octrees;
private final LoadingCache<DensityThresholdKey, DensityThreshold> densityThresholds;
private final LoadingCache<ReuseKey, ReuseSet> reuseSets;
private Path geometryCacheFolder;

public GeometryAccellerator(BimServer bimServer) {
this.bimServer = bimServer;

geometryCacheFolder = this.bimServer.getHomeDir().resolve("geometrycache");

octrees = CacheBuilder.newBuilder().maximumSize(10000).build(new CacheLoader<OctreeKey, Octree<GeometryObject>>() {
public Octree<GeometryObject> load(OctreeKey key) {
Expand All @@ -60,17 +68,15 @@ public DensityThreshold load(DensityThresholdKey key) throws Exception {

public Octree<GeometryObject> getOctree(Set<Long> roids, Set<String> excludedClasses, Set<Long> geometryIdsToReuse, int maxDepth, float minimumThreshold, float maximumThreshold) {
OctreeKey key = new OctreeKey(roids, excludedClasses, geometryIdsToReuse, maxDepth, minimumThreshold, maximumThreshold);
// return generateOctree(key);
try {
return octrees.get(key);
} catch (ExecutionException e) {
e.printStackTrace();
LOGGER.error("", e);
return null;
}
}

private Octree<GeometryObject> generateOctree(OctreeKey key) {
long start = System.nanoTime();
try (DatabaseSession databaseSession = bimServer.getDatabase().createSession()) {
org.bimserver.database.queries.Bounds totalBounds = new org.bimserver.database.queries.Bounds();

Expand Down Expand Up @@ -160,16 +166,13 @@ public void traverse(Node<GeometryObject> t) {
}
});

long end = System.nanoTime();
// System.out.println("generateOctree " + ((end - start) / 1000000) + " ms");
// System.out.println(key.toString());
return octree;
} catch (BimserverDatabaseException e) {
e.printStackTrace();
LOGGER.error("", e);
} catch (IOException e) {
e.printStackTrace();
LOGGER.error("", e);
} catch (QueryException e) {
e.printStackTrace();
LOGGER.error("", e);
}
return null;
}
Expand Down Expand Up @@ -212,30 +215,25 @@ private DensityThreshold generateDensityThreshold(DensityThresholdKey key) {
densityResult.setTrianglesAbove(cumulativeTrianglesAbove);
densityThreshold.setDensity(bimServer.getSConverter().convertToSObject(densityResult));
} catch (BimserverDatabaseException e) {
e.printStackTrace();
LOGGER.error("", e);
}
return densityThreshold;
}

public Set<Long> getGeometryDataToReuse(Set<Long> roids, Set<String> excludedTypes, Integer trianglesToSave) {
ReuseKey key = new ReuseKey(roids, excludedTypes);
// return generateReuseSet(key).getListOfGeometryDataIds(trianglesToSave);
try {
return reuseSets.get(key).getListOfGeometryDataIds(trianglesToSave);
} catch (ExecutionException e) {
e.printStackTrace();
LOGGER.error("", e);
return null;
}
}

private ReuseSet generateReuseSet(ReuseKey key) {
long start = System.nanoTime();
ReuseSet reuseSet = new ReuseSet();
try (DatabaseSession databaseSession = bimServer.getDatabase().createSession()) {
// Assuming all given roids are of projects that all have the same
// schema

// Map<Long, HashMapVirtualObject> geometryDataMap = listGeometryData(databaseSession, key.getRoids());
// Assuming all given roids are of projects that all have the same schema

Revision revision = databaseSession.get(key.getRoids().iterator().next(), OldQuery.getDefault());
PackageMetaData packageMetaData = bimServer.getMetaDataManager().getPackageMetaData(revision.getProject().getSchema());
Expand Down Expand Up @@ -278,44 +276,21 @@ private ReuseSet generateReuseSet(ReuseKey key) {
reuseSet.add(map.get(dataId));
}
} catch (BimserverDatabaseException e) {
e.printStackTrace();
LOGGER.error("", e);
} catch (QueryException e) {
e.printStackTrace();
LOGGER.error("", e);
} catch (IOException e) {
e.printStackTrace();
LOGGER.error("", e);
}
long end = System.nanoTime();
// System.out.println("generateReuseSet: " + ((end - start) / 1000000) + " ms");
return reuseSet;
}

private Map<Long, HashMapVirtualObject> listGeometryData(DatabaseSession databaseSession, Set<Long> roids) throws BimserverDatabaseException, IOException, QueryException {
Map<Long, HashMapVirtualObject> map = new HashMap<>();

Revision revision = databaseSession.get(roids.iterator().next(), OldQuery.getDefault());
PackageMetaData packageMetaData = bimServer.getMetaDataManager().getPackageMetaData(revision.getProject().getSchema());

Query query = new Query(packageMetaData);

QueryPart queryPart = query.createQueryPart();
queryPart.addType(GeometryPackage.eINSTANCE.getGeometryData(), false);

QueryObjectProvider queryObjectProvider = new QueryObjectProvider(databaseSession, bimServer, query, roids, packageMetaData);
HashMapVirtualObject next = queryObjectProvider.next();
while (next != null) {
map.put(next.getOid(), next);
next = queryObjectProvider.next();
}
return map;
}

public SDensity getDensityThreshold(Long roid, Long nrTriangles, Set<String> excludedTypes) {
DensityThresholdKey key = new DensityThresholdKey(roid, nrTriangles, excludedTypes);
// return generateDensityThreshold(key).getDensity();
try {
return densityThresholds.get(key).getDensity();
} catch (ExecutionException e) {
e.printStackTrace();
LOGGER.error("", e);
return null;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.bimserver.database.queries;
package org.bimserver.geometry.accellerator;

public class GeometryObject implements Comparable<GeometryObject> {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package org.bimserver.database.queries;
package org.bimserver.geometry.accellerator;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

import org.bimserver.database.queries.Bounds;
import org.bimserver.database.queries.ObjectWrapper;

public class Node<V extends Comparable<V>> {
private final Node<V>[] nodes = new Node[8];
private Bounds bounds;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package org.bimserver.database.queries;
package org.bimserver.geometry.accellerator;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.bimserver.database.queries.Bounds;

public class Octree<V extends Comparable<V>> extends Node<V> {

private final Map<Integer, Node<V>> list = new HashMap<>();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.bimserver.database.queries;
package org.bimserver.geometry.accellerator;

import java.util.Set;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.bimserver.database.queries;
package org.bimserver.geometry.accellerator;

import java.util.Set;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.bimserver.database.queries;
package org.bimserver.geometry.accellerator;

public class ReuseObject {
private long geometryDataOid;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.bimserver.database.queries;
package org.bimserver.geometry.accellerator;

import java.util.Comparator;
import java.util.HashSet;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.bimserver.database.queries;
package org.bimserver.geometry.accellerator;

public interface Traverser<T extends Comparable<T>> {
void traverse(Node<T> t);
Expand Down
5 changes: 5 additions & 0 deletions BimServer/src/org/bimserver/servlets/BimBotsWebSocket.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package org.bimserver.servlets;

public class BimBotsWebSocket {

}
1 change: 0 additions & 1 deletion BimServer/src/org/bimserver/servlets/Streamer.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import org.bimserver.shared.exceptions.UserException;
import org.bimserver.shared.interfaces.NotificationInterface;
import org.bimserver.shared.interfaces.RemoteServiceInterface;
import org.bimserver.utils.Formatters;
import org.bimserver.utils.GrowingByteBuffer;
import org.bimserver.webservices.InvalidTokenException;
import org.bimserver.webservices.ServiceMap;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,8 +194,9 @@ public List<SOAuthServer> listRegisteredServersLocal() throws ServerException, U
@Override
public void setAuthorizationCode(Long applicationId, String code) throws UserException, ServerException {
try (DatabaseSession session = getBimServer().getDatabase().createSession()) {
OAuthAuthorizationCode oAuthAuthorizationCode = session.create(OAuthAuthorizationCode.class);
OAuthServer server = session.get(applicationId, OldQuery.getDefault());
OAuthAuthorizationCode oAuthAuthorizationCode = session.create(OAuthAuthorizationCode.class);
OAuthServer server = session.get(applicationId, OldQuery.getDefault());
oAuthAuthorizationCode.setIssued(new Date());
oAuthAuthorizationCode.setOauthServer(server);
oAuthAuthorizationCode.setCode(code);
User user = session.get(StorePackage.eINSTANCE.getUser(), getAuthorization().getUoid(), OldQuery.getDefault());
Expand Down Expand Up @@ -277,6 +278,7 @@ public String authorize(Long oAuthServerOid, SAuthorization authorization) throw
singleProjectAuthorization.setProject(project);

OAuthAuthorizationCode code = session.create(OAuthAuthorizationCode.class);
code.setIssued(new Date());

org.bimserver.webservices.authorization.Authorization auth = new org.bimserver.webservices.authorization.SingleProjectAuthorization(getBimServer(), user.getOid(), project.getOid());

Expand Down Expand Up @@ -308,6 +310,7 @@ public String authorize(Long oAuthServerOid, SAuthorization authorization) throw
runServiceAuth.setService(conf);

OAuthAuthorizationCode code = session.create(OAuthAuthorizationCode.class);
code.setIssued(new Date());

org.bimserver.webservices.authorization.Authorization auth = new org.bimserver.webservices.authorization.RunServiceAuthorization(getBimServer(), user.getOid(), conf.getOid());

Expand Down
Loading

0 comments on commit 4ad29cb

Please sign in to comment.