Skip to content

Commit

Permalink
Made ESOrgUnitProvider configurable
Browse files Browse the repository at this point in the history
  • Loading branch information
edgarmueller committed Feb 12, 2015
1 parent 4738ecf commit 8a0c7e5
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,12 @@ public interface ESOrgUnitProvider {
*
* @return a set of all known groups.
*/
// TODO existieren wirklich
Set<ESGroup> getGroups();

/**
* @return
* Returns a list of all known {@link ESProjectHistory ESProjectHistories}.
*
* @return a list of all known {@link ESProjectHistory ESProjectHistories}
*/
List<ESProjectHistory> getProjects();
}
16 changes: 16 additions & 0 deletions bundles/org.eclipse.emf.emfstore.server/schema/accessControl.exsd
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
<element ref="orgUnitResolverServiceProvider" minOccurs="0" maxOccurs="1"/>
<element ref="authorizationServiceProvider" minOccurs="0" maxOccurs="1"/>
<element ref="userVerifierServiceProvider" minOccurs="0" maxOccurs="1"/>
<element ref="orgUnitProvider" minOccurs="0" maxOccurs="1"/>
</sequence>
<attribute name="point" type="string" use="required">
<annotation>
Expand Down Expand Up @@ -94,6 +95,21 @@
</complexType>
</element>

<element name="orgUnitProvider">
<complexType>
<attribute name="orgUnitProviderClass" type="string">
<annotation>
<documentation>

</documentation>
<appInfo>
<meta.attribute kind="java" basedOn=":org.eclipse.emf.emfstore.server.model.ESOrgUnitProvider"/>
</appInfo>
</annotation>
</attribute>
</complexType>
</element>

<annotation>
<appInfo>
<meta.section type="since"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@
import org.eclipse.emf.emfstore.internal.server.core.helper.ResourceHelper;
import org.eclipse.emf.emfstore.internal.server.exceptions.FatalESException;
import org.eclipse.emf.emfstore.internal.server.exceptions.StorageException;
import org.eclipse.emf.emfstore.internal.server.impl.api.ESOrgUnitProviderImpl;
import org.eclipse.emf.emfstore.internal.server.model.ModelFactory;
import org.eclipse.emf.emfstore.internal.server.model.ProjectHistory;
import org.eclipse.emf.emfstore.internal.server.model.ServerSpace;
Expand Down Expand Up @@ -239,19 +238,19 @@ private void initLogging() {
Platform.getLog(Platform.getBundle(EMFSTORE_COMMON_BUNDLE)).addLogListener(new
ILogListener() {

public void logging(IStatus status, String plugin) {
if (status.getSeverity() == IStatus.INFO) {
System.out.println(status.getMessage());
} else if (!status.isOK()) {
System.err.println(status.getMessage());
final Throwable exception = status.getException();
if (exception != null) {
exception.printStackTrace(System.err);
public void logging(IStatus status, String plugin) {
if (status.getSeverity() == IStatus.INFO) {
System.out.println(status.getMessage());
} else if (!status.isOK()) {
System.err.println(status.getMessage());
final Throwable exception = status.getException();
if (exception != null) {
exception.printStackTrace(System.err);
}
}
}
}

});
});
}

private void handleStartupListener() {
Expand Down Expand Up @@ -296,7 +295,7 @@ private void copyFileToWorkspace(String target, String source, String failure, S
try {
FileUtil.copyFile(new URL("platform:/plugin/" //$NON-NLS-1$
+ element.getIConfigurationElement().getNamespaceIdentifier() + "/" + attribute) //$NON-NLS-1$
.openConnection().getInputStream(), targetFile);
.openConnection().getInputStream(), targetFile);
return;
} catch (final IOException e) {
ModelUtil.logWarning(
Expand Down Expand Up @@ -424,8 +423,7 @@ public static EMFStoreController getInstance() {

private static synchronized AccessControl initAccessControl(ServerSpace serverSpace) throws FatalESException {
setSuperUser(serverSpace);
// TODO: extract into extension point
return new AccessControl(new ESOrgUnitProviderImpl(serverSpace));
return new AccessControl(serverSpace);
}

private static void setSuperUser(ServerSpace serverSpace) throws FatalESException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import org.eclipse.emf.emfstore.common.extensionpoint.ESExtensionPoint;
import org.eclipse.emf.emfstore.common.extensionpoint.ESExtensionPointException;
import org.eclipse.emf.emfstore.internal.common.model.util.ModelUtil;
import org.eclipse.emf.emfstore.internal.server.impl.api.ESOrgUnitProviderImpl;
import org.eclipse.emf.emfstore.internal.server.model.ServerSpace;
import org.eclipse.emf.emfstore.server.auth.ESAuthorizationService;
import org.eclipse.emf.emfstore.server.auth.ESOrgUnitResolver;
import org.eclipse.emf.emfstore.server.model.ESOrgUnitProvider;
Expand All @@ -35,10 +37,13 @@ public class AccessControl {

private final LoginService loginService;

public AccessControl(ESOrgUnitProvider orgUnitProvider) {
this.orgUnitProvider = orgUnitProvider;
private final ServerSpace serverSpace;

public AccessControl(ServerSpace serverSpace) {
this.serverSpace = serverSpace;
sessions = new Sessions();

orgUnitProvider = initOrgUnitProviderService();
orgUnitResolver = initOrgUnitResolverService();
authorizationService = initAuthorizationService();
loginService = new LoginService(sessions, orgUnitProvider,
Expand Down Expand Up @@ -81,6 +86,21 @@ private ESOrgUnitResolver initOrgUnitResolverService() {
return new DefaultESOrgUnitResolverService(orgUnitProvider);
}

private ESOrgUnitProvider initOrgUnitProviderService() {
try {
if (new ESExtensionPoint(ACCESSCONTROL_EXTENSION_ID, true).size() > 0) {
return new ESExtensionPoint(ACCESSCONTROL_EXTENSION_ID, true).getClass(
"orgUnitProviderClass", ESOrgUnitProvider.class); //$NON-NLS-1$
}
} catch (final ESExtensionPointException e) {
final String message = "Custom org unit provider class not be initialized";
ModelUtil.logException(message, e);
return null;
}

return new ESOrgUnitProviderImpl(serverSpace);
}

/**
* {@inheritDoc}
*
Expand Down

0 comments on commit 8a0c7e5

Please sign in to comment.