Refactoring License management functionality

revert-70aa11f8
prabathabey 10 years ago
parent a9a0ac5899
commit 9ad8d6eab9

@ -20,7 +20,6 @@ package org.wso2.carbon.device.mgt.common;
public final class DeviceManagementConstants { public final class DeviceManagementConstants {
public static final class DataSourceProperties { public static final class DataSourceProperties {
private DataSourceProperties() { private DataSourceProperties() {
throw new AssertionError(); throw new AssertionError();
} }
@ -31,7 +30,6 @@ public final class DeviceManagementConstants {
} }
public static final class SecureValueProperties { public static final class SecureValueProperties {
private SecureValueProperties() { private SecureValueProperties() {
throw new AssertionError(); throw new AssertionError();
} }
@ -41,7 +39,6 @@ public final class DeviceManagementConstants {
} }
public static final class MobileDeviceTypes { public static final class MobileDeviceTypes {
private MobileDeviceTypes() { private MobileDeviceTypes() {
throw new AssertionError(); throw new AssertionError();
} }
@ -52,7 +49,6 @@ public final class DeviceManagementConstants {
} }
public static final class LanguageCodes { public static final class LanguageCodes {
private LanguageCodes() { private LanguageCodes() {
throw new AssertionError(); throw new AssertionError();
} }
@ -62,7 +58,6 @@ public final class DeviceManagementConstants {
} }
public static final class LicenseProperties { public static final class LicenseProperties {
private LicenseProperties() { private LicenseProperties() {
throw new AssertionError(); throw new AssertionError();
} }
@ -75,4 +70,5 @@ public final class DeviceManagementConstants {
public static final String LICENSE = "overview_license"; public static final String LICENSE = "overview_license";
public static final String LICENSE_REGISTRY_KEY = "license"; public static final String LICENSE_REGISTRY_KEY = "license";
} }
} }

@ -1,88 +0,0 @@
/*
* 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.
*/
package org.wso2.carbon.device.mgt.common;
import java.util.Date;
public class License {
private String name;
private String version;
private String language;
private String provider;
private Date validTo;
private Date validFrom;
private String text;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getProvider() {
return provider;
}
public void setProvider(String provider) {
this.provider = provider;
}
public Date getValidTo() {
return validTo;
}
public void setValidTo(Date validTo) {
this.validTo = validTo;
}
public Date getValidFrom() {
return validFrom;
}
public void setValidFrom(Date validFrom) {
this.validFrom = validFrom;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}

@ -57,11 +57,9 @@
org.osgi.framework, org.osgi.framework,
org.osgi.service.component, org.osgi.service.component,
org.apache.commons.logging, org.apache.commons.logging,
javax.xml.bind.*,
javax.naming, javax.naming,
javax.xml.*,
javax.sql, javax.sql,
javax.xml.parsers,
javax.transaction.*,
org.wso2.carbon.governance.api.*, org.wso2.carbon.governance.api.*,
org.wso2.carbon.base, org.wso2.carbon.base,
org.wso2.carbon.context, org.wso2.carbon.context,
@ -72,8 +70,7 @@
org.wso2.carbon.device.mgt.common.*, org.wso2.carbon.device.mgt.common.*,
org.wso2.carbon.user.api, org.wso2.carbon.user.api,
org.wso2.carbon.user.core.*, org.wso2.carbon.user.core.*,
org.w3c.dom, org.w3c.dom
javax.xml.namespace.*;
</Import-Package> </Import-Package>
<Export-Package> <Export-Package>
!org.wso2.carbon.device.mgt.core.internal, !org.wso2.carbon.device.mgt.core.internal,

@ -23,8 +23,9 @@ public final class DeviceManagementConstants {
private Common() { private Common() {
throw new AssertionError(); throw new AssertionError();
} }
public static final String PROPERTY_SETUP = "setup"; public static final String PROPERTY_SETUP = "setup";
public static final String DEFAULT_LICENSE_CONFIG_XML_NAME = "DefaultLicense.xml"; public static final String DEFAULT_LICENSE_CONFIG_XML_NAME = "license-config.xml";
} }
} }

@ -18,7 +18,7 @@
* *
*/ */
package org.wso2.carbon.device.mgt.common; package org.wso2.carbon.device.mgt.core;
public class LicenseManagementException extends Exception{ public class LicenseManagementException extends Exception{

@ -20,8 +20,10 @@
package org.wso2.carbon.device.mgt.core; package org.wso2.carbon.device.mgt.core;
import org.wso2.carbon.device.mgt.common.*; import org.wso2.carbon.device.mgt.core.config.license.License;
public interface LicenseManager { public interface LicenseManager {
public License getLicense(String deviceType,String languageCodes) throws LicenseManagementException;
License getLicense(String deviceType,String languageCodes) throws LicenseManagementException;
} }

@ -22,18 +22,13 @@ package org.wso2.carbon.device.mgt.core;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants; import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.common.License; import org.wso2.carbon.device.mgt.core.config.license.License;
import org.wso2.carbon.device.mgt.common.LicenseManagementException;
import org.wso2.carbon.device.mgt.core.internal.LicenseManagementDataHolder;
import org.wso2.carbon.device.mgt.core.license.mgt.GenericArtifactManagerFactory; import org.wso2.carbon.device.mgt.core.license.mgt.GenericArtifactManagerFactory;
import org.wso2.carbon.governance.api.exception.GovernanceException; import org.wso2.carbon.governance.api.exception.GovernanceException;
import org.wso2.carbon.governance.api.generic.GenericArtifactFilter; import org.wso2.carbon.governance.api.generic.GenericArtifactFilter;
import org.wso2.carbon.governance.api.generic.GenericArtifactManager; import org.wso2.carbon.governance.api.generic.GenericArtifactManager;
import org.wso2.carbon.governance.api.generic.dataobjects.GenericArtifact; import org.wso2.carbon.governance.api.generic.dataobjects.GenericArtifact;
import org.wso2.carbon.governance.api.util.GovernanceUtils;
import org.wso2.carbon.registry.core.Registry;
import org.wso2.carbon.registry.api.RegistryException; import org.wso2.carbon.registry.api.RegistryException;
import org.wso2.carbon.registry.core.session.UserRegistry;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;

@ -22,6 +22,7 @@ package org.wso2.carbon.device.mgt.core.config.license;
import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlRootElement;
import java.util.Date;
@XmlRootElement(name = "License") @XmlRootElement(name = "License")
public class License { public class License {
@ -30,12 +31,11 @@ public class License {
private String name; private String name;
private String version; private String version;
private String language; private String language;
private Date validFrom;
private Date validTo;
private String text;
private String validFrom; @XmlElement(name = "Provider", required = true)
private String validTo;
private String license;
@XmlElement(name = "provider")
public String getProvider() { public String getProvider() {
return provider; return provider;
} }
@ -44,7 +44,7 @@ public class License {
this.provider = provider; this.provider = provider;
} }
@XmlElement(name = "name") @XmlElement(name = "Name", required = true)
public String getName() { public String getName() {
return name; return name;
} }
@ -53,7 +53,7 @@ public class License {
this.name = name; this.name = name;
} }
@XmlElement(name = "version") @XmlElement(name = "Version", required = true)
public String getVersion() { public String getVersion() {
return version; return version;
} }
@ -62,7 +62,7 @@ public class License {
this.version = version; this.version = version;
} }
@XmlElement(name = "language") @XmlElement(name = "Language", required = true)
public String getLanguage() { public String getLanguage() {
return language; return language;
} }
@ -71,30 +71,31 @@ public class License {
this.language = language; this.language = language;
} }
@XmlElement(name = "license") @XmlElement(name = "Text", required = true)
public String getLicense() { public String getText() {
return license; return text;
} }
public void setLicense(String license) { public void setText(String text) {
this.license = license; this.text = text;
} }
@XmlElement(name = "validFrom") @XmlElement(name = "ValidFrom")
public String getValidFrom() { public Date getValidFrom() {
return validFrom; return validFrom;
} }
public void setValidFrom(String validFrom) { public void setValidFrom(Date validFrom) {
this.validFrom = validFrom; this.validFrom = validFrom;
} }
@XmlElement(name = "validTo") @XmlElement(name = "ValidTo")
public String getValidTo() { public Date getValidTo() {
return validTo; return validTo;
} }
public void setValidTo(String validTo) { public void setValidTo(Date validTo) {
this.validTo = validTo; this.validTo = validTo;
} }
} }

@ -18,17 +18,15 @@
* *
*/ */
package org.wso2.carbon.device.mgt.core.config; package org.wso2.carbon.device.mgt.core.config.license;
import org.wso2.carbon.device.mgt.common.License;
import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlRootElement;
import java.util.List; import java.util.List;
@XmlRootElement(name = "DefaultLicense") @XmlRootElement(name = "LicenseConfig")
public class LicenseManagementConfig { public class LicenseConfig {
private List<License> licenses; private List<License> licenses;

@ -18,10 +18,10 @@
* *
*/ */
package org.wso2.carbon.device.mgt.core.config; package org.wso2.carbon.device.mgt.core.config.license;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.wso2.carbon.device.mgt.common.LicenseManagementException; import org.wso2.carbon.device.mgt.core.LicenseManagementException;
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants; import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil; import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
import org.wso2.carbon.utils.CarbonUtils; import org.wso2.carbon.utils.CarbonUtils;
@ -32,11 +32,11 @@ import java.io.File;
public class LicenseConfigurationManager { public class LicenseConfigurationManager {
private LicenseManagementConfig licenseMgtConfig; private LicenseConfig licenseConfig;
private static LicenseConfigurationManager licenseConfigManager; private static LicenseConfigurationManager licenseConfigManager;
private static final String licenseMgtConfigXMLPath = private static final String LICENSE_CONFIG_PATH =
CarbonUtils.getCarbonConfigDirPath() + File.separator + CarbonUtils.getEtcCarbonConfigDirPath() + File.separator +
DeviceManagementConstants.Common.DEFAULT_LICENSE_CONFIG_XML_NAME; DeviceManagementConstants.Common.DEFAULT_LICENSE_CONFIG_XML_NAME;
public static LicenseConfigurationManager getInstance() { public static LicenseConfigurationManager getInstance() {
@ -51,23 +51,23 @@ public class LicenseConfigurationManager {
} }
public synchronized void initConfig() throws LicenseManagementException { public synchronized void initConfig() throws LicenseManagementException {
//catch generic exception.if any exception occurs wrap and throw LicenseManagementException
try { try {
File licenseMgtConfig = new File(licenseMgtConfigXMLPath); File licenseMgtConfig = new File(LicenseConfigurationManager.LICENSE_CONFIG_PATH);
Document doc = DeviceManagerUtil.convertToDocument(licenseMgtConfig); Document doc = DeviceManagerUtil.convertToDocument(licenseMgtConfig);
/* Un-marshaling License Management configuration */ /* Un-marshaling License Management configuration */
JAXBContext cdmContext = JAXBContext.newInstance(LicenseManagementConfig.class); JAXBContext cdmContext = JAXBContext.newInstance(LicenseConfig.class);
Unmarshaller unmarshaller = cdmContext.createUnmarshaller(); Unmarshaller unmarshaller = cdmContext.createUnmarshaller();
this.licenseMgtConfig = (LicenseManagementConfig) unmarshaller.unmarshal(doc); this.licenseConfig = (LicenseConfig) unmarshaller.unmarshal(doc);
} catch (Exception e) { } catch (Exception e) {
throw new LicenseManagementException("Error occurred while initializing RSS config", e); /* Catches generic exception as there's no specific task to be carried out catching a particular
exception */
throw new LicenseManagementException("Error occurred while initializing License Configurations", e);
} }
} }
public LicenseManagementConfig getLicenseMgtConfig() { public LicenseConfig getLicenseConfig() {
return licenseMgtConfig; return licenseConfig;
} }
} }

@ -0,0 +1,45 @@
/*
* *
* * Copyright (c) 2015, 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.
*
*/
package org.wso2.carbon.device.mgt.core.internal;
import org.apache.axis2.context.ConfigurationContext;
import org.wso2.carbon.utils.Axis2ConfigurationContextObserver;
public class DeviceManagementAxis2ConfigurationObserver implements Axis2ConfigurationContextObserver {
@Override
public void creatingConfigurationContext(int i) {
}
@Override
public void createdConfigurationContext(ConfigurationContext configurationContext) {
}
@Override
public void terminatingConfigurationContext(ConfigurationContext configurationContext) {
}
@Override
public void terminatedConfigurationContext(ConfigurationContext configurationContext) {
}
}

@ -32,6 +32,7 @@ import org.wso2.carbon.device.mgt.core.config.DeviceManagementConfig;
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig; import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory; import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.core.service.DeviceManagementService; import org.wso2.carbon.device.mgt.core.service.DeviceManagementService;
import org.wso2.carbon.device.mgt.core.service.LicenseManagementService;
import org.wso2.carbon.device.mgt.core.util.DeviceManagementSchemaInitializer; import org.wso2.carbon.device.mgt.core.util.DeviceManagementSchemaInitializer;
import org.wso2.carbon.user.core.service.RealmService; import org.wso2.carbon.user.core.service.RealmService;
@ -87,8 +88,8 @@ public class DeviceManagementServiceComponent {
log.debug("Registering OSGi service DeviceManagementService"); log.debug("Registering OSGi service DeviceManagementService");
} }
BundleContext bundleContext = componentContext.getBundleContext(); BundleContext bundleContext = componentContext.getBundleContext();
bundleContext.registerService(DeviceManagementService.class.getName(), bundleContext.registerService(DeviceManagementService.class.getName(), new DeviceManagementService(), null);
new DeviceManagementService(), null); bundleContext.registerService(LicenseManagementService.class.getName(), new LicenseManagementService(), null);
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Device management core bundle has been successfully initialized"); log.debug("Device management core bundle has been successfully initialized");
} }

@ -0,0 +1,55 @@
/*
* *
* * Copyright (c) 2015, 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.
*
*/
package org.wso2.carbon.device.mgt.core.internal;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.core.LicenseManagementException;
import org.wso2.carbon.device.mgt.core.util.LicenseManagerUtil;
import org.wso2.carbon.utils.Axis2ConfigurationContextObserver;
public class LicenseManagementAxis2ConfigurationObserver implements Axis2ConfigurationContextObserver {
private static final Log log = LogFactory.getLog(LicenseManagementAxis2ConfigurationObserver.class);
@Override
public void creatingConfigurationContext(int tenantId) {
}
@Override
public void createdConfigurationContext(ConfigurationContext configurationContext) {
try {
LicenseManagerUtil.addDefaultLicenses(null);
} catch (LicenseManagementException e) {
log.error("Error occurred while adding default license configurations of the tenant '");
}
}
@Override
public void terminatingConfigurationContext(ConfigurationContext configurationContext) {
}
@Override
public void terminatedConfigurationContext(ConfigurationContext configurationContext) {
}
}

@ -22,35 +22,18 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.osgi.framework.BundleContext; import org.osgi.framework.BundleContext;
import org.osgi.service.component.ComponentContext; import org.osgi.service.component.ComponentContext;
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants; import org.wso2.carbon.base.MultitenantConstants;
import org.wso2.carbon.device.mgt.common.License; import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.common.LicenseManagementException; import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.core.LicenseManager; import org.wso2.carbon.device.mgt.core.LicenseManager;
import org.wso2.carbon.device.mgt.core.LicenseManagerImpl; import org.wso2.carbon.device.mgt.core.LicenseManagerImpl;
import org.wso2.carbon.device.mgt.core.config.LicenseConfigurationManager; import org.wso2.carbon.device.mgt.core.config.license.LicenseConfig;
import org.wso2.carbon.device.mgt.core.config.LicenseManagementConfig; import org.wso2.carbon.device.mgt.core.config.license.LicenseConfigurationManager;
import org.wso2.carbon.device.mgt.core.license.mgt.GenericArtifactManagerFactory;
import org.wso2.carbon.device.mgt.core.service.LicenseManagementService; import org.wso2.carbon.device.mgt.core.service.LicenseManagementService;
import org.wso2.carbon.governance.api.exception.GovernanceException; import org.wso2.carbon.device.mgt.core.util.LicenseManagerUtil;
import org.wso2.carbon.governance.api.generic.GenericArtifactManager;
import org.wso2.carbon.governance.api.generic.dataobjects.GenericArtifact;
import org.wso2.carbon.registry.core.service.RegistryService; import org.wso2.carbon.registry.core.service.RegistryService;
import org.wso2.carbon.user.core.service.RealmService; import org.wso2.carbon.user.core.service.RealmService;
import javax.xml.namespace.QName;
/**
* @scr.component name="org.wso2.carbon.license.manager" immediate="true"
* @scr.reference name="user.realmservice.default"
* interface="org.wso2.carbon.user.core.service.RealmService"
* cardinality="1..1"
* policy="dynamic"
* bind="setRealmService"
* unbind="unsetRealmService"
* @scr.reference name="registryService.service"
* interface="org.wso2.carbon.registry.core.service.RegistryService" cardinality="1..1"
* policy="dynamic" bind="setRegistryService" unbind="unsetRegistryService"
*/
public class LicenseManagementServiceComponent { public class LicenseManagementServiceComponent {
private static Log log = LogFactory.getLog(LicenseManagementServiceComponent.class); private static Log log = LogFactory.getLog(LicenseManagementServiceComponent.class);
@ -63,21 +46,36 @@ public class LicenseManagementServiceComponent {
LicenseManager licenseManager = new LicenseManagerImpl(); LicenseManager licenseManager = new LicenseManagerImpl();
LicenseManagementDataHolder.getInstance().setLicenseManager(licenseManager); LicenseManagementDataHolder.getInstance().setLicenseManager(licenseManager);
/* If -Dsetup option enabled then create creates default license management */ if (log.isDebugEnabled()) {
String setupOption = System.getProperty( log.debug("Configuring default licenses to be used for device enrolment");
org.wso2.carbon.device.mgt.core.DeviceManagementConstants.Common.PROPERTY_SETUP); }
LicenseConfigurationManager.getInstance().initConfig();
LicenseConfig licenseConfig = LicenseConfigurationManager.getInstance().getLicenseConfig();
/* If -Dsetup option enabled then configure device management related default licenses */
String setupOption =
System.getProperty(DeviceManagementConstants.Common.PROPERTY_SETUP);
if (setupOption != null) { if (setupOption != null) {
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("-Dsetup is enabled.Check default licenses and add if not exists in registry"); log.debug(
"-Dsetup is enabled. Configuring default device management licenses " +
"is about to begin");
} }
LicenseConfigurationManager.getInstance().initConfig(); /* It is required to specifically run the following code snippet as Super Tenant in order to use
LicenseManagementConfig licenseManagementConfig = LicenseConfigurationManager.getInstance() * Super tenant registry to initialize the underlying GenericArtifactManager corresponding to the same */
.getLicenseMgtConfig(); try {
addDefaultLicenses(licenseManagementConfig); PrivilegedCarbonContext.startTenantFlow();
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID);
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain
(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
LicenseManagerUtil.addDefaultLicenses(licenseConfig);
} finally {
PrivilegedCarbonContext.endTenantFlow();
} }
}
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Registering OSGi service LicenseManagementService"); log.debug("Registering OSGi service 'LicenseManagementService'");
} }
BundleContext bundleContext = componentContext.getBundleContext(); BundleContext bundleContext = componentContext.getBundleContext();
bundleContext bundleContext
@ -85,38 +83,9 @@ public class LicenseManagementServiceComponent {
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("License management core bundle has been successfully initialized"); log.debug("License management core bundle has been successfully initialized");
} }
} catch (Throwable throwable) { } catch (Throwable e) {
String msg = "Error occurred while initializing license management core bundle"; String msg = "Error occurred while initializing license management core bundle";
log.error(msg, throwable); log.error(msg, e);
}
}
private void addDefaultLicenses(LicenseManagementConfig licenseManagementConfig) throws LicenseManagementException {
try {
GenericArtifactManager artifactManager =
GenericArtifactManagerFactory.getTenantAwareGovernanceArtifactManager();
GenericArtifact artifact;
for (License license : licenseManagementConfig.getLicenses()) {
artifact = artifactManager.newGovernanceArtifact(new QName("http://www.wso2.com",
DeviceManagementConstants.LicenseProperties.LICENSE_REGISTRY_KEY));
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.OVERVIEW_NAME, license.getName());
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.OVERVIEW_VERSION,
license.getVersion());
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.OVERVIEW_LANGUAGE,
license.getLanguage());
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.OVERVIEW_PROVIDER,
license.getProvider());
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.VALID_TO,
license.getValidTo().toString());
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.VALID_FROM,
license.getValidFrom().toString());
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.LICENSE, license.getText());
artifactManager.addGenericArtifact(artifact);
}
} catch (GovernanceException e) {
String msg = "Error occurred while initializing default licences";
throw new LicenseManagementException(msg, e);
} }
} }

