GUACAMOLE-394: Deprecate ConnectionRecordSet. Refactor accordingly.

This commit is contained in:
Michael Jumper
2017-09-09 13:20:43 -07:00
parent cd5d23866d
commit 26122ebc3e
13 changed files with 123 additions and 121 deletions

View File

@@ -27,15 +27,17 @@ import java.util.List;
import java.util.Set; import java.util.Set;
import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.auth.jdbc.base.RestrictedObject; import org.apache.guacamole.auth.jdbc.base.RestrictedObject;
import org.apache.guacamole.net.auth.ActivityRecordSet;
import org.apache.guacamole.net.auth.ActivityRecordSet.SortableProperty;
import org.apache.guacamole.net.auth.ConnectionRecord; import org.apache.guacamole.net.auth.ConnectionRecord;
/** /**
* A JDBC implementation of ConnectionRecordSet. Calls to asCollection() will * A JDBC implementation of ActivityRecordSet for ConnectionRecords. Calls to
* query connection history records from the database. Which records are * asCollection() will query connection history records from the database. Which
* returned will be determined by the values passed in earlier. * records are returned will be determined by the values passed in earlier.
*/ */
public class ConnectionRecordSet extends RestrictedObject public class ConnectionRecordSet extends RestrictedObject
implements org.apache.guacamole.net.auth.ConnectionRecordSet { implements ActivityRecordSet<ConnectionRecord> {
/** /**
* Service for managing connection objects. * Service for managing connection objects.

View File

@@ -19,7 +19,7 @@
package org.apache.guacamole.auth.jdbc.connection; package org.apache.guacamole.auth.jdbc.connection;
import org.apache.guacamole.net.auth.ConnectionRecordSet; import org.apache.guacamole.net.auth.ActivityRecordSet;
/** /**
* A sort predicate which species the property to use when sorting connection * A sort predicate which species the property to use when sorting connection
@@ -30,7 +30,7 @@ public class ConnectionRecordSortPredicate {
/** /**
* The property to use when sorting ConnectionRecords. * The property to use when sorting ConnectionRecords.
*/ */
private final ConnectionRecordSet.SortableProperty property; private final ActivityRecordSet.SortableProperty property;
/** /**
* Whether the sort order is descending (true) or ascending (false). * Whether the sort order is descending (true) or ascending (false).
@@ -47,7 +47,7 @@ public class ConnectionRecordSortPredicate {
* @param descending * @param descending
* Whether the sort order is descending (true) or ascending (false). * Whether the sort order is descending (true) or ascending (false).
*/ */
public ConnectionRecordSortPredicate(ConnectionRecordSet.SortableProperty property, public ConnectionRecordSortPredicate(ActivityRecordSet.SortableProperty property,
boolean descending) { boolean descending) {
this.property = property; this.property = property;
this.descending = descending; this.descending = descending;
@@ -59,7 +59,7 @@ public class ConnectionRecordSortPredicate {
* @return * @return
* The property that should be used when sorting ConnectionRecords. * The property that should be used when sorting ConnectionRecords.
*/ */
public ConnectionRecordSet.SortableProperty getProperty() { public ActivityRecordSet.SortableProperty getProperty() {
return property; return property;
} }

View File

@@ -28,16 +28,17 @@ import org.apache.guacamole.auth.jdbc.sharing.connectiongroup.SharedRootConnecti
import org.apache.guacamole.auth.jdbc.user.RemoteAuthenticatedUser; import org.apache.guacamole.auth.jdbc.user.RemoteAuthenticatedUser;
import org.apache.guacamole.form.Form; import org.apache.guacamole.form.Form;
import org.apache.guacamole.net.auth.ActiveConnection; import org.apache.guacamole.net.auth.ActiveConnection;
import org.apache.guacamole.net.auth.ActivityRecordSet;
import org.apache.guacamole.net.auth.AuthenticationProvider; import org.apache.guacamole.net.auth.AuthenticationProvider;
import org.apache.guacamole.net.auth.Connection; import org.apache.guacamole.net.auth.Connection;
import org.apache.guacamole.net.auth.ConnectionGroup; import org.apache.guacamole.net.auth.ConnectionGroup;
import org.apache.guacamole.net.auth.ConnectionRecordSet; import org.apache.guacamole.net.auth.ConnectionRecord;
import org.apache.guacamole.net.auth.Directory; import org.apache.guacamole.net.auth.Directory;
import org.apache.guacamole.net.auth.SharingProfile; import org.apache.guacamole.net.auth.SharingProfile;
import org.apache.guacamole.net.auth.User; import org.apache.guacamole.net.auth.User;
import org.apache.guacamole.net.auth.UserContext; import org.apache.guacamole.net.auth.UserContext;
import org.apache.guacamole.net.auth.simple.SimpleActivityRecordSet;
import org.apache.guacamole.net.auth.simple.SimpleConnectionGroupDirectory; import org.apache.guacamole.net.auth.simple.SimpleConnectionGroupDirectory;
import org.apache.guacamole.net.auth.simple.SimpleConnectionRecordSet;
import org.apache.guacamole.net.auth.simple.SimpleDirectory; import org.apache.guacamole.net.auth.simple.SimpleDirectory;
/** /**
@@ -175,8 +176,8 @@ public class SharedUserContext implements UserContext {
} }
@Override @Override
public ConnectionRecordSet getConnectionHistory() { public ActivityRecordSet<ConnectionRecord> getConnectionHistory() {
return new SimpleConnectionRecordSet(); return new SimpleActivityRecordSet<ConnectionRecord>();
} }
@Override @Override

View File

@@ -129,7 +129,7 @@
</foreach> </foreach>
<!-- Bind sort property enum values for sake of readability --> <!-- Bind sort property enum values for sake of readability -->
<bind name="START_DATE" value="@org.apache.guacamole.net.auth.ConnectionRecordSet$SortableProperty@START_DATE"/> <bind name="START_DATE" value="@org.apache.guacamole.net.auth.ActivityRecordSet$SortableProperty@START_DATE"/>
<!-- Sort predicates --> <!-- Sort predicates -->
<foreach collection="sortPredicates" item="sortPredicate" <foreach collection="sortPredicates" item="sortPredicate"
@@ -199,7 +199,7 @@
</foreach> </foreach>
<!-- Bind sort property enum values for sake of readability --> <!-- Bind sort property enum values for sake of readability -->
<bind name="START_DATE" value="@org.apache.guacamole.net.auth.ConnectionRecordSet$SortableProperty@START_DATE"/> <bind name="START_DATE" value="@org.apache.guacamole.net.auth.ActivityRecordSet$SortableProperty@START_DATE"/>
<!-- Sort predicates --> <!-- Sort predicates -->
<foreach collection="sortPredicates" item="sortPredicate" <foreach collection="sortPredicates" item="sortPredicate"

View File

@@ -127,7 +127,7 @@
</foreach> </foreach>
<!-- Bind sort property enum values for sake of readability --> <!-- Bind sort property enum values for sake of readability -->
<bind name="START_DATE" value="@org.apache.guacamole.net.auth.ConnectionRecordSet$SortableProperty@START_DATE"/> <bind name="START_DATE" value="@org.apache.guacamole.net.auth.ActivityRecordSet$SortableProperty@START_DATE"/>
<!-- Sort predicates --> <!-- Sort predicates -->
<foreach collection="sortPredicates" item="sortPredicate" <foreach collection="sortPredicates" item="sortPredicate"
@@ -197,7 +197,7 @@
</foreach> </foreach>
<!-- Bind sort property enum values for sake of readability --> <!-- Bind sort property enum values for sake of readability -->
<bind name="START_DATE" value="@org.apache.guacamole.net.auth.ConnectionRecordSet$SortableProperty@START_DATE"/> <bind name="START_DATE" value="@org.apache.guacamole.net.auth.ActivityRecordSet$SortableProperty@START_DATE"/>
<!-- Sort predicates --> <!-- Sort predicates -->
<foreach collection="sortPredicates" item="sortPredicate" <foreach collection="sortPredicates" item="sortPredicate"

View File

@@ -28,17 +28,18 @@ import org.apache.guacamole.auth.ldap.connection.ConnectionService;
import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.form.Form; import org.apache.guacamole.form.Form;
import org.apache.guacamole.net.auth.ActiveConnection; import org.apache.guacamole.net.auth.ActiveConnection;
import org.apache.guacamole.net.auth.ActivityRecordSet;
import org.apache.guacamole.net.auth.AuthenticatedUser; import org.apache.guacamole.net.auth.AuthenticatedUser;
import org.apache.guacamole.net.auth.AuthenticationProvider; import org.apache.guacamole.net.auth.AuthenticationProvider;
import org.apache.guacamole.net.auth.Connection; import org.apache.guacamole.net.auth.Connection;
import org.apache.guacamole.net.auth.ConnectionGroup; import org.apache.guacamole.net.auth.ConnectionGroup;
import org.apache.guacamole.net.auth.ConnectionRecordSet; import org.apache.guacamole.net.auth.ConnectionRecord;
import org.apache.guacamole.net.auth.Directory; import org.apache.guacamole.net.auth.Directory;
import org.apache.guacamole.net.auth.SharingProfile; import org.apache.guacamole.net.auth.SharingProfile;
import org.apache.guacamole.net.auth.User; import org.apache.guacamole.net.auth.User;
import org.apache.guacamole.net.auth.simple.SimpleActivityRecordSet;
import org.apache.guacamole.net.auth.simple.SimpleConnectionGroup; import org.apache.guacamole.net.auth.simple.SimpleConnectionGroup;
import org.apache.guacamole.net.auth.simple.SimpleConnectionGroupDirectory; import org.apache.guacamole.net.auth.simple.SimpleConnectionGroupDirectory;
import org.apache.guacamole.net.auth.simple.SimpleConnectionRecordSet;
import org.apache.guacamole.net.auth.simple.SimpleDirectory; import org.apache.guacamole.net.auth.simple.SimpleDirectory;
import org.apache.guacamole.net.auth.simple.SimpleUser; import org.apache.guacamole.net.auth.simple.SimpleUser;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -204,9 +205,9 @@ public class UserContext implements org.apache.guacamole.net.auth.UserContext {
} }
@Override @Override
public ConnectionRecordSet getConnectionHistory() public ActivityRecordSet<ConnectionRecord> getConnectionHistory()
throws GuacamoleException { throws GuacamoleException {
return new SimpleConnectionRecordSet(); return new SimpleActivityRecordSet<ConnectionRecord>();
} }
@Override @Override

View File

@@ -19,83 +19,13 @@
package org.apache.guacamole.net.auth; package org.apache.guacamole.net.auth;
import org.apache.guacamole.GuacamoleException;
/** /**
* The set of all available connection records, or a subset of those records. * The set of all available connection records, or a subset of those records.
*
* @deprecated
* Use {@link ActivityRecordSet}&lt;{@link ConnectionRecord}&gt; instead.
*/ */
public interface ConnectionRecordSet extends ActivityRecordSet<ConnectionRecord> { @Deprecated
public interface ConnectionRecordSet
/** extends ActivityRecordSet<ConnectionRecord> {
* Returns the subset of connection records to only those where the
* connection name, user identifier, or any associated date field contain
* the given value. This function may also affect the contents of the
* current ConnectionRecordSet. The contents of the current
* ConnectionRecordSet should NOT be relied upon after this function is
* called.
*
* @param value
* The value which all connection records within the resulting subset
* should contain within their associated connection name or user
* identifier.
*
* @return
* The subset of connection history records which contain the specified
* value within their associated connection name or user identifier.
*
* @throws GuacamoleException
* If an error occurs while restricting the current subset.
*/
@Override
ConnectionRecordSet contains(String value) throws GuacamoleException;
/**
* Returns the subset of connection history records containing only the
* first <code>limit</code> records. If the subset has fewer than
* <code>limit</code> records, then this function has no effect. This
* function may also affect the contents of the current
* ConnectionRecordSet. The contents of the current ConnectionRecordSet
* should NOT be relied upon after this function is called.
*
* @param limit
* The maximum number of records that the new subset should contain.
*
* @return
* The subset of connection history records that containing only the
* first <code>limit</code> records.
*
* @throws GuacamoleException
* If an error occurs while limiting the current subset.
*/
@Override
ConnectionRecordSet limit(int limit) throws GuacamoleException;
/**
* Returns a ConnectionRecordSet containing identically the records within
* this set, sorted according to the specified criteria. The sort operation
* performed is guaranteed to be stable with respect to any past call to
* sort(). This function may also affect the contents of the current
* ConnectionRecordSet. The contents of the current ConnectionRecordSet
* should NOT be relied upon after this function is called.
*
* @param property
* The property by which the connection records within the resulting
* set should be sorted.
*
* @param desc
* Whether the records should be sorted according to the specified
* property in descending order. If false, records will be sorted
* according to the specified property in ascending order.
*
* @return
* The ConnnectionRecordSet, sorted according to the specified
* criteria.
*
* @throws GuacamoleException
* If an error occurs while sorting the current subset.
*/
@Override
ConnectionRecordSet sort(SortableProperty property, boolean desc)
throws GuacamoleException;
} }

View File

@@ -145,7 +145,7 @@ public interface UserContext {
/** /**
* Retrieves all connection records visible to current user. The resulting * Retrieves all connection records visible to current user. The resulting
* set of connection records can be further filtered and ordered using the * set of connection records can be further filtered and ordered using the
* methods defined on ConnectionRecordSet. * methods defined on ActivityRecordSet.
* *
* @return * @return
* A set of all connection records visible to the current user. * A set of all connection records visible to the current user.
@@ -153,7 +153,8 @@ public interface UserContext {
* @throws GuacamoleException * @throws GuacamoleException
* If an error occurs while retrieving the connection records. * If an error occurs while retrieving the connection records.
*/ */
ConnectionRecordSet getConnectionHistory() throws GuacamoleException; ActivityRecordSet<ConnectionRecord> getConnectionHistory()
throws GuacamoleException;
/** /**
* Retrieves a connection group which can be used to view and manipulate * Retrieves a connection group which can be used to view and manipulate

View File

@@ -0,0 +1,62 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.guacamole.net.auth.simple;
import java.util.Collection;
import java.util.Collections;
import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.net.auth.ActivityRecord;
import org.apache.guacamole.net.auth.ActivityRecordSet;
import org.apache.guacamole.net.auth.ActivityRecordSet.SortableProperty;
/**
* An immutable and empty ActivityRecordSet.
*
* @param <RecordType>
* The type of ActivityRecord contained within this set.
*/
public class SimpleActivityRecordSet<RecordType extends ActivityRecord>
implements ActivityRecordSet<RecordType> {
@Override
public Collection<RecordType> asCollection()
throws GuacamoleException {
return Collections.<RecordType>emptyList();
}
@Override
public ActivityRecordSet<RecordType> contains(String value)
throws GuacamoleException {
return this;
}
@Override
public ActivityRecordSet<RecordType> limit(int limit)
throws GuacamoleException {
return this;
}
@Override
public ActivityRecordSet<RecordType> sort(SortableProperty property,
boolean desc) throws GuacamoleException {
return this;
}
}

View File

@@ -23,12 +23,16 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.net.auth.ConnectionRecord; import org.apache.guacamole.net.auth.ConnectionRecord;
import org.apache.guacamole.net.auth.ConnectionRecordSet;
/** /**
* An immutable and empty ConnectionRecordSet. * An immutable and empty ConnectionRecordSet.
*
* @deprecated
* Use {@link SimpleActivityRecordSet}&lt;{@link ConnectionRecord}&gt;
* instead.
*/ */
public class SimpleConnectionRecordSet implements ConnectionRecordSet { @Deprecated
public class SimpleConnectionRecordSet implements org.apache.guacamole.net.auth.ConnectionRecordSet {
@Override @Override
public Collection<ConnectionRecord> asCollection() public Collection<ConnectionRecord> asCollection()
@@ -37,19 +41,19 @@ public class SimpleConnectionRecordSet implements ConnectionRecordSet {
} }
@Override @Override
public ConnectionRecordSet contains(String value) public org.apache.guacamole.net.auth.ConnectionRecordSet contains(String value)
throws GuacamoleException { throws GuacamoleException {
return this; return this;
} }
@Override @Override
public ConnectionRecordSet limit(int limit) public org.apache.guacamole.net.auth.ConnectionRecordSet limit(int limit)
throws GuacamoleException { throws GuacamoleException {
return this; return this;
} }
@Override @Override
public ConnectionRecordSet sort(SortableProperty property, boolean desc) public org.apache.guacamole.net.auth.ConnectionRecordSet sort(SortableProperty property, boolean desc)
throws GuacamoleException { throws GuacamoleException {
return this; return this;
} }

View File

@@ -27,10 +27,11 @@ import java.util.UUID;
import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.form.Form; import org.apache.guacamole.form.Form;
import org.apache.guacamole.net.auth.ActiveConnection; import org.apache.guacamole.net.auth.ActiveConnection;
import org.apache.guacamole.net.auth.ActivityRecordSet;
import org.apache.guacamole.net.auth.AuthenticationProvider; import org.apache.guacamole.net.auth.AuthenticationProvider;
import org.apache.guacamole.net.auth.Connection; import org.apache.guacamole.net.auth.Connection;
import org.apache.guacamole.net.auth.ConnectionGroup; import org.apache.guacamole.net.auth.ConnectionGroup;
import org.apache.guacamole.net.auth.ConnectionRecordSet; import org.apache.guacamole.net.auth.ConnectionRecord;
import org.apache.guacamole.net.auth.Directory; import org.apache.guacamole.net.auth.Directory;
import org.apache.guacamole.net.auth.SharingProfile; import org.apache.guacamole.net.auth.SharingProfile;
import org.apache.guacamole.net.auth.User; import org.apache.guacamole.net.auth.User;
@@ -209,9 +210,9 @@ public class SimpleUserContext implements UserContext {
} }
@Override @Override
public ConnectionRecordSet getConnectionHistory() public ActivityRecordSet<ConnectionRecord> getConnectionHistory()
throws GuacamoleException { throws GuacamoleException {
return new SimpleConnectionRecordSet(); return new SimpleActivityRecordSet<ConnectionRecord>();
} }
@Override @Override

View File

@@ -21,7 +21,7 @@ package org.apache.guacamole.rest.history;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import org.apache.guacamole.GuacamoleClientException; import org.apache.guacamole.GuacamoleClientException;
import org.apache.guacamole.net.auth.ConnectionRecordSet; import org.apache.guacamole.net.auth.ActivityRecordSet;
import org.apache.guacamole.rest.APIException; import org.apache.guacamole.rest.APIException;
/** /**
@@ -38,7 +38,7 @@ public class APIConnectionRecordSortPredicate {
/** /**
* All possible property name strings and their corresponding * All possible property name strings and their corresponding
* ConnectionRecordSet.SortableProperty values. * ActivityRecordSet.SortableProperty values.
*/ */
public enum SortableProperty { public enum SortableProperty {
@@ -46,24 +46,24 @@ public class APIConnectionRecordSortPredicate {
* The date that the connection associated with the connection record * The date that the connection associated with the connection record
* began (connected). * began (connected).
*/ */
startDate(ConnectionRecordSet.SortableProperty.START_DATE); startDate(ActivityRecordSet.SortableProperty.START_DATE);
/** /**
* The ConnectionRecordSet.SortableProperty that this property name * The ActivityRecordSet.SortableProperty that this property name
* string represents. * string represents.
*/ */
public final ConnectionRecordSet.SortableProperty recordProperty; public final ActivityRecordSet.SortableProperty recordProperty;
/** /**
* Creates a new SortableProperty which associates the property name * Creates a new SortableProperty which associates the property name
* string (identical to its own name) with the given * string (identical to its own name) with the given
* ConnectionRecordSet.SortableProperty value. * ActivityRecordSet.SortableProperty value.
* *
* @param recordProperty * @param recordProperty
* The ConnectionRecordSet.SortableProperty value to associate with * The ActivityRecordSet.SortableProperty value to associate with
* the new SortableProperty. * the new SortableProperty.
*/ */
SortableProperty(ConnectionRecordSet.SortableProperty recordProperty) { SortableProperty(ActivityRecordSet.SortableProperty recordProperty) {
this.recordProperty = recordProperty; this.recordProperty = recordProperty;
} }
@@ -72,7 +72,7 @@ public class APIConnectionRecordSortPredicate {
/** /**
* The property to use when sorting ConnectionRecords. * The property to use when sorting ConnectionRecords.
*/ */
private ConnectionRecordSet.SortableProperty property; private ActivityRecordSet.SortableProperty property;
/** /**
* Whether the requested sort order is descending (true) or ascending * Whether the requested sort order is descending (true) or ascending
@@ -102,7 +102,7 @@ public class APIConnectionRecordSortPredicate {
value = value.substring(DESCENDING_PREFIX.length()); value = value.substring(DESCENDING_PREFIX.length());
} }
// Parse sorting property into ConnectionRecordSet.SortableProperty // Parse sorting property into ActivityRecordSet.SortableProperty
try { try {
this.property = SortableProperty.valueOf(value).recordProperty; this.property = SortableProperty.valueOf(value).recordProperty;
} }
@@ -118,15 +118,15 @@ public class APIConnectionRecordSortPredicate {
} }
/** /**
* Returns the SortableProperty defined by ConnectionRecordSet which * Returns the SortableProperty defined by ActivityRecordSet which
* represents the property requested. * represents the property requested.
* *
* @return * @return
* The ConnectionRecordSet.SortableProperty which refers to the same * The ActivityRecordSet.SortableProperty which refers to the same
* property as the string originally provided when this * property as the string originally provided when this
* APIConnectionRecordSortPredicate was created. * APIConnectionRecordSortPredicate was created.
*/ */
public ConnectionRecordSet.SortableProperty getProperty() { public ActivityRecordSet.SortableProperty getProperty() {
return property; return property;
} }

View File

@@ -28,8 +28,8 @@ import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam; import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.net.auth.ActivityRecordSet;
import org.apache.guacamole.net.auth.ConnectionRecord; import org.apache.guacamole.net.auth.ConnectionRecord;
import org.apache.guacamole.net.auth.ConnectionRecordSet;
import org.apache.guacamole.net.auth.UserContext; import org.apache.guacamole.net.auth.UserContext;
/** /**
@@ -92,7 +92,7 @@ public class HistoryResource {
throws GuacamoleException { throws GuacamoleException {
// Retrieve overall connection history // Retrieve overall connection history
ConnectionRecordSet history = userContext.getConnectionHistory(); ActivityRecordSet<ConnectionRecord> history = userContext.getConnectionHistory();
// Restrict to records which contain the specified strings // Restrict to records which contain the specified strings
for (String required : requiredContents) { for (String required : requiredContents) {