diff options
author | Eike Stepper | 2021-03-08 17:49:35 +0000 |
---|---|---|
committer | Eike Stepper | 2021-03-08 17:49:35 +0000 |
commit | aceb772316af947c580f547d8f136fca5b3cfeec (patch) | |
tree | 3eea8b671d6b4a7955013e580eb96d3d48ed94e2 /plugins/org.eclipse.emf.cdo | |
parent | 9cd74670d7a52045472c97e4ca46cfab2b64286a (diff) | |
download | cdo-aceb772316af947c580f547d8f136fca5b3cfeec.tar.gz cdo-aceb772316af947c580f547d8f136fca5b3cfeec.tar.xz cdo-aceb772316af947c580f547d8f136fca5b3cfeec.zip |
[571768] Make SecurityManager multitenant
https://bugs.eclipse.org/bugs/show_bug.cgi?id=571768
Diffstat (limited to 'plugins/org.eclipse.emf.cdo')
5 files changed, 70 insertions, 2 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java index 5b5c530cee..a388f64d4e 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java @@ -190,11 +190,25 @@ public interface CDOSession extends CDOCommonSession, CDOUpdatable, CDOTransacti * @throws UnsupportedOperationException if the session implementation does not permit changing credentials * * @since 4.3 + * @deprecated As of 4.13 use {@link #changeServerPassword()}. + * * @see #getCredentialsProvider() */ + @Deprecated public void changeCredentials(); /** + * Initiates (possibly interactive) changing of credentials for the user logged in in this session. + * This is an optional operation of the session. + * + * @throws UnsupportedOperationException if the session implementation does not permit changing credentials + * + * @since 4.13 + * @see #getCredentialsProvider() + */ + public char[] changeServerPassword(); + + /** * @since 4.13 */ public CDOClob newClob(Reader contents) throws IOException; diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/ObjectProperties.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/ObjectProperties.java index a63efade9d..deebef10ae 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/ObjectProperties.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/ObjectProperties.java @@ -19,6 +19,7 @@ import org.eclipse.emf.cdo.common.id.CDOID; import org.eclipse.emf.cdo.common.lock.CDOLockState; import org.eclipse.emf.cdo.common.revision.CDORevision; import org.eclipse.emf.cdo.common.security.CDOPermission; +import org.eclipse.emf.cdo.common.security.NoPermissionException; import org.eclipse.emf.cdo.common.util.CDOCommonUtil; import org.eclipse.emf.cdo.transaction.CDOTransaction; import org.eclipse.emf.cdo.util.CDOUtil; @@ -285,7 +286,14 @@ public class ObjectProperties extends Properties<EObject> @Override protected Object eval(EObject object) { - return !object.eContents().isEmpty(); + try + { + return !object.eContents().isEmpty(); + } + catch (NoPermissionException ex) + { + return false; + } } }); diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java index 0c7eae4668..d4011ff514 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java @@ -196,6 +196,8 @@ public abstract class CDOSessionImpl extends CDOTransactionContainerImpl impleme private String userID; + private long openingTime; + private long lastUpdateTime; @ExcludeFromDump @@ -861,6 +863,17 @@ public abstract class CDOSessionImpl extends CDOTransactionContainerImpl impleme } @Override + public long getOpeningTime() + { + return openingTime; + } + + public void setOpeningTime(long openingTime) + { + this.openingTime = openingTime; + } + + @Override public long getLastUpdateTime() { synchronized (lastUpdateTimeLock) diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/DelegatingSessionProtocol.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/DelegatingSessionProtocol.java index 4bf5391876..73747ae75c 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/DelegatingSessionProtocol.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/DelegatingSessionProtocol.java @@ -75,6 +75,7 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; /** @@ -1126,14 +1127,21 @@ public class DelegatingSessionProtocol extends Lifecycle implements CDOSessionPr } @Override + @Deprecated public void requestChangeCredentials() { + requestChangeServerPassword(null); + } + + @Override + public void requestChangeServerPassword(AtomicReference<char[]> receiver) + { int attempt = 0; for (;;) { try { - delegate.requestChangeCredentials(); + delegate.requestChangeServerPassword(receiver); return; } catch (Exception ex) diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java index 7c79346c43..215891290f 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/CDOSessionProtocol.java @@ -76,6 +76,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.atomic.AtomicReference; /** * If the meaning of this type isn't clear, there really should be more of a description here... @@ -330,13 +331,26 @@ public interface CDOSessionProtocol extends CDOProtocol, PackageLoader, BranchLo * This is an optional session protocol operation. * * @since 4.3 + * @deprecated As of 4.13 use {@link #requestChangeServerPassword(AtomicReference)}. * * @throws UnsupportedOperationException if the session protocol implementation does * not support requesting change of credentials */ + @Deprecated public void requestChangeCredentials(); /** + * Requests that the server initiate the change-credentials protocol. + * This is an optional session protocol operation. + * + * @since 4.13 + * + * @throws UnsupportedOperationException if the session protocol implementation does + * not support requesting change of credentials + */ + public void requestChangeServerPassword(AtomicReference<char[]> receiver); + + /** * Requests that the server initiate the reset-credentials protocol. * This is an optional session protocol operation. * @@ -383,6 +397,8 @@ public interface CDOSessionProtocol extends CDOProtocol, PackageLoader, BranchLo private long lastUpdateTime; + private long openingTime; + private int tagModCount; private RepositoryTimeResult repositoryTimeResult; @@ -430,6 +446,7 @@ public interface CDOSessionProtocol extends CDOProtocol, PackageLoader, BranchLo repositoryCreationTime = in.readXLong(); lastUpdateTime = in.readXLong(); + openingTime = in.readXLong(); tagModCount = in.readXInt(); rootResourceID = in.readCDOID(); authenticating = in.readBoolean(); @@ -638,6 +655,14 @@ public interface CDOSessionProtocol extends CDOProtocol, PackageLoader, BranchLo } /** + * @since 4.13 + */ + public long getOpeningTime() + { + return openingTime; + } + + /** * @since 3.0 */ public long getLastUpdateTime() |