@ -19,12 +19,14 @@
package org.wso2.carbon.device.mgt.core.license.mgt; package org.wso2.carbon.device.mgt.core.license.mgt;
import org.wso2.carbon.context.CarbonContext; import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.context.RegistryType;
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants; import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.common.LicenseManagementException; import org.wso2.carbon.device.mgt.core.LicenseManagementException;
import org.wso2.carbon.device.mgt.core.internal.LicenseManagementDataHolder;
import org.wso2.carbon.governance.api.generic.GenericArtifactManager; import org.wso2.carbon.governance.api.generic.GenericArtifactManager;
import org.wso2.carbon.governance.api.util.GovernanceUtils;
import org.wso2.carbon.registry.api.Registry; import org.wso2.carbon.registry.api.Registry;
import org.wso2.carbon.registry.core.exceptions.RegistryException; import org.wso2.carbon.registry.core.exceptions.RegistryException;
import org.wso2.carbon.registry.core.session.UserRegistry;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -37,18 +39,30 @@ public class GenericArtifactManagerFactory {
public static GenericArtifactManager getTenantAwareGovernanceArtifactManager() throws public static GenericArtifactManager getTenantAwareGovernanceArtifactManager() throws
LicenseManagementException { LicenseManagementException {
Registry registry = CarbonContext.getThreadLocalCarbonContext().getRegistry(RegistryType.USER_GOVERNANCE); Registry registry;
int tenantId;
try {
tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
registry =
LicenseManagementDataHolder.getInstance().getRegistryService().getGovernanceSystemRegistry(
tenantId);
} catch (RegistryException e) {
throw new LicenseManagementException("Error occurred while initializing tenant system registry " +
"to be used to manipulate License artifacts", e);
}
try { try {
GenericArtifactManager artifactManager; GenericArtifactManager artifactManager;
synchronized (lock) { synchronized (lock) {
artifactManager = artifactManager =
tenantArtifactManagers.get(CarbonContext.getThreadLocalCarbonContext().getTenantId()); tenantArtifactManagers.get(tenantId);
if (artifactManager == null) { if (artifactManager == null) {
/* Hack, to fix https://wso2.org/jira/browse/REGISTRY-2427 */
//GovernanceUtils.loadGovernanceArtifacts((UserRegistry) registry);
artifactManager = artifactManager =
new GenericArtifactManager((org.wso2.carbon.registry.core.Registry) registry, new GenericArtifactManager((org.wso2.carbon.registry.core.Registry) registry,
DeviceManagementConstants.LicenseProperties.LICENSE_REGISTRY_KEY); DeviceManagementConstants.LicenseProperties.LICENSE_REGISTRY_KEY);
tenantArtifactManagers.put(CarbonContext.getThreadLocalCarbonContext().getTenantId(), tenantArtifactManagers.put(tenantId, artifactManager);
artifactManager);
} }
} }
return artifactManager; return artifactManager;

@ -17,12 +17,11 @@
* under the License. * under the License.
* *
*/ */
package org.wso2.carbon.device.mgt.core.service; package org.wso2.carbon.device.mgt.core.service;
import org.wso2.carbon.device.mgt.common.License; import org.wso2.carbon.device.mgt.core.LicenseManagementException;
import org.wso2.carbon.device.mgt.common.LicenseManagementException;
import org.wso2.carbon.device.mgt.core.LicenseManager; import org.wso2.carbon.device.mgt.core.LicenseManager;
import org.wso2.carbon.device.mgt.core.config.license.License;
import org.wso2.carbon.device.mgt.core.internal.LicenseManagementDataHolder; import org.wso2.carbon.device.mgt.core.internal.LicenseManagementDataHolder;
public class LicenseManagementService implements LicenseManager { public class LicenseManagementService implements LicenseManager {
@ -30,7 +29,7 @@ public class LicenseManagementService implements LicenseManager {
@Override @Override
public License getLicense(String deviceType, String languageCode) public License getLicense(String deviceType, String languageCode)
throws LicenseManagementException { throws LicenseManagementException {
return LicenseManagementDataHolder.getInstance().getLicenseManager() return LicenseManagementDataHolder.getInstance().getLicenseManager().getLicense(deviceType, languageCode);
.getLicense(deviceType, languageCode);
} }
} }

@ -0,0 +1,86 @@
/*
* *
* * Copyright (c) 2015, 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.
*
*/
package org.wso2.carbon.device.mgt.core.util;
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.core.LicenseManagementException;
import org.wso2.carbon.device.mgt.core.config.license.License;
import org.wso2.carbon.device.mgt.core.config.license.LicenseConfig;
import org.wso2.carbon.device.mgt.core.license.mgt.GenericArtifactManagerFactory;
import org.wso2.carbon.governance.api.common.GovernanceArtifactFilter;
import org.wso2.carbon.governance.api.common.GovernanceArtifactManager;
import org.wso2.carbon.governance.api.common.dataobjects.GovernanceArtifact;
import org.wso2.carbon.governance.api.exception.GovernanceException;
import org.wso2.carbon.governance.api.generic.GenericArtifactFilter;
import org.wso2.carbon.governance.api.generic.GenericArtifactManager;
import org.wso2.carbon.governance.api.generic.dataobjects.GenericArtifact;
import javax.xml.namespace.QName;
import java.util.Date;
public class LicenseManagerUtil {
public static void addDefaultLicenses(LicenseConfig licenseConfig) throws LicenseManagementException {
try {
GenericArtifactManager artifactManager =
GenericArtifactManagerFactory.getTenantAwareGovernanceArtifactManager();
for (License license : licenseConfig.getLicenses()) {
/* TODO: This method call can be expensive as it appears to do a complete table scan to check the existence
* of an artifact for each license configuration. Need to find the optimal way of doing this */
if (LicenseManagerUtil.isArtifactExists(artifactManager, license)) {
continue;
}
GenericArtifact artifact =
artifactManager.newGovernanceArtifact(new QName("http://www.wso2.com",
DeviceManagementConstants.LicenseProperties.LICENSE_REGISTRY_KEY));
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.OVERVIEW_NAME, license.getName());
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.OVERVIEW_VERSION,
license.getVersion());
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.OVERVIEW_LANGUAGE,
license.getLanguage());
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.OVERVIEW_PROVIDER,
license.getProvider());
Date validTo = license.getValidTo();
if (validTo != null) {
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.VALID_TO, validTo.toString());
}
Date validFrom = license.getValidFrom();
if (validFrom != null) {
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.VALID_FROM, validFrom.toString());
}
artifact.setAttribute(DeviceManagementConstants.LicenseProperties.LICENSE, license.getText());
artifactManager.addGenericArtifact(artifact);
}
} catch (GovernanceException e) {
throw new LicenseManagementException("Error occurred while initializing default licences", e);
}
}
private static boolean isArtifactExists(final GenericArtifactManager artifactManager,
final License license) throws GovernanceException {
GovernanceArtifact[] artifacts = artifactManager.findGenericArtifacts(new GenericArtifactFilter() {
@Override
public boolean matches(GenericArtifact artifact) throws GovernanceException {
return artifact.getAttribute(DeviceManagementConstants.LicenseProperties.OVERVIEW_NAME).equals(
license.getName());
}
});
return (artifacts != null && artifacts.length > 0);
}
}

