[prev in list] [next in list] [prev in thread] [next in thread]
List: esb-java-dev
Subject: [Dev] Fwd: [Commits] [Carbon-platform] svn commit r144202 - in carbon/platform/branches/4.0.0/compon
From: Nirmal Fernando <nirmal () wso2 ! com>
Date: 2012-09-28 18:26:27
Message-ID: CAJ+w7FnsO93t03G0SqkqpnD50uAn=NLDB3M_One_fT_ryWCxZg () mail ! gmail ! com
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
Hi,
Your commits to
"carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1"
breaking the build. I guess you wanted to commit to 1.0.2.
---------- Forwarded message ----------
From: <ramith@wso2.com>
Date: Fri, Sep 28, 2012 at 3:05 PM
Subject: [Commits] [Carbon-platform] svn commit r144202 - in
carbon/platform/branches/4.0.0/components/appfactory:
org.wso2.carbon.appfactory.application.mgt/1.0.2
org.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/internal
org.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/service
org.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/util
org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build
org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/internal
org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/service
org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core
org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build
org.wso2.carbon.appfactory.cor
To: commits@wso2.org
Author: ramith
Date: Fri Sep 28 05:35:12 2012
New Revision: 144202
URL: http://wso2.org/svn/browse/wso2?view=rev&revision=144202
Log:
Adding changes in AF svn branch to 4.0.2
Added:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build \
/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsApplicationEventsListener.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/core/ApplicationEventsListener.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Application.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/UserInfo.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Version.java
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/pom.xml
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.appli \
cation.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/internal/ApplicationManagementServiceComponent.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.appli \
cation.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/service/ApplicationManagementService.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.appli \
cation.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/util/Util.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build \
/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCIConstants.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build \
/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build \
/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/RestBasedJenkinsCIConnector.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build \
/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/internal/JenkinsBuildServiceComponent.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build \
/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/service/JenkinsCISystemDriverService.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/BuildDriverListener.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/core/ContinuousIntegrationSystemDriver.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/ArtifactCreator.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/DefaultRevisionControlDriverListener.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.jenki \
ns.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/pom.xml
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repos \
itory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/client/SCMClient.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repos \
itory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/internal/RepositoryMgtServiceComponent.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repos \
itory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/util/Util.java
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.utili \
ties/1.0.2/src/main/java/org/wso2/carbon/appfactory/utilities/project/ProjectUtils.java
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/pom.xml
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.application.mgt/1.0.2/pom.xml?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/pom.xml
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/pom.xml
Fri Sep 28 05:35:12 2012
@@ -60,6 +60,11 @@
<version>${project.version}</version>
</dependency>
<dependency>
+ <groupId>org.wso2.carbon</groupId>
+ <artifactId>org.wso2.carbon.appfactory.utilities</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.applic \
ation.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/internal/ApplicationManagementServiceComponent.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2/carbon/appfacto \
ry/application/mgt/internal/ApplicationManagementServiceComponent.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.applic \
ation.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/internal/ApplicationManagementServiceComponent.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.applic \
ation.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/internal/ApplicationManagementServiceComponent.java
Fri Sep 28 05:35:12 2012
@@ -23,6 +23,7 @@
import
org.wso2.carbon.appfactory.application.mgt.service.ApplicationManagementService;
import org.wso2.carbon.appfactory.application.mgt.util.Util;
import org.wso2.carbon.appfactory.common.AppFactoryConfiguration;
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;
import org.wso2.carbon.appfactory.core.ContinuousIntegrationSystemDriver;
import org.wso2.carbon.registry.core.service.RegistryService;
import org.wso2.carbon.user.core.service.RealmService;
@@ -54,6 +55,12 @@
* cardinality="0..1" policy="dynamic"
* bind="setContinuousIntegrationSystemDriver"
* unbind="unsetContinuousIntegrationSystemDriver"
+ *
+ @scr.reference name="appfactory.application.events.listener"
+ *
interface="org.wso2.carbon.appfactory.core.ApplicationEventsListener"
+ * cardinality="0..n" policy="dynamic"
+ * bind="setApplicationEventsListener"
+ * unbind="unsetApplicationEventsListener"
*/
public class ApplicationManagementServiceComponent {
private static Log log =
LogFactory.getLog(ApplicationManagementServiceComponent.class);
@@ -119,4 +126,12 @@
public static void
unsetContinuousIntegrationSystemDriver(ContinuousIntegrationSystemDriver
continuousIntegrationSystemDriver) {
Util.setContinuousIntegrationSystemDriver(null);
}
+
+ public static void
setApplicationEventsListener(ApplicationEventsListener
applicationEventsListener) {
+ Util.addApplicationEventsListener(applicationEventsListener);
+ }
+
+ public static void
unsetApplicationEventsListener(ApplicationEventsListener
applicationEventsListener) {
+ Util.removeApplicationEventsListener(applicationEventsListener);
+ }
}
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.applic \
ation.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/service/ApplicationManagementService.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2/carbon/appfacto \
ry/application/mgt/service/ApplicationManagementService.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.applic \
ation.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/service/ApplicationManagementService.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.applic \
ation.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/service/ApplicationManagementService.java
Fri Sep 28 05:35:12 2012
@@ -1,27 +1,35 @@
/*
* Copyright 2005-2011 WSO2, Inc. (http://wso2.com)
- *
- * 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.
+ *
+ * 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.appfactory.application.mgt.service;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.CarbonConstants;
import org.wso2.carbon.appfactory.application.mgt.util.Util;
import org.wso2.carbon.appfactory.common.AppFactoryException;
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;
+import org.wso2.carbon.appfactory.core.dto.Application;
+import org.wso2.carbon.appfactory.core.dto.UserInfo;
+import org.wso2.carbon.appfactory.core.dto.Version;
+import org.wso2.carbon.appfactory.utilities.project.ProjectUtils;
import org.wso2.carbon.base.MultitenantConstants;
import org.wso2.carbon.core.AbstractAdmin;
import org.wso2.carbon.user.api.Tenant;
@@ -29,10 +37,6 @@
import org.wso2.carbon.user.api.UserRealm;
import org.wso2.carbon.user.api.UserStoreException;
-import java.util.ArrayList;
-import java.util.List;
-
-
public class ApplicationManagementService extends AbstractAdmin {
private static Log log =
LogFactory.getLog(ApplicationManagementService.class);
@@ -40,54 +44,54 @@
public static String FIRST_NAME_CLAIM_URI = "
http://wso2.org/claims/givenname";
public static String LAST_NAME_CLAIM_URI = "
http://wso2.org/claims/lastname";
-
- public String createApplication(ApplicationInfoBean application) {
- return application.getApplicationKey();
- }
-
-
public boolean addUserToApplication(String applicationId, String
userName, String[] roles)
- throws ApplicationManagementException {
+
throws ApplicationManagementException {
TenantManager tenantManager =
Util.getRealmService().getTenantManager();
try {
- UserRealm realm =
Util.getRealmService().getTenantUserRealm(tenantManager.getTenantId(applicationId));
+ UserRealm realm =
+ Util.getRealmService()
+
.getTenantUserRealm(tenantManager.getTenantId(applicationId));
String[] newRolesForUser = removeRolesUserAlreadyIn(userName,
roles, realm);
realm.getUserStoreManager().updateRoleListOfUser(userName,
null, newRolesForUser);
-
+
+
} catch (UserStoreException e) {
String msg = "Error while adding user " + userName + " to
application " + applicationId;
log.error(msg, e);
throw new ApplicationManagementException(msg, e);
}
- try {
- if ( log.isDebugEnabled()){
- log.debug("Creating a continuous integration job for
application id: " + applicationId + "using trunk");
+ // Notify the event listener about the user addition
+ Iterator<ApplicationEventsListener> appEventListeners =
+
Util.getApplicationEventsListeners()
+
.iterator();
+ try {
+ Application app =
ProjectUtils.getApplicationInfo(applicationId);
+ UserInfo user = new UserInfo(userName);
+ while (appEventListeners.hasNext()) {
+ ApplicationEventsListener listener =
appEventListeners.next();
+ listener.onUserAddition(app, user);
}
- if ( Util.getContinuousIntegrationSystemDriver() != null){
-
Util.getContinuousIntegrationSystemDriver().createApplicationAccount(applicationId,
new String[]{userName});
-
Util.getContinuousIntegrationSystemDriver().createJob(applicationId,
"trunk", null);
- }
-
- } catch (AppFactoryException ex) {
- String msg = "Error occured while creating a job in
continuous integration system";
- log.error(msg, ex);
- throw new ApplicationManagementException(msg,ex);
+ } catch (Exception ex) {
+ String errorMsg = "Unable to publish user addition event due
to " + ex.getMessage();
+ log.error(errorMsg, ex);
+ throw new ApplicationManagementException(errorMsg, ex);
}
-
+
return true;
}
- //If user is going to be added to a role that he is already having,
remove that role from 'newRoles'
+ // If user is going to be added to a role that he is already having,
remove
+ // that role from 'newRoles'
private String[] removeRolesUserAlreadyIn(String userName, String[]
newRoles, UserRealm realm)
- throws UserStoreException {
+
throws UserStoreException {
ArrayList<String> newRolesArray = new ArrayList<String>();
- for(String newRole : newRoles) {
+ for (String newRole : newRoles) {
newRolesArray.add(newRole);
}
- for(String role :
realm.getUserStoreManager().getRoleListOfUser(userName)) {
+ for (String role :
realm.getUserStoreManager().getRoleListOfUser(userName)) {
if (newRolesArray.contains(role)) {
newRolesArray.remove(role);
}
@@ -95,35 +99,47 @@
return newRolesArray.toArray(new String[newRolesArray.size()]);
}
- public boolean updateRolesOfUserForApplication (String applicationId,
String userName, String[] rolesToDelete, String[] newRoles)
- throws ApplicationManagementException {
+ public boolean updateRolesOfUserForApplication(String applicationId,
String userName,
+ String[] rolesToDelete,
String[] newRoles)
+
throws ApplicationManagementException {
TenantManager tenantManager =
Util.getRealmService().getTenantManager();
try {
- UserRealm realm =
Util.getRealmService().getTenantUserRealm(tenantManager.getTenantId(applicationId));
+ UserRealm realm =
+ Util.getRealmService()
+
.getTenantUserRealm(tenantManager.getTenantId(applicationId));
realm.getUserStoreManager().updateRoleListOfUser(userName,
rolesToDelete, newRoles);
return true;
} catch (UserStoreException e) {
- String msg = "Error while updating roles for user: " +
userName + " of application " + applicationId;
+ String msg =
+ "Error while updating roles for user: " +
userName + " of application " +
+ applicationId;
log.error(msg, e);
throw new ApplicationManagementException(msg, e);
- }
- }
+ }
+ }
- public String[] getUsersOfApplication(String applicationId ) throws
ApplicationManagementException {
+ public String[] getUsersOfApplication(String applicationId)
+ throws
ApplicationManagementException {
TenantManager tenantManager =
Util.getRealmService().getTenantManager();
ArrayList<String> userList = new ArrayList<String>();
try {
- UserRealm realm =
Util.getRealmService().getTenantUserRealm(tenantManager.getTenantId(applicationId));
+ UserRealm realm =
+ Util.getRealmService()
+
.getTenantUserRealm(tenantManager.getTenantId(applicationId));
String[] roles = realm.getUserStoreManager().getRoleNames();
if (roles.length > 0) {
for (String roleName : roles) {
- if
(!Util.getRealmService().getBootstrapRealmConfiguration().getEveryOneRoleName().equals(roleName))
{
- String[] usersOfRole =
realm.getUserStoreManager().getUserListOfRole(roleName);
+ if
(!Util.getRealmService().getBootstrapRealmConfiguration()
+ .getEveryOneRoleName().equals(roleName)) {
+ String[] usersOfRole =
+ realm.getUserStoreManager()
+
.getUserListOfRole(roleName);
if (usersOfRole != null && usersOfRole.length > 0)
{
for (String userName : usersOfRole) {
if (!userList.contains(userName) &&
-
!Util.getRealmService().getBootstrapRealmConfiguration().getAdminUserName().equals(userName)
- &&
!CarbonConstants.REGISTRY_ANONNYMOUS_USERNAME.equals(userName)) {
+
!Util.getRealmService().getBootstrapRealmConfiguration()
+
.getAdminUserName().equals(userName) &&
+
!CarbonConstants.REGISTRY_ANONNYMOUS_USERNAME.equals(userName)) {
userList.add(userName);
}
}
@@ -141,35 +157,78 @@
}
public boolean removeUserFromApplication(String applicationId, String
userName)
- throws ApplicationManagementException {
+
throws ApplicationManagementException {
TenantManager tenantManager =
Util.getRealmService().getTenantManager();
try {
- UserRealm realm =
Util.getRealmService().getTenantUserRealm(tenantManager.getTenantId(applicationId));
+ UserRealm realm =
+ Util.getRealmService()
+
.getTenantUserRealm(tenantManager.getTenantId(applicationId));
realm.getUserStoreManager().deleteUser(userName);
- return true;
+
} catch (UserStoreException e) {
- String msg = "Error while removing user " + userName + " from
application " + applicationId;
+ String msg =
+ "Error while removing user " + userName + " from
application " +
+ applicationId;
log.error(msg, e);
throw new ApplicationManagementException(msg, e);
}
+
+ //Notify listeners about removing the user from application.
+ Iterator<ApplicationEventsListener> appEventListeners =
+
Util.getApplicationEventsListeners()
+
.iterator();
+ try {
+ Application app =
ProjectUtils.getApplicationInfo(applicationId);
+ UserInfo user = new UserInfo(userName);
+ while (appEventListeners.hasNext()) {
+ ApplicationEventsListener listener =
appEventListeners.next();
+ listener.onUserDeletion(app, user);
+ }
+
+ } catch (Exception ex) {
+ String errorMsg = "Unable to publish user deletion event due
to " + ex.getMessage();
+ log.error(errorMsg, ex);
+ throw new ApplicationManagementException(errorMsg, ex);
+ }
+
+ return true;
+
}
-
public boolean revokeApplication(String applicationId) throws
ApplicationManagementException {
TenantManager tenantManager =
Util.getRealmService().getTenantManager();
try {
tenantManager.deleteTenant(tenantManager.getTenantId(applicationId));
- return true;
+
} catch (UserStoreException e) {
String msg = "Error while revoking application " +
applicationId;
log.error(msg, e);
throw new ApplicationManagementException(msg, e);
}
- }
+ // Notify listeners about the revoke
+ Iterator<ApplicationEventsListener> appEventListeners =
+
Util.getApplicationEventsListeners()
+
.iterator();
+
+ try {
+ Application application =
ProjectUtils.getApplicationInfo(applicationId);
+ while (appEventListeners.hasNext()) {
+ ApplicationEventsListener listener =
appEventListeners.next();
+ listener.onRevoke(application);
+ }
+ } catch (AppFactoryException ex) {
+ String errorMsg = "Unable to notify revoke application event
due to " + ex.getMessage();
+ log.error(errorMsg, ex);
+ throw new ApplicationManagementException(errorMsg, ex);
+ }
+
+
+ return true;
+ }
public boolean isApplicationIdAvailable(String applicationKey)
- throws ApplicationManagementException {
+ throws
ApplicationManagementException {
TenantManager tenantManager =
Util.getRealmService().getTenantManager();
int tenantID;
try {
@@ -182,17 +241,23 @@
return tenantID < 0;
}
-
public UserInfoBean getUserInfoBean(String userName) throws
ApplicationManagementException {
try {
- UserRealm realm =
Util.getRealmService().getTenantUserRealm(MultitenantConstants.SUPER_TENANT_ID);
- String email =
realm.getUserStoreManager().getUserClaimValue(userName,
-
EMAIL_CLAIM_URI, null);
- String firstName =
realm.getUserStoreManager().getUserClaimValue(userName,
-
FIRST_NAME_CLAIM_URI, null);
- String lastName =
realm.getUserStoreManager().getUserClaimValue(userName,
-
LAST_NAME_CLAIM_URI, null);
+ UserRealm realm =
+ Util.getRealmService()
+
.getTenantUserRealm(MultitenantConstants.SUPER_TENANT_ID);
+ String email =
+
realm.getUserStoreManager().getUserClaimValue(userName, EMAIL_CLAIM_URI,
+
null);
+ String firstName =
+
realm.getUserStoreManager().getUserClaimValue(userName,
+
FIRST_NAME_CLAIM_URI,
+
null);
+ String lastName =
+
realm.getUserStoreManager().getUserClaimValue(userName,
+
LAST_NAME_CLAIM_URI,
+
null);
return new UserInfoBean(userName, firstName, lastName, email);
} catch (UserStoreException e) {
String msg = "Error while getting info for user " + userName;
@@ -204,18 +269,20 @@
public UserInfoBean[] getUserInfo(String applicationId) throws
ApplicationManagementException {
String[] users = getUsersOfApplication(applicationId);
ArrayList<UserInfoBean> userInfoList = new
ArrayList<UserInfoBean>();
- if (users != null && users.length >0 ) {
- for(int i = 0 ; i < users.length; i++ ) {
+ if (users != null && users.length > 0) {
+ for (int i = 0; i < users.length; i++) {
try {
userInfoList.add(getUserInfoBean(users[i]));
} catch (ApplicationManagementException e) {
- String msg = "Error while getting info for user " +
users[i]+ "\n Continue getting other users information";
+ String msg =
+ "Error while getting info for user " +
users[i] +
+ "\n Continue getting other users
information";
log.error(msg, e);
}
}
}
return userInfoList.toArray(new UserInfoBean[userInfoList.size()]);
- }
+ }
public String[] getAllApplications(String userName) throws
ApplicationManagementException {
String apps[] = new String[0];
@@ -227,7 +294,8 @@
for (Tenant tenant : tenants) {
UserRealm realm =
Util.getRealmService().getTenantUserRealm(tenant.getId());
// every user in everyone role
- if (realm != null &&
realm.getUserStoreManager().getRoleListOfUser(userName).length > 1) {
+ if (realm != null &&
+
realm.getUserStoreManager().getRoleListOfUser(userName).length > 1) {
list.add(tenant.getDomain());
}
}
@@ -245,18 +313,21 @@
}
public String[] getRolesOfUserPerApplication(String appId, String
userName)
- throws ApplicationManagementException {
+
throws ApplicationManagementException {
TenantManager tenantManager =
Util.getRealmService().getTenantManager();
org.wso2.carbon.user.api.UserStoreManager userStoreManager;
userStoreManager = null;
ArrayList<String> roleList = new ArrayList<String>();
String roles[];
try {
- UserRealm realm =
Util.getRealmService().getTenantUserRealm(tenantManager.getTenantId(appId));
+ UserRealm realm =
+ Util.getRealmService()
+
.getTenantUserRealm(tenantManager.getTenantId(appId));
userStoreManager = realm.getUserStoreManager();
roles = userStoreManager.getRoleListOfUser(userName);
- for(String role : roles) {
-
if(!Util.getRealmService().getBootstrapRealmConfiguration().getEveryOneRoleName().equals(role))
{
+ for (String role : roles) {
+ if
(!Util.getRealmService().getBootstrapRealmConfiguration().getEveryOneRoleName()
+ .equals(role)) {
roleList.add(role);
}
}
@@ -267,26 +338,72 @@
}
return roleList.toArray(new String[roleList.size()]);
}
-
- public boolean configureContinuousIntegrationForApplication(String
applicationId, String[] initialUserNames)
- throws ApplicationManagementException{
-
- try {
- if ( log.isDebugEnabled()){
- log.debug("configure a continuous integration system for
application id: " + applicationId);
+
+ public void publishApplicationCreation(String applicationId)
+ throws
ApplicationManagementException {
+ Iterator<ApplicationEventsListener> appEventListeners =
+
Util.getApplicationEventsListeners()
+
.iterator();
+ try {
+ Application application =
ProjectUtils.getApplicationInfo(applicationId);
+ if (application == null) {
+ String errorMsg =
+ String.format("Unable to load
application information for id ",
+ applicationId);
+ throw new ApplicationManagementException(errorMsg);
}
-
- if ( Util.getContinuousIntegrationSystemDriver() != null){
-
Util.getContinuousIntegrationSystemDriver().createApplicationAccount(applicationId,
initialUserNames);
-
Util.getContinuousIntegrationSystemDriver().createJob(applicationId,
"trunk", null);
+
+ while (appEventListeners.hasNext()) {
+ ApplicationEventsListener listener =
appEventListeners.next();
+ listener.onCreation(application);
}
+ } catch (AppFactoryException ex) {
+ String errorMsg = "Unable to publish application creation due
to : " + ex.getMessage();
+ log.error(errorMsg, ex);
+ throw new ApplicationManagementException(errorMsg, ex);
+ }
+ }
+
+ public void publishApplicationVersionCreation(String applicationId,
String sourceVersion, String targetVersion)
+
throws ApplicationManagementException {
+ try {
+
+ Iterator<ApplicationEventsListener> appEventListeners =
+ Util.getApplicationEventsListeners()
+ .iterator();
+
+ Application application =
ProjectUtils.getApplicationInfo(applicationId);
+
+ Version[] versions = ProjectUtils.getVersions(applicationId);
+ //find the versions.
+ Version source = null;
+ Version target = null;
+ for (Version v : versions) {
+ if ( v.getId().equals(sourceVersion)){
+ source = v;
+ }
+
+ if (v.getId().equals(targetVersion)) {
+ target = v;
+ }
+
+ if ( source != null && target != null){
+ // both version are found. no need to traverse more
+ break;
+ }
+
+ }
+
+ while (appEventListeners.hasNext()) {
+ ApplicationEventsListener listener =
appEventListeners.next();
+ listener.onVersionCreation(application, source, target);
+ }
+
} catch (AppFactoryException ex) {
- String msg = "Error occured while configuring in continuous
integration system for : " + applicationId;
- log.error(msg, ex);
- throw new ApplicationManagementException(msg,ex);
+ String errorMsg = "Unable to publish version creation due to "
+ ex.getMessage();
+ log.error(errorMsg, ex);
+ throw new ApplicationManagementException(errorMsg, ex);
}
-
- return true;
}
}
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.applic \
ation.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/util/Util.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/util/Util.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.applic \
ation.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/util/Util.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.applic \
ation.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/util/Util.java
Fri Sep 28 05:35:12 2012
@@ -17,10 +17,17 @@
package org.wso2.carbon.appfactory.application.mgt.util;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
import org.wso2.carbon.appfactory.common.AppFactoryConfiguration;
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;
+import org.wso2.carbon.appfactory.core.ContinuousIntegrationSystemDriver;
import org.wso2.carbon.registry.api.RegistryService;
import org.wso2.carbon.user.core.service.RealmService;
-import org.wso2.carbon.appfactory.core.ContinuousIntegrationSystemDriver;
/**
*
@@ -32,6 +39,16 @@
private static AppFactoryConfiguration configuration;
private static ContinuousIntegrationSystemDriver
continuousIntegrationSystemDriver;
+ /**
+ * This set needs be a {@link SortedSet} ( e.g.{@link TreeSet} ) to
preserve natural
+ * ordering among {@link ApplicationEventsListener}s.
+ * Refer
+ * {@link
ApplicationEventsListener#compareTo(ApplicationEventsListener)} to find out
+ * how natural ordering occurs
+ */
+ private static Set<ApplicationEventsListener>
applicationEventsListeners =
+
Collections.synchronizedSet(new TreeSet<ApplicationEventsListener>());
+
public static AppFactoryConfiguration getConfiguration() {
return configuration;
}
@@ -71,4 +88,16 @@
}
+ public static void
addApplicationEventsListener(ApplicationEventsListener
applicationEventsListener){
+ applicationEventsListeners.add(applicationEventsListener);
+ }
+
+ public static void
removeApplicationEventsListener(ApplicationEventsListener
applicationEventsListener) {
+ applicationEventsListeners.remove(applicationEventsListener);
+ }
+
+ public static Set<ApplicationEventsListener>
getApplicationEventsListeners() {
+ return applicationEventsListeners;
+ }
+
}
Added:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsApplicationEventsListener.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsApplicationEventsListener.java?pathrev=144202
==============================================================================
--- (empty file)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsApplicationEventsListener.java
Fri Sep 28 05:35:12 2012
@@ -0,0 +1,109 @@
+package org.wso2.carbon.appfactory.jenkins.build;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.wso2.carbon.appfactory.common.AppFactoryException;
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;
+import org.wso2.carbon.appfactory.core.dto.Application;
+import org.wso2.carbon.appfactory.core.dto.UserInfo;
+import org.wso2.carbon.appfactory.core.dto.Version;
+import org.wso2.carbon.appfactory.jenkins.build.internal.ServiceContainer;
+import org.wso2.carbon.appfactory.utilities.project.ProjectUtils;
+
+/**
+ * Listens to Application events (such as creation, user addition etc) and
makes
+ * relevant changes on Jenkins CI server.
+ *
+ */
+public class JenkinsApplicationEventsListener extends
ApplicationEventsListener {
+
+ private static Log log =
LogFactory.getLog(JenkinsApplicationEventsListener.class);
+
+ private int priority;
+
+ /**
+ * Creates a listener instance with given priority.
+ *
+ * @param priority
+ * The Priority
+ */
+ public JenkinsApplicationEventsListener(int priority) {
+
+ this.priority = priority;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void onCreation(Application application) throws
AppFactoryException {
+
+ log.info("Application Creation event recieved for : " +
application.getId() + " " +
+ application.getName());
+
ServiceContainer.getJenkinsCISystemDriver().setupApplicationAccount(application.getId());
+
+ Version[] versions = ProjectUtils.getVersions(application.getId());
+
+ if (ArrayUtils.isNotEmpty(versions)) {
+
ServiceContainer.getJenkinsCISystemDriver().createJob(application.getId(),
+
versions[0].getId(), "");
+ }
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void onUserAddition(Application application, UserInfo user)
throws AppFactoryException {
+
+ log.info("User Addition event recieved for : " +
application.getId() + " " +
+ application.getName() + " User Name : " +
user.getUserName());
+
+ ServiceContainer.getJenkinsCISystemDriver()
+ .addUsersToApplication(application.getId(),
+ new String[] {
user.getUserName() });
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void onRevoke(Application application) throws
AppFactoryException {
+ // Improvement : remove the jobs from jenkins
+ // Improvement : Remore roles (since appfactory uses role strategy
+ // plugin) associated with the app
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void onVersionCreation(Application application, Version source,
Version target)
+
throws AppFactoryException {
+
+ log.info("Version Creation event recieved for : " +
application.getId() + " " +
+ application.getName() + " Version : " + target.getId());
+
+
ServiceContainer.getJenkinsCISystemDriver().createJob(application.getId(),
target.getId(),
+ "");
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void onUserDeletion(Application application, UserInfo user)
throws AppFactoryException {
+ // Improvement : remove the user from project role created for
+ // application and the global roles assigned to him.
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ public int getPriority() {
+ return priority;
+ }
+}
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCIConstants.java \
URL: http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfact \
ory/org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCIConstants.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCIConstants.java \
(original) +++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCIConstants.java \
Fri Sep 28 05:35:12 2012 @@ -33,7 +33,9 @@
public static final String AUTHENTICATE_CONFIG_SELECTOR =
"ContinuousIntegrationProvider.jenkins.Property.Authenticate";
public static final String DEFAULT_GLOBAL_ROLES_CONFIG_SELECTOR =
"ContinuousIntegrationProvider.jenkins.Property.DefaultGlobalRoles";
-
+
+ public static final String LISTENER_PRIORITY_CONFIG_SELECTOR =
"ContinuousIntegrationProvider.jenkins.Property.ListenerPriority";
+
public static final String SVN_REPOSITORY = "svn.repository";
public static final String SVN_REPOSITORY_XPATH_SELECTOR =
"/*/scm/locations/hudson.scm.SubversionSCM_-ModuleLocation/remote";
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java
Fri Sep 28 05:35:12 2012
@@ -1,21 +1,25 @@
/*
* Copyright 2005-2011 WSO2, Inc. (http://wso2.com)
- *
- * 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.
+ *
+ * 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.appfactory.jenkins.build;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.appfactory.common.AppFactoryConstants;
@@ -25,15 +29,28 @@
import org.wso2.carbon.appfactory.repository.mgt.RepositoryMgtException;
import org.wso2.carbon.appfactory.utilities.project.ProjectUtils;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
+/**
+ * This driver integrates Jenkins CI and Appfactory. Refer
+ * {@link ContinuousIntegrationSystemDriver} for more information.
+ *
+ */
public class JenkinsCISystemDriver implements
ContinuousIntegrationSystemDriver {
+ /**
+ * Used to connect to jenkins server
+ */
private RestBasedJenkinsCIConnector connector;
+
+ /**
+ * These global roles names should be defined in role based strategy (
+ * jenkins ci) plugin.
+ * Any user added to jenkins will be assigned with these roles.
+ * Typical usage of having such roles is to control access at a global
level
+ * ( e.g. defining slaves, admin access)
+ *
+ */
private String[] defaultGlobalRoles;
-
+
private static final Log log =
LogFactory.getLog(JenkinsCISystemDriver.class);
public JenkinsCISystemDriver(RestBasedJenkinsCIConnector connector,
String[] defaultGlobalRoles) {
@@ -41,6 +58,9 @@
this.defaultGlobalRoles = defaultGlobalRoles;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public void createJob(String applicationId, String version, String
revision)
throws AppFactoryException {
@@ -78,59 +98,101 @@
parameters.put(JenkinsCIConstants.SVN_CREDENTIALS_USERNAME,
ServiceContainer.getAppFactoryConfiguration()
-
.getFirstProperty(AppFactoryConstants.SERVER_ADMIN_NAME));
+
.getFirstProperty(AppFactoryConstants.SERVER_ADMIN_NAME));
parameters.put(JenkinsCIConstants.SVN_CREDENTIALS_PASSWORD,
ServiceContainer.getAppFactoryConfiguration()
-
.getFirstProperty(AppFactoryConstants.SERVER_ADMIN_PASSWORD));
+
.getFirstProperty(AppFactoryConstants.SERVER_ADMIN_PASSWORD));
parameters.put(JenkinsCIConstants.APPLICATION_ID, applicationId);
parameters.put(JenkinsCIConstants.APPLICATION_VERSION, version);
-
- // TODO : Hard coded application extension here. in future this
could be either 'car'or 'war'
+
+ // TODO : Hard coded application extension here. in future this
could be
+ // either 'car'or 'war'
// and will be selected by user
parameters.put(JenkinsCIConstants.APPLICATION_EXTENSION, "car");
-
this.connector.createJob(getJobName(applicationId, version,
revision), parameters);
}
+ /**
+ * {@inheritDoc}
+ */
public void deleteJob(String jobName) throws AppFactoryException {
connector.deleteJob(jobName);
}
+ /**
+ * {@inheritDoc}
+ */
public List<String> getAllJobNames() throws AppFactoryException {
return connector.getAllJobs();
}
+ /**
+ * {@inheritDoc}
+ */
public void startBuild(String jobName) throws AppFactoryException {
connector.startBuild(jobName);
}
- public boolean isJobExists(String jobName) throws AppFactoryException{
- return connector.isJobExists(jobName);
- }
-
-
-
- public String getJobName(String applicationId, String version, String
revision){
- //Job name will be '<ApplicationId>-<version>-default'
- return new StringBuilder(applicationId).append('-').append(version)
- .append('-').append("default").toString();
- }
-
- public void createApplicationAccount(String applicationId, String[]
initialUserIds) throws AppFactoryException {
- String applicationSelectorRegEx = new
StringBuilder(applicationId).append(".*").toString();
- connector.createRole(applicationId, applicationSelectorRegEx);
- if ( initialUserIds != null){
- assignUsersApplication(applicationId, initialUserIds);
- }
- }
-
- public void assignUsersApplication(String applicationId, String[]
userIds)
-
throws AppFactoryException {
- connector.assignUsers(userIds, new String[]{applicationId},
defaultGlobalRoles);
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isJobExists(String jobName) throws AppFactoryException {
+ return connector.isJobExists(jobName);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getJobName(String applicationId, String version, String
revision) {
+ // Job name will be '<ApplicationId>-<version>-default'
+ return new
StringBuilder(applicationId).append('-').append(version).append('-')
+
.append("default").toString();
+ }
+
+ /**
+ * Additional method to be used by {@link
JenkinsApplicationEventsListener}.
+ * Method will add a role (in role strategy plugin) to match jobs
created
+ * for specified application.
+ * (when a user is added/invited to a application,
+ * {@link JenkinsApplicationEventsListener} will assign
+ * the role associated with application to user.
+ * <p>
+ * <b>NOTE: This method assumes role-strategy plugin is correctly
installed
+ * in jenkins server
+ * </p>
+ *
+ * @param applicationId
+ * application Id
+ * @throws AppFactoryException
+ * if an error occurs
+ */
+ public void setupApplicationAccount(String applicationId) throws
AppFactoryException {
+ String applicationSelectorRegEx = new
StringBuilder(applicationId).append(".*").toString();
+ connector.createRole(applicationId, applicationSelectorRegEx);
+ }
+
+ /**
+ * Configures given list of users in jenkins server ( role strategy
plugin)
+ * by assigning correct application specific roles and set of global
roles.
+ * These role should be already defined in jenkins server.
+ * <p>
+ * <b>NOTE: This method assumes role-strategy plugin is correctly
installed
+ * in jenkins server
+ * </p>
+ *
+ * @param applicationId
+ * Application Id
+ * @param userIds
+ * set of users (Ids)
+ * @throws AppFactoryException
+ * if a error occurs
+ */
+ public void addUsersToApplication(String applicationId, String[]
userIds)
+
throws AppFactoryException {
+ connector.assignUsers(userIds, new String[] { applicationId },
defaultGlobalRoles);
}
-
-
+
}
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/RestBasedJenkinsCIConnector.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/RestBasedJenkinsCIConnector.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/RestBasedJenkinsCIConnector.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/RestBasedJenkinsCIConnector.java
Fri Sep 28 05:35:12 2012
@@ -44,14 +44,27 @@
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.appfactory.common.AppFactoryException;
+/**
+ * Connects to a jenkins server using its 'Remote API'.
+ *
+ */
public class RestBasedJenkinsCIConnector {
private static final Log log =
LogFactory.getLog(RestBasedJenkinsCIConnector.class);
+ /**
+ * The http client used to connect jenkins.
+ */
private HttpClient httpClient;
+ /**
+ * Base url of the jenkins
+ */
private String jenkinsUrl;
+ /**
+ * Flag weather this connector needs to authenticate it self.
+ */
private boolean authenticate;
public RestBasedJenkinsCIConnector(String jenkinsUrl, boolean
authenticate, String userName,
@@ -84,6 +97,20 @@
this.jenkinsUrl = jenkinsUrl;
}
+ /**
+ * Creates a project/job role in jenkins server
+ * <p>
+ * <b>NOTE: this method assumes a modified version (by WSO2) of
+ * 'role-strategy' plugin is installed in jenkins server</b>
+ * </p>
+ *
+ * @param roleName
+ * Name of the role.
+ * @param pattern
+ * a regular expression to match jobs (e.g. app1.*)
+ * @throws AppFactoryException
+ * if an error occurs
+ */
public void createRole(String roleName, String pattern) throws
AppFactoryException {
String createRoleUrl =
"/descriptorByName/com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy/createProjectRoleSubmit";
@@ -126,7 +153,24 @@
}
- public void assignUsers(String[] userIds, String[] projectRoleNames,
String[] globalRoleNames) throws AppFactoryException{
+ /**
+ * Assigns a set of global and/or project roles(s) to a specified
user(s)
+ * <p>
+ * <b>NOTE: this method assumes a modified version (by WSO2) of
+ * 'role-strategy' plugin is installed in jenkins server</b>
+ * </p>
+ *
+ * @param userIds
+ * list of user Ids
+ * @param projectRoleNames
+ * list of project roles
+ * @param globalRoleNames
+ * list of global roles
+ * @throws AppFactoryException
+ * if an error occurs
+ */
+ public void assignUsers(String[] userIds, String[] projectRoleNames,
String[] globalRoleNames)
+
throws AppFactoryException {
String assignURL =
"/descriptorByName/com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy/assignRolesSubmit";
@@ -176,6 +220,13 @@
}
+ /**
+ * Returns all the jobs defined in jenkins server
+ *
+ * @return list of job names
+ * @throws AppFactoryException
+ * if an error occurs
+ */
public List<String> getAllJobs() throws AppFactoryException {
List<String> jobNames = null;
@@ -218,6 +269,16 @@
return jobNames;
}
+ /**
+ * Create a job in Jenkins
+ *
+ * @param jobName
+ * name of the job
+ * @param jobParams
+ * Job configuration parameters
+ * @throws AppFactoryException
+ * if an error occures.
+ */
public void createJob(String jobName, Map<String, String> jobParams)
throws AppFactoryException {
OMElement jobConfiguration = new
JobConfigurator(jobParams).configure();
@@ -272,6 +333,15 @@
}
}
+ /**
+ * Checks weather a job exists in Jenkins server
+ *
+ * @param jobName
+ * name of the job.
+ * @return true if job exits, false otherwise.
+ * @throws AppFactoryException
+ * if an error occurs.
+ */
public boolean isJobExists(String jobName) throws AppFactoryException {
final String wrapperTag = "JobNames";
@@ -315,6 +385,15 @@
return isExists;
}
+ /**
+ * Deletes a job
+ *
+ * @param jobName
+ * name of the job
+ * @return true if job exited on Jenkins and successfully deleted.
+ * @throws AppFactoryException
+ * if an error occures.
+ */
public boolean deleteJob(String jobName) throws AppFactoryException {
PostMethod deleteJobMethod =
createPost(String.format("/job/%s/doDelete", jobName), null,
@@ -342,6 +421,14 @@
}
+ /**
+ * Starts a build job available in Jenkins
+ *
+ * @param jobName
+ * Name of the job
+ * @throws AppFactoryException
+ * if an error occurs.
+ */
public void startBuild(String jobName) throws AppFactoryException {
PostMethod startBuildMethod =
createPost(String.format("/job/%s/build", jobName), null,
@@ -385,6 +472,12 @@
}
+ /**
+ * Logs out of the jenkins server
+ *
+ * @throws AppFactoryException
+ * if an error occurs
+ */
public void logout() throws AppFactoryException {
GetMethod logoutMethod = createGet("/logout", null);
try {
@@ -400,6 +493,21 @@
}
+ /**
+ * A convenient methods to pass credentials of a svn repository
(specified
+ * in the job)
+ *
+ * @param jobName
+ * Name of job
+ * @param userName
+ * svn username
+ * @param password
+ * password
+ * @param svnRepo
+ * repo url
+ * @throws AppFactoryException
+ * if an error occurs.
+ */
private void setSvnCredentials(String jobName, String userName, String
password, String svnRepo)
throws AppFactoryException {
final String setCredentialsURL =
@@ -448,6 +556,15 @@
}
}
+ /**
+ * Util method to create a http GET method.
+ *
+ * @param urlFragment
+ * Url fragments
+ * @param queryParameters
+ * query parameters.
+ * @return a {@link GetMethod}
+ */
private GetMethod createGet(String urlFragment, NameValuePair[]
queryParameters) {
GetMethod get = new GetMethod(getJenkinsUrl() + urlFragment);
if (authenticate) {
@@ -459,6 +576,17 @@
return get;
}
+ /**
+ * Util method to create a POST method
+ *
+ * @param urlFragment
+ * Url fragments.
+ * @param queryParameters
+ * Query parameters.
+ * @param requestEntity
+ * A request entity
+ * @return a {@link PostMethod}
+ */
private PostMethod createPost(String urlFragment, NameValuePair[]
queryParameters,
RequestEntity requestEntity) {
PostMethod post = new PostMethod(getJenkinsUrl() + urlFragment);
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/internal/JenkinsBuildServiceComponent.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins \
/build/internal/JenkinsBuildServiceComponent.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/internal/JenkinsBuildServiceComponent.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/internal/JenkinsBuildServiceComponent.java
Fri Sep 28 05:35:12 2012
@@ -16,13 +16,14 @@
package org.wso2.carbon.appfactory.jenkins.build.internal;
-import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.osgi.framework.BundleContext;
import org.osgi.service.component.ComponentContext;
import org.wso2.carbon.appfactory.common.AppFactoryConfiguration;
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;
import org.wso2.carbon.appfactory.core.ContinuousIntegrationSystemDriver;
+import
org.wso2.carbon.appfactory.jenkins.build.JenkinsApplicationEventsListener;
import org.wso2.carbon.appfactory.jenkins.build.JenkinsCIConstants;
import org.wso2.carbon.appfactory.jenkins.build.JenkinsCISystemDriver;
import
org.wso2.carbon.appfactory.jenkins.build.RestBasedJenkinsCIConnector;
@@ -65,7 +66,7 @@
protected void activate(ComponentContext context) {
if (log.isDebugEnabled()) {
- log.info("**************Jenkins build service bundle is
activated*************");
+ log.debug("Jenkins build service bundle is activated");
}
try {
@@ -83,18 +84,20 @@
String jenkinsUrl =
ServiceContainer.getAppFactoryConfiguration()
.getFirstProperty(JenkinsCIConstants.BASE_URL_CONFIG_SELECTOR);
- String jenkinsDefaultGlobalRoles =
-
ServiceContainer.getAppFactoryConfiguration()
-
.getFirstProperty(JenkinsCIConstants.DEFAULT_GLOBAL_ROLES_CONFIG_SELECTOR);
-
-
+ String jenkinsDefaultGlobalRoles =
+
ServiceContainer.getAppFactoryConfiguration()
+
.getFirstProperty(JenkinsCIConstants.DEFAULT_GLOBAL_ROLES_CONFIG_SELECTOR);
+ String listenerPriority =
+
ServiceContainer.getAppFactoryConfiguration()
+
.getFirstProperty(JenkinsCIConstants.LISTENER_PRIORITY_CONFIG_SELECTOR);
+
if (log.isDebugEnabled()) {
log.debug(String.format("Authenticate : %b",
authenticate));
log.debug(String.format("Jenkins user name : %s",
userName));
log.debug(String.format("Jenkins api key : %s",
apiKey));
log.debug(String.format("Jenkins url : %s",
jenkinsUrl));
log.debug(String.format("Default Global Roles : %s",
jenkinsDefaultGlobalRoles));
-
+ log.debug(String.format("Listener Priority : %s",
listenerPriority));
}
RestBasedJenkinsCIConnector connector =
@@ -104,11 +107,22 @@
userName,
apiKey);
String[] globalRoles =
jenkinsDefaultGlobalRoles.split(",");
- if (globalRoles == null){
- globalRoles = new String[]{};
+ if (globalRoles == null) {
+ globalRoles = new String[] {};
+ }
+
+ int jenkinsListnerPriority = -1;
+ try {
+ jenkinsListnerPriority =
Integer.parseInt(listenerPriority);
+ } catch (NumberFormatException nef) {
+ throw new IllegalArgumentException(
+ "Invalid priority
specified for jenkins application event listener. Please provide a number",
+ nef);
}
-
- JenkinsCISystemDriver jenkinsCISystemDriver = new
JenkinsCISystemDriver(connector, globalRoles);
+
+ JenkinsCISystemDriver jenkinsCISystemDriver =
+ new
JenkinsCISystemDriver(connector,
+
globalRoles);
ServiceContainer.setJenkinsCISystemDriver(jenkinsCISystemDriver);
BundleContext bundleContext = context.getBundleContext();
// Note: register the service only if its enabled in the
@@ -116,6 +130,10 @@
// configuration file.
bundleContext.registerService(ContinuousIntegrationSystemDriver.class.getName(),
jenkinsCISystemDriver, null);
+
+ // Registering the Jenkins application event listener.
+
bundleContext.registerService(ApplicationEventsListener.class.getName(),
+ new
JenkinsApplicationEventsListener(jenkinsListnerPriority), null);
} else {
log.info("Jenkins is not enabled");
}
@@ -144,7 +162,7 @@
protected void deactivate(ComponentContext ctxt) {
if (log.isDebugEnabled()) {
- log.info("************* Jenkins build service bundle is
deactivated*************");
+ log.debug("Jenkins build service bundle is deactivated");
}
}
}
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/service/JenkinsCISystemDriverService.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins \
/build/service/JenkinsCISystemDriverService.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/service/JenkinsCISystemDriverService.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.build/ \
1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/service/JenkinsCISystemDriverService.java
Fri Sep 28 05:35:12 2012
@@ -50,15 +50,4 @@
return
ServiceContainer.getJenkinsCISystemDriver().getJobName(applicationId,
version,
revision);
}
-
- public void createApplicationAccount(String applicationId, String[]
initialUserIds) throws AppFactoryException {
-
-
ServiceContainer.getJenkinsCISystemDriver().createApplicationAccount(applicationId,
initialUserIds);
- }
-
- public void assignUsersApplication(String applicationId, String[]
userIds)
-
throws AppFactoryException {
-
ServiceContainer.getJenkinsCISystemDriver().assignUsersApplication(applicationId,
userIds);
- }
-
}
Added:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1 \
.0.2/src/main/java/org/wso2/carbon/appfactory/core/ApplicationEventsListener.java \
URL: http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfact \
ory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/ApplicationEventsListener.java?pathrev=144202
==============================================================================
--- (empty file)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1 \
.0.2/src/main/java/org/wso2/carbon/appfactory/core/ApplicationEventsListener.java \
Fri Sep 28 05:35:12 2012 @@ -0,0 +1,92 @@
+/*
+ * Copyright 2005-2011 WSO2, Inc. (http://wso2.com)
+ *
+ * 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.appfactory.core;
+
+import org.wso2.carbon.appfactory.common.AppFactoryException;
+import org.wso2.carbon.appfactory.core.dto.Application;
+import org.wso2.carbon.appfactory.core.dto.UserInfo;
+import org.wso2.carbon.appfactory.core.dto.Version;
+
+public abstract class ApplicationEventsListener implements
Comparable<ApplicationEventsListener> {
+
+ /**
+ * Invoked after a application is created
+ *
+ * @param application
+ * @throws AppFactoryException
+ */
+ public abstract void onCreation(Application application) throws
AppFactoryException;
+
+ /**
+ * Invoked after adding a user to a application
+ *
+ * @param application
+ * @param user
+ * @throws AppFactoryException
+ */
+ public abstract void onUserAddition(Application application, UserInfo
user) throws AppFactoryException;
+
+ /**
+ * Invoked after removing a user from an application.
+ *
+ * @param application
+ * @param user
+ * @throws AppFactoryException
+ */
+ public abstract void onUserDeletion(Application application, UserInfo
user) throws AppFactoryException;
+
+ /**
+ * Invoked after revoking an application
+ *
+ * @param application
+ * @throws AppFactoryException
+ */
+ public abstract void onRevoke(Application application) throws
AppFactoryException;
+
+ /**
+ * Invoked after creating a new application version using an existing.
+ *
+ * @param application
+ * The Application.
+ * @param source
+ * source version.
+ * @param target
+ * target/new version
+ * @throws AppFactoryException
+ * if an error occurs
+ */
+ public abstract void onVersionCreation(Application application,
Version source, Version target)
+
throws AppFactoryException;
+
+ /**
+ * The priority given to Listener.
+ * <p>
+ * e.g. If listener X has priority 10 and Y has 20. Listner Y will
given
+ * program control before X when application event occurs.
+ *
+ * @return The priority
+ */
+ public abstract int getPriority();
+
+ public int compareTo(ApplicationEventsListener o) {
+
+ return (this.getPriority() < o.getPriority() ? -1
+ : (this.getPriority()
== this.getPriority() ? 0
+
: 1));
+ }
+
+}
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/BuildDriverListener.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/BuildDriverListener.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/BuildDriverListener.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/BuildDriverListener.java
Fri Sep 28 05:35:12 2012
@@ -8,19 +8,19 @@
* Listens to the events of the BuildDriver
*/
public interface BuildDriverListener {
-
- /**
- * Called upon successful build
- *
- * @param applicationId
- * @param version
- * @param revision
- * @param file
- * @throws AppFactoryException
- */
- public void onBuildSuccessful(String applicationId, String version,
- String revision, File file) throws AppFactoryException;
-
+
+ /**
+ * Called upon successful build
+ *
+ * @param applicationId
+ * @param version
+ * @param revision
+ * @param file
+ * @throws AppFactoryException
+ */
+ public void onBuildSuccessful(String applicationId, String version,
String revision, File file)
+
throws AppFactoryException;
+
/**
* Called upon build failure
*
@@ -30,7 +30,7 @@
* @param file
* @throws AppFactoryException
*/
- public void onBuildFailure(String applicationId, String version,
- String revision, String errorMessage)
throws AppFactoryException;
+ public void onBuildFailure(String applicationId, String version,
String revision,
+ String errorMessage) throws
AppFactoryException;
}
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1 \
.0.2/src/main/java/org/wso2/carbon/appfactory/core/ContinuousIntegrationSystemDriver.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/ContinuousIntegrationSystemDriver.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1 \
.0.2/src/main/java/org/wso2/carbon/appfactory/core/ContinuousIntegrationSystemDriver.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1 \
.0.2/src/main/java/org/wso2/carbon/appfactory/core/ContinuousIntegrationSystemDriver.java
Fri Sep 28 05:35:12 2012
@@ -5,27 +5,81 @@
import org.wso2.carbon.appfactory.common.AppFactoryException;
/**
- * Continuous build system driver
+ * Defines the contact what needs to be implemented by any CI Driver (i.e.
+ * Jenkins, Bambo)
+ *
*
*/
public interface ContinuousIntegrationSystemDriver {
+ /**
+ * Setup CI job for given application and versions
+ *
+ * @param applicationId
+ * Id of the application
+ * @param version
+ * version id
+ * @param revision
+ * revision (This parameters is deprecated and need to be
removed
+ * in future)
+ * @throws AppFactoryException
+ * if a error occurs
+ */
public void createJob(String applicationId, String version, String
revision)
throws AppFactoryException;
+ /**
+ * Removes a specified job from CI System.
+ *
+ * @param jobName
+ * Name of the job
+ * @throws AppFactoryException
+ * If a error occurs
+ */
public void deleteJob(String jobName) throws AppFactoryException;
+ /**
+ * Returns jobs available in CI System.
+ *
+ * @return A {@link List} of job names
+ * @throws AppFactoryException
+ * If an error occurs
+ */
public List<String> getAllJobNames() throws AppFactoryException;
+ /**
+ * Starts building the specified CI job.
+ *
+ * @param jobName
+ * Name of the CI Job
+ * @throws AppFactoryException
+ * if an error occurs
+ */
public void startBuild(String jobName) throws AppFactoryException;
+ /**
+ * Checks weather a specified job is available on CI system.
+ *
+ * @param jobName
+ * Name of the job
+ * @return true if job is available, false otherwise
+ * @throws AppFactoryException
+ * if error occurs
+ */
public boolean isJobExists(String jobName) throws AppFactoryException;
-
- public String getJobName(String applicationId, String version, String
revision);
-
- public void createApplicationAccount(String applicationId, String[]
initialUserIds) throws AppFactoryException;
-
- public void assignUsersApplication(String applicationId, String[]
userIds)
- throws
AppFactoryException;
+ /**
+ * Constructs a job name based on supplied parameter. Rational of this
+ * method is to enable CI driver to have control over the job naming
scheme.
+ *
+ * @param applicationId
+ * application Id
+ * @param version
+ * version Id
+ * @param revision
+ * revision id - this parameter is deprecated and will be
removed
+ * in future
+ * @return name of the job
+ */
+ public String getJobName(String applicationId, String version, String
revision);
}
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/ArtifactCreator.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/ArtifactCreator.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/ArtifactCreator.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/ArtifactCreator.java
Fri Sep 28 05:35:12 2012
@@ -30,6 +30,9 @@
public void createArtifact(String applicationId, String version,
String revision)
throws AppFactoryException {
if (ServiceHolder.getContinuousIntegrationSystemDriver() != null) {
+ // Since the CI system is enabled appfactory will give the
preference to it. Appfactory will start
+ // the job if it exists. Once the build is completed
'appfactory-post-build-notifier-plugin' will upload the
+ // artifact onto artifact storage.
String jobName =
ServiceHolder.getContinuousIntegrationSystemDriver()
.getJobName(applicationId,
version, revision);
@@ -37,6 +40,7 @@
ServiceHolder.getContinuousIntegrationSystemDriver().startBuild(jobName);
}
} else {
+ // Default builder will build the Application locally.
DefaultRevisionControlDriverListener listener =
new
DefaultRevisionControlDriverListener();
RevisionControlDriver revisionControlDriver =
ServiceHolder.getRevisionControlDriver();
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1 \
.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/DefaultRevisionControlDriverListener.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/bui \
ld/DefaultRevisionControlDriverListener.java?rev=144202&r1=144201&r2=144202&view=diff \
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1 \
.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/DefaultRevisionControlDriverListener.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1 \
.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/DefaultRevisionControlDriverListener.java
Fri Sep 28 05:35:12 2012
@@ -7,10 +7,11 @@
public class DefaultRevisionControlDriverListener implements
RevisionControlDriverListener {
- public void onGetSourceCompleted(String applicationId, String
version, String revision) throws AppFactoryException{
- BuildDriver buildDriver = ServiceHolder.getBuildDriver();
- DefaultBuildDriverListener listener = new
DefaultBuildDriverListener();
- buildDriver.buildArtifact(applicationId, version, revision,
listener);
- }
+ public void onGetSourceCompleted(String applicationId, String version,
String revision)
+
throws AppFactoryException {
+ BuildDriver buildDriver = ServiceHolder.getBuildDriver();
+ DefaultBuildDriverListener listener = new
DefaultBuildDriverListener();
+ buildDriver.buildArtifact(applicationId, version, revision,
listener);
+ }
}
Added:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Application.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Application.java?pathrev=144202
==============================================================================
--- (empty file)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Application.java
Fri Sep 28 05:35:12 2012
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2005-2011 WSO2, Inc. (http://wso2.com)
+ *
+ * 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.appfactory.core.dto;
+
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;
+
+/**
+ * Holds information about an Application. Refer {@link
ApplicationEventsListener} for usage.
+ */
+public class Application {
+
+ /**
+ * Name of the application
+ */
+ private String name;
+
+ /**
+ * Description of the application
+ */
+ private String description;
+
+ /**
+ * The application Id
+ */
+ private String id;
+
+ private Version[] versions;
+
+ /**
+ * Type of the application (e.g. car, war)
+ */
+ private String type;
+
+ public Application() {
+
+ }
+
+ public Application(String id, String name, String type, String
description) {
+ this.name = name;
+ this.description = description;
+ this.id = id;
+ this.type = type;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+}
Added:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/UserInfo.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/UserInfo.java?pathrev=144202
==============================================================================
--- (empty file)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/UserInfo.java
Fri Sep 28 05:35:12 2012
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2005-2011 WSO2, Inc. (http://wso2.com)
+ *
+ * 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.appfactory.core.dto;
+
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;
+
+/**
+ * Holds information about a user. Refer {@link ApplicationEventsListener}
for usage.
+ */
+public class UserInfo {
+ /**
+ * User id of the User
+ */
+ private String userName;
+
+
+ public UserInfo(){
+
+ }
+
+ public UserInfo(String userName) {
+ this.userName = userName;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((userName == null) ? 0 :
userName.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ UserInfo other = (UserInfo) obj;
+ if (userName == null) {
+ if (other.userName != null)
+ return false;
+ } else if (!userName.equals(other.userName))
+ return false;
+ return true;
+ }
+
+
+}
Added:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Version.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Version.java?pathrev=144202
==============================================================================
--- (empty file)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Version.java
Fri Sep 28 05:35:12 2012
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2005-2011 WSO2, Inc. (http://wso2.com)
+ *
+ * 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.appfactory.core.dto;
+
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;
+
+/**
+ * Holds information about a version. Refer {@link
ApplicationEventsListener} for usage.
+ */
+public class Version {
+ private String id;
+
+ public Version() {
+ }
+
+ public Version(String id) {
+ this.id = id;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setVersion(String version) {
+ this.id = version;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Version other = (Version) obj;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ return true;
+ }
+
+}
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.jenkin \
s.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.jenkins.build/1.0.2/src/main/java/org/wso2/carbon/appfactory \
/jenkins/build/JenkinsCISystemDriver.java?rev=144202&r1=144201&r2=144202&view=diff \
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.jenkin \
s.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.jenkin \
s.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java
Fri Sep 28 05:35:12 2012
@@ -88,7 +88,7 @@
// TODO : Hard coded application extension here. in future this
could be either 'car'or 'war'
// and will be selected by user
-
+
this.connector.createJob(getJobName(applicationId, version,
revision), parameters);
}
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/pom.xml
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.repository.mgt.service/1.0.1/pom.xml?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/pom.xml
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/pom.xml
Fri Sep 28 05:35:12 2012
@@ -70,7 +70,7 @@
<groupId>org.apache.ws.commons.axiom.wso2</groupId>
<artifactId>axiom</artifactId>
<version>1.2.11.wso2v2</version>
- <scope>provided</scope>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-httpclient.wso2</groupId>
@@ -102,6 +102,11 @@
<artifactId>maven-invoker</artifactId>
<version>2.0.11.wso2v1</version>
</dependency>
+ <dependency>
+ <groupId>org.wso2.carbon</groupId>
+ <artifactId>org.wso2.carbon.appfactory.utilities</artifactId>
+ <version>1.0.2</version>
+ </dependency>
</dependencies>
<repositories>
<repository>
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.reposi \
tory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/client/SCMClient.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.repository.mgt.service/1.0.1/src/main/java/org/wso2/carbon/a \
ppfactory/repository/mgt/client/SCMClient.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.reposi \
tory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/client/SCMClient.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.reposi \
tory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/client/SCMClient.java
Fri Sep 28 05:35:12 2012
@@ -17,6 +17,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
import org.apache.maven.scm.ScmException;
import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.ScmResult;
@@ -35,12 +38,16 @@
import
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.embed.Embedder;
import org.wso2.carbon.appfactory.repository.mgt.RepositoryMgtException;
+import
org.wso2.carbon.appfactory.utilities.version.AppVersionStrategyExecutor;
import org.wso2.carbon.utils.CarbonUtils;
import org.apache.commons.io.FileUtils;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.List;
/**
* Repository client that wrapping maven SCM plugin
@@ -146,6 +153,8 @@
try {
CheckOutScmResult checkOutScmResult =
scmManager.checkOut(repository,
new ScmFileSet(checkOutDirectory),
new ScmRevision(revision));
+ AppVersionStrategyExecutor exec =
org.wso2.carbon.appfactory.repository.mgt.util.Util.getVersionStrategyExecutor();
+ exec.doVersion(version, checkOutDirectory);
if (checkOutScmResult.getProviderMessage() == null) {
result = scmManager.branch(repository, new
ScmFileSet(checkOutDirectory), version);
@@ -160,8 +169,6 @@
return processResult(result,checkOutDirectory);
}
-
-
public boolean tag(String baseURL, String version, String revision)
throws RepositoryMgtException {
TagScmResult result = null;
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.reposi \
tory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/internal/RepositoryMgtServiceComponent.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.repository.mgt.service/1.0.1/src/main/java/org/wso2/carbon/a \
ppfactory/repository/mgt/internal/RepositoryMgtServiceComponent.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.reposi \
tory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/internal/RepositoryMgtServiceComponent.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.reposi \
tory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/internal/RepositoryMgtServiceComponent.java
Fri Sep 28 05:35:12 2012
@@ -28,21 +28,27 @@
import org.wso2.carbon.appfactory.repository.mgt.RepositoryProvider;
import
org.wso2.carbon.appfactory.repository.mgt.service.RepositoryAuthenticationService;
import org.wso2.carbon.appfactory.repository.mgt.util.Util;
+import
org.wso2.carbon.appfactory.utilities.version.AppVersionStrategyExecutor;
import org.wso2.carbon.user.core.service.RealmService;
import java.lang.reflect.Constructor;
/**
- * @scr.component name="org.wso2.carbon.appfactory.repository.mgt"
immediate="true"
+ * @scr.component name="org.wso2.carbon.appfactory.repository.mgt"
+ * immediate="true"
* @scr.reference name="appfactory.configuration" interface=
- * "org.wso2.carbon.appfactory.common.AppFactoryConfiguration"
- * cardinality="1..1" policy="dynamic"
- * bind="setAppFactoryConfiguration"
- * unbind="unsetAppFactoryConfiguration"
+ *
"org.wso2.carbon.appfactory.common.AppFactoryConfiguration"
+ * cardinality="1..1" policy="dynamic"
+ * bind="setAppFactoryConfiguration"
+ * unbind="unsetAppFactoryConfiguration"
* @scr.reference name="user.realmservice.default"
- * interface="org.wso2.carbon.user.core.service.RealmService"
- * cardinality="1..1" policy="dynamic" bind="setRealmService"
- * unbind="unsetRealmService"
+ *
interface="org.wso2.carbon.user.core.service.RealmService"
+ * cardinality="1..1" policy="dynamic"
bind="setRealmService"
+ * unbind="unsetRealmService"
+ * @scr.reference name="appversion.executor"
+ *
interface="org.wso2.carbon.appfactory.utilities.version.AppVersionStrategyExecutor"
+ * cardinality="1..1" policy="dynamic"
bind="setAppVersionStrategyExecutor"
+ * unbind="unsetAppVersionStrategyExecutor"
*/
public class RepositoryMgtServiceComponent {
Log log = LogFactory.getLog(RepositoryMgtServiceComponent.class);
@@ -65,6 +71,14 @@
Util.setRealmService(null);
}
+ protected void
setAppVersionStrategyExecutor(AppVersionStrategyExecutor versionExecutor) {
+ Util.setVersionStrategyExecutor(versionExecutor);
+ }
+
+ protected void
unsetAppVersionStrategyExecutor(AppVersionStrategyExecutor versionExecutor)
{
+ Util.setVersionStrategyExecutor(null);
+ }
+
protected void activate(ComponentContext context) {
if (log.isDebugEnabled()) {
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.reposi \
tory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/util/Util.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.repository.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/util/Util.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.reposi \
tory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/util/Util.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.reposi \
tory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/util/Util.java
Fri Sep 28 05:35:12 2012
@@ -17,8 +17,8 @@
package org.wso2.carbon.appfactory.repository.mgt.util;
import org.wso2.carbon.appfactory.common.AppFactoryConfiguration;
-import org.wso2.carbon.appfactory.core.RevisionControlDriver;
import org.wso2.carbon.appfactory.repository.mgt.RepositoryProvider;
+import
org.wso2.carbon.appfactory.utilities.version.AppVersionStrategyExecutor;
import org.wso2.carbon.user.core.service.RealmService;
import java.util.HashMap;
@@ -31,6 +31,7 @@
public class Util {
private static AppFactoryConfiguration configuration=null;
private static RealmService realmService;
+ private static AppVersionStrategyExecutor versionStrategyExecutor;
private static Map<String,RepositoryProvider>
repositoryProviderMap=new HashMap<String, RepositoryProvider>();;
public static AppFactoryConfiguration getConfiguration() {
@@ -55,4 +56,15 @@
public static void setRepositoryProvider(String
type,RepositoryProvider provider) {
Util.repositoryProviderMap.put(type,provider);
}
+
+ public static AppVersionStrategyExecutor
getVersionStrategyExecutor() {
+ return versionStrategyExecutor;
+ }
+
+ public static void setVersionStrategyExecutor(
+ AppVersionStrategyExecutor versionStrategyExecutor)
{
+ Util.versionStrategyExecutor = versionStrategyExecutor;
+ }
+
+
}
Modified:
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.utilit \
ies/1.0.2/src/main/java/org/wso2/carbon/appfactory/utilities/project/ProjectUtils.java
URL:
http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/components/appfactory/o \
rg.wso2.carbon.appfactory.utilities/1.0.2/src/main/java/org/wso2/carbon/appfactory/utilities/project/ProjectUtils.java?rev=144202&r1=144201&r2=144202&view=diff
==============================================================================
---
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.utilit \
ies/1.0.2/src/main/java/org/wso2/carbon/appfactory/utilities/project/ProjectUtils.java
(original)
+++
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.utilit \
ies/1.0.2/src/main/java/org/wso2/carbon/appfactory/utilities/project/ProjectUtils.java
Fri Sep 28 05:35:12 2012
@@ -13,14 +13,19 @@
import org.wso2.carbon.appfactory.common.AppFactoryConfiguration;
import org.wso2.carbon.appfactory.common.AppFactoryConstants;
import org.wso2.carbon.appfactory.common.AppFactoryException;
+import org.wso2.carbon.appfactory.core.dto.Application;
+import org.wso2.carbon.appfactory.core.dto.Version;
import
org.wso2.carbon.appfactory.utilities.internal.ServiceReferenceHolder;
+import org.wso2.carbon.governance.api.exception.GovernanceException;
import org.wso2.carbon.governance.api.generic.GenericArtifactManager;
import
org.wso2.carbon.governance.api.generic.dataobjects.GenericArtifactImpl;
import org.wso2.carbon.governance.api.util.GovernanceUtils;
+import org.wso2.carbon.registry.core.Collection;
import org.wso2.carbon.registry.core.Resource;
import org.wso2.carbon.registry.core.exceptions.RegistryException;
import org.wso2.carbon.registry.core.service.RegistryService;
import org.wso2.carbon.registry.core.session.UserRegistry;
+import org.wso2.carbon.registry.core.utils.RegistryUtils;
import java.io.File;
import java.util.ArrayList;
@@ -143,22 +148,180 @@
return optsBuilder.toString();*/
}
- public static String getApplicationType(String applicationId) throws
AppFactoryException{
+ /**
+ * Returns the type of the application given the application Id
+ *
+ * @param applicationId
+ * Id of the application
+ * @return the type
+ * @throws AppFactoryException
+ * if an error occurs.
+ */
+ public static String getApplicationType(String applicationId) throws
AppFactoryException {
+
+ GenericArtifactImpl artifact =
getApplicationArtifact(applicationId);
+
+ if (artifact == null) {
+ String errorMsg =
+ String.format("Unable to find applcation
information for id : %s",
+ applicationId);
+ log.error(errorMsg);
+ throw new AppFactoryException(errorMsg);
+
+ }
+
+ try {
+ return artifact.getAttribute("application_type");
+ } catch (RegistryException e) {
+ String errorMsg =
+ String.format("Unable to find the
application type for applicaiton id: %s",
+ applicationId);
+ log.error(errorMsg, e);
+ throw new AppFactoryException(errorMsg, e);
+ }
+ }
+
+ /**
+ * Provides information about an application.
+ *
+ * @param applicationId
+ * id of the application
+ * @return {@link Application}
+ * @throws AppFactoryException
+ * if an error occurs
+ */
+ public static Application getApplicationInfo(String applicationId)
throws AppFactoryException {
+
+ GenericArtifactImpl artifact =
getApplicationArtifact(applicationId);
+
+ if (artifact == null) {
+ String errorMsg =
+ String.format("Unable to find applcation
information for id : %s",
+ applicationId);
+ log.error(errorMsg);
+ throw new AppFactoryException(errorMsg);
+
+ }
+ Application appInfo = null;
+
+ try {
+ appInfo =
+ new
Application(artifact.getAttribute("application_key"),
+
artifact.getAttribute("application_name"),
+
artifact.getAttribute("application_type"),
+
artifact.getAttribute("application_description"));
+ } catch (GovernanceException e) {
+ String errorMsg =
+ String.format("Unable to extract information
for application id : %s",
+ applicationId);
+ log.error(errorMsg);
+ throw new AppFactoryException(errorMsg);
+ }
+
+ return appInfo;
+ }
+
+ /**
+ * Returns all available versions of a application
+ *
+ * @param applicationId
+ * Id of the application
+ * @return an Array of {@link Version}
+ * @throws AppFactoryException
+ * if an error occurres
+ */
+ public static Version[] getVersions(String applicationId) throws
AppFactoryException {
+ List<Version> versions = new ArrayList<Version>();
try {
- RegistryService registryService =
ServiceReferenceHolder.getInstance().getRegistryService();
+ RegistryService registryService =
+
ServiceReferenceHolder.getInstance()
+
.getRegistryService();
UserRegistry userRegistry =
registryService.getGovernanceSystemRegistry();
- Resource resource =
userRegistry.get(AppFactoryConstants.REGISTRY_APPLICATION_PATH +
- File.separator +
applicationId + File.separator + "appinfo");
+ // child nodes of this will contains folders for all life
cycles (
+ // e.g. QA, Dev, Prod)
+ Resource application =
+
userRegistry.get(AppFactoryConstants.REGISTRY_APPLICATION_PATH +
+ File.separator +
applicationId);
+
+ if (application != null && application instanceof Collection) {
+
+ // Contains paths to life cycles (.e.g .../<appid>/dev,
+ // .../<appid>/qa , .../<appid>/prod )
+ String[] definedLifeCyclePaths = ((Collection)
application).getChildren();
+
+ for (String lcPath : definedLifeCyclePaths) {
+
+ Resource versionsInLCResource =
userRegistry.get(lcPath);
+ if (versionsInLCResource != null &&
versionsInLCResource instanceof Collection) {
+
+ // contains paths to a versions (e.g.
+ // .../<appid>/<lifecycle>/trunk,
+ // .../<appid>/<lifecycle>/1.0.1 )
+ String[] versionPaths = ((Collection)
versionsInLCResource).getChildren();
+
+ for (String versionPath : versionPaths) {
+ // extract the name of the resource ( which
will be
+ // the version id)
+ String versionId =
RegistryUtils.getResourceName(versionPath);
+ Version version = new Version(versionId);
+ versions.add(version);
+ }
+ }
+
+ }
+
+ }
+
+ } catch (RegistryException e) {
+ String errorMsg =
+ String.format("Unable to load the
application information for applicaiton id: %s",
+ applicationId);
+ log.error(errorMsg, e);
+ throw new AppFactoryException(errorMsg, e);
+ }
+
+ return versions.toArray(new Version[versions.size()]);
+ }
+
+ /**
+ * A Util method to load an Application artifact from the registry.
+ *
+ * @param applicationId
+ * the application Id
+ * @return a {@link GenericArtifactImpl} representing the application
or
+ * null if application (by the id is not in registry)
+ * @throws AppFactoryException
+ * if an error occurs.
+ */
+ private static GenericArtifactImpl getApplicationArtifact(String
applicationId)
+
throws AppFactoryException {
+ GenericArtifactImpl artifact = null;
+ try {
+
+ RegistryService registryService =
+
ServiceReferenceHolder.getInstance()
+
.getRegistryService();
+ UserRegistry userRegistry =
registryService.getGovernanceSystemRegistry();
+ Resource resource =
+
userRegistry.get(AppFactoryConstants.REGISTRY_APPLICATION_PATH +
+ File.separator +
applicationId + File.separator +
+ "appinfo");
GovernanceUtils.loadGovernanceArtifacts(userRegistry);
- GenericArtifactManager artifactManager = new
GenericArtifactManager(userRegistry, "application");
- //GenericArtifact artifact =
artifactManager.getGenericArtifact(resource.getUUID());
- GenericArtifactImpl artifact = (GenericArtifactImpl)
artifactManager.getGenericArtifact(resource.getUUID());
- return artifact.getAttribute("application_type");
+ GenericArtifactManager artifactManager =
+ new
GenericArtifactManager(userRegistry,
+
"application");
+ // GenericArtifact artifact =
+ // artifactManager.getGenericArtifact(resource.getUUID());
+ artifact = (GenericArtifactImpl)
artifactManager.getGenericArtifact(resource.getUUID());
+
} catch (RegistryException e) {
String errorMsg =
- String.format("Unable to find the application type for
applicaiton id: %s", applicationId);
+ String.format("Unable to load the
application information for applicaiton id: %s",
+ applicationId);
log.error(errorMsg, e);
throw new AppFactoryException(errorMsg, e);
}
+
+ return artifact;
}
}
_______________________________________________
Commits mailing list
Commits@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/commits
--
Thanks & regards,
Nirmal
Software Engineer- Platform Technologies Team, WSO2 Inc.
Mobile: +94715779733
Blog: http://nirmalfdo.blogspot.com/
[Attachment #5 (text/html)]
Hi,<br><br>Your commits to \
"carbon/platform/branches/4.0.0/components/appfactory/<span \
class="il">org</span>.wso2.carbon.appfactory.repository.mgt.service/1.0.1" \
breaking the build. I guess you wanted to commit to 1.0.2. <br>
<br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b \
class="gmail_sendername"></b> <span dir="ltr"><<a \
href="mailto:ramith@wso2.com">ramith@wso2.com</a>></span><br>Date: Fri, Sep 28, \
2012 at 3:05 PM<br>
Subject: [Commits] [Carbon-platform] svn commit r144202 - in \
carbon/platform/branches/4.0.0/components/appfactory: \
org.wso2.carbon.appfactory.application.mgt/1.0.2 \
org.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/internal \
org.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/service \
org.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/util \
org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build \
org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/internal \
org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/service \
org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core \
org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build \
org.wso2.carbon.appfactory.cor<br>
To: <a href="mailto:commits@wso2.org">commits@wso2.org</a><br><br><br>Author: \
ramith<br>
Date: Fri Sep 28 05:35:12 2012<br>
New Revision: 144202<br>
URL: <a href="http://wso2.org/svn/browse/wso2?view=rev&revision=144202" \
target="_blank">http://wso2.org/svn/browse/wso2?view=rev&revision=144202</a><br> \
<br> Log:<br>
Adding changes in AF svn branch to 4.0.2<br>
<br>
Added:<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.bui \
ld/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsApplicationEventsListener.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core \
/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/ApplicationEventsListener.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Application.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/UserInfo.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Version.java<br>
Modified:<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/pom.xml<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.appl \
ication.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/internal/ApplicationManagementServiceComponent.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.appl \
ication.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/service/ApplicationManagementService.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.appl \
ication.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/util/Util.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.buil \
d/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCIConstants.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.buil \
d/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.buil \
d/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/RestBasedJenkinsCIConnector.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.buil \
d/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/internal/JenkinsBuildServiceComponent.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.buil \
d/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/service/JenkinsCISystemDriverService.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core \
/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/BuildDriverListener.java<br> \
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1 \
.0.2/src/main/java/org/wso2/carbon/appfactory/core/ContinuousIntegrationSystemDriver.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core \
/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/ArtifactCreator.java<br> \
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1 \
.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/DefaultRevisionControlDriverListener.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.jenk \
ins.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/pom.xml<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repo \
sitory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/client/SCMClient.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repo \
sitory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/internal/RepositoryMgtServiceComponent.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repo \
sitory.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/util/Util.java<br>
carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.util \
ities/1.0.2/src/main/java/org/wso2/carbon/appfactory/utilities/project/ProjectUtils.java<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/pom.xml<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/pom.xml?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/pom.xml?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/pom.xml \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/pom.xml \
Fri Sep 28 05:35:12 2012<br> @@ -60,6 +60,11 @@<br>
<version>${project.version}</version><br>
</dependency><br>
<dependency><br>
+ <groupId>org.wso2.carbon</groupId><br>
+ <artifactId>org.wso2.carbon.appfactory.utilities</artifactId><br>
+ <version>${project.version}</version><br>
+ </dependency><br>
+ <dependency><br>
<groupId>commons-logging</groupId><br>
<artifactId>commons-logging</artifactId><br>
<version>1.1.1</version><br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.application.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/internal/ApplicationManagementServiceComponent.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2/c \
arbon/appfactory/application/mgt/internal/ApplicationManagementServiceComponent.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2 \
/carbon/appfactory/application/mgt/internal/ApplicationManagementServiceComponent.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.ap \
plication.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/internal/ApplicationManagementServiceComponent.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.ap \
plication.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/internal/ApplicationManagementServiceComponent.java \
Fri Sep 28 05:35:12 2012<br>
@@ -23,6 +23,7 @@<br>
import org.wso2.carbon.appfactory.application.mgt.service.ApplicationManagementService;<br>
import org.wso2.carbon.appfactory.application.mgt.util.Util;<br>
import org.wso2.carbon.appfactory.common.AppFactoryConfiguration;<br>
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;<br>
import org.wso2.carbon.appfactory.core.ContinuousIntegrationSystemDriver;<br>
import org.wso2.carbon.registry.core.service.RegistryService;<br>
import org.wso2.carbon.user.core.service.RealmService;<br>
@@ -54,6 +55,12 @@<br>
* cardinality="0..1" policy="dynamic"<br>
* bind="setContinuousIntegrationSystemDriver"<br>
* unbind="unsetContinuousIntegrationSystemDriver"<br>
+ *<br>
+ @scr.reference name="appfactory.application.events.listener"<br>
+ * interface="org.wso2.carbon.appfactory.core.ApplicationEventsListener"<br>
+ * cardinality="0..n" policy="dynamic"<br>
+ * bind="setApplicationEventsListener"<br>
+ * unbind="unsetApplicationEventsListener"<br>
*/<br>
public class ApplicationManagementServiceComponent {<br>
private static Log log = \
LogFactory.getLog(ApplicationManagementServiceComponent.class);<br> @@ -119,4 +126,12 \
@@<br> public static void \
unsetContinuousIntegrationSystemDriver(ContinuousIntegrationSystemDriver \
continuousIntegrationSystemDriver) {<br> \
Util.setContinuousIntegrationSystemDriver(null);<br> }<br>
+<br>
+ public static void setApplicationEventsListener(ApplicationEventsListener \
applicationEventsListener) {<br> + \
Util.addApplicationEventsListener(applicationEventsListener);<br> + }<br>
+<br>
+ public static void unsetApplicationEventsListener(ApplicationEventsListener \
applicationEventsListener) {<br> + \
Util.removeApplicationEventsListener(applicationEventsListener);<br> + }<br>
}<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.application.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/service/ApplicationManagementService.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2/c \
arbon/appfactory/application/mgt/service/ApplicationManagementService.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2 \
/carbon/appfactory/application/mgt/service/ApplicationManagementService.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.ap \
plication.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/service/ApplicationManagementService.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.ap \
plication.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/service/ApplicationManagementService.java \
Fri Sep 28 05:35:12 2012<br>
@@ -1,27 +1,35 @@<br>
/*<br>
* Copyright 2005-2011 WSO2, Inc. (<a href="http://wso2.com" \
target="_blank">http://wso2.com</a>)<br>
- *<br>
- * Licensed under the Apache License, Version 2.0 (the "License");<br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at<br>
- *<br>
- * <a href="http://www.apache.org/licenses/LICENSE-2.0" \
target="_blank">http://www.apache.org/licenses/LICENSE-2.0</a><br>
- *<br>
- * Unless required by applicable law or agreed to in writing, software<br>
- * distributed under the License is distributed on an "AS IS" \
BASIS,<br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br>
- * See the License for the specific language governing permissions and<br>
- * limitations under the License.<br>
+ *<br>
+ * Licensed under the Apache License, Version 2.0 (the "License");<br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at<br>
+ *<br>
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0" \
target="_blank">http://www.apache.org/licenses/LICENSE-2.0</a><br> + *<br>
+ * Unless required by applicable law or agreed to in writing, software<br>
+ * distributed under the License is distributed on an "AS IS" BASIS,<br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br>
+ * See the License for the specific language governing permissions and<br>
+ * limitations under the License.<br>
*/<br>
<br>
package org.wso2.carbon.appfactory.application.mgt.service;<br>
<br>
+import java.util.ArrayList;<br>
+import java.util.Iterator;<br>
+import java.util.List;<br>
<br>
import org.apache.commons.logging.Log;<br>
import org.apache.commons.logging.LogFactory;<br>
import org.wso2.carbon.CarbonConstants;<br>
import org.wso2.carbon.appfactory.application.mgt.util.Util;<br>
import org.wso2.carbon.appfactory.common.AppFactoryException;<br>
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;<br>
+import org.wso2.carbon.appfactory.core.dto.Application;<br>
+import org.wso2.carbon.appfactory.core.dto.UserInfo;<br>
+import org.wso2.carbon.appfactory.core.dto.Version;<br>
+import org.wso2.carbon.appfactory.utilities.project.ProjectUtils;<br>
import org.wso2.carbon.base.MultitenantConstants;<br>
import org.wso2.carbon.core.AbstractAdmin;<br>
import org.wso2.carbon.user.api.Tenant;<br>
@@ -29,10 +37,6 @@<br>
import org.wso2.carbon.user.api.UserRealm;<br>
import org.wso2.carbon.user.api.UserStoreException;<br>
<br>
-import java.util.ArrayList;<br>
-import java.util.List;<br>
-<br>
-<br>
public class ApplicationManagementService extends AbstractAdmin {<br>
private static Log log = \
LogFactory.getLog(ApplicationManagementService.class);<br> <br>
@@ -40,54 +44,54 @@<br>
public static String FIRST_NAME_CLAIM_URI = "<a \
href="http://wso2.org/claims/givenname" \
target="_blank">http://wso2.org/claims/givenname</a>";<br>
public static String LAST_NAME_CLAIM_URI = "<a \
href="http://wso2.org/claims/lastname" \
target="_blank">http://wso2.org/claims/lastname</a>";<br> <br>
-<br>
- public String createApplication(ApplicationInfoBean application) {<br>
- return application.getApplicationKey();<br>
- }<br>
-<br>
-<br>
public boolean addUserToApplication(String applicationId, String userName, \
String[] roles)<br>
- throws ApplicationManagementException {<br>
+ \
throws ApplicationManagementException {<br>
TenantManager tenantManager = Util.getRealmService().getTenantManager();<br>
try {<br>
- UserRealm realm = \
Util.getRealmService().getTenantUserRealm(tenantManager.getTenantId(applicationId));<br>
+ UserRealm realm =<br>
+ Util.getRealmService()<br>
+ \
.getTenantUserRealm(tenantManager.getTenantId(applicationId));<br>
String[] newRolesForUser = removeRolesUserAlreadyIn(userName, roles, \
realm);<br>
realm.getUserStoreManager().updateRoleListOfUser(userName, null, \
newRolesForUser);<br>
-<br>
+<br>
+<br>
} catch (UserStoreException e) {<br>
String msg = "Error while adding user " + userName + " to \
application " + applicationId;<br> log.error(msg, e);<br>
throw new ApplicationManagementException(msg, e);<br>
}<br>
<br>
- try {<br>
- if ( log.isDebugEnabled()){<br>
- log.debug("Creating a continuous integration job for \
application id: " + applicationId + "using trunk");<br> + // \
Notify the event listener about the user addition<br> + \
Iterator<ApplicationEventsListener> appEventListeners =<br> + \
Util.getApplicationEventsListeners()<br> + \
.iterator();<br> + try {<br>
+ Application app = ProjectUtils.getApplicationInfo(applicationId);<br>
+ UserInfo user = new UserInfo(userName);<br>
+ while (appEventListeners.hasNext()) {<br>
+ ApplicationEventsListener listener = appEventListeners.next();<br>
+ listener.onUserAddition(app, user);<br>
}<br>
<br>
- if ( Util.getContinuousIntegrationSystemDriver() != null){<br>
- Util.getContinuousIntegrationSystemDriver().createApplicationAccount(applicationId, \
new String[]{userName});<br>
- Util.getContinuousIntegrationSystemDriver().createJob(applicationId, \
"trunk", null);<br>
- }<br>
-<br>
- } catch (AppFactoryException ex) {<br>
- String msg = "Error occured while creating a job in continuous \
integration system";<br>
- log.error(msg, ex);<br>
- throw new ApplicationManagementException(msg,ex);<br>
+ } catch (Exception ex) {<br>
+ String errorMsg = "Unable to publish user addition event due to \
" + ex.getMessage();<br> + log.error(errorMsg, ex);<br>
+ throw new ApplicationManagementException(errorMsg, ex);<br>
}<br>
-<br>
+<br>
return true;<br>
}<br>
<br>
- //If user is going to be added to a role that he is already having, remove that \
role from 'newRoles'<br> + // If user is going to be added to a role that \
he is already having, remove<br> + // that role from 'newRoles'<br>
private String[] removeRolesUserAlreadyIn(String userName, String[] newRoles, \
UserRealm realm)<br>
- throws UserStoreException {<br>
+ \
throws UserStoreException {<br> <br>
ArrayList<String> newRolesArray = new ArrayList<String>();<br>
- for(String newRole : newRoles) {<br>
+ for (String newRole : newRoles) {<br>
newRolesArray.add(newRole);<br>
}<br>
- for(String role : realm.getUserStoreManager().getRoleListOfUser(userName)) \
{<br> + for (String role : \
realm.getUserStoreManager().getRoleListOfUser(userName)) {<br> if \
(newRolesArray.contains(role)) {<br> newRolesArray.remove(role);<br>
}<br>
@@ -95,35 +99,47 @@<br>
return newRolesArray.toArray(new String[newRolesArray.size()]);<br>
}<br>
<br>
- public boolean updateRolesOfUserForApplication (String applicationId, String \
userName, String[] rolesToDelete, String[] newRoles)<br>
- throws ApplicationManagementException {<br>
+ public boolean updateRolesOfUserForApplication(String applicationId, String \
userName,<br> + String[] \
rolesToDelete, String[] newRoles)<br> + \
throws ApplicationManagementException {<br>
TenantManager tenantManager = Util.getRealmService().getTenantManager();<br>
try {<br>
- UserRealm realm = \
Util.getRealmService().getTenantUserRealm(tenantManager.getTenantId(applicationId));<br>
+ UserRealm realm =<br>
+ Util.getRealmService()<br>
+ \
.getTenantUserRealm(tenantManager.getTenantId(applicationId));<br>
realm.getUserStoreManager().updateRoleListOfUser(userName, \
rolesToDelete, newRoles);<br> return true;<br>
} catch (UserStoreException e) {<br>
- String msg = "Error while updating roles for user: " + \
userName + " of application " + applicationId;<br> + String msg \
=<br> + "Error while updating roles for user: " + \
userName + " of application " +<br> + \
applicationId;<br> log.error(msg, e);<br>
throw new ApplicationManagementException(msg, e);<br>
- }<br>
- }<br>
+ }<br>
+ }<br>
<br>
- public String[] getUsersOfApplication(String applicationId ) throws \
ApplicationManagementException {<br> + public String[] \
getUsersOfApplication(String applicationId)<br> + \
throws ApplicationManagementException {<br>
TenantManager tenantManager = Util.getRealmService().getTenantManager();<br>
ArrayList<String> userList = new ArrayList<String>();<br>
try {<br>
- UserRealm realm = \
Util.getRealmService().getTenantUserRealm(tenantManager.getTenantId(applicationId));<br>
+ UserRealm realm =<br>
+ Util.getRealmService()<br>
+ \
.getTenantUserRealm(tenantManager.getTenantId(applicationId));<br>
String[] roles = realm.getUserStoreManager().getRoleNames();<br>
if (roles.length > 0) {<br>
for (String roleName : roles) {<br>
- if \
(!Util.getRealmService().getBootstrapRealmConfiguration().getEveryOneRoleName().equals(roleName)) \
{<br>
- String[] usersOfRole = \
realm.getUserStoreManager().getUserListOfRole(roleName);<br> + if \
(!Util.getRealmService().getBootstrapRealmConfiguration()<br> + \
.getEveryOneRoleName().equals(roleName)) {<br> + String[] \
usersOfRole =<br> + \
realm.getUserStoreManager()<br> + \
.getUserListOfRole(roleName);<br>
if (usersOfRole != null && usersOfRole.length > \
0) {<br> for (String userName : usersOfRole) {<br>
if (!userList.contains(userName) &&<br>
- \
!Util.getRealmService().getBootstrapRealmConfiguration().getAdminUserName().equals(userName)<br>
- && \
!CarbonConstants.REGISTRY_ANONNYMOUS_USERNAME.equals(userName)) {<br> + \
!Util.getRealmService().getBootstrapRealmConfiguration()<br> + \
.getAdminUserName().equals(userName) &&<br> + \
!CarbonConstants.REGISTRY_ANONNYMOUS_USERNAME.equals(userName)) {<br> \
userList.add(userName);<br> }<br>
}<br>
@@ -141,35 +157,78 @@<br>
}<br>
<br>
public boolean removeUserFromApplication(String applicationId, String \
userName)<br>
- throws ApplicationManagementException {<br>
+ \
throws ApplicationManagementException {<br>
TenantManager tenantManager = Util.getRealmService().getTenantManager();<br>
try {<br>
- UserRealm realm = \
Util.getRealmService().getTenantUserRealm(tenantManager.getTenantId(applicationId));<br>
+ UserRealm realm =<br>
+ Util.getRealmService()<br>
+ \
.getTenantUserRealm(tenantManager.getTenantId(applicationId));<br> \
realm.getUserStoreManager().deleteUser(userName);<br>
- return true;<br>
+<br>
} catch (UserStoreException e) {<br>
- String msg = "Error while removing user " + userName + " \
from application " + applicationId;<br> + String msg =<br>
+ "Error while removing user " + userName + " \
from application " +<br> + applicationId;<br>
log.error(msg, e);<br>
throw new ApplicationManagementException(msg, e);<br>
}<br>
+<br>
+ //Notify listeners about removing the user from application.<br>
+ Iterator<ApplicationEventsListener> appEventListeners =<br>
+ \
Util.getApplicationEventsListeners()<br> + \
.iterator();<br> + try {<br>
+ Application app = ProjectUtils.getApplicationInfo(applicationId);<br>
+ UserInfo user = new UserInfo(userName);<br>
+ while (appEventListeners.hasNext()) {<br>
+ ApplicationEventsListener listener = appEventListeners.next();<br>
+ listener.onUserDeletion(app, user);<br>
+ }<br>
+<br>
+ } catch (Exception ex) {<br>
+ String errorMsg = "Unable to publish user deletion event due to \
" + ex.getMessage();<br> + log.error(errorMsg, ex);<br>
+ throw new ApplicationManagementException(errorMsg, ex);<br>
+ }<br>
+<br>
+ return true;<br>
+<br>
}<br>
<br>
-<br>
public boolean revokeApplication(String applicationId) throws \
ApplicationManagementException {<br>
TenantManager tenantManager = Util.getRealmService().getTenantManager();<br>
try {<br>
tenantManager.deleteTenant(tenantManager.getTenantId(applicationId));<br>
- return true;<br>
+<br>
} catch (UserStoreException e) {<br>
String msg = "Error while revoking application " + \
applicationId;<br> log.error(msg, e);<br>
throw new ApplicationManagementException(msg, e);<br>
}<br>
- }<br>
<br>
+ // Notify listeners about the revoke<br>
+ Iterator<ApplicationEventsListener> appEventListeners =<br>
+ \
Util.getApplicationEventsListeners()<br> + \
.iterator();<br> +<br>
+ try {<br>
+ Application application = \
ProjectUtils.getApplicationInfo(applicationId);<br> + while \
(appEventListeners.hasNext()) {<br> + ApplicationEventsListener \
listener = appEventListeners.next();<br> + \
listener.onRevoke(application);<br> + }<br>
+ } catch (AppFactoryException ex) {<br>
+ String errorMsg = "Unable to notify revoke application event due to \
" + ex.getMessage();<br> + log.error(errorMsg, ex);<br>
+ throw new ApplicationManagementException(errorMsg, ex);<br>
+ }<br>
+<br>
+<br>
+ return true;<br>
+ }<br>
<br>
public boolean isApplicationIdAvailable(String applicationKey)<br>
- throws ApplicationManagementException {<br>
+ throws \
ApplicationManagementException {<br>
TenantManager tenantManager = Util.getRealmService().getTenantManager();<br>
int tenantID;<br>
try {<br>
@@ -182,17 +241,23 @@<br>
return tenantID < 0;<br>
}<br>
<br>
-<br>
public UserInfoBean getUserInfoBean(String userName) throws \
ApplicationManagementException {<br> <br>
try {<br>
- UserRealm realm = \
Util.getRealmService().getTenantUserRealm(MultitenantConstants.SUPER_TENANT_ID);<br>
- String email = \
realm.getUserStoreManager().getUserClaimValue(userName,<br>
- \
EMAIL_CLAIM_URI, null);<br>
- String firstName = \
realm.getUserStoreManager().getUserClaimValue(userName,<br>
- \
FIRST_NAME_CLAIM_URI, null);<br>
- String lastName = \
realm.getUserStoreManager().getUserClaimValue(userName,<br>
- \
LAST_NAME_CLAIM_URI, null);<br> + UserRealm realm =<br>
+ Util.getRealmService()<br>
+ \
.getTenantUserRealm(MultitenantConstants.SUPER_TENANT_ID);<br> + String \
email =<br> + \
realm.getUserStoreManager().getUserClaimValue(userName, EMAIL_CLAIM_URI,<br> + \
null);<br> + String firstName =<br>
+ \
realm.getUserStoreManager().getUserClaimValue(userName,<br> + \
FIRST_NAME_CLAIM_URI,<br> + \
null);<br> + String lastName =<br>
+ \
realm.getUserStoreManager().getUserClaimValue(userName,<br> + \
LAST_NAME_CLAIM_URI,<br> + \
null);<br>
return new UserInfoBean(userName, firstName, lastName, email);<br>
} catch (UserStoreException e) {<br>
String msg = "Error while getting info for user " + \
userName;<br> @@ -204,18 +269,20 @@<br>
public UserInfoBean[] getUserInfo(String applicationId) throws \
ApplicationManagementException {<br> String[] users = \
getUsersOfApplication(applicationId);<br>
ArrayList<UserInfoBean> userInfoList = new \
ArrayList<UserInfoBean>();<br>
- if (users != null && users.length >0 ) {<br>
- for(int i = 0 ; i < users.length; i++ ) {<br>
+ if (users != null && users.length > 0) {<br>
+ for (int i = 0; i < users.length; i++) {<br>
try {<br>
userInfoList.add(getUserInfoBean(users[i]));<br>
} catch (ApplicationManagementException e) {<br>
- String msg = "Error while getting info for user " + \
users[i]+ "\n Continue getting other users information";<br> + \
String msg =<br> + "Error while getting info for \
user " + users[i] +<br> + "\n \
Continue getting other users information";<br> log.error(msg, e);<br>
}<br>
}<br>
}<br>
return userInfoList.toArray(new UserInfoBean[userInfoList.size()]);<br>
- }<br>
+ }<br>
<br>
public String[] getAllApplications(String userName) throws \
ApplicationManagementException {<br> String apps[] = new String[0];<br>
@@ -227,7 +294,8 @@<br>
for (Tenant tenant : tenants) {<br>
UserRealm realm = \
Util.getRealmService().getTenantUserRealm(tenant.getId());<br> // every user in \
everyone role<br>
- if (realm != null && \
realm.getUserStoreManager().getRoleListOfUser(userName).length > 1) {<br> + \
if (realm != null &&<br> + \
realm.getUserStoreManager().getRoleListOfUser(userName).length > 1) {<br> \
list.add(tenant.getDomain());<br> }<br>
}<br>
@@ -245,18 +313,21 @@<br>
}<br>
<br>
public String[] getRolesOfUserPerApplication(String appId, String userName)<br>
- throws ApplicationManagementException {<br>
+ \
throws ApplicationManagementException {<br>
TenantManager tenantManager = Util.getRealmService().getTenantManager();<br>
org.wso2.carbon.user.api.UserStoreManager userStoreManager;<br>
userStoreManager = null;<br>
ArrayList<String> roleList = new ArrayList<String>();<br>
String roles[];<br>
try {<br>
- UserRealm realm = \
Util.getRealmService().getTenantUserRealm(tenantManager.getTenantId(appId));<br> + \
UserRealm realm =<br> + Util.getRealmService()<br>
+ \
.getTenantUserRealm(tenantManager.getTenantId(appId));<br> userStoreManager = \
realm.getUserStoreManager();<br> roles = \
userStoreManager.getRoleListOfUser(userName);<br>
- for(String role : roles) {<br>
- if(!Util.getRealmService().getBootstrapRealmConfiguration().getEveryOneRoleName().equals(role)) \
{<br> + for (String role : roles) {<br>
+ if (!Util.getRealmService().getBootstrapRealmConfiguration().getEveryOneRoleName()<br>
+ .equals(role)) {<br>
roleList.add(role);<br>
}<br>
}<br>
@@ -267,26 +338,72 @@<br>
}<br>
return roleList.toArray(new String[roleList.size()]);<br>
}<br>
-<br>
- public boolean configureContinuousIntegrationForApplication(String \
applicationId, String[] initialUserNames)<br>
- throws ApplicationManagementException{<br>
-<br>
- try {<br>
- if ( log.isDebugEnabled()){<br>
- log.debug("configure a continuous integration system for \
application id: " + applicationId);<br> +<br>
+ public void publishApplicationCreation(String applicationId)<br>
+ throws \
ApplicationManagementException {<br> + \
Iterator<ApplicationEventsListener> appEventListeners =<br> + \
Util.getApplicationEventsListeners()<br> + \
.iterator();<br> + try {<br>
+ Application application = \
ProjectUtils.getApplicationInfo(applicationId);<br> + if (application == \
null) {<br> + String errorMsg =<br>
+ String.format("Unable to load application \
information for id ",<br> + \
applicationId);<br> + throw new \
ApplicationManagementException(errorMsg);<br> }<br>
-<br>
- if ( Util.getContinuousIntegrationSystemDriver() != null){<br>
- Util.getContinuousIntegrationSystemDriver().createApplicationAccount(applicationId, \
initialUserNames);<br>
- Util.getContinuousIntegrationSystemDriver().createJob(applicationId, \
"trunk", null);<br> +<br>
+ while (appEventListeners.hasNext()) {<br>
+ ApplicationEventsListener listener = appEventListeners.next();<br>
+ listener.onCreation(application);<br>
}<br>
+ } catch (AppFactoryException ex) {<br>
+ String errorMsg = "Unable to publish application creation due to : \
" + ex.getMessage();<br> + log.error(errorMsg, ex);<br>
+ throw new ApplicationManagementException(errorMsg, ex);<br>
+ }<br>
+ }<br>
+<br>
+ public void publishApplicationVersionCreation(String applicationId, String \
sourceVersion, String targetVersion)<br> + \
throws ApplicationManagementException {<br> + try {<br>
+<br>
+ Iterator<ApplicationEventsListener> appEventListeners =<br>
+ Util.getApplicationEventsListeners()<br>
+ .iterator();<br>
+<br>
+ Application application = \
ProjectUtils.getApplicationInfo(applicationId);<br> +<br>
+ Version[] versions = ProjectUtils.getVersions(applicationId);<br>
<br>
+ //find the versions.<br>
+ Version source = null;<br>
+ Version target = null;<br>
+ for (Version v : versions) {<br>
+ if ( v.getId().equals(sourceVersion)){<br>
+ source = v;<br>
+ }<br>
+<br>
+ if (v.getId().equals(targetVersion)) {<br>
+ target = v;<br>
+ }<br>
+<br>
+ if ( source != null && target != null){<br>
+ // both version are found. no need to traverse more<br>
+ break;<br>
+ }<br>
+<br>
+ }<br>
+<br>
+ while (appEventListeners.hasNext()) {<br>
+ ApplicationEventsListener listener = appEventListeners.next();<br>
+ listener.onVersionCreation(application, source, target);<br>
+ }<br>
+<br>
} catch (AppFactoryException ex) {<br>
- String msg = "Error occured while configuring in continuous \
integration system for : " + applicationId;<br>
- log.error(msg, ex);<br>
- throw new ApplicationManagementException(msg,ex);<br>
+ String errorMsg = "Unable to publish version creation due to " \
+ ex.getMessage();<br> + log.error(errorMsg, ex);<br>
+ throw new ApplicationManagementException(errorMsg, ex);<br>
}<br>
-<br>
- return true;<br>
}<br>
}<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.application.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/util/Util.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2/c \
arbon/appfactory/application/mgt/util/Util.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.application.mgt/1.0.2/src/main/java/org/wso2 \
/carbon/appfactory/application/mgt/util/Util.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.ap \
plication.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/util/Util.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.ap \
plication.mgt/1.0.2/src/main/java/org/wso2/carbon/appfactory/application/mgt/util/Util.java \
Fri Sep 28 05:35:12 2012<br> @@ -17,10 +17,17 @@<br>
package org.wso2.carbon.appfactory.application.mgt.util;<br>
<br>
<br>
+import java.util.Collections;<br>
+import java.util.HashSet;<br>
+import java.util.Set;<br>
+import java.util.SortedSet;<br>
+import java.util.TreeSet;<br>
+<br>
import org.wso2.carbon.appfactory.common.AppFactoryConfiguration;<br>
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;<br>
+import org.wso2.carbon.appfactory.core.ContinuousIntegrationSystemDriver;<br>
import org.wso2.carbon.registry.api.RegistryService;<br>
import org.wso2.carbon.user.core.service.RealmService;<br>
-import org.wso2.carbon.appfactory.core.ContinuousIntegrationSystemDriver;<br>
<br>
/**<br>
*<br>
@@ -32,6 +39,16 @@<br>
private static AppFactoryConfiguration configuration;<br>
private static ContinuousIntegrationSystemDriver \
continuousIntegrationSystemDriver;<br> <br>
+ /**<br>
+ * This set needs be a {@link SortedSet} ( e.g.{@link TreeSet} ) to preserve \
natural<br> + * ordering among {@link ApplicationEventsListener}s.<br>
+ * Refer<br>
+ * {@link ApplicationEventsListener#compareTo(ApplicationEventsListener)} to \
find out<br> + * how natural ordering occurs<br>
+ */<br>
+ private static Set<ApplicationEventsListener> applicationEventsListeners \
=<br> + \
Collections.synchronizedSet(new TreeSet<ApplicationEventsListener>());<br> \
+<br> public static AppFactoryConfiguration getConfiguration() {<br>
return configuration;<br>
}<br>
@@ -71,4 +88,16 @@<br>
}<br>
<br>
<br>
+ public static void addApplicationEventsListener(ApplicationEventsListener \
applicationEventsListener){<br> + \
applicationEventsListeners.add(applicationEventsListener);<br> + }<br>
+<br>
+ public static void removeApplicationEventsListener(ApplicationEventsListener \
applicationEventsListener) {<br> + \
applicationEventsListeners.remove(applicationEventsListener);<br> + }<br>
+<br>
+ public static Set<ApplicationEventsListener> \
getApplicationEventsListeners() {<br> + return applicationEventsListeners;<br>
+ }<br>
+<br>
}<br>
<br>
Added: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory \
.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsApplicationEventsListener.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsApplicationEventsListener.java?pathrev=144202" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/ap \
pfactory/jenkins/build/JenkinsApplicationEventsListener.java?pathrev=144202</a><br>
==============================================================================<br>
--- (empty file)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.bu \
ild/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsApplicationEventsListener.java \
Fri Sep 28 05:35:12 2012<br>
@@ -0,0 +1,109 @@<br>
+package org.wso2.carbon.appfactory.jenkins.build;<br>
+<br>
+import org.apache.commons.lang.ArrayUtils;<br>
+import org.apache.commons.logging.Log;<br>
+import org.apache.commons.logging.LogFactory;<br>
+import org.wso2.carbon.appfactory.common.AppFactoryException;<br>
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;<br>
+import org.wso2.carbon.appfactory.core.dto.Application;<br>
+import org.wso2.carbon.appfactory.core.dto.UserInfo;<br>
+import org.wso2.carbon.appfactory.core.dto.Version;<br>
+import org.wso2.carbon.appfactory.jenkins.build.internal.ServiceContainer;<br>
+import org.wso2.carbon.appfactory.utilities.project.ProjectUtils;<br>
+<br>
+/**<br>
+ * Listens to Application events (such as creation, user addition etc) and makes<br>
+ * relevant changes on Jenkins CI server.<br>
+ *<br>
+ */<br>
+public class JenkinsApplicationEventsListener extends ApplicationEventsListener \
{<br> +<br>
+ private static Log log = \
LogFactory.getLog(JenkinsApplicationEventsListener.class);<br> +<br>
+ private int priority;<br>
+<br>
+ /**<br>
+ * Creates a listener instance with given priority.<br>
+ *<br>
+ * @param priority<br>
+ * The Priority<br>
+ */<br>
+ public JenkinsApplicationEventsListener(int priority) {<br>
+<br>
+ this.priority = priority;<br>
+ }<br>
+<br>
+ /**<br>
+ * {@inheritDoc}<br>
+ */<br>
+ @Override<br>
+ public void onCreation(Application application) throws AppFactoryException {<br>
+<br>
+ <a href="http://log.info" target="_blank">log.info</a>("Application \
Creation event recieved for : " + application.getId() + " " +<br> + \
application.getName());<br> + \
ServiceContainer.getJenkinsCISystemDriver().setupApplicationAccount(application.getId());<br>
+<br>
+ Version[] versions = ProjectUtils.getVersions(application.getId());<br>
+<br>
+ if (ArrayUtils.isNotEmpty(versions)) {<br>
+ ServiceContainer.getJenkinsCISystemDriver().createJob(application.getId(),<br>
+ \
versions[0].getId(), "");<br> + }<br>
+<br>
+ }<br>
+<br>
+ /**<br>
+ * {@inheritDoc}<br>
+ */<br>
+ @Override<br>
+ public void onUserAddition(Application application, UserInfo user) throws \
AppFactoryException {<br> +<br>
+ <a href="http://log.info" target="_blank">log.info</a>("User Addition \
event recieved for : " + application.getId() + " " +<br> + \
application.getName() + " User Name : " + user.getUserName());<br> +<br>
+ ServiceContainer.getJenkinsCISystemDriver()<br>
+ .addUsersToApplication(application.getId(),<br>
+ new String[] { user.getUserName() \
});<br> + }<br>
+<br>
+ /**<br>
+ * {@inheritDoc}<br>
+ */<br>
+ @Override<br>
+ public void onRevoke(Application application) throws AppFactoryException {<br>
+ // Improvement : remove the jobs from jenkins<br>
+ // Improvement : Remore roles (since appfactory uses role strategy<br>
+ // plugin) associated with the app<br>
+ }<br>
+<br>
+ /**<br>
+ * {@inheritDoc}<br>
+ */<br>
+ @Override<br>
+ public void onVersionCreation(Application application, Version source, Version \
target)<br> + \
throws AppFactoryException {<br> +<br>
+ <a href="http://log.info" target="_blank">log.info</a>("Version \
Creation event recieved for : " + application.getId() + " " +<br> + \
application.getName() + " Version : " + target.getId());<br> +<br>
+ ServiceContainer.getJenkinsCISystemDriver().createJob(application.getId(), \
target.getId(),<br> + \
"");<br> +<br>
+ }<br>
+<br>
+ /**<br>
+ * {@inheritDoc}<br>
+ */<br>
+ @Override<br>
+ public void onUserDeletion(Application application, UserInfo user) throws \
AppFactoryException {<br> + // Improvement : remove the user from project role \
created for<br> + // application and the global roles assigned to him.<br>
+ }<br>
+<br>
+ /**<br>
+ * {@inheritDoc}.<br>
+ */<br>
+ public int getPriority() {<br>
+ return priority;<br>
+ }<br>
+}<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCIConstants.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appf \
actory/jenkins/build/JenkinsCIConstants.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/ap \
pfactory/jenkins/build/JenkinsCIConstants.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.bu \
ild/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCIConstants.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.bu \
ild/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCIConstants.java \
Fri Sep 28 05:35:12 2012<br> @@ -33,7 +33,9 @@<br>
public static final String AUTHENTICATE_CONFIG_SELECTOR =<br>
\
"ContinuousIntegrationProvider.jenkins.Property.Authenticate";<br>
public static final String DEFAULT_GLOBAL_ROLES_CONFIG_SELECTOR = \
"ContinuousIntegrationProvider.jenkins.Property.DefaultGlobalRoles";<br>
-<br>
+<br>
+ public static final String LISTENER_PRIORITY_CONFIG_SELECTOR = \
"ContinuousIntegrationProvider.jenkins.Property.ListenerPriority";<br> \
+<br>
public static final String SVN_REPOSITORY = "svn.repository";<br>
public static final String SVN_REPOSITORY_XPATH_SELECTOR =<br>
\
"/*/scm/locations/hudson.scm.SubversionSCM_-ModuleLocation/remote";<br> \
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appf \
actory/jenkins/build/JenkinsCISystemDriver.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/ap \
pfactory/jenkins/build/JenkinsCISystemDriver.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.bu \
ild/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.bu \
ild/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java \
Fri Sep 28 05:35:12 2012<br> @@ -1,21 +1,25 @@<br>
/*<br>
* Copyright 2005-2011 WSO2, Inc. (<a href="http://wso2.com" \
target="_blank">http://wso2.com</a>)<br>
- *<br>
- * Licensed under the Apache License, Version 2.0 (the "License");<br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at<br>
- *<br>
- * <a href="http://www.apache.org/licenses/LICENSE-2.0" \
target="_blank">http://www.apache.org/licenses/LICENSE-2.0</a><br>
- *<br>
- * Unless required by applicable law or agreed to in writing, software<br>
- * distributed under the License is distributed on an "AS IS" \
BASIS,<br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br>
- * See the License for the specific language governing permissions and<br>
- * limitations under the License.<br>
+ *<br>
+ * Licensed under the Apache License, Version 2.0 (the "License");<br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at<br>
+ *<br>
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0" \
target="_blank">http://www.apache.org/licenses/LICENSE-2.0</a><br> + *<br>
+ * Unless required by applicable law or agreed to in writing, software<br>
+ * distributed under the License is distributed on an "AS IS" BASIS,<br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br>
+ * See the License for the specific language governing permissions and<br>
+ * limitations under the License.<br>
*/<br>
<br>
package org.wso2.carbon.appfactory.jenkins.build;<br>
<br>
+import java.util.HashMap;<br>
+import java.util.List;<br>
+import java.util.Map;<br>
+<br>
import org.apache.commons.logging.Log;<br>
import org.apache.commons.logging.LogFactory;<br>
import org.wso2.carbon.appfactory.common.AppFactoryConstants;<br>
@@ -25,15 +29,28 @@<br>
import org.wso2.carbon.appfactory.repository.mgt.RepositoryMgtException;<br>
import org.wso2.carbon.appfactory.utilities.project.ProjectUtils;<br>
<br>
-import java.util.HashMap;<br>
-import java.util.List;<br>
-import java.util.Map;<br>
-<br>
+/**<br>
+ * This driver integrates Jenkins CI and Appfactory. Refer<br>
+ * {@link ContinuousIntegrationSystemDriver} for more information.<br>
+ *<br>
+ */<br>
public class JenkinsCISystemDriver implements ContinuousIntegrationSystemDriver \
{<br> <br>
+ /**<br>
+ * Used to connect to jenkins server<br>
+ */<br>
private RestBasedJenkinsCIConnector connector;<br>
+<br>
+ /**<br>
+ * These global roles names should be defined in role based strategy (<br>
+ * jenkins ci) plugin.<br>
+ * Any user added to jenkins will be assigned with these roles.<br>
+ * Typical usage of having such roles is to control access at a global level<br>
+ * ( e.g. defining slaves, admin access)<br>
+ *<br>
+ */<br>
private String[] defaultGlobalRoles;<br>
-<br>
+<br>
private static final Log log = \
LogFactory.getLog(JenkinsCISystemDriver.class);<br> <br>
public JenkinsCISystemDriver(RestBasedJenkinsCIConnector connector, String[] \
defaultGlobalRoles) {<br> @@ -41,6 +58,9 @@<br>
this.defaultGlobalRoles = defaultGlobalRoles;<br>
}<br>
<br>
+ /**<br>
+ * {@inheritDoc}<br>
+ */<br>
@Override<br>
public void createJob(String applicationId, String version, String revision)<br>
\
throws AppFactoryException {<br> @@ -78,59 +98,101 @@<br>
<br>
parameters.put(JenkinsCIConstants.SVN_CREDENTIALS_USERNAME,<br>
ServiceContainer.getAppFactoryConfiguration()<br>
- \
.getFirstProperty(AppFactoryConstants.SERVER_ADMIN_NAME));<br> + \
.getFirstProperty(AppFactoryConstants.SERVER_ADMIN_NAME));<br> \
parameters.put(JenkinsCIConstants.SVN_CREDENTIALS_PASSWORD,<br> \
ServiceContainer.getAppFactoryConfiguration()<br>
- \
.getFirstProperty(AppFactoryConstants.SERVER_ADMIN_PASSWORD));<br> + \
.getFirstProperty(AppFactoryConstants.SERVER_ADMIN_PASSWORD));<br> <br>
parameters.put(JenkinsCIConstants.APPLICATION_ID, applicationId);<br>
parameters.put(JenkinsCIConstants.APPLICATION_VERSION, version);<br>
-<br>
- // TODO : Hard coded application extension here. in future this could be \
either 'car'or 'war'<br> +<br>
+ // TODO : Hard coded application extension here. in future this could be<br>
+ // either 'car'or 'war'<br>
// and will be selected by user<br>
parameters.put(JenkinsCIConstants.APPLICATION_EXTENSION, \
"car");<br> <br>
-<br>
this.connector.createJob(getJobName(applicationId, version, revision), \
parameters);<br> <br>
}<br>
<br>
+ /**<br>
+ * {@inheritDoc}<br>
+ */<br>
public void deleteJob(String jobName) throws AppFactoryException {<br>
connector.deleteJob(jobName);<br>
}<br>
<br>
+ /**<br>
+ * {@inheritDoc}<br>
+ */<br>
public List<String> getAllJobNames() throws AppFactoryException {<br>
return connector.getAllJobs();<br>
}<br>
<br>
+ /**<br>
+ * {@inheritDoc}<br>
+ */<br>
public void startBuild(String jobName) throws AppFactoryException {<br>
connector.startBuild(jobName);<br>
}<br>
<br>
- public boolean isJobExists(String jobName) throws AppFactoryException{<br>
- return connector.isJobExists(jobName);<br>
- }<br>
-<br>
-<br>
-<br>
- public String getJobName(String applicationId, String version, String \
revision){<br>
- //Job name will be '<ApplicationId>-<version>-default'<br>
- return new StringBuilder(applicationId).append('-').append(version)<br>
- .append('-').append("default").toString();<br>
- }<br>
-<br>
- public void createApplicationAccount(String applicationId, String[] \
initialUserIds) throws AppFactoryException {<br>
- String applicationSelectorRegEx = new \
StringBuilder(applicationId).append(".*").toString();<br>
- connector.createRole(applicationId, applicationSelectorRegEx);<br>
- if ( initialUserIds != null){<br>
- assignUsersApplication(applicationId, initialUserIds);<br>
- }<br>
- }<br>
-<br>
- public void assignUsersApplication(String applicationId, String[] userIds)<br>
- throws \
AppFactoryException {<br>
- connector.assignUsers(userIds, new String[]{applicationId}, \
defaultGlobalRoles);<br> + /**<br>
+ * {@inheritDoc}<br>
+ */<br>
+ public boolean isJobExists(String jobName) throws AppFactoryException {<br>
+ return connector.isJobExists(jobName);<br>
+ }<br>
+<br>
+ /**<br>
+ * {@inheritDoc}<br>
+ */<br>
+ public String getJobName(String applicationId, String version, String revision) \
{<br> + // Job name will be \
'<ApplicationId>-<version>-default'<br> + return new \
StringBuilder(applicationId).append('-').append(version).append('-')<br>
+ \
.append("default").toString();<br> + }<br>
+<br>
+ /**<br>
+ * Additional method to be used by {@link JenkinsApplicationEventsListener}.<br>
+ * Method will add a role (in role strategy plugin) to match jobs created<br>
+ * for specified application.<br>
+ * (when a user is added/invited to a application,<br>
+ * {@link JenkinsApplicationEventsListener} will assign<br>
+ * the role associated with application to user.<br>
+ * <p><br>
+ * <b>NOTE: This method assumes role-strategy plugin is correctly \
installed<br> + * in jenkins server<br>
+ * </p><br>
+ *<br>
+ * @param applicationId<br>
+ * application Id<br>
+ * @throws AppFactoryException<br>
+ * if an error occurs<br>
+ */<br>
+ public void setupApplicationAccount(String applicationId) throws \
AppFactoryException {<br> + String applicationSelectorRegEx = new \
StringBuilder(applicationId).append(".*").toString();<br> + \
connector.createRole(applicationId, applicationSelectorRegEx);<br> + }<br>
+<br>
+ /**<br>
+ * Configures given list of users in jenkins server ( role strategy plugin)<br>
+ * by assigning correct application specific roles and set of global roles.<br>
+ * These role should be already defined in jenkins server.<br>
+ * <p><br>
+ * <b>NOTE: This method assumes role-strategy plugin is correctly \
installed<br> + * in jenkins server<br>
+ * </p><br>
+ *<br>
+ * @param applicationId<br>
+ * Application Id<br>
+ * @param userIds<br>
+ * set of users (Ids)<br>
+ * @throws AppFactoryException<br>
+ * if a error occurs<br>
+ */<br>
+ public void addUsersToApplication(String applicationId, String[] userIds)<br>
+ throws \
AppFactoryException {<br> + connector.assignUsers(userIds, new String[] { \
applicationId }, defaultGlobalRoles);<br> }<br>
-<br>
-<br>
+<br>
}<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/RestBasedJenkinsCIConnector.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appf \
actory/jenkins/build/RestBasedJenkinsCIConnector.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/ap \
pfactory/jenkins/build/RestBasedJenkinsCIConnector.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.bu \
ild/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/RestBasedJenkinsCIConnector.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.bu \
ild/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/RestBasedJenkinsCIConnector.java \
Fri Sep 28 05:35:12 2012<br> @@ -44,14 +44,27 @@<br>
import org.apache.commons.logging.LogFactory;<br>
import org.wso2.carbon.appfactory.common.AppFactoryException;<br>
<br>
+/**<br>
+ * Connects to a jenkins server using its 'Remote API'.<br>
+ *<br>
+ */<br>
public class RestBasedJenkinsCIConnector {<br>
<br>
private static final Log log = \
LogFactory.getLog(RestBasedJenkinsCIConnector.class);<br> <br>
+ /**<br>
+ * The http client used to connect jenkins.<br>
+ */<br>
private HttpClient httpClient;<br>
<br>
+ /**<br>
+ * Base url of the jenkins<br>
+ */<br>
private String jenkinsUrl;<br>
<br>
+ /**<br>
+ * Flag weather this connector needs to authenticate it self.<br>
+ */<br>
private boolean authenticate;<br>
<br>
public RestBasedJenkinsCIConnector(String jenkinsUrl, boolean authenticate, \
String userName,<br> @@ -84,6 +97,20 @@<br>
this.jenkinsUrl = jenkinsUrl;<br>
}<br>
<br>
+ /**<br>
+ * Creates a project/job role in jenkins server<br>
+ * <p><br>
+ * <b>NOTE: this method assumes a modified version (by WSO2) of<br>
+ * 'role-strategy' plugin is installed in jenkins server</b><br>
+ * </p><br>
+ *<br>
+ * @param roleName<br>
+ * Name of the role.<br>
+ * @param pattern<br>
+ * a regular expression to match jobs (e.g. app1.*)<br>
+ * @throws AppFactoryException<br>
+ * if an error occurs<br>
+ */<br>
public void createRole(String roleName, String pattern) throws \
AppFactoryException {<br> String createRoleUrl =<br>
\
"/descriptorByName/com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy/createProjectRoleSubmit";<br>
@@ -126,7 +153,24 @@<br>
<br>
}<br>
<br>
- public void assignUsers(String[] userIds, String[] projectRoleNames, String[] \
globalRoleNames) throws AppFactoryException{<br> + /**<br>
+ * Assigns a set of global and/or project roles(s) to a specified user(s)<br>
+ * <p><br>
+ * <b>NOTE: this method assumes a modified version (by WSO2) of<br>
+ * 'role-strategy' plugin is installed in jenkins server</b><br>
+ * </p><br>
+ *<br>
+ * @param userIds<br>
+ * list of user Ids<br>
+ * @param projectRoleNames<br>
+ * list of project roles<br>
+ * @param globalRoleNames<br>
+ * list of global roles<br>
+ * @throws AppFactoryException<br>
+ * if an error occurs<br>
+ */<br>
+ public void assignUsers(String[] userIds, String[] projectRoleNames, String[] \
globalRoleNames)<br> + \
throws AppFactoryException {<br> <br>
String assignURL =<br>
\
"/descriptorByName/com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy/assignRolesSubmit";<br>
@@ -176,6 +220,13 @@<br>
<br>
}<br>
<br>
+ /**<br>
+ * Returns all the jobs defined in jenkins server<br>
+ *<br>
+ * @return list of job names<br>
+ * @throws AppFactoryException<br>
+ * if an error occurs<br>
+ */<br>
public List<String> getAllJobs() throws AppFactoryException {<br>
<br>
List<String> jobNames = null;<br>
@@ -218,6 +269,16 @@<br>
return jobNames;<br>
}<br>
<br>
+ /**<br>
+ * Create a job in Jenkins<br>
+ *<br>
+ * @param jobName<br>
+ * name of the job<br>
+ * @param jobParams<br>
+ * Job configuration parameters<br>
+ * @throws AppFactoryException<br>
+ * if an error occures.<br>
+ */<br>
public void createJob(String jobName, Map<String, String> jobParams) \
throws AppFactoryException {<br> <br>
OMElement jobConfiguration = new JobConfigurator(jobParams).configure();<br>
@@ -272,6 +333,15 @@<br>
}<br>
}<br>
<br>
+ /**<br>
+ * Checks weather a job exists in Jenkins server<br>
+ *<br>
+ * @param jobName<br>
+ * name of the job.<br>
+ * @return true if job exits, false otherwise.<br>
+ * @throws AppFactoryException<br>
+ * if an error occurs.<br>
+ */<br>
public boolean isJobExists(String jobName) throws AppFactoryException {<br>
<br>
final String wrapperTag = "JobNames";<br>
@@ -315,6 +385,15 @@<br>
return isExists;<br>
}<br>
<br>
+ /**<br>
+ * Deletes a job<br>
+ *<br>
+ * @param jobName<br>
+ * name of the job<br>
+ * @return true if job exited on Jenkins and successfully deleted.<br>
+ * @throws AppFactoryException<br>
+ * if an error occures.<br>
+ */<br>
public boolean deleteJob(String jobName) throws AppFactoryException {<br>
PostMethod deleteJobMethod =<br>
\
createPost(String.format("/job/%s/doDelete", jobName), null,<br> @@ -342,6 \
+421,14 @@<br> <br>
}<br>
<br>
+ /**<br>
+ * Starts a build job available in Jenkins<br>
+ *<br>
+ * @param jobName<br>
+ * Name of the job<br>
+ * @throws AppFactoryException<br>
+ * if an error occurs.<br>
+ */<br>
public void startBuild(String jobName) throws AppFactoryException {<br>
PostMethod startBuildMethod =<br>
\
createPost(String.format("/job/%s/build", jobName), null,<br> @@ -385,6 \
+472,12 @@<br> <br>
}<br>
<br>
+ /**<br>
+ * Logs out of the jenkins server<br>
+ *<br>
+ * @throws AppFactoryException<br>
+ * if an error occurs<br>
+ */<br>
public void logout() throws AppFactoryException {<br>
GetMethod logoutMethod = createGet("/logout", null);<br>
try {<br>
@@ -400,6 +493,21 @@<br>
<br>
}<br>
<br>
+ /**<br>
+ * A convenient methods to pass credentials of a svn repository (specified<br>
+ * in the job)<br>
+ *<br>
+ * @param jobName<br>
+ * Name of job<br>
+ * @param userName<br>
+ * svn username<br>
+ * @param password<br>
+ * password<br>
+ * @param svnRepo<br>
+ * repo url<br>
+ * @throws AppFactoryException<br>
+ * if an error occurs.<br>
+ */<br>
private void setSvnCredentials(String jobName, String userName, String password, \
String svnRepo)<br>
\
throws AppFactoryException {<br> final String setCredentialsURL =<br>
@@ -448,6 +556,15 @@<br>
}<br>
}<br>
<br>
+ /**<br>
+ * Util method to create a http GET method.<br>
+ *<br>
+ * @param urlFragment<br>
+ * Url fragments<br>
+ * @param queryParameters<br>
+ * query parameters.<br>
+ * @return a {@link GetMethod}<br>
+ */<br>
private GetMethod createGet(String urlFragment, NameValuePair[] queryParameters) \
{<br> GetMethod get = new GetMethod(getJenkinsUrl() + urlFragment);<br>
if (authenticate) {<br>
@@ -459,6 +576,17 @@<br>
return get;<br>
}<br>
<br>
+ /**<br>
+ * Util method to create a POST method<br>
+ *<br>
+ * @param urlFragment<br>
+ * Url fragments.<br>
+ * @param queryParameters<br>
+ * Query parameters.<br>
+ * @param requestEntity<br>
+ * A request entity<br>
+ * @return a {@link PostMethod}<br>
+ */<br>
private PostMethod createPost(String urlFragment, NameValuePair[] \
queryParameters,<br> RequestEntity requestEntity) {<br>
PostMethod post = new PostMethod(getJenkinsUrl() + urlFragment);<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/internal/JenkinsBuildServiceComponent.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appf \
actory/jenkins/build/internal/JenkinsBuildServiceComponent.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/ap \
pfactory/jenkins/build/internal/JenkinsBuildServiceComponent.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.bu \
ild/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/internal/JenkinsBuildServiceComponent.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.bu \
ild/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/internal/JenkinsBuildServiceComponent.java \
Fri Sep 28 05:35:12 2012<br>
@@ -16,13 +16,14 @@<br>
<br>
package org.wso2.carbon.appfactory.jenkins.build.internal;<br>
<br>
-import org.apache.commons.lang.StringUtils;<br>
import org.apache.commons.logging.Log;<br>
import org.apache.commons.logging.LogFactory;<br>
import org.osgi.framework.BundleContext;<br>
import org.osgi.service.component.ComponentContext;<br>
import org.wso2.carbon.appfactory.common.AppFactoryConfiguration;<br>
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;<br>
import org.wso2.carbon.appfactory.core.ContinuousIntegrationSystemDriver;<br>
+import org.wso2.carbon.appfactory.jenkins.build.JenkinsApplicationEventsListener;<br>
import org.wso2.carbon.appfactory.jenkins.build.JenkinsCIConstants;<br>
import org.wso2.carbon.appfactory.jenkins.build.JenkinsCISystemDriver;<br>
import org.wso2.carbon.appfactory.jenkins.build.RestBasedJenkinsCIConnector;<br>
@@ -65,7 +66,7 @@<br>
protected void activate(ComponentContext context) {<br>
<br>
if (log.isDebugEnabled()) {<br>
- <a href="http://log.info" \
target="_blank">log.info</a>("**************Jenkins build service bundle is \
activated*************");<br> + log.debug("Jenkins build service \
bundle is activated");<br> }<br>
try {<br>
<br>
@@ -83,18 +84,20 @@<br>
String jenkinsUrl =<br>
\
ServiceContainer.getAppFactoryConfiguration()<br>
\
.getFirstProperty(JenkinsCIConstants.BASE_URL_CONFIG_SELECTOR);<br>
- String jenkinsDefaultGlobalRoles =<br>
- \
ServiceContainer.getAppFactoryConfiguration()<br>
- \
.getFirstProperty(JenkinsCIConstants.DEFAULT_GLOBAL_ROLES_CONFIG_SELECTOR);<br>
-<br>
-<br>
+ String jenkinsDefaultGlobalRoles =<br>
+ \
ServiceContainer.getAppFactoryConfiguration()<br> + \
.getFirstProperty(JenkinsCIConstants.DEFAULT_GLOBAL_ROLES_CONFIG_SELECTOR);<br> + \
String listenerPriority =<br> + \
ServiceContainer.getAppFactoryConfiguration()<br> + \
.getFirstProperty(JenkinsCIConstants.LISTENER_PRIORITY_CONFIG_SELECTOR);<br> +<br>
if (log.isDebugEnabled()) {<br>
log.debug(String.format("Authenticate : %b", \
authenticate));<br>
log.debug(String.format("Jenkins user name : %s", \
userName));<br>
log.debug(String.format("Jenkins api key : %s", \
apiKey));<br>
log.debug(String.format("Jenkins url : %s", \
jenkinsUrl));<br>
log.debug(String.format("Default Global Roles : %s", \
jenkinsDefaultGlobalRoles));<br>
-<br>
+ log.debug(String.format("Listener Priority : %s", \
listenerPriority));<br> }<br>
<br>
RestBasedJenkinsCIConnector connector =<br>
@@ -104,11 +107,22 @@<br>
\
userName,<br>
\
apiKey);<br>
String[] globalRoles = \
jenkinsDefaultGlobalRoles.split(",");<br>
- if (globalRoles == null){<br>
- globalRoles = new String[]{};<br>
+ if (globalRoles == null) {<br>
+ globalRoles = new String[] {};<br>
+ }<br>
+<br>
+ int jenkinsListnerPriority = -1;<br>
+ try {<br>
+ jenkinsListnerPriority = Integer.parseInt(listenerPriority);<br>
+ } catch (NumberFormatException nef) {<br>
+ throw new IllegalArgumentException(<br>
+ "Invalid priority \
specified for jenkins application event listener. Please provide a number",<br> \
+ nef);<br> }<br>
-<br>
- JenkinsCISystemDriver jenkinsCISystemDriver = new \
JenkinsCISystemDriver(connector, globalRoles);<br> +<br>
+ JenkinsCISystemDriver jenkinsCISystemDriver =<br>
+ new \
JenkinsCISystemDriver(connector,<br> + \
globalRoles);<br>
ServiceContainer.setJenkinsCISystemDriver(jenkinsCISystemDriver);<br>
BundleContext bundleContext = context.getBundleContext();<br>
// Note: register the service only if its enabled in the<br>
@@ -116,6 +130,10 @@<br>
// configuration file.<br>
bundleContext.registerService(ContinuousIntegrationSystemDriver.class.getName(),<br>
jenkinsCISystemDriver, null);<br>
+<br>
+ // Registering the Jenkins application event listener.<br>
+ bundleContext.registerService(ApplicationEventsListener.class.getName(),<br>
+ new \
JenkinsApplicationEventsListener(jenkinsListnerPriority), null);<br> } else {<br>
<a href="http://log.info" target="_blank">log.info</a>("Jenkins \
is not enabled");<br> }<br>
@@ -144,7 +162,7 @@<br>
<br>
protected void deactivate(ComponentContext ctxt) {<br>
if (log.isDebugEnabled()) {<br>
- <a href="http://log.info" \
target="_blank">log.info</a>("************* Jenkins build service bundle is \
deactivated*************");<br> + log.debug("Jenkins build \
service bundle is deactivated");<br> }<br>
}<br>
}<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/service/JenkinsCISystemDriverService.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/appf \
actory/jenkins/build/service/JenkinsCISystemDriverService.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.build/1.0.2/src/main/java/org/wso2/carbon/ap \
pfactory/jenkins/build/service/JenkinsCISystemDriverService.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.bu \
ild/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/service/JenkinsCISystemDriverService.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.bu \
ild/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/service/JenkinsCISystemDriverService.java \
Fri Sep 28 05:35:12 2012<br>
@@ -50,15 +50,4 @@<br>
return ServiceContainer.getJenkinsCISystemDriver().getJobName(applicationId, \
version,<br>
revision);<br>
}<br>
-<br>
- public void createApplicationAccount(String applicationId, String[] \
initialUserIds) throws AppFactoryException {<br>
-<br>
- ServiceContainer.getJenkinsCISystemDriver().createApplicationAccount(applicationId, \
initialUserIds);<br>
- }<br>
-<br>
- public void assignUsersApplication(String applicationId, String[] userIds)<br>
- throws \
AppFactoryException {<br>
- ServiceContainer.getJenkinsCISystemDriver().assignUsersApplication(applicationId, \
userIds);<br>
- }<br>
-<br>
}<br>
<br>
Added: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory \
.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/ApplicationEventsListener.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/ApplicationEventsListener.java?pathrev=144202" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/ApplicationEventsListener.java?pathrev=144202</a><br>
==============================================================================<br>
--- (empty file)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.co \
re/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/ApplicationEventsListener.java \
Fri Sep 28 05:35:12 2012<br> @@ -0,0 +1,92 @@<br>
+/*<br>
+ * Copyright 2005-2011 WSO2, Inc. (<a href="http://wso2.com" \
target="_blank">http://wso2.com</a>)<br> + *<br>
+ * Licensed under the Apache License, Version 2.0 (the "License");<br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at<br>
+ *<br>
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0" \
target="_blank">http://www.apache.org/licenses/LICENSE-2.0</a><br> + *<br>
+ * Unless required by applicable law or agreed to in writing, software<br>
+ * distributed under the License is distributed on an "AS IS" BASIS,<br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br>
+ * See the License for the specific language governing permissions and<br>
+ * limitations under the License.<br>
+ */<br>
+<br>
+package org.wso2.carbon.appfactory.core;<br>
+<br>
+import org.wso2.carbon.appfactory.common.AppFactoryException;<br>
+import org.wso2.carbon.appfactory.core.dto.Application;<br>
+import org.wso2.carbon.appfactory.core.dto.UserInfo;<br>
+import org.wso2.carbon.appfactory.core.dto.Version;<br>
+<br>
+public abstract class ApplicationEventsListener implements \
Comparable<ApplicationEventsListener> {<br> +<br>
+ /**<br>
+ * Invoked after a application is created<br>
+ *<br>
+ * @param application<br>
+ * @throws AppFactoryException<br>
+ */<br>
+ public abstract void onCreation(Application application) throws \
AppFactoryException;<br> +<br>
+ /**<br>
+ * Invoked after adding a user to a application<br>
+ *<br>
+ * @param application<br>
+ * @param user<br>
+ * @throws AppFactoryException<br>
+ */<br>
+ public abstract void onUserAddition(Application application, UserInfo user) \
throws AppFactoryException;<br> +<br>
+ /**<br>
+ * Invoked after removing a user from an application.<br>
+ *<br>
+ * @param application<br>
+ * @param user<br>
+ * @throws AppFactoryException<br>
+ */<br>
+ public abstract void onUserDeletion(Application application, UserInfo user) \
throws AppFactoryException;<br> +<br>
+ /**<br>
+ * Invoked after revoking an application<br>
+ *<br>
+ * @param application<br>
+ * @throws AppFactoryException<br>
+ */<br>
+ public abstract void onRevoke(Application application) throws \
AppFactoryException;<br> +<br>
+ /**<br>
+ * Invoked after creating a new application version using an existing.<br>
+ *<br>
+ * @param application<br>
+ * The Application.<br>
+ * @param source<br>
+ * source version.<br>
+ * @param target<br>
+ * target/new version<br>
+ * @throws AppFactoryException<br>
+ * if an error occurs<br>
+ */<br>
+ public abstract void onVersionCreation(Application application, Version source, \
Version target)<br> + \
throws AppFactoryException;<br> +<br>
+ /**<br>
+ * The priority given to Listener.<br>
+ * <p><br>
+ * e.g. If listener X has priority 10 and Y has 20. Listner Y will given<br>
+ * program control before X when application event occurs.<br>
+ *<br>
+ * @return The priority<br>
+ */<br>
+ public abstract int getPriority();<br>
+<br>
+ public int compareTo(ApplicationEventsListener o) {<br>
+<br>
+ return (this.getPriority() < o.getPriority() ? -1<br>
+ : (this.getPriority() == \
this.getPriority() ? 0<br> + \
: 1));<br> + }<br>
+<br>
+}<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/BuildDriverListener.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfa \
ctory/core/BuildDriverListener.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/app \
factory/core/BuildDriverListener.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/BuildDriverListener.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/BuildDriverListener.java \
Fri Sep 28 05:35:12 2012<br> @@ -8,19 +8,19 @@<br>
* Listens to the events of the BuildDriver<br>
*/<br>
public interface BuildDriverListener {<br>
-<br>
- /**<br>
- * Called upon successful build<br>
- *<br>
- * @param applicationId<br>
- * @param version<br>
- * @param revision<br>
- * @param file<br>
- * @throws AppFactoryException<br>
- */<br>
- public void onBuildSuccessful(String applicationId, String version,<br>
- String revision, File file) throws AppFactoryException;<br>
-<br>
+<br>
+ /**<br>
+ * Called upon successful build<br>
+ *<br>
+ * @param applicationId<br>
+ * @param version<br>
+ * @param revision<br>
+ * @param file<br>
+ * @throws AppFactoryException<br>
+ */<br>
+ public void onBuildSuccessful(String applicationId, String version, String \
revision, File file)<br> + \
throws AppFactoryException;<br> +<br>
/**<br>
* Called upon build failure<br>
*<br>
@@ -30,7 +30,7 @@<br>
* @param file<br>
* @throws AppFactoryException<br>
*/<br>
- public void onBuildFailure(String applicationId, String version,<br>
- String revision, String errorMessage) throws \
AppFactoryException;<br> + public void onBuildFailure(String applicationId, String \
version, String revision,<br> + String errorMessage) \
throws AppFactoryException;<br> <br>
}<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/ContinuousIntegrationSystemDriver.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfa \
ctory/core/ContinuousIntegrationSystemDriver.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/app \
factory/core/ContinuousIntegrationSystemDriver.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.co \
re/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/ContinuousIntegrationSystemDriver.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.co \
re/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/ContinuousIntegrationSystemDriver.java \
Fri Sep 28 05:35:12 2012<br> @@ -5,27 +5,81 @@<br>
import org.wso2.carbon.appfactory.common.AppFactoryException;<br>
<br>
/**<br>
- * Continuous build system driver<br>
+ * Defines the contact what needs to be implemented by any CI Driver (i.e.<br>
+ * Jenkins, Bambo)<br>
+ *<br>
*<br>
*/<br>
public interface ContinuousIntegrationSystemDriver {<br>
<br>
+ /**<br>
+ * Setup CI job for given application and versions<br>
+ *<br>
+ * @param applicationId<br>
+ * Id of the application<br>
+ * @param version<br>
+ * version id<br>
+ * @param revision<br>
+ * revision (This parameters is deprecated and need to be removed<br>
+ * in future)<br>
+ * @throws AppFactoryException<br>
+ * if a error occurs<br>
+ */<br>
public void createJob(String applicationId, String version, String revision)<br>
\
throws AppFactoryException;<br> <br>
+ /**<br>
+ * Removes a specified job from CI System.<br>
+ *<br>
+ * @param jobName<br>
+ * Name of the job<br>
+ * @throws AppFactoryException<br>
+ * If a error occurs<br>
+ */<br>
public void deleteJob(String jobName) throws AppFactoryException;<br>
<br>
+ /**<br>
+ * Returns jobs available in CI System.<br>
+ *<br>
+ * @return A {@link List} of job names<br>
+ * @throws AppFactoryException<br>
+ * If an error occurs<br>
+ */<br>
public List<String> getAllJobNames() throws AppFactoryException;<br>
<br>
+ /**<br>
+ * Starts building the specified CI job.<br>
+ *<br>
+ * @param jobName<br>
+ * Name of the CI Job<br>
+ * @throws AppFactoryException<br>
+ * if an error occurs<br>
+ */<br>
public void startBuild(String jobName) throws AppFactoryException;<br>
<br>
+ /**<br>
+ * Checks weather a specified job is available on CI system.<br>
+ *<br>
+ * @param jobName<br>
+ * Name of the job<br>
+ * @return true if job is available, false otherwise<br>
+ * @throws AppFactoryException<br>
+ * if error occurs<br>
+ */<br>
public boolean isJobExists(String jobName) throws AppFactoryException;<br>
-<br>
- public String getJobName(String applicationId, String version, String \
revision);<br>
-<br>
- public void createApplicationAccount(String applicationId, String[] \
initialUserIds) throws AppFactoryException;<br>
-<br>
- public void assignUsersApplication(String applicationId, String[] userIds)<br>
- throws \
AppFactoryException;<br> <br>
+ /**<br>
+ * Constructs a job name based on supplied parameter. Rational of this<br>
+ * method is to enable CI driver to have control over the job naming scheme.<br>
+ *<br>
+ * @param applicationId<br>
+ * application Id<br>
+ * @param version<br>
+ * version Id<br>
+ * @param revision<br>
+ * revision id - this parameter is deprecated and will be removed<br>
+ * in future<br>
+ * @return name of the job<br>
+ */<br>
+ public String getJobName(String applicationId, String version, String \
revision);<br> }<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/ArtifactCreator.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfa \
ctory/core/build/ArtifactCreator.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/app \
factory/core/build/ArtifactCreator.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.co \
re/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/ArtifactCreator.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.co \
re/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/ArtifactCreator.java Fri \
Sep 28 05:35:12 2012<br> @@ -30,6 +30,9 @@<br>
public void createArtifact(String applicationId, String version, String \
revision)<br>
\
throws AppFactoryException {<br>
if (ServiceHolder.getContinuousIntegrationSystemDriver() != null) {<br>
+ // Since the CI system is enabled appfactory will give the preference to \
it. Appfactory will start<br> + // the job if it exists. Once the build is \
completed 'appfactory-post-build-notifier-plugin' will upload the<br> + \
// artifact onto artifact storage.<br> String jobName =<br>
\
ServiceHolder.getContinuousIntegrationSystemDriver()<br>
.getJobName(applicationId, version, \
revision);<br> @@ -37,6 +40,7 @@<br>
ServiceHolder.getContinuousIntegrationSystemDriver().startBuild(jobName);<br>
}<br>
} else {<br>
+ // Default builder will build the Application locally.<br>
DefaultRevisionControlDriverListener listener =<br>
new \
DefaultRevisionControlDriverListener();<br>
RevisionControlDriver revisionControlDriver = \
ServiceHolder.getRevisionControlDriver();<br> <br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/DefaultRevisionControlDriverListener.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfa \
ctory/core/build/DefaultRevisionControlDriverListener.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/app \
factory/core/build/DefaultRevisionControlDriverListener.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.co \
re/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/DefaultRevisionControlDriverListener.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.co \
re/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/build/DefaultRevisionControlDriverListener.java \
Fri Sep 28 05:35:12 2012<br>
@@ -7,10 +7,11 @@<br>
<br>
public class DefaultRevisionControlDriverListener implements \
RevisionControlDriverListener {<br> <br>
- public void onGetSourceCompleted(String applicationId, String version, String \
revision) throws AppFactoryException{<br>
- BuildDriver buildDriver = ServiceHolder.getBuildDriver();<br>
- DefaultBuildDriverListener listener = new \
DefaultBuildDriverListener();<br>
- buildDriver.buildArtifact(applicationId, version, revision, \
listener);<br>
- }<br>
+ public void onGetSourceCompleted(String applicationId, String version, String \
revision)<br> + \
throws AppFactoryException {<br> + BuildDriver buildDriver = \
ServiceHolder.getBuildDriver();<br> + DefaultBuildDriverListener listener = \
new DefaultBuildDriverListener();<br> + \
buildDriver.buildArtifact(applicationId, version, revision, listener);<br> + }<br>
<br>
}<br>
<br>
Added: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory \
.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Application.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Application.java?pathrev=144202" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Application.java?pathrev=144202</a><br>
==============================================================================<br>
--- (empty file)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Application.java \
Fri Sep 28 05:35:12 2012<br> @@ -0,0 +1,91 @@<br>
+/*<br>
+ * Copyright 2005-2011 WSO2, Inc. (<a href="http://wso2.com" \
target="_blank">http://wso2.com</a>)<br> + *<br>
+ * Licensed under the Apache License, Version 2.0 (the "License");<br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at<br>
+ *<br>
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0" \
target="_blank">http://www.apache.org/licenses/LICENSE-2.0</a><br> + *<br>
+ * Unless required by applicable law or agreed to in writing, software<br>
+ * distributed under the License is distributed on an "AS IS" BASIS,<br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br>
+ * See the License for the specific language governing permissions and<br>
+ * limitations under the License.<br>
+ */<br>
+<br>
+package org.wso2.carbon.appfactory.core.dto;<br>
+<br>
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;<br>
+<br>
+/**<br>
+ * Holds information about an Application. Refer {@link ApplicationEventsListener} \
for usage.<br> + */<br>
+public class Application {<br>
+<br>
+ /**<br>
+ * Name of the application<br>
+ */<br>
+ private String name;<br>
+<br>
+ /**<br>
+ * Description of the application<br>
+ */<br>
+ private String description;<br>
+<br>
+ /**<br>
+ * The application Id<br>
+ */<br>
+ private String id;<br>
+<br>
+ private Version[] versions;<br>
+<br>
+ /**<br>
+ * Type of the application (e.g. car, war)<br>
+ */<br>
+ private String type;<br>
+<br>
+ public Application() {<br>
+<br>
+ }<br>
+<br>
+ public Application(String id, String name, String type, String description) \
{<br> + <a href="http://this.name" target="_blank">this.name</a> = name;<br>
+ this.description = description;<br>
+ <a href="http://this.id" target="_blank">this.id</a> = id;<br>
+ this.type = type;<br>
+ }<br>
+<br>
+ public String getName() {<br>
+ return name;<br>
+ }<br>
+<br>
+ public void setName(String name) {<br>
+ <a href="http://this.name" target="_blank">this.name</a> = name;<br>
+ }<br>
+<br>
+ public String getDescription() {<br>
+ return description;<br>
+ }<br>
+<br>
+ public void setDescription(String description) {<br>
+ this.description = description;<br>
+ }<br>
+<br>
+ public String getId() {<br>
+ return id;<br>
+ }<br>
+<br>
+ public void setId(String id) {<br>
+ <a href="http://this.id" target="_blank">this.id</a> = id;<br>
+ }<br>
+<br>
+ public String getType() {<br>
+ return type;<br>
+ }<br>
+<br>
+ public void setType(String type) {<br>
+ this.type = type;<br>
+ }<br>
+<br>
+}<br>
<br>
Added: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/UserInfo.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/UserInfo.java?pathrev=144202" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/UserInfo.java?pathrev=144202</a><br>
==============================================================================<br>
--- (empty file)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/UserInfo.java \
Fri Sep 28 05:35:12 2012<br> @@ -0,0 +1,73 @@<br>
+/*<br>
+ * Copyright 2005-2011 WSO2, Inc. (<a href="http://wso2.com" \
target="_blank">http://wso2.com</a>)<br> + *<br>
+ * Licensed under the Apache License, Version 2.0 (the "License");<br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at<br>
+ *<br>
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0" \
target="_blank">http://www.apache.org/licenses/LICENSE-2.0</a><br> + *<br>
+ * Unless required by applicable law or agreed to in writing, software<br>
+ * distributed under the License is distributed on an "AS IS" \
BASIS,<br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or \
implied.<br> + * See the License for the specific language governing permissions \
and<br> + * limitations under the License.<br>
+ */<br>
+<br>
+package org.wso2.carbon.appfactory.core.dto;<br>
+<br>
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;<br>
+<br>
+/**<br>
+ * Holds information about a user. Refer {@link ApplicationEventsListener} for \
usage.<br> + */<br>
+public class UserInfo {<br>
+ /**<br>
+ * User id of the User<br>
+ */<br>
+ private String userName;<br>
+<br>
+<br>
+ public UserInfo(){<br>
+<br>
+ }<br>
+<br>
+ public UserInfo(String userName) {<br>
+ this.userName = userName;<br>
+ }<br>
+<br>
+ public String getUserName() {<br>
+ return userName;<br>
+ }<br>
+<br>
+ public void setUserName(String userName) {<br>
+ this.userName = userName;<br>
+ }<br>
+<br>
+ @Override<br>
+ public int hashCode() {<br>
+ final int prime = 31;<br>
+ int result = 1;<br>
+ result = prime * result + ((userName == null) ? 0 : \
userName.hashCode());<br> + return result;<br>
+ }<br>
+<br>
+ @Override<br>
+ public boolean equals(Object obj) {<br>
+ if (this == obj)<br>
+ return true;<br>
+ if (obj == null)<br>
+ return false;<br>
+ if (getClass() != obj.getClass())<br>
+ return false;<br>
+ UserInfo other = (UserInfo) obj;<br>
+ if (userName == null) {<br>
+ if (other.userName != null)<br>
+ return false;<br>
+ } else if (!userName.equals(other.userName))<br>
+ return false;<br>
+ return true;<br>
+ }<br>
+<br>
+<br>
+}<br>
<br>
Added: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Version.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Version.java?pathrev=144202" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Version.java?pathrev=144202</a><br>
==============================================================================<br>
--- (empty file)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.core/1.0.2/src/main/java/org/wso2/carbon/appfactory/core/dto/Version.java \
Fri Sep 28 05:35:12 2012<br> @@ -0,0 +1,67 @@<br>
+/*<br>
+ * Copyright 2005-2011 WSO2, Inc. (<a href="http://wso2.com" \
target="_blank">http://wso2.com</a>)<br> + *<br>
+ * Licensed under the Apache License, Version 2.0 (the "License");<br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at<br>
+ *<br>
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0" \
target="_blank">http://www.apache.org/licenses/LICENSE-2.0</a><br> + *<br>
+ * Unless required by applicable law or agreed to in writing, software<br>
+ * distributed under the License is distributed on an "AS IS" BASIS,<br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br>
+ * See the License for the specific language governing permissions and<br>
+ * limitations under the License.<br>
+ */<br>
+<br>
+package org.wso2.carbon.appfactory.core.dto;<br>
+<br>
+import org.wso2.carbon.appfactory.core.ApplicationEventsListener;<br>
+<br>
+/**<br>
+ * Holds information about a version. Refer {@link ApplicationEventsListener} for \
usage.<br> + */<br>
+public class Version {<br>
+ private String id;<br>
+<br>
+ public Version() {<br>
+ }<br>
+<br>
+ public Version(String id) {<br>
+ <a href="http://this.id" target="_blank">this.id</a> = id;<br>
+ }<br>
+<br>
+ public String getId() {<br>
+ return id;<br>
+ }<br>
+<br>
+ public void setVersion(String version) {<br>
+ <a href="http://this.id" target="_blank">this.id</a> = version;<br>
+ }<br>
+<br>
+ @Override<br>
+ public int hashCode() {<br>
+ final int prime = 31;<br>
+ int result = 1;<br>
+ result = prime * result + ((id == null) ? 0 : id.hashCode());<br>
+ return result;<br>
+ }<br>
+<br>
+ @Override<br>
+ public boolean equals(Object obj) {<br>
+ if (this == obj)<br>
+ return true;<br>
+ if (obj == null)<br>
+ return false;<br>
+ if (getClass() != obj.getClass())<br>
+ return false;<br>
+ Version other = (Version) obj;<br>
+ if (id == null) {<br>
+ if (<a href="http://other.id" target="_blank">other.id</a> != null)<br>
+ return false;<br>
+ } else if (!id.equals(<a href="http://other.id" \
target="_blank">other.id</a>))<br> + return false;<br>
+ return true;<br>
+ }<br>
+<br>
+}<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.jenkins.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.jenkins.build/1.0.2/src/main/java/org/wso2/car \
bon/appfactory/jenkins/build/JenkinsCISystemDriver.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.jenkins.build/1.0.2/src/main/java/org/wso2/c \
arbon/appfactory/jenkins/build/JenkinsCISystemDriver.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.je \
nkins.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.je \
nkins.build/1.0.2/src/main/java/org/wso2/carbon/appfactory/jenkins/build/JenkinsCISystemDriver.java \
Fri Sep 28 05:35:12 2012<br>
@@ -88,7 +88,7 @@<br>
<br>
// TODO : Hard coded application extension here. in future this could be \
either 'car'or 'war'<br> // and will be selected by user<br>
-<br>
+<br>
this.connector.createJob(getJobName(applicationId, version, revision), \
parameters);<br> <br>
}<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/pom.xml<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/pom.xml?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/pom.xml?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/pom.xml \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/pom.xml \
Fri Sep 28 05:35:12 2012<br> @@ -70,7 +70,7 @@<br>
<groupId>org.apache.ws.commons.axiom.wso2</groupId><br>
<artifactId>axiom</artifactId><br>
<version>1.2.11.wso2v2</version><br>
- <scope>provided</scope><br>
+ <scope>provided</scope><br>
</dependency><br>
<dependency><br>
<groupId>commons-httpclient.wso2</groupId><br>
@@ -102,6 +102,11 @@<br>
<artifactId>maven-invoker</artifactId><br>
<version>2.0.11.wso2v1</version><br>
</dependency><br>
+ <dependency><br>
+ <groupId>org.wso2.carbon</groupId><br>
+ <artifactId>org.wso2.carbon.appfactory.utilities</artifactId><br>
+ <version>1.0.2</version><br>
+ </dependency><br>
</dependencies><br>
<repositories><br>
<repository><br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.repository.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/client/SCMClient.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/src/main/java/org \
/wso2/carbon/appfactory/repository/mgt/client/SCMClient.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/src/main/java/o \
rg/wso2/carbon/appfactory/repository/mgt/client/SCMClient.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.re \
pository.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/client/SCMClient.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.re \
pository.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/client/SCMClient.java \
Fri Sep 28 05:35:12 2012<br>
@@ -17,6 +17,9 @@<br>
<br>
import org.apache.commons.logging.Log;<br>
import org.apache.commons.logging.LogFactory;<br>
+import org.apache.maven.model.Model;<br>
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;<br>
+import org.apache.maven.model.io.xpp3.MavenXpp3Writer;<br>
import org.apache.maven.scm.ScmException;<br>
import org.apache.maven.scm.ScmFileSet;<br>
import org.apache.maven.scm.ScmResult;<br>
@@ -35,12 +38,16 @@<br>
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;<br>
import org.codehaus.plexus.embed.Embedder;<br>
import org.wso2.carbon.appfactory.repository.mgt.RepositoryMgtException;<br>
+import org.wso2.carbon.appfactory.utilities.version.AppVersionStrategyExecutor;<br>
import org.wso2.carbon.utils.CarbonUtils;<br>
import org.apache.commons.io.FileUtils;<br>
<br>
import java.io.File;<br>
+import java.io.FileInputStream;<br>
+import java.io.FileWriter;<br>
import java.io.IOException;<br>
import java.util.ArrayList;<br>
+import java.util.List;<br>
<br>
/**<br>
* Repository client that wrapping maven SCM plugin<br>
@@ -146,6 +153,8 @@<br>
try {<br>
CheckOutScmResult checkOutScmResult = \
scmManager.checkOut(repository,<br>
new ScmFileSet(checkOutDirectory), new \
ScmRevision(revision));<br> + AppVersionStrategyExecutor exec = \
org.wso2.carbon.appfactory.repository.mgt.util.Util.getVersionStrategyExecutor();<br> \
+ exec.doVersion(version, checkOutDirectory);<br> if \
(checkOutScmResult.getProviderMessage() == null) {<br>
result = scmManager.branch(repository, new \
ScmFileSet(checkOutDirectory), version);<br> <br>
@@ -160,8 +169,6 @@<br>
return processResult(result,checkOutDirectory);<br>
}<br>
<br>
-<br>
-<br>
public boolean tag(String baseURL, String version, String revision)<br>
throws RepositoryMgtException {<br>
TagScmResult result = null;<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.repository.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/internal/RepositoryMgtServiceComponent.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/src/main/java/org \
/wso2/carbon/appfactory/repository/mgt/internal/RepositoryMgtServiceComponent.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/src/main/java/o \
rg/wso2/carbon/appfactory/repository/mgt/internal/RepositoryMgtServiceComponent.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.re \
pository.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/internal/RepositoryMgtServiceComponent.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.re \
pository.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/internal/RepositoryMgtServiceComponent.java \
Fri Sep 28 05:35:12 2012<br>
@@ -28,21 +28,27 @@<br>
import org.wso2.carbon.appfactory.repository.mgt.RepositoryProvider;<br>
import org.wso2.carbon.appfactory.repository.mgt.service.RepositoryAuthenticationService;<br>
import org.wso2.carbon.appfactory.repository.mgt.util.Util;<br>
+import org.wso2.carbon.appfactory.utilities.version.AppVersionStrategyExecutor;<br>
import org.wso2.carbon.user.core.service.RealmService;<br>
<br>
import java.lang.reflect.Constructor;<br>
<br>
/**<br>
- * @scr.component name="org.wso2.carbon.appfactory.repository.mgt" \
immediate="true"<br> + * @scr.component \
name="org.wso2.carbon.appfactory.repository.mgt"<br> + * \
immediate="true"<br>
* @scr.reference name="appfactory.configuration" interface=<br>
- * "org.wso2.carbon.appfactory.common.AppFactoryConfiguration"<br>
- * cardinality="1..1" policy="dynamic"<br>
- * bind="setAppFactoryConfiguration"<br>
- * unbind="unsetAppFactoryConfiguration"<br>
+ * "org.wso2.carbon.appfactory.common.AppFactoryConfiguration"<br>
+ * cardinality="1..1" policy="dynamic"<br>
+ * bind="setAppFactoryConfiguration"<br>
+ * unbind="unsetAppFactoryConfiguration"<br>
* @scr.reference name="user.realmservice.default"<br>
- * interface="org.wso2.carbon.user.core.service.RealmService"<br>
- * cardinality="1..1" policy="dynamic" \
bind="setRealmService"<br>
- * unbind="unsetRealmService"<br>
+ * interface="org.wso2.carbon.user.core.service.RealmService"<br>
+ * cardinality="1..1" policy="dynamic" \
bind="setRealmService"<br> + * \
unbind="unsetRealmService"<br> + * @scr.reference \
name="appversion.executor"<br> + * \
interface="org.wso2.carbon.appfactory.utilities.version.AppVersionStrategyExecutor"<br>
+ * cardinality="1..1" policy="dynamic" \
bind="setAppVersionStrategyExecutor"<br> + * \
unbind="unsetAppVersionStrategyExecutor"<br>
*/<br>
public class RepositoryMgtServiceComponent {<br>
Log log = LogFactory.getLog(RepositoryMgtServiceComponent.class);<br>
@@ -65,6 +71,14 @@<br>
Util.setRealmService(null);<br>
}<br>
<br>
+ protected void setAppVersionStrategyExecutor(AppVersionStrategyExecutor \
versionExecutor) {<br> + Util.setVersionStrategyExecutor(versionExecutor);<br>
+ }<br>
+<br>
+ protected void unsetAppVersionStrategyExecutor(AppVersionStrategyExecutor \
versionExecutor) {<br> + Util.setVersionStrategyExecutor(null);<br>
+ }<br>
+<br>
protected void activate(ComponentContext context) {<br>
<br>
if (log.isDebugEnabled()) {<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.repository.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/util/Util.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/src/main/java/org \
/wso2/carbon/appfactory/repository/mgt/util/Util.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.repository.mgt.service/1.0.1/src/main/java/o \
rg/wso2/carbon/appfactory/repository/mgt/util/Util.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.re \
pository.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/util/Util.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.re \
pository.mgt.service/1.0.1/src/main/java/org/wso2/carbon/appfactory/repository/mgt/util/Util.java \
Fri Sep 28 05:35:12 2012<br> @@ -17,8 +17,8 @@<br>
package org.wso2.carbon.appfactory.repository.mgt.util;<br>
<br>
import org.wso2.carbon.appfactory.common.AppFactoryConfiguration;<br>
-import org.wso2.carbon.appfactory.core.RevisionControlDriver;<br>
import org.wso2.carbon.appfactory.repository.mgt.RepositoryProvider;<br>
+import org.wso2.carbon.appfactory.utilities.version.AppVersionStrategyExecutor;<br>
import org.wso2.carbon.user.core.service.RealmService;<br>
<br>
import java.util.HashMap;<br>
@@ -31,6 +31,7 @@<br>
public class Util {<br>
private static AppFactoryConfiguration configuration=null;<br>
private static RealmService realmService;<br>
+ private static AppVersionStrategyExecutor versionStrategyExecutor;<br>
private static Map<String,RepositoryProvider> repositoryProviderMap=new \
HashMap<String, RepositoryProvider>();;<br> <br>
public static AppFactoryConfiguration getConfiguration() {<br>
@@ -55,4 +56,15 @@<br>
public static void setRepositoryProvider(String type,RepositoryProvider \
provider) {<br> Util.repositoryProviderMap.put(type,provider);<br>
}<br>
+<br>
+ public static AppVersionStrategyExecutor getVersionStrategyExecutor() {<br>
+ return versionStrategyExecutor;<br>
+ }<br>
+<br>
+ public static void setVersionStrategyExecutor(<br>
+ AppVersionStrategyExecutor versionStrategyExecutor) {<br>
+ Util.versionStrategyExecutor = versionStrategyExecutor;<br>
+ }<br>
+<br>
+<br>
}<br>
<br>
Modified: carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfact \
ory.utilities/1.0.2/src/main/java/org/wso2/carbon/appfactory/utilities/project/ProjectUtils.java<br>
URL: <a href="http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/component \
s/appfactory/org.wso2.carbon.appfactory.utilities/1.0.2/src/main/java/org/wso2/carbon/ \
appfactory/utilities/project/ProjectUtils.java?rev=144202&r1=144201&r2=144202&view=diff" \
target="_blank">http://wso2.org/svn/browse/wso2/carbon/platform/branches/4.0.0/compone \
nts/appfactory/org.wso2.carbon.appfactory.utilities/1.0.2/src/main/java/org/wso2/carbo \
n/appfactory/utilities/project/ProjectUtils.java?rev=144202&r1=144201&r2=144202&view=diff</a><br>
==============================================================================<br>
--- carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.ut \
ilities/1.0.2/src/main/java/org/wso2/carbon/appfactory/utilities/project/ProjectUtils.java \
(original)<br>
+++ carbon/platform/branches/4.0.0/components/appfactory/org.wso2.carbon.appfactory.ut \
ilities/1.0.2/src/main/java/org/wso2/carbon/appfactory/utilities/project/ProjectUtils.java \
Fri Sep 28 05:35:12 2012<br> @@ -13,14 +13,19 @@<br>
import org.wso2.carbon.appfactory.common.AppFactoryConfiguration;<br>
import org.wso2.carbon.appfactory.common.AppFactoryConstants;<br>
import org.wso2.carbon.appfactory.common.AppFactoryException;<br>
+import org.wso2.carbon.appfactory.core.dto.Application;<br>
+import org.wso2.carbon.appfactory.core.dto.Version;<br>
import org.wso2.carbon.appfactory.utilities.internal.ServiceReferenceHolder;<br>
+import org.wso2.carbon.governance.api.exception.GovernanceException;<br>
import org.wso2.carbon.governance.api.generic.GenericArtifactManager;<br>
import org.wso2.carbon.governance.api.generic.dataobjects.GenericArtifactImpl;<br>
import org.wso2.carbon.governance.api.util.GovernanceUtils;<br>
+import org.wso2.carbon.registry.core.Collection;<br>
import org.wso2.carbon.registry.core.Resource;<br>
import org.wso2.carbon.registry.core.exceptions.RegistryException;<br>
import org.wso2.carbon.registry.core.service.RegistryService;<br>
import org.wso2.carbon.registry.core.session.UserRegistry;<br>
+import org.wso2.carbon.registry.core.utils.RegistryUtils;<br>
<br>
import java.io.File;<br>
import java.util.ArrayList;<br>
@@ -143,22 +148,180 @@<br>
return optsBuilder.toString();*/<br>
}<br>
<br>
- public static String getApplicationType(String applicationId) throws \
AppFactoryException{<br> + /**<br>
+ * Returns the type of the application given the application Id<br>
+ *<br>
+ * @param applicationId<br>
+ * Id of the application<br>
+ * @return the type<br>
+ * @throws AppFactoryException<br>
+ * if an error occurs.<br>
+ */<br>
+ public static String getApplicationType(String applicationId) throws \
AppFactoryException {<br> +<br>
+ GenericArtifactImpl artifact = getApplicationArtifact(applicationId);<br>
+<br>
+ if (artifact == null) {<br>
+ String errorMsg =<br>
+ String.format("Unable to find applcation \
information for id : %s",<br> + \
applicationId);<br> + log.error(errorMsg);<br>
+ throw new AppFactoryException(errorMsg);<br>
+<br>
+ }<br>
+<br>
+ try {<br>
+ return artifact.getAttribute("application_type");<br>
+ } catch (RegistryException e) {<br>
+ String errorMsg =<br>
+ String.format("Unable to find the application \
type for applicaiton id: %s",<br> + \
applicationId);<br> + log.error(errorMsg, e);<br>
+ throw new AppFactoryException(errorMsg, e);<br>
+ }<br>
+ }<br>
+<br>
+ /**<br>
+ * Provides information about an application.<br>
+ *<br>
+ * @param applicationId<br>
+ * id of the application<br>
+ * @return {@link Application}<br>
+ * @throws AppFactoryException<br>
+ * if an error occurs<br>
+ */<br>
+ public static Application getApplicationInfo(String applicationId) throws \
AppFactoryException {<br> +<br>
+ GenericArtifactImpl artifact = getApplicationArtifact(applicationId);<br>
+<br>
+ if (artifact == null) {<br>
+ String errorMsg =<br>
+ String.format("Unable to find applcation \
information for id : %s",<br> + \
applicationId);<br> + log.error(errorMsg);<br>
+ throw new AppFactoryException(errorMsg);<br>
+<br>
+ }<br>
+ Application appInfo = null;<br>
+<br>
+ try {<br>
+ appInfo =<br>
+ new \
Application(artifact.getAttribute("application_key"),<br> + \
artifact.getAttribute("application_name"),<br> + \
artifact.getAttribute("application_type"),<br> + \
artifact.getAttribute("application_description"));<br> + } catch \
(GovernanceException e) {<br> + String errorMsg =<br>
+ String.format("Unable to extract information for \
application id : %s",<br> + \
applicationId);<br> + log.error(errorMsg);<br>
+ throw new AppFactoryException(errorMsg);<br>
+ }<br>
+<br>
+ return appInfo;<br>
+ }<br>
+<br>
+ /**<br>
+ * Returns all available versions of a application<br>
+ *<br>
+ * @param applicationId<br>
+ * Id of the application<br>
+ * @return an Array of {@link Version}<br>
+ * @throws AppFactoryException<br>
+ * if an error occurres<br>
+ */<br>
+ public static Version[] getVersions(String applicationId) throws \
AppFactoryException {<br> + List<Version> versions = new \
ArrayList<Version>();<br> try {<br>
- RegistryService registryService = \
ServiceReferenceHolder.getInstance().getRegistryService();<br> + \
RegistryService registryService =<br> + \
ServiceReferenceHolder.getInstance()<br> + \
.getRegistryService();<br>
UserRegistry userRegistry = \
registryService.getGovernanceSystemRegistry();<br>
- Resource resource = \
userRegistry.get(AppFactoryConstants.REGISTRY_APPLICATION_PATH +<br>
- File.separator + applicationId + \
File.separator + "appinfo");<br> + // child nodes of this will \
contains folders for all life cycles (<br> + // e.g. QA, Dev, Prod)<br>
+ Resource application =<br>
+ \
userRegistry.get(AppFactoryConstants.REGISTRY_APPLICATION_PATH +<br> + \
File.separator + applicationId);<br> +<br>
+ if (application != null && application instanceof Collection) \
{<br> +<br>
+ // Contains paths to life cycles (.e.g .../<appid>/dev,<br>
+ // .../<appid>/qa , .../<appid>/prod )<br>
+ String[] definedLifeCyclePaths = ((Collection) \
application).getChildren();<br> +<br>
+ for (String lcPath : definedLifeCyclePaths) {<br>
+<br>
+ Resource versionsInLCResource = userRegistry.get(lcPath);<br>
+ if (versionsInLCResource != null && versionsInLCResource \
instanceof Collection) {<br> +<br>
+ // contains paths to a versions (e.g.<br>
+ // .../<appid>/<lifecycle>/trunk,<br>
+ // .../<appid>/<lifecycle>/1.0.1 )<br>
+ String[] versionPaths = ((Collection) \
versionsInLCResource).getChildren();<br> +<br>
+ for (String versionPath : versionPaths) {<br>
+ // extract the name of the resource ( which will be<br>
+ // the version id)<br>
+ String versionId = \
RegistryUtils.getResourceName(versionPath);<br> + Version \
version = new Version(versionId);<br> + \
versions.add(version);<br> + }<br>
+ }<br>
+<br>
+ }<br>
+<br>
+ }<br>
+<br>
+ } catch (RegistryException e) {<br>
+ String errorMsg =<br>
+ String.format("Unable to load the application \
information for applicaiton id: %s",<br> + \
applicationId);<br> + log.error(errorMsg, e);<br>
+ throw new AppFactoryException(errorMsg, e);<br>
+ }<br>
+<br>
+ return versions.toArray(new Version[versions.size()]);<br>
+ }<br>
+<br>
+ /**<br>
+ * A Util method to load an Application artifact from the registry.<br>
+ *<br>
+ * @param applicationId<br>
+ * the application Id<br>
+ * @return a {@link GenericArtifactImpl} representing the application or<br>
+ * null if application (by the id is not in registry)<br>
+ * @throws AppFactoryException<br>
+ * if an error occurs.<br>
+ */<br>
+ private static GenericArtifactImpl getApplicationArtifact(String \
applicationId)<br> + \
throws AppFactoryException {<br> + GenericArtifactImpl artifact = null;<br>
+ try {<br>
+<br>
+ RegistryService registryService =<br>
+ \
ServiceReferenceHolder.getInstance()<br> + \
.getRegistryService();<br> + UserRegistry userRegistry = \
registryService.getGovernanceSystemRegistry();<br> + Resource resource \
=<br> + \
userRegistry.get(AppFactoryConstants.REGISTRY_APPLICATION_PATH +<br> + \
File.separator + applicationId + File.separator +<br> + \
"appinfo");<br> GovernanceUtils.loadGovernanceArtifacts(userRegistry);<br>
- GenericArtifactManager artifactManager = new \
GenericArtifactManager(userRegistry, "application");<br>
- //GenericArtifact artifact = \
artifactManager.getGenericArtifact(resource.getUUID());<br>
- GenericArtifactImpl artifact = (GenericArtifactImpl) \
artifactManager.getGenericArtifact(resource.getUUID());<br>
- return artifact.getAttribute("application_type");<br>
+ GenericArtifactManager artifactManager =<br>
+ new \
GenericArtifactManager(userRegistry,<br> + \
"application");<br> + // GenericArtifact artifact =<br>
+ // artifactManager.getGenericArtifact(resource.getUUID());<br>
+ artifact = (GenericArtifactImpl) \
artifactManager.getGenericArtifact(resource.getUUID());<br> +<br>
} catch (RegistryException e) {<br>
String errorMsg =<br>
- String.format("Unable to find the application type for \
applicaiton id: %s", applicationId);<br> + \
String.format("Unable to load the application information for applicaiton id: \
%s",<br> + applicationId);<br>
log.error(errorMsg, e);<br>
throw new AppFactoryException(errorMsg, e);<br>
}<br>
+<br>
+ return artifact;<br>
}<br>
}<br>
_______________________________________________<br>
Commits mailing list<br>
<a href="mailto:Commits@wso2.org">Commits@wso2.org</a><br>
<a href="http://wso2.org/cgi-bin/mailman/listinfo/commits" \
target="_blank">http://wso2.org/cgi-bin/mailman/listinfo/commits</a><br> \
</div><br><br clear="all"><br>-- <br><br>Thanks & \
regards,<br>Nirmal<br><br>Software Engineer- Platform Technologies Team, WSO2 \
Inc.<br>Mobile: +94715779733<br>Blog: <a href="http://nirmalfdo.blogspot.com/" \
target="_blank">http://nirmalfdo.blogspot.com/</a><br>
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic