mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Fixed conflicts
This commit is contained in:
commit
6a18d7ab4c
@ -24,6 +24,7 @@ import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.device.application.mgt.api.beans.ErrorResponse;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
|
||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationManager;
|
||||
import org.wso2.carbon.device.application.mgt.common.services.PlatformManager;
|
||||
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
@ -36,9 +37,9 @@ public class APIUtil {
|
||||
private static Log log = LogFactory.getLog(APIUtil.class);
|
||||
|
||||
private static ApplicationManager applicationManager;
|
||||
private static PlatformManager platformManager;
|
||||
|
||||
public static ApplicationManager getApplicationManager() {
|
||||
|
||||
if (applicationManager == null) {
|
||||
synchronized (APIUtil.class) {
|
||||
if (applicationManager == null) {
|
||||
@ -57,16 +58,35 @@ public class APIUtil {
|
||||
return applicationManager;
|
||||
}
|
||||
|
||||
public static Response getResponse(ApplicationManagementException ex, Response.Status status) {
|
||||
public static PlatformManager getPlatformManager() {
|
||||
if (platformManager == null) {
|
||||
synchronized (APIUtil.class) {
|
||||
if (platformManager == null) {
|
||||
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
||||
platformManager =
|
||||
(PlatformManager) ctx.getOSGiService(PlatformManager.class, null);
|
||||
if (platformManager == null) {
|
||||
String msg = "Platform Manager service has not initialized.";
|
||||
log.error(msg);
|
||||
throw new IllegalStateException(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return platformManager;
|
||||
}
|
||||
|
||||
//TODO: check for exception type and set the response code.
|
||||
public static Response getResponse(ApplicationManagementException ex, Response.Status status) {
|
||||
return getResponse(ex.getMessage(), status);
|
||||
}
|
||||
|
||||
public static Response getResponse(String message, Response.Status status) {
|
||||
ErrorResponse errorMessage = new ErrorResponse();
|
||||
errorMessage.setMessage(ex.getMessage());
|
||||
errorMessage.setMessage(message);
|
||||
if (status == null) {
|
||||
status = Response.Status.INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
errorMessage.setCode(status.getStatusCode());
|
||||
return Response.status(status).entity(errorMessage).build();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,8 +26,8 @@ import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
@Api(value = "Application Management", description = "This API carries all device management related operations " +
|
||||
"such as get all the available devices, etc.")
|
||||
@Api(value = "Application Management", description = "This API carries all application management related operations " +
|
||||
"such as get all the applications, add application, etc.")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
public interface ApplicationManagementAPI {
|
||||
|
||||
@ -0,0 +1,152 @@
|
||||
package org.wso2.carbon.device.application.mgt.api.services;/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* WSO2 Inc. licenses this file to you 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.
|
||||
*
|
||||
*/
|
||||
|
||||
import io.swagger.annotations.*;
|
||||
import org.wso2.carbon.device.application.mgt.api.beans.ErrorResponse;
|
||||
import org.wso2.carbon.device.application.mgt.common.Platform;
|
||||
|
||||
import javax.validation.constraints.Size;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
@Api(value = "Platform Management", description = "This API carries all platform management related operations " +
|
||||
"such as get all the available platform for a tenant, etc.")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/platforms")
|
||||
public interface PlatformManagementAPI {
|
||||
public final static String SCOPE = "scope";
|
||||
|
||||
@GET
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "get all platforms",
|
||||
notes = "This will get all platforms that is visible for tenants",
|
||||
tags = "Platform Management",
|
||||
extensions = {
|
||||
@Extension(properties = {
|
||||
@ExtensionProperty(name = SCOPE, value = "perm:get-platform")
|
||||
})
|
||||
}
|
||||
)
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
code = 200,
|
||||
message = "OK. \n Successfully got platforms list.",
|
||||
response = Platform.class,
|
||||
responseContainer = "List"),
|
||||
@ApiResponse(
|
||||
code = 500,
|
||||
message = "Internal Server Error. \n Error occurred while getting the platform list.",
|
||||
response = ErrorResponse.class)
|
||||
})
|
||||
Response getPlatforms(
|
||||
@ApiParam(
|
||||
name = "status",
|
||||
allowableValues = "ENABLED, DISABLED, ALL",
|
||||
value = "Provide the status of platform for that tenant:\n" +
|
||||
"- ENABLED: The platforms that are currently enabled for the tenant\n" +
|
||||
"- DISABLED: The platforms that can be used by the tenant but disabled to be used for tenant\n" +
|
||||
"- ALL: All the list of platforms that can be used by the tenant",
|
||||
required = false)
|
||||
@QueryParam("status")
|
||||
@Size(max = 45)
|
||||
String status
|
||||
);
|
||||
|
||||
@GET
|
||||
@Path("/{code}")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "GET",
|
||||
value = "get platform",
|
||||
notes = "This will get application which was registered with {code}",
|
||||
tags = "Platform Management",
|
||||
extensions = {
|
||||
@Extension(properties = {
|
||||
@ExtensionProperty(name = SCOPE, value = "perm:get-platform")
|
||||
})
|
||||
}
|
||||
)
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
code = 200,
|
||||
message = "OK. \n Successfully got requested platform.",
|
||||
response = Platform.class),
|
||||
@ApiResponse(
|
||||
code = 500,
|
||||
message = "Internal Server Error. \n Error occurred while getting the platform.",
|
||||
response = ErrorResponse.class)
|
||||
})
|
||||
Response getPlatform(
|
||||
@ApiParam(
|
||||
name = "code",
|
||||
required = true)
|
||||
@PathParam("code")
|
||||
@Size(max = 45)
|
||||
String code
|
||||
);
|
||||
|
||||
@POST
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@ApiOperation(
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Add Platform",
|
||||
notes = "This will a platform for the tenant space",
|
||||
tags = "Platform Management",
|
||||
extensions = {
|
||||
@Extension(properties = {
|
||||
@ExtensionProperty(name = SCOPE, value = "perm:add-platform")
|
||||
})
|
||||
}
|
||||
)
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
code = 200,
|
||||
message = "OK. \n Successfully added the platform"),
|
||||
@ApiResponse(
|
||||
code = 400,
|
||||
message = "Bad Request. \n Invalid request parameters passed."),
|
||||
@ApiResponse(
|
||||
code = 500,
|
||||
message = "Internal Server Error. \n Error occurred while getting the platform list.",
|
||||
response = ErrorResponse.class)
|
||||
})
|
||||
Response addPlatform(
|
||||
@ApiParam(
|
||||
name = "platform",
|
||||
value = "The payload of the platform",
|
||||
required = true)
|
||||
Platform platform
|
||||
);
|
||||
|
||||
}
|
||||
@ -40,7 +40,6 @@ public class ApplicationManagementAPIImpl {
|
||||
|
||||
private static Log log = LogFactory.getLog(ApplicationManagementAPIImpl.class);
|
||||
|
||||
|
||||
@GET
|
||||
@Consumes("application/json")
|
||||
@Path("applications")
|
||||
|
||||
@ -0,0 +1,117 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.device.application.mgt.api.services.impl;
|
||||
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.device.application.mgt.api.APIUtil;
|
||||
import org.wso2.carbon.device.application.mgt.api.services.PlatformManagementAPI;
|
||||
import org.wso2.carbon.device.application.mgt.common.Platform;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.PlatformManagementException;
|
||||
import org.wso2.carbon.device.application.mgt.core.exception.PlatformManagementDAOException;
|
||||
|
||||
import javax.validation.constraints.Size;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PlatformManagementAPIImpl implements PlatformManagementAPI {
|
||||
|
||||
private static final String ALL_STATUS = "ALL";
|
||||
private static final String ENABLED_STATUS = "ENABLED";
|
||||
private static final String DISABLED_STATUS = "DISABLED";
|
||||
|
||||
private static Log log = LogFactory.getLog(PlatformManagementAPIImpl.class);
|
||||
|
||||
|
||||
@Override
|
||||
public Response getPlatforms(@QueryParam("status") String status) {
|
||||
String tenantDomain = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain(true);
|
||||
try {
|
||||
List<Platform> platforms = APIUtil.getPlatformManager().getPlatforms(tenantDomain);
|
||||
List<Platform> results;
|
||||
if (status != null) {
|
||||
if (status.contentEquals(ALL_STATUS)) {
|
||||
results = platforms;
|
||||
} else if (status.contentEquals(ENABLED_STATUS)) {
|
||||
results = new ArrayList<>();
|
||||
for (Platform platform : platforms) {
|
||||
if (platform.isEnabled()) {
|
||||
results.add(platform);
|
||||
}
|
||||
}
|
||||
} else if (status.contentEquals(DISABLED_STATUS)) {
|
||||
results = new ArrayList<>();
|
||||
for (Platform platform : platforms) {
|
||||
if (!platform.isEnabled()) {
|
||||
results.add(platform);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
results = platforms;
|
||||
}
|
||||
} else {
|
||||
results = platforms;
|
||||
}
|
||||
return Response.status(Response.Status.OK).entity(results).build();
|
||||
} catch (PlatformManagementException e) {
|
||||
log.error("Error while getting the platforms for tenant - " + tenantDomain, e);
|
||||
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
@GET
|
||||
@Override
|
||||
@Path("/{code}")
|
||||
public Response getPlatform(@PathParam("code") String code) {
|
||||
String tenantDomain = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain(true);
|
||||
try {
|
||||
Platform platform = APIUtil.getPlatformManager().getPlatform(tenantDomain, code);
|
||||
return Response.status(Response.Status.OK).entity(platform).build();
|
||||
} catch (PlatformManagementDAOException e) {
|
||||
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||
} catch (PlatformManagementException e) {
|
||||
return APIUtil.getResponse(e, Response.Status.NOT_FOUND);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response addPlatform(Platform platform) {
|
||||
String tenantDomain = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain(true);
|
||||
try {
|
||||
if (platform != null) {
|
||||
if (platform.validate()) {
|
||||
APIUtil.getPlatformManager().register(tenantDomain, platform);
|
||||
return Response.status(Response.Status.CREATED).build();
|
||||
} else {
|
||||
return APIUtil.getResponse("Invalid payload! Platform code and names are mandatory fields!", Response.Status.BAD_REQUEST);
|
||||
}
|
||||
} else {
|
||||
return APIUtil.getResponse("Invalid payload! Platform needs to be passed as payload!", Response.Status.BAD_REQUEST);
|
||||
}
|
||||
} catch (PlatformManagementException e) {
|
||||
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -31,7 +31,6 @@ public class Filter {
|
||||
|
||||
private int offset;
|
||||
|
||||
//TODO:
|
||||
private String filter;
|
||||
|
||||
private List<FilterProperty> filterProperties;
|
||||
|
||||
@ -20,10 +20,10 @@ package org.wso2.carbon.device.application.mgt.common;
|
||||
|
||||
import org.wso2.carbon.device.application.mgt.common.jaxrs.Exclude;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class Platform {
|
||||
public class Platform implements Cloneable {
|
||||
|
||||
@Exclude
|
||||
private int id;
|
||||
@ -36,9 +36,43 @@ public class Platform {
|
||||
|
||||
private String iconName;
|
||||
|
||||
private boolean fileBased;
|
||||
|
||||
private boolean shared;
|
||||
|
||||
private List<String> tags;
|
||||
|
||||
private Map<String, String> properties;
|
||||
private List<Property> properties;
|
||||
|
||||
private boolean enabled;
|
||||
|
||||
private boolean defaultTenantMapping;
|
||||
|
||||
public Platform(Platform platform) {
|
||||
this.id = platform.getId();
|
||||
this.name = platform.getName();
|
||||
this.description = platform.getDescription();
|
||||
this.identifier = platform.getIdentifier();
|
||||
this.iconName = platform.getIconName();
|
||||
this.fileBased = platform.isFileBased();
|
||||
this.shared = platform.isShared();
|
||||
if (platform.getProperties() != null) {
|
||||
this.properties = new ArrayList<>();
|
||||
for (Property property : platform.getProperties()) {
|
||||
this.properties.add(new Property(property));
|
||||
}
|
||||
}
|
||||
if (platform.getTags() != null) {
|
||||
this.tags = new ArrayList<>();
|
||||
for (String tag : platform.getTags()) {
|
||||
this.tags.add(tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Platform() {
|
||||
|
||||
}
|
||||
|
||||
private boolean published;
|
||||
|
||||
@ -82,11 +116,11 @@ public class Platform {
|
||||
this.iconName = iconName;
|
||||
}
|
||||
|
||||
public Map<String, String> getProperties() {
|
||||
public List<Property> getProperties() {
|
||||
return properties;
|
||||
}
|
||||
|
||||
public void setProperties(Map<String, String> properties) {
|
||||
public void setProperties(List<Property> properties) {
|
||||
this.properties = properties;
|
||||
}
|
||||
|
||||
@ -105,4 +139,82 @@ public class Platform {
|
||||
public void setPublished(boolean published) {
|
||||
this.published = published;
|
||||
}
|
||||
|
||||
public boolean isFileBased() {
|
||||
return fileBased;
|
||||
}
|
||||
|
||||
public void setFileBased(boolean fileBased) {
|
||||
this.fileBased = fileBased;
|
||||
}
|
||||
|
||||
public boolean isShared() {
|
||||
return shared;
|
||||
}
|
||||
|
||||
public void setShared(boolean shared) {
|
||||
this.shared = shared;
|
||||
}
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
}
|
||||
|
||||
public boolean isDefaultTenantMapping() {
|
||||
return defaultTenantMapping;
|
||||
}
|
||||
|
||||
public void setDefaultTenantMapping(boolean defaultTenantMapping) {
|
||||
this.defaultTenantMapping = defaultTenantMapping;
|
||||
}
|
||||
|
||||
public boolean validate(){
|
||||
return !(name == null || identifier == null);
|
||||
}
|
||||
|
||||
public static class Property implements Cloneable {
|
||||
|
||||
private String name;
|
||||
private boolean optional;
|
||||
private String defaultValue;
|
||||
|
||||
public Property(Property property) {
|
||||
this.name = property.getName();
|
||||
this.optional = property.isOptional();
|
||||
this.defaultValue = property.getDefaultValue();
|
||||
}
|
||||
|
||||
public Property() {
|
||||
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public boolean isOptional() {
|
||||
return optional;
|
||||
}
|
||||
|
||||
public void setOptional(boolean optional) {
|
||||
this.optional = optional;
|
||||
}
|
||||
|
||||
public String getDefaultValue() {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
public void setDefaultValue(String defaultValue) {
|
||||
this.defaultValue = defaultValue;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.device.application.mgt.common.exception;
|
||||
|
||||
public class PlatformManagementException extends ApplicationManagementException {
|
||||
|
||||
public PlatformManagementException(String message, Throwable ex) {
|
||||
super(message, ex);
|
||||
}
|
||||
|
||||
public PlatformManagementException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
@ -18,5 +18,31 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.application.mgt.common.services;
|
||||
|
||||
import org.wso2.carbon.device.application.mgt.common.Platform;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.PlatformManagementException;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Platform manager is responsible for handling platforms, which will be used to as a registry of platforms.
|
||||
* And will be able to provide the platforms related informations to other classes which requires.
|
||||
*/
|
||||
public interface PlatformManager {
|
||||
|
||||
void initialize(String tenantDomain) throws PlatformManagementException;
|
||||
|
||||
List<Platform> getPlatforms(String tenantDomain) throws PlatformManagementException;
|
||||
|
||||
Platform getPlatform(String tenantDomain, String code) throws PlatformManagementException;
|
||||
|
||||
void register(String tenantDomain, Platform platform) throws PlatformManagementException;
|
||||
|
||||
void unregister(String tenantDomain, String platformCode, boolean isFileBased) throws PlatformManagementException;
|
||||
|
||||
void addMapping(String tenantDomain, List<String> platformCode) throws PlatformManagementException;
|
||||
|
||||
void addMapping(String tenantDomain, String platformCode) throws PlatformManagementException;
|
||||
|
||||
void removeMapping(String tenantDomain, String platformCode) throws PlatformManagementException;
|
||||
|
||||
}
|
||||
|
||||
@ -71,21 +71,18 @@
|
||||
org.wso2.carbon.device.application.mgt.common.*,
|
||||
org.wso2.carbon.device.mgt.core.*,
|
||||
org.wso2.carbon.device.mgt.common.*,
|
||||
org.apache.axis2.*,
|
||||
org.wso2.carbon.user.core.*,
|
||||
org.wso2.carbon.user.api.*
|
||||
</Import-Package>
|
||||
<Export-Package>
|
||||
!org.wso2.carbon.device.application.mgt.core.internal.*,
|
||||
org.wso2.carbon.device.application.mgt.core.*
|
||||
</Export-Package>
|
||||
<Axis2Deployer>PlatformDeployer</Axis2Deployer>
|
||||
</instructions>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!--<plugin>-->
|
||||
<!--<groupId>org.apache.maven.plugins</groupId>-->
|
||||
<!--<artifactId>maven-surefire-plugin</artifactId>-->
|
||||
<!--<version>2.18</version>-->
|
||||
<!--</plugin>-->
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
@ -152,6 +149,10 @@
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.device.mgt.core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.user.core</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.application.mgt.core.config;
|
||||
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.InvalidConfigurationException;
|
||||
import org.wso2.carbon.device.application.mgt.core.deployer.Platform;
|
||||
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
|
||||
@ -22,11 +22,16 @@ import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.InvalidConfigurationException;
|
||||
import org.wso2.carbon.device.application.mgt.core.deployer.Platform;
|
||||
import org.wso2.carbon.device.application.mgt.core.deployer.Property;
|
||||
import org.wso2.carbon.device.application.mgt.core.internal.DataHolder;
|
||||
import org.wso2.carbon.device.application.mgt.core.util.Constants;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ConfigurationManager {
|
||||
|
||||
@ -73,6 +78,7 @@ public class ConfigurationManager {
|
||||
if (configPath == null) {
|
||||
configPath = Constants.DEFAULT_CONFIG_FILE_LOCATION;
|
||||
}
|
||||
//TODO: Add validation for the configurations
|
||||
this.configuration = (Configuration) unmarshaller.unmarshal(new File(configPath));
|
||||
} catch (Exception e) {
|
||||
log.error(e);
|
||||
|
||||
@ -20,9 +20,24 @@ package org.wso2.carbon.device.application.mgt.core.dao;
|
||||
|
||||
import org.wso2.carbon.device.application.mgt.common.Platform;
|
||||
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagementDAOException;
|
||||
import org.wso2.carbon.device.application.mgt.core.exception.PlatformManagementDAOException;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface PlatformDAO {
|
||||
|
||||
public Platform getPlatformByIdentifier(String identifier) throws ApplicationManagementDAOException;
|
||||
|
||||
void register(String tenantDomain, Platform platform) throws PlatformManagementDAOException;
|
||||
|
||||
void unregister(String tenantDomain, String platformCode) throws PlatformManagementDAOException;
|
||||
|
||||
void addMapping(String tenantDomain, List<String> platformCode) throws PlatformManagementDAOException;
|
||||
|
||||
void removeMapping(String tenantDomain, String platformCode) throws PlatformManagementDAOException;
|
||||
|
||||
List<Platform> getPlatforms(String tenantDomain) throws PlatformManagementDAOException;
|
||||
|
||||
Platform getPlatform(String tenantDomain, String platformCode) throws PlatformManagementDAOException;
|
||||
|
||||
}
|
||||
|
||||
@ -93,4 +93,3 @@ public class DAOFactory {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -20,12 +20,44 @@ package org.wso2.carbon.device.application.mgt.core.dao.impl.platform;
|
||||
|
||||
import org.wso2.carbon.device.application.mgt.common.Platform;
|
||||
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagementDAOException;
|
||||
import org.wso2.carbon.device.application.mgt.core.exception.PlatformManagementDAOException;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class H2PlatformDAOImpl extends AbstractPlatformDAOImpl {
|
||||
|
||||
|
||||
@Override
|
||||
public Platform getPlatformByIdentifier(String identifier) throws ApplicationManagementDAOException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(String tenantDomain, Platform platform) throws PlatformManagementDAOException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregister(String tenantDomain, String platformCode) throws PlatformManagementDAOException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addMapping(String tenantDomain, List<String> platformCode) throws PlatformManagementDAOException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeMapping(String tenantDomain, String platformCode) throws PlatformManagementDAOException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Platform> getPlatforms(String tenantDomain) throws PlatformManagementDAOException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Platform getPlatform(String tenantDomain, String platformCode) throws PlatformManagementDAOException {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,13 +20,18 @@ package org.wso2.carbon.device.application.mgt.core.dao.impl.platform;
|
||||
|
||||
import org.wso2.carbon.device.application.mgt.common.Platform;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.TransactionManagementException;
|
||||
import org.wso2.carbon.device.application.mgt.core.dao.common.Util;
|
||||
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagementDAOException;
|
||||
import org.wso2.carbon.device.application.mgt.core.exception.PlatformManagementDAOException;
|
||||
import org.wso2.carbon.device.application.mgt.core.util.ConnectionManagerUtil;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MySQLPlatformDAOImpl extends AbstractPlatformDAOImpl {
|
||||
|
||||
@ -71,4 +76,275 @@ public class MySQLPlatformDAOImpl extends AbstractPlatformDAOImpl {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(String tenantDomain, Platform platform) throws PlatformManagementDAOException {
|
||||
try {
|
||||
ConnectionManagerUtil.beginTransaction();
|
||||
if (getPlatformId(tenantDomain, platform.getIdentifier()) == -1) {
|
||||
Connection connection = ConnectionManagerUtil.getConnection();
|
||||
|
||||
String insertToPlatform = "INSERT INTO APPM_PLATFORM (CODE, TENANT_DOMAIN, NAME, DESCRIPTION, IS_SHARED, ICON_NAME)" +
|
||||
" VALUES (?, ?, ?, ?, ?, ?)";
|
||||
PreparedStatement preparedStatement = connection.prepareStatement(insertToPlatform);
|
||||
preparedStatement.setString(1, platform.getIdentifier());
|
||||
preparedStatement.setString(2, tenantDomain);
|
||||
preparedStatement.setString(3, platform.getName());
|
||||
preparedStatement.setString(4, platform.getDescription());
|
||||
preparedStatement.setBoolean(5, platform.isShared());
|
||||
preparedStatement.setString(6, platform.getIconName());
|
||||
preparedStatement.execute();
|
||||
|
||||
int platformID = getPlatformId(tenantDomain, platform.getIdentifier());
|
||||
|
||||
String insertPlatformProps = "INSERT INTO APPM_PLATFORM_PROPERTIES (PLATFORM_ID, PROP_NAME, OPTIONAL, DEFAULT_VALUE) VALUES " +
|
||||
"( ? , ?, ? , ?)";
|
||||
for (Platform.Property property : platform.getProperties()) {
|
||||
preparedStatement = connection.prepareStatement(insertPlatformProps);
|
||||
preparedStatement.setInt(1, platformID);
|
||||
preparedStatement.setString(2, property.getName());
|
||||
preparedStatement.setBoolean(3, property.isOptional());
|
||||
preparedStatement.setString(4, property.getDefaultValue());
|
||||
preparedStatement.execute();
|
||||
}
|
||||
ConnectionManagerUtil.commitTransaction();
|
||||
} else {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw new PlatformManagementDAOException("Platform - " + platform.getIdentifier()
|
||||
+ " is already registered for tenant - " + tenantDomain);
|
||||
}
|
||||
} catch (TransactionManagementException e) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw new PlatformManagementDAOException("Unable to start the transaction while trying to register the platform - "
|
||||
+ platform.getIdentifier() + " for tenant - " + tenantDomain, e);
|
||||
} catch (DBConnectionException e) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw new PlatformManagementDAOException("Unable to obtain the connection while trying to register the platform - "
|
||||
+ platform.getIdentifier() + " for tenant - " + tenantDomain, e);
|
||||
} catch (SQLException e) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw new PlatformManagementDAOException("Error while executing the SQL query. ", e);
|
||||
} catch (PlatformManagementDAOException ex) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw ex;
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeConnection();
|
||||
}
|
||||
}
|
||||
|
||||
private int getPlatformId(String tenantDomain, String platformCode) throws PlatformManagementDAOException {
|
||||
String query = "SELECT ID FROM APPM_PLATFORM WHERE (TENANT_DOMAIN=? AND CODE=?) OR (IS_SHARED = TRUE AND CODE=?)";
|
||||
try {
|
||||
Connection connection = ConnectionManagerUtil.getConnection();
|
||||
PreparedStatement preparedStatement = connection.prepareStatement(query);
|
||||
preparedStatement.setString(1, tenantDomain);
|
||||
preparedStatement.setString(2, platformCode);
|
||||
preparedStatement.setString(3, platformCode);
|
||||
ResultSet resultSet = preparedStatement.executeQuery();
|
||||
if (resultSet.next()) {
|
||||
return resultSet.getInt("ID");
|
||||
}
|
||||
return -1;
|
||||
} catch (DBConnectionException e) {
|
||||
throw new PlatformManagementDAOException("Error when trying to obtaining the database connection.", e);
|
||||
} catch (SQLException e) {
|
||||
throw new PlatformManagementDAOException("Error in executing the query - " + query, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void unregister(String tenantDomain, String platformCode) throws PlatformManagementDAOException {
|
||||
try {
|
||||
ConnectionManagerUtil.beginTransaction();
|
||||
int platformId = getPlatformId(tenantDomain, platformCode);
|
||||
if (platformId != -1) {
|
||||
Connection connection = ConnectionManagerUtil.getConnection();
|
||||
|
||||
String deletePlatform = "DELETE FROM APPM_PLATFORM WHERE ID = ?";
|
||||
PreparedStatement preparedStatement = connection.prepareStatement(deletePlatform);
|
||||
preparedStatement.setInt(1, platformId);
|
||||
preparedStatement.execute();
|
||||
|
||||
ConnectionManagerUtil.commitTransaction();
|
||||
} else {
|
||||
throw new PlatformManagementDAOException("Platform - " + platformCode
|
||||
+ " is already unregistered registered for tenant - " + tenantDomain);
|
||||
}
|
||||
} catch (TransactionManagementException e) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw new PlatformManagementDAOException("Unable to start the transaction while trying to register the platform - "
|
||||
+ platformCode + " for tenant - " + tenantDomain, e);
|
||||
} catch (DBConnectionException e) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw new PlatformManagementDAOException("Unable to obtain the connection while trying to register the platform - "
|
||||
+ platformCode + " for tenant - " + tenantDomain, e);
|
||||
} catch (SQLException e) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw new PlatformManagementDAOException("Error while executing the SQL query. ", e);
|
||||
} catch (PlatformManagementDAOException ex) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw ex;
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeConnection();
|
||||
}
|
||||
}
|
||||
|
||||
public void addMapping(String tenantDomain, List<String> platformCodes) throws PlatformManagementDAOException {
|
||||
String insertMapping = "INSERT INTO APPM_PLATFORM_TENANT_MAPPING(TENANT_DOMAIN, PLATFORM_CODE) VALUES (?, ?)";
|
||||
try {
|
||||
ConnectionManagerUtil.beginTransaction();
|
||||
for (String platformCode : platformCodes) {
|
||||
if (getTenantPlatformMapping(tenantDomain, platformCode) != -1) {
|
||||
Connection connection = ConnectionManagerUtil.getConnection();
|
||||
PreparedStatement preparedStatement = connection.prepareStatement(insertMapping);
|
||||
preparedStatement.setString(1, tenantDomain);
|
||||
preparedStatement.setString(2, platformCode);
|
||||
preparedStatement.execute();
|
||||
} else {
|
||||
throw new PlatformManagementDAOException("Platform - " + platformCode + " is already assigned to tenant domain - " + tenantDomain);
|
||||
}
|
||||
}
|
||||
ConnectionManagerUtil.commitTransaction();
|
||||
} catch (TransactionManagementException e) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw new PlatformManagementDAOException("Error occured while trying to add the mapping of platform - "
|
||||
+ platformCodes.toString() + " for tenant - " + tenantDomain, e);
|
||||
} catch (DBConnectionException e) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw new PlatformManagementDAOException("Error occurred when getting the connection for the database. ", e);
|
||||
} catch (SQLException e) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw new PlatformManagementDAOException("Error occured while executing the SQL query - " + insertMapping, e);
|
||||
} catch (PlatformManagementDAOException ex) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw ex;
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeConnection();
|
||||
}
|
||||
}
|
||||
|
||||
private int getTenantPlatformMapping(String tenantDomain, String platformCode) throws PlatformManagementDAOException {
|
||||
String getMapping = "SELECT ID FROM APPM_PLATFORM_TENANT_MAPPING WHERE TENANT_DOMAIN=? AND PLATFORM_CODE=?";
|
||||
try {
|
||||
Connection connection = ConnectionManagerUtil.getConnection();
|
||||
PreparedStatement preparedStatement = connection.prepareStatement(getMapping);
|
||||
preparedStatement.setString(1, tenantDomain);
|
||||
preparedStatement.setString(2, platformCode);
|
||||
ResultSet resultSet = preparedStatement.executeQuery();
|
||||
if (resultSet.next()) {
|
||||
return resultSet.getInt("ID");
|
||||
}
|
||||
return -1;
|
||||
} catch (DBConnectionException e) {
|
||||
throw new PlatformManagementDAOException("Error occured while obtaining the connection to get the existing " +
|
||||
"Tenant - Platform Mapping.", e);
|
||||
} catch (SQLException e) {
|
||||
throw new PlatformManagementDAOException("Error occured while executing the SQL query - " + getMapping, e);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeMapping(String tenantDomain, String platformCode) throws PlatformManagementDAOException {
|
||||
String deleteMapping = "DELETE FROM APPM_PLATFORM_TENANT_MAPPING WHERE ID = ?";
|
||||
try {
|
||||
ConnectionManagerUtil.beginTransaction();
|
||||
int mappingId = getTenantPlatformMapping(tenantDomain, platformCode);
|
||||
if (mappingId != -1) {
|
||||
Connection connection = ConnectionManagerUtil.getConnection();
|
||||
|
||||
PreparedStatement preparedStatement = connection.prepareStatement(deleteMapping);
|
||||
preparedStatement.setInt(1, mappingId);
|
||||
preparedStatement.execute();
|
||||
|
||||
ConnectionManagerUtil.commitTransaction();
|
||||
} else {
|
||||
throw new PlatformManagementDAOException("Platform - " + platformCode
|
||||
+ " is already unassigned for tenant - " + tenantDomain);
|
||||
}
|
||||
} catch (TransactionManagementException | DBConnectionException e) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw new PlatformManagementDAOException("Error occurred while unassigning the platform - " + platformCode
|
||||
+ " for tenant - " + tenantDomain);
|
||||
} catch (SQLException e) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw new PlatformManagementDAOException("Error occured while executing the query - " + deleteMapping);
|
||||
} catch (PlatformManagementDAOException ex) {
|
||||
ConnectionManagerUtil.rollbackTransaction();
|
||||
throw ex;
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Platform> getPlatforms(String tenantDomain) throws PlatformManagementDAOException {
|
||||
String selectQuery = "SELECT * FROM (SELECT * FROM APPM_PLATFORM WHERE TENANT_DOMAIN=? OR IS_SHARED = TRUE) PLATFORM " +
|
||||
"LEFT JOIN APPM_PLATFORM_TENANT_MAPPING MAPPING ON PLATFORM.CODE = MAPPING.PLATFORM_CODE";
|
||||
try {
|
||||
Connection connection = ConnectionManagerUtil.openConnection();
|
||||
PreparedStatement preparedStatement = connection.prepareStatement(selectQuery);
|
||||
ResultSet resultSet = preparedStatement.executeQuery();
|
||||
List<Platform> platforms = new ArrayList<>();
|
||||
while (resultSet.next()) {
|
||||
String platformCode = resultSet.getString("PLATFORM.CODE");
|
||||
int mappingID = resultSet.getInt("MAPPING.ID");
|
||||
Platform platform = getPlatform(tenantDomain, platformCode);
|
||||
if (mappingID != 0) {
|
||||
platform.setEnabled(true);
|
||||
} else {
|
||||
platform.setEnabled(false);
|
||||
}
|
||||
platforms.add(platform);
|
||||
}
|
||||
return platforms;
|
||||
} catch (DBConnectionException e) {
|
||||
throw new PlatformManagementDAOException("Error occured when loading the platforms for tenant - " + tenantDomain, e);
|
||||
} catch (SQLException e) {
|
||||
throw new PlatformManagementDAOException("Error occured when executing query - " + selectQuery, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeConnection();
|
||||
}
|
||||
}
|
||||
|
||||
public Platform getPlatform(String tenantDomain, String platformCode) throws PlatformManagementDAOException {
|
||||
String platformQuery = "SELECT * FROM (SELECT * FROM APPM_PLATFORM WHERE (TENANT_DOMAIN=? AND CODE=?) OR (IS_SHARED = TRUE AND CODE=?)) PLATFORM " +
|
||||
"LEFT JOIN APPM_PLATFORM_PROPERTIES PROPS ON PLATFORM.ID = PROPS.PLATFORM_ID";
|
||||
try {
|
||||
Connection connection = ConnectionManagerUtil.getConnection();
|
||||
PreparedStatement preparedStatement = connection.prepareStatement(platformQuery);
|
||||
preparedStatement.setString(1, tenantDomain);
|
||||
preparedStatement.setString(2, platformCode);
|
||||
preparedStatement.setString(3, platformCode);
|
||||
ResultSet resultSet = preparedStatement.executeQuery();
|
||||
Platform platform = new Platform();
|
||||
if (resultSet.next()) {
|
||||
platform.setId(resultSet.getInt("PLATFORM.ID"));
|
||||
platform.setIdentifier(platformCode);
|
||||
platform.setName(resultSet.getString("PLATFORM.NAME"));
|
||||
platform.setIconName(resultSet.getString("PLATFORM.DESCRIPTION"));
|
||||
platform.setIconName(resultSet.getString("PLATFORM.ICON_NAME"));
|
||||
platform.setShared(resultSet.getBoolean("PLATFORM.IS_SHARED"));
|
||||
platform.setFileBased(false);
|
||||
List<Platform.Property> properties = new ArrayList<>();
|
||||
do {
|
||||
if (resultSet.getString("PROPS.PROP_NAME") != null) {
|
||||
Platform.Property property = new Platform.Property();
|
||||
property.setName(resultSet.getString("PROPS.PROP_NAME"));
|
||||
property.setOptional(resultSet.getBoolean("PROPS.OPTIONAL"));
|
||||
property.setDefaultValue(resultSet.getString("PROPS.DEFAUL_VALUE"));
|
||||
properties.add(property);
|
||||
}
|
||||
} while (resultSet.next());
|
||||
platform.setProperties(properties);
|
||||
} else {
|
||||
platform.setIdentifier(platformCode);
|
||||
platform.setFileBased(true);
|
||||
}
|
||||
return platform;
|
||||
} catch (DBConnectionException e) {
|
||||
throw new PlatformManagementDAOException("Error when loading the platform - " + platformCode, e);
|
||||
} catch (SQLException e) {
|
||||
throw new PlatformManagementDAOException("Error in executing the query - " + platformQuery, e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,98 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.device.application.mgt.core.deployer;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import java.util.List;
|
||||
|
||||
@XmlRootElement(name = "Platform")
|
||||
public class Platform {
|
||||
|
||||
private String id;
|
||||
private String name;
|
||||
private String description;
|
||||
private String icon;
|
||||
private boolean shared;
|
||||
private boolean tenantMapping;
|
||||
private List<Property> properties;
|
||||
|
||||
@XmlAttribute(name = "id")
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "name")
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@XmlElement(name = "Property")
|
||||
public List<Property> getProperties() {
|
||||
return properties;
|
||||
}
|
||||
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public void setProperties(List<Property> properties) {
|
||||
this.properties = properties;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "icon")
|
||||
public String getIcon() {
|
||||
return icon;
|
||||
}
|
||||
|
||||
public void setIcon(String icon) {
|
||||
this.icon = icon;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "isShared")
|
||||
public boolean isShared() {
|
||||
return shared;
|
||||
}
|
||||
|
||||
public void setShared(boolean shared) {
|
||||
this.shared = shared;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "tenantMapping")
|
||||
public boolean isTenantMapping() {
|
||||
return tenantMapping;
|
||||
}
|
||||
|
||||
public void setTenantMapping(boolean tenantMapping) {
|
||||
this.tenantMapping = tenantMapping;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,120 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.device.application.mgt.core.deployer;
|
||||
|
||||
import org.apache.axis2.context.ConfigurationContext;
|
||||
import org.apache.axis2.deployment.AbstractDeployer;
|
||||
import org.apache.axis2.deployment.DeploymentException;
|
||||
import org.apache.axis2.deployment.repository.util.DeploymentFileData;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.context.CarbonContext;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.PlatformManagementException;
|
||||
import org.wso2.carbon.device.application.mgt.core.internal.DataHolder;
|
||||
import org.wso2.carbon.device.application.mgt.core.util.Constants;
|
||||
import org.wso2.carbon.utils.multitenancy.MultitenantUtils;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.JAXBException;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PlatformDeployer extends AbstractDeployer {
|
||||
|
||||
private static final Log log = LogFactory.getLog(PlatformDeployer.class);
|
||||
|
||||
@Override
|
||||
public void init(ConfigurationContext configurationContext) {
|
||||
File deployementDir = new File(MultitenantUtils.getAxis2RepositoryPath(CarbonContext.getThreadLocalCarbonContext().
|
||||
getTenantId()) + Constants.PLATFORMS_DEPLOYMENT_DIR_NAME);
|
||||
if (!deployementDir.exists()) {
|
||||
if (!deployementDir.mkdir()) {
|
||||
log.warn("Unable to create the deployment dir at: " + deployementDir.getPath());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void deploy(DeploymentFileData deploymentFileData) throws DeploymentException {
|
||||
File deploymentFile = new File(deploymentFileData.getAbsolutePath());
|
||||
try {
|
||||
JAXBContext jaxbContext = JAXBContext.newInstance(Platform.class);
|
||||
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
|
||||
Platform platformConf = (Platform) unmarshaller.unmarshal(deploymentFile);
|
||||
if (platformConf.getName().contentEquals(getPlatformID(deploymentFile.getName()))) {
|
||||
org.wso2.carbon.device.application.mgt.common.Platform platform = convert(platformConf);
|
||||
DataHolder.getInstance().getPlatformManager().register(CarbonContext.getThreadLocalCarbonContext().getTenantDomain(), platform);
|
||||
} else {
|
||||
log.error("Unable to deploy the platform - " + deploymentFile.getAbsolutePath() + "!. Platform config file name - "
|
||||
+ deploymentFile.getName() + " should match with the 'id' provided within the platform configuration!");
|
||||
}
|
||||
} catch (JAXBException e) {
|
||||
log.error("Platform configuration file - " + deploymentFile.getAbsolutePath() + " is invalid!", e);
|
||||
} catch (PlatformManagementException e) {
|
||||
log.error("Unable to deploy the platform - " + deploymentFile.getAbsolutePath(), e);
|
||||
}
|
||||
}
|
||||
|
||||
public void undeploy(String fileName) throws DeploymentException {
|
||||
String platformId = getPlatformID(fileName);
|
||||
try {
|
||||
DataHolder.getInstance().getPlatformManager().unregister(CarbonContext.getThreadLocalCarbonContext().getTenantDomain(), platformId, true);
|
||||
} catch (PlatformManagementException e) {
|
||||
log.error("Error occurred while undeploying the platform - " + fileName);
|
||||
}
|
||||
}
|
||||
|
||||
private static String getPlatformID(String deploymentFileName) {
|
||||
if (deploymentFileName.contains(Constants.PLATFORM_DEPLOYMENT_EXT)) {
|
||||
return deploymentFileName.substring(0, deploymentFileName.length() -
|
||||
Constants.PLATFORM_DEPLOYMENT_EXT.length());
|
||||
}
|
||||
return deploymentFileName;
|
||||
}
|
||||
|
||||
private org.wso2.carbon.device.application.mgt.common.Platform convert(Platform platformConfig) {
|
||||
org.wso2.carbon.device.application.mgt.common.Platform platform = new org.wso2.carbon.device.application.mgt.common.Platform();
|
||||
platform.setIdentifier(platformConfig.getId());
|
||||
platform.setName(platformConfig.getName());
|
||||
platform.setDescription(platformConfig.getDescription());
|
||||
platform.setIconName(platformConfig.getIcon());
|
||||
platform.setFileBased(true);
|
||||
platform.setShared(platformConfig.isShared());
|
||||
platform.setDefaultTenantMapping(platformConfig.isTenantMapping());
|
||||
platform.setEnabled(false);
|
||||
List<org.wso2.carbon.device.application.mgt.common.Platform.Property> properties = new ArrayList<>();
|
||||
for (Property propertyConfig : platformConfig.getProperties()) {
|
||||
org.wso2.carbon.device.application.mgt.common.Platform.Property property = new org.wso2.carbon.device.application.mgt.common.Platform.Property();
|
||||
property.setName(propertyConfig.getName());
|
||||
property.setDefaultValue(propertyConfig.getDefaultValue());
|
||||
property.setOptional(propertyConfig.isOptional());
|
||||
properties.add(property);
|
||||
}
|
||||
platform.setProperties(properties);
|
||||
return platform;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDirectory(String s) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExtension(String s) {
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.device.application.mgt.core.deployer;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import javax.xml.bind.annotation.XmlValue;
|
||||
|
||||
@XmlRootElement(name = "Property")
|
||||
public class Property {
|
||||
|
||||
private String name;
|
||||
private boolean optional;
|
||||
private String defaultValue;
|
||||
|
||||
@XmlValue
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "optional")
|
||||
public boolean isOptional() {
|
||||
return optional;
|
||||
}
|
||||
|
||||
public void setOptional(boolean optional) {
|
||||
this.optional = optional;
|
||||
}
|
||||
|
||||
@XmlAttribute(name = "default")
|
||||
public String getDefaultValue() {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
public void setDefaultValue(String defaultValue) {
|
||||
this.defaultValue = defaultValue;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* WSO2 Inc. licenses this file to you 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 org.wso2.carbon.device.application.mgt.core.exception;
|
||||
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.PlatformManagementException;
|
||||
|
||||
public class PlatformManagementDAOException extends PlatformManagementException {
|
||||
|
||||
public PlatformManagementDAOException(String message, Throwable ex) {
|
||||
super(message, ex);
|
||||
}
|
||||
|
||||
public PlatformManagementDAOException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
@ -20,6 +20,7 @@ package org.wso2.carbon.device.application.mgt.core.impl;
|
||||
|
||||
import org.wso2.carbon.device.application.mgt.common.*;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
|
||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationManager;
|
||||
import org.wso2.carbon.device.application.mgt.core.dao.ApplicationDAO;
|
||||
import org.wso2.carbon.device.application.mgt.core.dao.LifecycleStateDAO;
|
||||
@ -109,7 +110,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
ConnectionManagerUtil.openConnection();
|
||||
ApplicationDAO applicationDAO = DAOFactory.getApplicationDAO();
|
||||
return applicationDAO.getApplications(filter);
|
||||
} finally {
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeConnection();
|
||||
}
|
||||
|
||||
|
||||
@ -17,7 +17,153 @@
|
||||
*/
|
||||
package org.wso2.carbon.device.application.mgt.core.impl;
|
||||
|
||||
import org.wso2.carbon.device.application.mgt.common.Platform;
|
||||
import org.wso2.carbon.device.application.mgt.common.services.PlatformManager;
|
||||
import org.wso2.carbon.device.application.mgt.common.exception.PlatformManagementException;
|
||||
import org.wso2.carbon.device.application.mgt.core.dao.common.DAOFactory;
|
||||
import org.wso2.carbon.device.application.mgt.core.internal.DataHolder;
|
||||
import org.wso2.carbon.user.api.Tenant;
|
||||
import org.wso2.carbon.user.api.TenantManager;
|
||||
import org.wso2.carbon.user.api.UserStoreException;
|
||||
import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class PlatformManagerImpl implements PlatformManager {
|
||||
private Map<String, Map<String, Platform>> inMemoryStore;
|
||||
|
||||
public PlatformManagerImpl() {
|
||||
this.inMemoryStore = new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(String tenantDomain) throws PlatformManagementException {
|
||||
List<Platform> platforms = DAOFactory.getPlatformDAO().getPlatforms(tenantDomain);
|
||||
List<String> platformCodes = new ArrayList<>();
|
||||
for (Platform platform : platforms) {
|
||||
if (!platform.isEnabled() & platform.isDefaultTenantMapping()) {
|
||||
platformCodes.add(platform.getIdentifier());
|
||||
}
|
||||
}
|
||||
addMapping(tenantDomain, platformCodes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Platform> getPlatforms(String tenantDomain) throws PlatformManagementException {
|
||||
List<Platform> platforms = DAOFactory.getPlatformDAO().getPlatforms(tenantDomain);
|
||||
int platformIndex = 0;
|
||||
for (Platform platform : platforms) {
|
||||
if (platform.isFileBased()) {
|
||||
Map<String, Platform> superTenantPlatforms = this.inMemoryStore.get(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
|
||||
Platform registeredPlatform = superTenantPlatforms.get(platform.getIdentifier());
|
||||
if (registeredPlatform != null) {
|
||||
platforms.set(platformIndex, new Platform(registeredPlatform));
|
||||
} else {
|
||||
platforms.remove(platformIndex);
|
||||
}
|
||||
}
|
||||
platformIndex++;
|
||||
}
|
||||
return platforms;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Platform getPlatform(String tenantDomain, String code) throws PlatformManagementException {
|
||||
Platform platform = getPlatformFromInMemory(tenantDomain, code);
|
||||
if (platform == null) {
|
||||
platform = DAOFactory.getPlatformDAO().getPlatform(tenantDomain, code);
|
||||
}
|
||||
if (platform != null) {
|
||||
return new Platform(platform);
|
||||
}
|
||||
throw new PlatformManagementException("No platform was found for tenant - "+ tenantDomain+" with Platform code - "+ code);
|
||||
}
|
||||
|
||||
private Platform getPlatformFromInMemory(String tenantDomain, String code) {
|
||||
Map<String, Platform> platformMap = this.inMemoryStore.get(tenantDomain);
|
||||
if (platformMap != null) {
|
||||
Platform platform = platformMap.get(code);
|
||||
if (platform != null) {
|
||||
return platform;
|
||||
}
|
||||
}
|
||||
if (!tenantDomain.equalsIgnoreCase(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME)) {
|
||||
platformMap = this.inMemoryStore.get(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
|
||||
if (platformMap != null) {
|
||||
Platform platform = platformMap.get(code);
|
||||
if (platform != null && platform.isShared()) {
|
||||
return platform;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void register(String tenantDomain, Platform platform) throws PlatformManagementException {
|
||||
if (platform.isShared() && !tenantDomain.equals(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME)) {
|
||||
throw new PlatformManagementException("Platform sharing is a restricted operation, therefore Platform - "
|
||||
+ platform.getIdentifier() + " cannot be shared by the tenant domain - " + tenantDomain);
|
||||
}
|
||||
if (platform.isFileBased()) {
|
||||
Map<String, Platform> tenantPlatforms = this.inMemoryStore.get(tenantDomain);
|
||||
if (tenantPlatforms == null) {
|
||||
tenantPlatforms = new HashMap<>();
|
||||
this.inMemoryStore.put(tenantDomain, tenantPlatforms);
|
||||
}
|
||||
if (tenantPlatforms.get(platform.getIdentifier()) == null) {
|
||||
tenantPlatforms.put(platform.getIdentifier(), platform);
|
||||
} else {
|
||||
throw new PlatformManagementException("Platform - " + platform.getIdentifier() + " is already registered!");
|
||||
}
|
||||
} else {
|
||||
DAOFactory.getPlatformDAO().register(tenantDomain, platform);
|
||||
}
|
||||
if (platform.isDefaultTenantMapping()) {
|
||||
try {
|
||||
if (platform.isShared()) {
|
||||
TenantManager tenantManager = DataHolder.getInstance().getRealmService().getTenantManager();
|
||||
Tenant[] tenants = tenantManager.getAllTenants();
|
||||
for (Tenant tenant : tenants) {
|
||||
addMapping(tenant.getDomain(), platform.getIdentifier());
|
||||
}
|
||||
}
|
||||
addMapping(tenantDomain, platform.getIdentifier());
|
||||
} catch (UserStoreException e) {
|
||||
throw new PlatformManagementException("Error occured while assigning the platforms for tenants!", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregister(String tenantDomain, String platformCode, boolean isFileBased) throws PlatformManagementException {
|
||||
if (isFileBased) {
|
||||
Map<String, Platform> tenantPlatforms = this.inMemoryStore.get(tenantDomain);
|
||||
if (tenantPlatforms != null) {
|
||||
this.inMemoryStore.remove(platformCode);
|
||||
}
|
||||
} else {
|
||||
DAOFactory.getPlatformDAO().unregister(tenantDomain, platformCode);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addMapping(String tenantDomain, List<String> platformCode) throws PlatformManagementException {
|
||||
DAOFactory.getPlatformDAO().addMapping(tenantDomain, platformCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addMapping(String tenantDomain, String platformCode) throws PlatformManagementException {
|
||||
List<String> codes = new ArrayList<>();
|
||||
codes.add(platformCode);
|
||||
DAOFactory.getPlatformDAO().addMapping(tenantDomain, codes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeMapping(String tenantDomain, String platformCode) throws PlatformManagementException {
|
||||
DAOFactory.getPlatformDAO().removeMapping(tenantDomain, platformCode);
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,12 +20,14 @@ package org.wso2.carbon.device.application.mgt.core.internal;
|
||||
|
||||
import org.wso2.carbon.device.application.mgt.common.services.*;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
import org.wso2.carbon.user.core.service.RealmService;
|
||||
|
||||
public class DataHolder {
|
||||
//TODO move the osgi classes here.
|
||||
|
||||
private DeviceManagementProviderService deviceManagementService;
|
||||
|
||||
private RealmService realmService;
|
||||
|
||||
private ApplicationManager applicationManager;
|
||||
|
||||
private ApplicationReleaseManager releaseManager;
|
||||
@ -64,10 +66,6 @@ public class DataHolder {
|
||||
this.deviceManagementService = deviceManagementService;
|
||||
}
|
||||
|
||||
public static DataHolder getApplicationMgtDataHolder() {
|
||||
return applicationMgtDataHolder;
|
||||
}
|
||||
|
||||
public ApplicationManager getApplicationManager() {
|
||||
return applicationManager;
|
||||
}
|
||||
@ -143,4 +141,16 @@ public class DataHolder {
|
||||
public void setApplicationUploadManager(ApplicationUploadManager applicationUploadManager) {
|
||||
this.applicationUploadManager = applicationUploadManager;
|
||||
}
|
||||
|
||||
public ApplicationUploadManager getApplicationUploadManager() {
|
||||
return applicationUploadManager;
|
||||
}
|
||||
|
||||
public RealmService getRealmService() {
|
||||
return realmService;
|
||||
}
|
||||
|
||||
public void setRealmService(RealmService realmService) {
|
||||
this.realmService = realmService;
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,6 +28,7 @@ import org.wso2.carbon.device.application.mgt.core.config.ConfigurationManager;
|
||||
import org.wso2.carbon.device.application.mgt.core.dao.common.DAOFactory;
|
||||
import org.wso2.carbon.device.application.mgt.core.util.ApplicationManagementUtil;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
import org.wso2.carbon.user.core.service.RealmService;
|
||||
|
||||
import javax.naming.NamingException;
|
||||
|
||||
@ -39,6 +40,13 @@ import javax.naming.NamingException;
|
||||
* policy="dynamic"
|
||||
* bind="setDeviceManagementService"
|
||||
* unbind="unsetDeviceManagementService"
|
||||
* @scr.reference name="realm.service"
|
||||
* immediate="true"
|
||||
* interface="org.wso2.carbon.user.core.service.RealmService"
|
||||
* cardinality="1..1"
|
||||
* policy="dynamic"
|
||||
* bind="setRealmService"
|
||||
* unbind="unsetRealmService"
|
||||
*/
|
||||
public class ServiceComponent {
|
||||
|
||||
@ -119,4 +127,12 @@ public class ServiceComponent {
|
||||
}
|
||||
DataHolder.getInstance().setDeviceManagementService(null);
|
||||
}
|
||||
|
||||
protected void setRealmService(RealmService realmService) {
|
||||
DataHolder.getInstance().setRealmService(realmService);
|
||||
}
|
||||
|
||||
protected void unsetRealmService(RealmService realmService) {
|
||||
DataHolder.getInstance().setRealmService(null);
|
||||
}
|
||||
}
|
||||
|
||||
@ -45,7 +45,7 @@ public class ConnectionManagerUtil {
|
||||
return currentConnection;
|
||||
}
|
||||
|
||||
public static void openConnection() throws DBConnectionException {
|
||||
public static Connection openConnection() throws DBConnectionException {
|
||||
Connection conn = currentConnection.get();
|
||||
if (conn != null) {
|
||||
throw new IllegalTransactionStateException("A transaction is already active within the context of " +
|
||||
@ -60,6 +60,7 @@ public class ConnectionManagerUtil {
|
||||
}
|
||||
currentConnection.set(conn);
|
||||
currentTxState.set(TxState.CONNECTION_BORROWED);
|
||||
return conn;
|
||||
}
|
||||
|
||||
public static Connection getConnection() throws DBConnectionException {
|
||||
|
||||
@ -28,6 +28,8 @@ public class Constants {
|
||||
|
||||
public static final String DEFAULT_CONFIG_FILE_LOCATION = CarbonUtils.getCarbonConfigDirPath() + File.separator +
|
||||
Constants.APPLICATION_CONFIG_XML_FILE;
|
||||
public static final String PLATFORMS_DEPLOYMENT_DIR_NAME = "platforms";
|
||||
public static final String PLATFORM_DEPLOYMENT_EXT = ".xml";
|
||||
|
||||
public static final class DataBaseTypes {
|
||||
|
||||
|
||||
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
~ Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
~
|
||||
~ 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.
|
||||
-->
|
||||
<component xmlns="http://products.wso2.org/carbon">
|
||||
<deployers>
|
||||
<deployer>
|
||||
<directory>platforms</directory>
|
||||
<extension>xml</extension>
|
||||
<class>org.wso2.carbon.device.application.mgt.core.deployer.PlatformDeployer</class>
|
||||
</deployer>
|
||||
</deployers>
|
||||
</component>
|
||||
@ -0,0 +1,6 @@
|
||||
<Platforms>
|
||||
<Platform id="android" name="Android" description="something...." icon="" isShared="true" tenantMapping="true">
|
||||
<Property optional="true">test</Property>
|
||||
<Property optional="false" default="xxxxx">number</Property>
|
||||
</Platform>
|
||||
</Platforms>
|
||||
@ -0,0 +1,29 @@
|
||||
CREATE TABLE APPM_PLATFORM (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
CODE VARCHAR (100) NOT NULL,
|
||||
TENANT_DOMAIN VARCHAR (100) NOT NULL ,
|
||||
NAME VARCHAR (255) NOT NULL,
|
||||
DESCRIPTION LONGVARCHAR,
|
||||
IS_SHARED BOOLEAN,
|
||||
ICON_NAME VARCHAR (100),
|
||||
PRIMARY KEY (ID, CODE, TENANT_DOMAIN)
|
||||
);
|
||||
|
||||
CREATE TABLE APPM_PLATFORM_PROPERTIES (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
PLATFORM_ID INTEGER NOT NULL,
|
||||
PROP_NAME VARCHAR (100) NOT NULL,
|
||||
OPTIONAL BOOLEAN,
|
||||
DEFAUL_VALUE VARCHAR (255),
|
||||
FOREIGN KEY(PLATFORM_ID) REFERENCES APPM_PLATFORM(ID) ON DELETE CASCADE,
|
||||
PRIMARY KEY (ID, PLATFORM_ID, PROP_NAME)
|
||||
);
|
||||
|
||||
CREATE TABLE APPM_PLATFORM_TENANT_MAPPING (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
TENANT_DOMAIN VARCHAR (100) NOT NULL ,
|
||||
PLATFORM_CODE VARCHAR (100) NOT NULL,
|
||||
FOREIGN KEY(PLATFORM_CODE) REFERENCES APPM_PLATFORM(CODE) ON DELETE CASCADE,
|
||||
PRIMARY KEY (ID, TENANT_DOMAIN, PLATFORM_CODE)
|
||||
)
|
||||
|
||||
@ -1,141 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
~
|
||||
~ WSO2 Inc. licenses this file to you 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.
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>application-mgt</artifactId>
|
||||
<version>2.0.63-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.device.application.mgt.extensions</artifactId>
|
||||
<version>2.0.63-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - Application Management Extensions</name>
|
||||
<description>WSO2 Carbon - Application Management Extensions</description>
|
||||
<url>http://wso2.org</url>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>maven-scr-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>maven-bundle-plugin</artifactId>
|
||||
<version>1.4.0</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<instructions>
|
||||
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
|
||||
<Bundle-Name>${project.artifactId}</Bundle-Name>
|
||||
<Bundle-Version>${carbon.device.mgt.version}</Bundle-Version>
|
||||
<Bundle-Description>Application Management Extensions Bundle</Bundle-Description>
|
||||
<Import-Package>
|
||||
org.osgi.framework,
|
||||
org.osgi.service.component,
|
||||
org.apache.commons.logging,
|
||||
javax.xml.*,
|
||||
javax.xml.parsers;version="${javax.xml.parsers.import.pkg.version}";resolution:=optional,
|
||||
org.wso2.carbon.context.*,
|
||||
org.wso2.carbon.utils.*,
|
||||
org.w3c.dom,
|
||||
org.json,
|
||||
javax.sql,
|
||||
com.google.gson,
|
||||
javax.naming,
|
||||
javax.xml.bind.annotation,
|
||||
javax.xml.bind,
|
||||
org.wso2.carbon.device.application.mgt.common.*,
|
||||
org.wso2.carbon.device.mgt.core.*,
|
||||
org.wso2.carbon.device.mgt.common.*,
|
||||
</Import-Package>
|
||||
<Export-Package>
|
||||
org.wso2.carbon.device.application.mgt.extensions.*
|
||||
</Export-Package>
|
||||
</instructions>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.osgi</groupId>
|
||||
<artifactId>org.eclipse.osgi</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.osgi</groupId>
|
||||
<artifactId>org.eclipse.osgi.services</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.equinox</groupId>
|
||||
<artifactId>org.eclipse.equinox.common</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.testng</groupId>
|
||||
<artifactId>testng</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.logging</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon</groupId>
|
||||
<artifactId>org.wso2.carbon.utils</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-codec.wso2</groupId>
|
||||
<artifactId>commons-codec</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-io.wso2</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.json.wso2</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.device.application.mgt.common</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.device.mgt.common</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.device.mgt.core</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
<module>org.wso2.carbon.device.application.mgt.common</module>
|
||||
<module>org.wso2.carbon.device.application.mgt.api</module>
|
||||
<module>org.wso2.carbon.device.application.mgt.ui</module>
|
||||
<!--<module>org.wso2.carbon.device.application.mgt.extensions</module>-->
|
||||
<!--<module>org.wso2.carbon.device.application.mgt.android.platform</module>-->
|
||||
|
||||
</modules>
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user