@ -1,50 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~
~ Copyright (c) 2015, 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.
~
-->
<DefaultLicense>
<License>
<provider>wso2</provider>
<name>android</name>
<version>1.0.0</version>
<language>1.0.0</language>
<validFrom>01-01-2014</validFrom>
<validTo>31-12-2035</validTo>
<license><![CDATA[Test License]]></license>
</License>
<License>
<provider>wso2</provider>
<name>ios</name>
<version>1.0.0</version>
<language>1.0.0</language>
<validFrom>01-01-2014</validFrom>
<validTo>31-12-2035</validTo>
<license><![CDATA[IOS License]]></license>
</License>
<License>
<provider>wso2</provider>
<name>windows</name>
<version>1.0.0</version>
<language>1.0.0</language>
<validFrom>01-01-2014</validFrom>
<validTo>31-12-2035</validTo>
<license><![CDATA[Windows License]]></license>
</License>
</DefaultLicense>

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~
~ Copyright (c) 2015, 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.
~
-->
<LicenseConfig>
<Licenses>
<License>
<Provider>wso2</Provider>
<Name>android</Name>
<Version>1.0.0</Version>
<Language>1.0.0</Language>
<ValidFrom>01-01-2014</ValidFrom>
<ValidTo>31-12-2035</ValidTo>
<Text><![CDATA[Test License]]></Text>
</License>
<License>
<Provider>wso2</Provider>
<Name>ios</Name>
<Version>1.0.0</Version>
<Language>1.0.0</Language>
<ValidFrom>01-01-2014</ValidFrom>
<ValidTo>31-12-2035</ValidTo>
<Text><![CDATA[IOS License]]></Text>
</License>
<License>
<Provider>wso2</Provider>
<Name>windows</Name>
<Version>1.0.0</Version>
<Language>1.0.0</Language>
<ValidFrom>01-01-2014</ValidFrom>
<ValidTo>31-12-2035</ValidTo>
<Text><![CDATA[Windows License]]></Text>
</License>
</Licenses>
</LicenseConfig>

