Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
fix(ZNTA-797): replace seam autowire tests with cdiunit ones
Browse files Browse the repository at this point in the history
  • Loading branch information
carlosmunoz authored and Carlos A. Munoz committed Mar 22, 2016
1 parent 3955eef commit 153ee15
Show file tree
Hide file tree
Showing 106 changed files with 3,864 additions and 4,617 deletions.
Expand Up @@ -21,19 +21,17 @@
package org.zanata.config;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;

import org.zanata.util.IServiceLocator;
import com.google.common.collect.Maps;
import org.zanata.util.Synchronized;
import org.zanata.ServerConstants;
import org.zanata.dao.ApplicationConfigurationDAO;
import org.zanata.model.HApplicationConfiguration;
import org.zanata.util.ServiceLocator;

/**
* Configuration store implementation that is backed by database tables.
Expand All @@ -49,18 +47,18 @@ public class DatabaseBackedConfig implements Serializable {

private static final long serialVersionUID = 1L;

private Map<String, String> configurationValues;
private final Map<String, String> configurationValues = Maps.newHashMap();

@Inject
private IServiceLocator serviceLocator;
private ApplicationConfigurationDAO applicationConfigurationDAO;

/**
* Resets the store by clearing out all values. This means that values will
* need to be reloaded as they are requested.
*/
@PostConstruct
public void reset() {
configurationValues = new HashMap<String, String>();
configurationValues.clear();
}

/**
Expand All @@ -76,10 +74,8 @@ public void reset(String key) {

private String getConfigValue(String key) {
if (!configurationValues.containsKey(key)) {
ApplicationConfigurationDAO appConfigDAO =
serviceLocator.getInstance(ApplicationConfigurationDAO.class);
HApplicationConfiguration configRecord =
appConfigDAO.findByKey(key);
applicationConfigurationDAO.findByKey(key);
String storedVal = null;
if (configRecord != null) {
storedVal = configRecord.getValue();
Expand Down
Expand Up @@ -124,9 +124,11 @@ private Set<String> getSubKeys(String base) {
Context ctx = new InitialContext();
NamingEnumeration<NameClassPair> pairs = ctx.list(base);
Set<String> results = new HashSet<String>();
while (pairs.hasMore()) {
NameClassPair pair = pairs.next();
results.add(pair.getName());
if(pairs != null) {
while (pairs.hasMore()) {
NameClassPair pair = pairs.next();
results.add(pair.getName());
}
}

return results;
Expand Down
Expand Up @@ -22,13 +22,9 @@


import java.io.Serializable;
import java.util.Iterator;
import java.util.Set;

import org.apache.deltaspike.core.api.exclude.Exclude;
import org.apache.deltaspike.core.api.projectstage.ProjectStage;
import javax.inject.Inject;
import javax.inject.Named;
import org.zanata.util.ServiceLocator;

/**
* This permission resolver will use the
Expand All @@ -43,6 +39,9 @@
@javax.enterprise.context.ApplicationScoped
public class CustomPermissionResolver implements Serializable {

@Inject
private PermissionEvaluator evaluator;

private static final long serialVersionUID = 6302681723997573877L;

public boolean hasPermission(Object target, String action) {
Expand All @@ -57,9 +56,6 @@ public boolean hasPermission(Object target, String action) {
}

private boolean hasPermission(String action, Object... targets) {
PermissionEvaluator evaluator =
ServiceLocator.instance()
.getInstance(PermissionEvaluator.class);
return evaluator.checkPermission(action, targets);
}

Expand Down
@@ -0,0 +1,93 @@
/*
* Copyright 2016, Red Hat, Inc. and individual contributors as indicated by the
* @author tags. See the copyright.txt file in the distribution for a full
* listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This software is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this software; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
* site: http://www.fsf.org.
*/
package org.zanata.webtrans.server;

import com.ibm.icu.util.ULocale;
import org.zanata.common.EntityStatus;
import org.zanata.dao.ProjectIterationDAO;
import org.zanata.model.HLocale;
import org.zanata.model.HProject;
import org.zanata.model.HProjectIteration;
import org.zanata.service.LocaleService;
import org.zanata.webtrans.shared.NoSuchWorkspaceException;
import org.zanata.webtrans.shared.model.WorkspaceContext;
import org.zanata.webtrans.shared.model.WorkspaceId;

import javax.inject.Inject;

