use of org.eclipse.kapua.locator.KapuaLocator in project kapua by eclipse.
the class TranslatorAppBundleKuraKapua method translate.
@Override
public BundleResponseMessage translate(KuraResponseMessage kuraMessage) throws KapuaException {
//
// Kura channel
KapuaLocator locator = KapuaLocator.getInstance();
AccountService accountService = locator.getService(AccountService.class);
Account account = accountService.findByName(kuraMessage.getChannel().getScope());
BundleResponseChannel bundleResponseChannel = translate(kuraMessage.getChannel());
//
// Kura payload
BundleResponsePayload responsePayload = translate(kuraMessage.getPayload());
//
// Kura Message
BundleResponseMessage kapuaMessage = new BundleResponseMessage();
kapuaMessage.setScopeId(account.getId());
kapuaMessage.setChannel(bundleResponseChannel);
kapuaMessage.setPayload(responsePayload);
kapuaMessage.setCapturedOn(kuraMessage.getPayload().getTimestamp());
kapuaMessage.setSentOn(kuraMessage.getPayload().getTimestamp());
kapuaMessage.setReceivedOn(kuraMessage.getTimestamp());
kapuaMessage.setResponseCode(TranslatorKuraKapuaUtils.translate((Integer) kuraMessage.getPayload().getMetrics().get(ResponseMetrics.RESP_METRIC_EXIT_CODE.getValue())));
// Return Kapua Message
return kapuaMessage;
}
use of org.eclipse.kapua.locator.KapuaLocator in project kapua by eclipse.
the class TranslatorAppPackageKuraKapua method translate.
private void translate(PackageResponsePayload packageResponsePayload, String charEncoding, KuraDeploymentPackages kuraDeploymentPackages) throws KapuaException {
try {
KuraDeploymentPackage[] deploymentPackageArray = kuraDeploymentPackages.getDeploymentPackages();
if (deploymentPackageArray != null) {
KapuaLocator locator = KapuaLocator.getInstance();
DevicePackageFactory deviceDeploymentFactory = locator.getFactory(DevicePackageFactory.class);
DevicePackages deviceDeploymentPackages = deviceDeploymentFactory.newDeviceDeploymentPackages();
for (KuraDeploymentPackage deploymentPackage : deploymentPackageArray) {
DevicePackage deviceDeploymentPackage = deviceDeploymentFactory.newDeviceDeploymentPackage();
deviceDeploymentPackage.setName(deploymentPackage.getName());
deviceDeploymentPackage.setVersion(deploymentPackage.getVersion());
DevicePackageBundleInfos devicePackageBundleInfos = deviceDeploymentPackage.getBundleInfos();
KuraBundleInfo[] bundleInfoArray = deploymentPackage.getBundleInfos();
for (KuraBundleInfo bundleInfo : bundleInfoArray) {
DevicePackageBundleInfo devicePackageBundleInfo = deviceDeploymentFactory.newDevicePackageBundleInfo();
devicePackageBundleInfo.setName(bundleInfo.getName());
devicePackageBundleInfo.setVersion(bundleInfo.getVersion());
// Add the new DevicePackageBundleInfo object to the corresponding list
devicePackageBundleInfos.getBundlesInfos().add(devicePackageBundleInfo);
}
// Add the new DeviceDeploymentPackage object to the corresponding list
deviceDeploymentPackages.getPackages().add(deviceDeploymentPackage);
}
StringWriter sw = new StringWriter();
XmlUtil.marshal(deviceDeploymentPackages, sw);
byte[] requestBody = sw.toString().getBytes(charEncoding);
packageResponsePayload.setBody(requestBody);
}
} catch (Exception e) {
throw new TranslatorException(TranslatorErrorCodes.INVALID_BODY, e, kuraDeploymentPackages);
}
}
use of org.eclipse.kapua.locator.KapuaLocator in project kapua by eclipse.
the class KapuaAuthenticatingRealm method doGetAuthenticationInfo.
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
//
// Extract credentials
UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
String tokenUsername = token.getUsername();
// char[] tokenPassword = token.getPassword();
//
// Get Services
KapuaLocator locator;
UserService userService;
AccountService accountService;
CredentialService credentialService;
try {
locator = KapuaLocator.getInstance();
userService = locator.getService(UserService.class);
accountService = locator.getService(AccountService.class);
credentialService = locator.getService(CredentialService.class);
} catch (KapuaRuntimeException kre) {
throw new ShiroException("Error while getting services!", kre);
}
//
// Get the associated user by name
final User user;
try {
user = KapuaSecurityUtils.doPriviledge(new Callable<User>() {
@Override
public User call() throws Exception {
return userService.findByName(tokenUsername);
}
});
} catch (Exception e) {
// to preserve the original exception message (if possible)
if (e instanceof AuthenticationException) {
throw (AuthenticationException) e;
} else {
throw new ShiroException("Error while find user!", e);
}
}
// Check existence
if (user == null) {
throw new UnknownAccountException();
}
// Check disabled
if (UserStatus.DISABLED.equals(user.getStatus())) {
throw new DisabledAccountException();
}
//
// Find account
final Account account;
try {
account = KapuaSecurityUtils.doPriviledge(new Callable<Account>() {
@Override
public Account call() throws Exception {
return accountService.find(user.getScopeId());
}
});
} catch (Exception e) {
// to preserve the original exception message (if possible)
if (e instanceof AuthenticationException) {
throw (AuthenticationException) e;
} else {
throw new ShiroException("Error while find account!", e);
}
}
// Check existence
if (account == null) {
throw new UnknownAccountException();
}
//
// Find credentials
// FIXME: manage multiple credentials and multiple credentials type
Credential credential = null;
try {
credential = KapuaSecurityUtils.doPriviledge(new Callable<Credential>() {
@Override
public Credential call() throws Exception {
CredentialListResult credentialList = credentialService.findByUserId(user.getScopeId(), user.getId());
// TODO may be better to filter by credential type?
if (credentialList != null && !credentialList.isEmpty()) {
return credentialList.getItem(0);
} else {
throw new UnknownAccountException();
}
}
});
} catch (Exception e) {
if (e instanceof AuthenticationException) {
throw (AuthenticationException) e;
} else {
throw new ShiroException("Error while find credentials!", e);
}
}
//
// BuildAuthenticationInfo8
KapuaSimpleAuthenticationInfo info = new KapuaSimpleAuthenticationInfo(user, credential, account, getName());
return info;
}
use of org.eclipse.kapua.locator.KapuaLocator in project kapua by eclipse.
the class RoleServiceImpl method count.
@Override
public long count(KapuaQuery<Role> query) throws KapuaException {
ArgumentValidator.notNull(query, "query");
ArgumentValidator.notNull(query.getScopeId(), "query.scopeId");
//
// Check Access
KapuaLocator locator = KapuaLocator.getInstance();
AuthorizationService authorizationService = locator.getService(AuthorizationService.class);
PermissionFactory permissionFactory = locator.getFactory(PermissionFactory.class);
authorizationService.checkPermission(permissionFactory.newPermission(RoleDomain.ROLE, Actions.read, query.getScopeId()));
//
// Do count
long count = 0;
EntityManager em = AuthorizationEntityManagerFactory.getEntityManager();
try {
count = RoleDAO.count(em, query);
} catch (Exception e) {
throw KapuaExceptionUtils.convertPersistenceException(e);
} finally {
em.close();
}
return count;
}
use of org.eclipse.kapua.locator.KapuaLocator in project kapua by eclipse.
the class RoleServiceImpl method query.
@Override
public RoleListResult query(KapuaQuery<Role> query) throws KapuaException {
ArgumentValidator.notNull(query, "query");
ArgumentValidator.notNull(query.getScopeId(), "query.scopeId");
//
// Check Access
KapuaLocator locator = KapuaLocator.getInstance();
AuthorizationService authorizationService = locator.getService(AuthorizationService.class);
PermissionFactory permissionFactory = locator.getFactory(PermissionFactory.class);
authorizationService.checkPermission(permissionFactory.newPermission(RoleDomain.ROLE, Actions.read, query.getScopeId()));
//
// Do query
RoleListResult result = null;
EntityManager em = AuthorizationEntityManagerFactory.getEntityManager();
try {
result = RoleDAO.query(em, query);
} catch (Exception e) {
throw KapuaExceptionUtils.convertPersistenceException(e);
} finally {
em.close();
}
return result;
}
Aggregations