@ -1,4 +1,5 @@
instructions.configure = \ instructions.configure = \
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.server_${feature.version}/conf/cdm-config.xml,target:${installFolder}/../../conf/cdm-config.xml,overwrite:true);\ org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.server_${feature.version}/conf/cdm-config.xml,target:${installFolder}/../../conf/cdm-config.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.server_${feature.version}/conf/license-config.xml,target:${installFolder}/../../conf/etc/license-config.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.server_${feature.version}/dbscripts/cdm,target:${installFolder}/../../../dbscripts/cdm,overwrite:true);\ org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.server_${feature.version}/dbscripts/cdm,target:${installFolder}/../../../dbscripts/cdm,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.server_${feature.version}/rxts/license.rxt,target:${installFolder}/../../../repository/resources/rxts/license.rxt,overwrite:true);\ org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.server_${feature.version}/rxts/license.rxt,target:${installFolder}/../../../repository/resources/rxts/license.rxt,overwrite:true);\

@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<artifactType type="application/vnd.wso2-license+xml" shortName="license" singularLabel="License" pluralLabel="Licenses" <artifactType type="application/vnd.wso2-license+xml" shortName="license" singularLabel="License" pluralLabel="Licenses"
hasNamespace="false" iconSet="10"> hasNamespace="false" iconSet="10">
<storagePath>/license/@{overview_provider}/@{overview_name}/@{overview_language}/@{overview_version}</storagePath> <storagePath>/device-mgt/license/@{overview_name}/@{overview_language}/@{overview_version}</storagePath>
<nameAttribute>overview_name</nameAttribute> <nameAttribute>overview_name</nameAttribute>
<ui> <ui>
<list> <list>

@ -612,7 +612,6 @@
<!-- Device Management --> <!-- Device Management -->
<carbon.device.mgt.version>0.9.1-SNAPSHOT</carbon.device.mgt.version> <carbon.device.mgt.version>0.9.1-SNAPSHOT</carbon.device.mgt.version>
</properties> </properties>
</project> </project>

Loading…
Cancel
Save