/**
* @author Carlos Munoz <a href="mailto:camunoz@redhat.com">camunoz@redhat.com</a>
*/
public class TranslationWorkspaceFactory {

@Inject
private ProjectIterationDAO projectIterationDAO;

@Inject
private LocaleService localeServiceImpl;

private WorkspaceContext validateAndGetWorkspaceContext(
WorkspaceId workspaceId) throws NoSuchWorkspaceException {
String projectSlug =
workspaceId.getProjectIterationId().getProjectSlug();
String iterationSlug =
workspaceId.getProjectIterationId().getIterationSlug();
HProjectIteration projectIteration =
projectIterationDAO.getBySlug(projectSlug, iterationSlug);

if (projectIteration == null) {
throw new NoSuchWorkspaceException("Invalid workspace Id");
}
HProject project = projectIteration.getProject();
if (project.getStatus() == EntityStatus.OBSOLETE) {
throw new NoSuchWorkspaceException("Project is obsolete");
}
if (projectIteration.getStatus() == EntityStatus.OBSOLETE) {
throw new NoSuchWorkspaceException("Project Iteration is obsolete");
}
HLocale locale =
localeServiceImpl.getByLocaleId(workspaceId.getLocaleId());
if (locale == null) {
throw new NoSuchWorkspaceException("Invalid Workspace Locale");
}
if (!locale.isActive()) {
throw new NoSuchWorkspaceException("Locale '"
+ locale.retrieveDisplayName() + "' disabled in server");
}

String workspaceName =
project.getName() + " (" + projectIteration.getSlug() + ")";
String localeDisplayName =
ULocale.getDisplayName(workspaceId.getLocaleId().toJavaName(),
ULocale.ENGLISH);

return new WorkspaceContext(workspaceId, workspaceName,
localeDisplayName);
}

public TranslationWorkspace createWorkspace(WorkspaceId workspaceId)
throws NoSuchWorkspaceException {
WorkspaceContext workspaceContext =
validateAndGetWorkspaceContext(workspaceId);
return new TranslationWorkspaceImpl(workspaceContext);
}

}
@@ -1,28 +1,22 @@
package org.zanata.webtrans.server;

import static com.google.common.base.MoreObjects.firstNonNull;
import static org.zanata.transaction.TransactionUtil.runInTransaction;

import java.util.Collection;
import java.util.HashMap;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

import javax.annotation.PostConstruct;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import javax.persistence.EntityManager;

import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Optional;
import com.google.common.base.Throwables;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
import com.ibm.icu.util.ULocale;
import de.novanic.eventservice.service.registry.EventRegistry;
import de.novanic.eventservice.service.registry.EventRegistryFactory;
import de.novanic.eventservice.service.registry.user.UserManager;
import de.novanic.eventservice.service.registry.user.UserManagerFactory;
import lombok.extern.slf4j.Slf4j;

import javax.annotation.PreDestroy;
import javax.inject.Named;

import org.zanata.async.Async;
import org.zanata.common.EntityStatus;
import org.zanata.common.ProjectType;
import org.zanata.dao.AccountDAO;
import org.zanata.dao.ProjectIterationDAO;
import org.zanata.events.LogoutEvent;
import org.zanata.events.ProjectIterationUpdate;
Expand All @@ -47,19 +41,19 @@
import org.zanata.webtrans.shared.rpc.ExitWorkspace;
import org.zanata.webtrans.shared.rpc.WorkspaceContextUpdate;

import com.google.common.base.Optional;
import com.google.common.base.Throwables;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
import com.ibm.icu.util.ULocale;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import javax.inject.Named;
import javax.persistence.EntityManager;
import java.util.Collection;
import java.util.HashMap;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

import de.novanic.eventservice.service.registry.EventRegistry;
import de.novanic.eventservice.service.registry.EventRegistryFactory;
import de.novanic.eventservice.service.registry.user.UserManager;
import de.novanic.eventservice.service.registry.user.UserManagerFactory;
import static com.google.common.base.MoreObjects.firstNonNull;
import static org.zanata.transaction.TransactionUtil.runInTransaction;

@javax.enterprise.context.ApplicationScoped
@Named("translationWorkspaceManager")
Expand All @@ -82,6 +76,9 @@ public class TranslationWorkspaceManagerImpl implements
@Inject
private ValidationService validationServiceImpl;

@Inject
private TranslationWorkspaceFactory translationWorkspaceFactory;

