Skip to content

Commit

Permalink
First pass on the PermissionOverride Managers
Browse files Browse the repository at this point in the history
  • Loading branch information
DV8FromTheWorld committed Nov 9, 2016
1 parent 10b7d79 commit a237fbc
Show file tree
Hide file tree
Showing 5 changed files with 390 additions and 9 deletions.
Expand Up @@ -17,6 +17,8 @@

import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.Permission;
import net.dv8tion.jda.core.managers.PermOverrideManager;
import net.dv8tion.jda.core.managers.PermOverrideManagerUpdatable;
//import net.dv8tion.jda.core.managers.PermissionOverrideManager;

import java.util.List;
Expand Down Expand Up @@ -144,12 +146,7 @@ public interface PermissionOverride
*/
boolean isRoleOverride();

// /**
// * Returns the {@link net.dv8tion.jda.managers.PermissionOverrideManager PermissionOverrideManager} for this PermissionOverride.
// * In the PermissionOverrideManager, you can modify its permissions.
// *
// * @return
// * The PermissionOverrideManager of this PermissionOverride
// */
// PermissionOverrideManager getManager();
PermOverrideManager getManager();

PermOverrideManagerUpdatable getManagerUpdatable();
}
Expand Up @@ -19,12 +19,20 @@
import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.Permission;
import net.dv8tion.jda.core.entities.*;
import net.dv8tion.jda.core.managers.ChannelManager;
import net.dv8tion.jda.core.managers.ChannelManagerUpdatable;
import net.dv8tion.jda.core.managers.PermOverrideManager;
import net.dv8tion.jda.core.managers.PermOverrideManagerUpdatable;

import java.util.Collections;
import java.util.List;

public class PermissionOverrideImpl implements PermissionOverride
{
protected volatile PermOverrideManager manager;
protected volatile PermOverrideManagerUpdatable managerUpdatable;
protected volatile Object mngLock = new Object();

private final Member member;
private final Role role;
private final Channel channel;
Expand Down Expand Up @@ -116,6 +124,38 @@ public boolean isRoleOverride()
return getRole() != null;
}

@Override
public PermOverrideManager getManager()
{
PermOverrideManager mng = manager;
if (mng == null)
{
synchronized (mngLock)
{
mng = manager;
if (mng == null)
mng = manager = new PermOverrideManager(this);
}
}
return mng;
}

@Override
public PermOverrideManagerUpdatable getManagerUpdatable()
{
PermOverrideManagerUpdatable mng = managerUpdatable;
if (mng == null)
{
synchronized (mngLock)
{
mng = managerUpdatable;
if (mng == null)
mng = managerUpdatable = new PermOverrideManagerUpdatable(this);
}
}
return mng;
}

public PermissionOverrideImpl setAllow(long allow)
{
this.allow = allow;
Expand Down
101 changes: 101 additions & 0 deletions src/main/java/net/dv8tion/jda/core/managers/PermOverrideManager.java
@@ -0,0 +1,101 @@
/*
* Copyright 2015-2016 Austin Keener & Michael Ritter
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package net.dv8tion.jda.core.managers;

import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.Permission;
import net.dv8tion.jda.core.entities.Channel;
import net.dv8tion.jda.core.entities.Guild;
import net.dv8tion.jda.core.entities.PermissionOverride;
import net.dv8tion.jda.core.requests.RestAction;

import java.util.Collection;

public class PermOverrideManager
{
protected final PermOverrideManagerUpdatable updatable;

public PermOverrideManager(PermissionOverride override)
{
updatable = new PermOverrideManagerUpdatable(override);
}

public JDA getJDA()
{
return updatable.getJDA();
}

public Guild getGuild()
{
return updatable.getGuild();
}

public Channel getChannel()
{
return updatable.getChannel();
}

public PermissionOverride getPermissionOverride()
{
return updatable.getPermissionOverride();
}

public RestAction<Void> grant(long permissions)
{
return updatable.grant(permissions).update();
}

public RestAction<Void> grant(Permission... permissions)
{
return updatable.grant(permissions).update();
}

public RestAction<Void> grant(Collection<Permission> permissions)
{
return updatable.grant(permissions).update();
}

public RestAction<Void> deny(long permissions)
{
return updatable.deny(permissions).update();
}

public RestAction<Void> deny(Permission... permissions)
{
return updatable.deny(permissions).update();
}

public RestAction<Void> deny(Collection<Permission> permissions)
{
return updatable.deny(permissions).update();
}

public RestAction<Void> clear(long permissions)
{
return updatable.clear(permissions).update();
}

public RestAction<Void> clear(Permission... permissions)
{
return updatable.clear(permissions).update();
}

public RestAction<Void> clear(Collection<Permission> permissions)
{
return updatable.clear(permissions).update();
}
}

0 comments on commit a237fbc

Please sign in to comment.