GUACAMOLE-96: Add convenience classes for overriding the behavior of objects commonly stored in a Directory.
Project: http://git-wip-us.apache.org/repos/asf/guacamole-client/repo Commit: http://git-wip-us.apache.org/repos/asf/guacamole-client/commit/b37e041d Tree: http://git-wip-us.apache.org/repos/asf/guacamole-client/tree/b37e041d Diff: http://git-wip-us.apache.org/repos/asf/guacamole-client/diff/b37e041d Branch: refs/heads/master Commit: b37e041d3ee263873cc55388cfa0cb9079f32bfb Parents: a915f7b Author: Michael Jumper <mjum...@apache.org> Authored: Sat Oct 28 22:56:07 2017 -0700 Committer: Michael Jumper <mjum...@apache.org> Committed: Sat Jan 13 17:23:15 2018 -0800 ---------------------------------------------------------------------- .../net/auth/DelegatingConnection.java | 131 +++++++++++++++++++ .../net/auth/DelegatingConnectionGroup.java | 120 +++++++++++++++++ .../net/auth/DelegatingSharingProfile.java | 96 ++++++++++++++ .../guacamole/net/auth/DelegatingUser.java | 127 ++++++++++++++++++ 4 files changed, 474 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/b37e041d/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingConnection.java ---------------------------------------------------------------------- diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingConnection.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingConnection.java new file mode 100644 index 0000000..c5e9a1f --- /dev/null +++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingConnection.java @@ -0,0 +1,131 @@ +/* + * 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; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.apache.guacamole.GuacamoleException; +import org.apache.guacamole.net.GuacamoleTunnel; +import org.apache.guacamole.protocol.GuacamoleClientInformation; +import org.apache.guacamole.protocol.GuacamoleConfiguration; + +/** + * Connection implementation which simply delegates all function calls to an + * underlying Connection. + */ +public class DelegatingConnection implements Connection { + + /** + * The wrapped Connection. + */ + private final Connection connection; + + /** + * Wraps the given Connection such that all function calls against this + * DelegatingConnection will be delegated to it. + * + * @param connection + * The Connection to wrap. + */ + public DelegatingConnection(Connection connection) { + this.connection = connection; + } + + @Override + public String getIdentifier() { + return connection.getIdentifier(); + } + + @Override + public void setIdentifier(String identifier) { + connection.setIdentifier(identifier); + } + + @Override + public String getName() { + return connection.getName(); + } + + @Override + public void setName(String name) { + connection.setName(name); + } + + @Override + public String getParentIdentifier() { + return connection.getParentIdentifier(); + } + + @Override + public void setParentIdentifier(String parentIdentifier) { + connection.setParentIdentifier(parentIdentifier); + } + + @Override + public GuacamoleConfiguration getConfiguration() { + return connection.getConfiguration(); + } + + @Override + public void setConfiguration(GuacamoleConfiguration config) { + connection.setConfiguration(config); + } + + @Override + public Map<String, String> getAttributes() { + return connection.getAttributes(); + } + + @Override + public void setAttributes(Map<String, String> attributes) { + connection.setAttributes(attributes); + } + + @Override + public Date getLastActive() { + return connection.getLastActive(); + } + + @Override + public List<? extends ConnectionRecord> getHistory() + throws GuacamoleException { + return connection.getHistory(); + } + + @Override + public Set<String> getSharingProfileIdentifiers() + throws GuacamoleException { + return connection.getSharingProfileIdentifiers(); + } + + @Override + public GuacamoleTunnel connect(GuacamoleClientInformation info) + throws GuacamoleException { + return connection.connect(info); + } + + @Override + public int getActiveConnections() { + return connection.getActiveConnections(); + } + +} http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/b37e041d/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingConnectionGroup.java ---------------------------------------------------------------------- diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingConnectionGroup.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingConnectionGroup.java new file mode 100644 index 0000000..9f71ebb --- /dev/null +++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingConnectionGroup.java @@ -0,0 +1,120 @@ +/* + * 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; + +import java.util.Map; +import java.util.Set; +import org.apache.guacamole.GuacamoleException; +import org.apache.guacamole.net.GuacamoleTunnel; +import org.apache.guacamole.protocol.GuacamoleClientInformation; + +/** + * ConnectionGroup implementation which simply delegates all function calls to + * an underlying ConnectionGroup. + */ +public class DelegatingConnectionGroup implements ConnectionGroup { + + /** + * The wrapped ConnectionGroup. + */ + private final ConnectionGroup connectionGroup; + + /** + * Wraps the given ConnectionGroup such that all function calls against this + * DelegatingConnectionGroup will be delegated to it. + * + * @param connectionGroup + * The ConnectionGroup to wrap. + */ + public DelegatingConnectionGroup(ConnectionGroup connectionGroup) { + this.connectionGroup = connectionGroup; + } + + @Override + public String getIdentifier() { + return connectionGroup.getIdentifier(); + } + + @Override + public void setIdentifier(String identifier) { + connectionGroup.setIdentifier(identifier); + } + + @Override + public String getName() { + return connectionGroup.getName(); + } + + @Override + public void setName(String name) { + connectionGroup.setName(name); + } + + @Override + public String getParentIdentifier() { + return connectionGroup.getParentIdentifier(); + } + + @Override + public void setParentIdentifier(String parentIdentifier) { + connectionGroup.setParentIdentifier(parentIdentifier); + } + + @Override + public void setType(Type type) { + connectionGroup.setType(type); + } + + @Override + public Type getType() { + return connectionGroup.getType(); + } + + @Override + public Set<String> getConnectionIdentifiers() throws GuacamoleException { + return connectionGroup.getConnectionIdentifiers(); + } + + @Override + public Set<String> getConnectionGroupIdentifiers() throws GuacamoleException { + return connectionGroup.getConnectionGroupIdentifiers(); + } + + @Override + public Map<String, String> getAttributes() { + return connectionGroup.getAttributes(); + } + + @Override + public void setAttributes(Map<String, String> attributes) { + connectionGroup.setAttributes(attributes); + } + + @Override + public GuacamoleTunnel connect(GuacamoleClientInformation info) throws GuacamoleException { + return connectionGroup.connect(info); + } + + @Override + public int getActiveConnections() { + return connectionGroup.getActiveConnections(); + } + +} http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/b37e041d/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingSharingProfile.java ---------------------------------------------------------------------- diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingSharingProfile.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingSharingProfile.java new file mode 100644 index 0000000..576e882 --- /dev/null +++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingSharingProfile.java @@ -0,0 +1,96 @@ +/* + * 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; + +import java.util.Map; + +/** + * SharingProfile implementation which simply delegates all function calls to an + * underlying SharingProfile. + */ +public class DelegatingSharingProfile implements SharingProfile { + + /** + * The wrapped SharingProfile. + */ + private final SharingProfile sharingProfile; + + /** + * Wraps the given SharingProfile such that all function calls against this + * DelegatingSharingProfile will be delegated to it. + * + * @param sharingProfile + * The SharingProfile to wrap. + */ + public DelegatingSharingProfile(SharingProfile sharingProfile) { + this.sharingProfile = sharingProfile; + } + + @Override + public String getIdentifier() { + return sharingProfile.getIdentifier(); + } + + @Override + public void setIdentifier(String identifier) { + sharingProfile.setIdentifier(identifier); + } + + @Override + public String getName() { + return sharingProfile.getName(); + } + + @Override + public void setName(String name) { + sharingProfile.setName(name); + } + + @Override + public String getPrimaryConnectionIdentifier() { + return sharingProfile.getPrimaryConnectionIdentifier(); + } + + @Override + public void setPrimaryConnectionIdentifier(String identifier) { + sharingProfile.setPrimaryConnectionIdentifier(identifier); + } + + @Override + public Map<String, String> getParameters() { + return sharingProfile.getParameters(); + } + + @Override + public void setParameters(Map<String, String> parameters) { + sharingProfile.setParameters(parameters); + } + + @Override + public Map<String, String> getAttributes() { + return sharingProfile.getAttributes(); + } + + @Override + public void setAttributes(Map<String, String> attributes) { + sharingProfile.setAttributes(attributes); + } + +} http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/b37e041d/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingUser.java ---------------------------------------------------------------------- diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingUser.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingUser.java new file mode 100644 index 0000000..65f0577 --- /dev/null +++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingUser.java @@ -0,0 +1,127 @@ +/* + * 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; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import org.apache.guacamole.GuacamoleException; +import org.apache.guacamole.net.auth.permission.ObjectPermissionSet; +import org.apache.guacamole.net.auth.permission.SystemPermissionSet; + +/** + * User implementation which simply delegates all function calls to an + * underlying User. + */ +public class DelegatingUser implements User { + + /** + * The wrapped User. + */ + private final User user; + + /** + * Wraps the given User such that all function calls against this + * DelegatingUser will be delegated to it. + * + * @param user + * The User to wrap. + */ + public DelegatingUser(User user) { + this.user = user; + } + + @Override + public String getIdentifier() { + return user.getIdentifier(); + } + + @Override + public void setIdentifier(String identifier) { + user.setIdentifier(identifier); + } + + @Override + public String getPassword() { + return user.getPassword(); + } + + @Override + public void setPassword(String password) { + user.setPassword(password); + } + + @Override + public Map<String, String> getAttributes() { + return user.getAttributes(); + } + + @Override + public void setAttributes(Map<String, String> attributes) { + user.setAttributes(attributes); + } + + @Override + public Date getLastActive() { + return user.getLastActive(); + } + + @Override + public List<? extends ActivityRecord> getHistory() + throws GuacamoleException { + return user.getHistory(); + } + + @Override + public SystemPermissionSet getSystemPermissions() + throws GuacamoleException { + return user.getSystemPermissions(); + } + + @Override + public ObjectPermissionSet getConnectionPermissions() + throws GuacamoleException { + return user.getConnectionPermissions(); + } + + @Override + public ObjectPermissionSet getConnectionGroupPermissions() + throws GuacamoleException { + return user.getConnectionGroupPermissions(); + } + + @Override + public ObjectPermissionSet getSharingProfilePermissions() + throws GuacamoleException { + return user.getSharingProfilePermissions(); + } + + @Override + public ObjectPermissionSet getActiveConnectionPermissions() + throws GuacamoleException { + return user.getActiveConnectionPermissions(); + } + + @Override + public ObjectPermissionSet getUserPermissions() throws GuacamoleException { + return user.getUserPermissions(); + } + +}