private ConcurrentHashMap<WorkspaceId, TranslationWorkspace> workspaceMap;
private Multimap<ProjectIterationId, TranslationWorkspace> projIterWorkspaceMap;
private EventRegistry eventRegistry;
Expand Down Expand Up @@ -297,7 +294,8 @@ public TranslationWorkspace getOrRegisterWorkspace(WorkspaceId workspaceId)
throws NoSuchWorkspaceException {
TranslationWorkspace workspace = workspaceMap.get(workspaceId);
if (workspace == null) {
workspace = createWorkspace(workspaceId);
workspace =
translationWorkspaceFactory.createWorkspace(workspaceId);
TranslationWorkspace prev =
workspaceMap.putIfAbsent(workspaceId, workspace);

Expand All @@ -315,50 +313,4 @@ public TranslationWorkspace getOrRegisterWorkspace(WorkspaceId workspaceId)
public Optional<TranslationWorkspace> tryGetWorkspace(WorkspaceId workspaceId) {
return Optional.fromNullable(workspaceMap.get(workspaceId));
}

private WorkspaceContext validateAndGetWorkspaceContext(
WorkspaceId workspaceId) throws NoSuchWorkspaceException {
String projectSlug =
workspaceId.getProjectIterationId().getProjectSlug();
String iterationSlug =
workspaceId.getProjectIterationId().getIterationSlug();
HProjectIteration projectIteration =
projectIterationDAO.getBySlug(projectSlug, iterationSlug);

if (projectIteration == null) {
throw new NoSuchWorkspaceException("Invalid workspace Id");
}
HProject project = projectIteration.getProject();
if (project.getStatus() == EntityStatus.OBSOLETE) {
throw new NoSuchWorkspaceException("Project is obsolete");
}
if (projectIteration.getStatus() == EntityStatus.OBSOLETE) {
throw new NoSuchWorkspaceException("Project Iteration is obsolete");
}
HLocale locale =
localeServiceImpl.getByLocaleId(workspaceId.getLocaleId());
if (locale == null) {
throw new NoSuchWorkspaceException("Invalid Workspace Locale");
}
if (!locale.isActive()) {
throw new NoSuchWorkspaceException("Locale '"
+ locale.retrieveDisplayName() + "' disabled in server");
}

String workspaceName =
project.getName() + " (" + projectIteration.getSlug() + ")";
String localeDisplayName =
ULocale.getDisplayName(workspaceId.getLocaleId().toJavaName(),
ULocale.ENGLISH);

return new WorkspaceContext(workspaceId, workspaceName,
localeDisplayName);
}

protected TranslationWorkspace createWorkspace(WorkspaceId workspaceId)
throws NoSuchWorkspaceException {
WorkspaceContext workspaceContext =
validateAndGetWorkspaceContext(workspaceId);
return new TranslationWorkspaceImpl(workspaceContext);
}
}
Expand Up @@ -15,7 +15,9 @@ public abstract class AbstractActionHandler<A extends Action<R>, R extends Resul
implements ActionHandler<A, R> {

protected AbstractActionHandler() {
assert getActionType() != null;
// TODO This is a sanity check only. It has been disabled to allow for
// CDIUnit tests
//assert getActionType() != null;
}

@SuppressWarnings("unchecked")
Expand Down
Expand Up @@ -41,6 +41,7 @@
import org.zanata.model.HProject;
import org.zanata.model.HProjectIteration;
import org.zanata.security.ZanataIdentity;
import org.zanata.security.annotations.Authenticated;
import org.zanata.security.annotations.AuthenticatedLiteral;
import org.zanata.service.GravatarService;
import org.zanata.service.LocaleService;
Expand Down Expand Up @@ -94,6 +95,9 @@ public class ActivateWorkspaceHandler extends
@Inject @Any
private GetValidationRulesHandler getValidationRulesHandler;

@Inject @Authenticated
private HAccount authenticatedAccount;

@Inject
@DeltaSpike
private HttpSession session;
Expand Down Expand Up @@ -198,8 +202,6 @@ private boolean isProjectIterationObsolete(EntityStatus projectStatus,
}

protected Person retrievePerson() {
HAccount authenticatedAccount = ServiceLocator.instance()
.getInstance(HAccount.class, new AuthenticatedLiteral());
return new Person(new PersonId(authenticatedAccount.getUsername()),
authenticatedAccount.getPerson().getName(),
gravatarServiceImpl.getUserImageUrl(16, authenticatedAccount
Expand Down
1 change: 0 additions & 1 deletion zanata-war/src/test/java/org/zanata/RestTest.java
Expand Up @@ -48,7 +48,6 @@
import org.zanata.arquillian.RemoteBefore;
import org.zanata.provider.DBUnitProvider;
import org.zanata.rest.ResourceRequestEnvironment;
import org.zanata.seam.SeamAutowire;
import org.zanata.util.ServiceLocator;

import com.google.common.collect.Lists;
Expand Down

0 comments on commit 153ee15

Please sign in to comment.