/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * 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.jbpm.kie.services.test.store; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.Collection; import java.util.Date; import java.util.HashSet; import org.jbpm.kie.services.impl.KModuleDeploymentUnit; import org.jbpm.kie.services.impl.store.DeploymentStore; import org.jbpm.kie.test.util.AbstractKieServicesBaseTest; import org.jbpm.runtime.manager.impl.deploy.DeploymentDescriptorImpl; import org.jbpm.runtime.manager.impl.deploy.TransientNamedObjectModel; import org.jbpm.runtime.manager.impl.deploy.TransientObjectModel; import org.jbpm.runtime.manager.impl.jpa.EntityManagerFactoryManager; import org.jbpm.services.api.model.DeploymentUnit; import org.jbpm.shared.services.impl.TransactionalCommandService; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.kie.internal.runtime.conf.DeploymentDescriptor; public class DeploymentStoreTest extends AbstractKieServicesBaseTest { private DeploymentStore store; @Before public void setup() { buildDatasource(); emf = EntityManagerFactoryManager.get().getOrCreate("org.jbpm.domain"); store = new DeploymentStore(); store.setCommandService(new TransactionalCommandService(emf)); } @After public void cleanup() { close(); } @Test public void testEnableAndGetActiveDeployments() { Collection<DeploymentUnit> enabled = store.getEnabledDeploymentUnits(); assertNotNull(enabled); assertEquals(0, enabled.size()); KModuleDeploymentUnit unit = new KModuleDeploymentUnit("org.jbpm", "test", "1.0"); store.enableDeploymentUnit(unit); enabled = store.getEnabledDeploymentUnits(); assertNotNull(enabled); assertEquals(1, enabled.size()); } @Test public void testEnableAndGetAndDisableActiveDeployments() { Collection<DeploymentUnit> enabled = store.getEnabledDeploymentUnits(); assertNotNull(enabled); assertEquals(0, enabled.size()); KModuleDeploymentUnit unit = new KModuleDeploymentUnit("org.jbpm", "test", "1.0"); store.enableDeploymentUnit(unit); enabled = store.getEnabledDeploymentUnits(); assertNotNull(enabled); assertEquals(1, enabled.size()); store.disableDeploymentUnit(unit); enabled = store.getEnabledDeploymentUnits(); assertNotNull(enabled); assertEquals(0, enabled.size()); } @Test public void testEnableAndGetByDateActiveDeployments() { Collection<DeploymentUnit> enabled = store.getEnabledDeploymentUnits(); assertNotNull(enabled); assertEquals(0, enabled.size()); Date date = new Date(); KModuleDeploymentUnit unit = new KModuleDeploymentUnit("org.jbpm", "test", "1.0"); store.enableDeploymentUnit(unit); unit = new KModuleDeploymentUnit("org.jbpm", "prod", "1.0"); store.enableDeploymentUnit(unit); Collection<DeploymentUnit> unitsEnabled = new HashSet<DeploymentUnit>(); Collection<DeploymentUnit> unitsDisabled = new HashSet<DeploymentUnit>(); Collection<DeploymentUnit> unitsActivated = new HashSet<DeploymentUnit>(); Collection<DeploymentUnit> unitsDeactivated = new HashSet<DeploymentUnit>(); store.getDeploymentUnitsByDate(date, unitsEnabled, unitsDisabled, unitsActivated, unitsDeactivated); assertNotNull(unitsEnabled); assertEquals(2, unitsEnabled.size()); assertNotNull(unitsDisabled); assertEquals(0, unitsDisabled.size()); date = new Date(); store.disableDeploymentUnit(unit); // verify unitsEnabled.clear(); unitsDisabled.clear(); unitsActivated.clear(); unitsDeactivated.clear(); store.getDeploymentUnitsByDate(date, unitsEnabled, unitsDisabled, unitsActivated, unitsDeactivated); assertNotNull(unitsEnabled); assertEquals(0, unitsEnabled.size()); assertNotNull(unitsDisabled); assertEquals(1, unitsDisabled.size()); } @Test public void testEnableAndGetActiveDeploymentsWithTransientNamedObject() { Collection<DeploymentUnit> enabled = store.getEnabledDeploymentUnits(); assertNotNull(enabled); assertEquals(0, enabled.size()); KModuleDeploymentUnit unit = new KModuleDeploymentUnit("org.jbpm", "test", "1.0"); DeploymentDescriptor descriptor = unit.getDeploymentDescriptor(); if (descriptor == null) { descriptor = new DeploymentDescriptorImpl("org.jbpm.domain"); } // add transient named object model that should not be persisted descriptor.getBuilder() .addWorkItemHandler(new TransientNamedObjectModel("ejb", "async", "org.jbpm.executor.impl.wih.AsyncWorkItemHandler", new Object[]{"jndi:java:module/ExecutorServiceEJBImpl", "org.jbpm.executor.commands.PrintOutCommand"})) .addEventListener(new TransientObjectModel("ejb", "not.existing.listener")); unit.setDeploymentDescriptor(descriptor); store.enableDeploymentUnit(unit); enabled = store.getEnabledDeploymentUnits(); assertNotNull(enabled); assertEquals(1, enabled.size()); DeploymentUnit unitEnabled = enabled.iterator().next(); assertTrue(unitEnabled instanceof KModuleDeploymentUnit); DeploymentDescriptor descriptorEnabled = ((KModuleDeploymentUnit) unitEnabled).getDeploymentDescriptor(); assertNotNull(descriptorEnabled); assertEquals(0, descriptorEnabled.getWorkItemHandlers().size()); assertEquals(0, descriptorEnabled.getEventListeners().size()); } }