/* * Copyright 2000-2001,2004 The Apache Software Foundation. * * 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.apache.jetspeed.om.security; import org.apache.turbine.services.TurbineServices; import org.apache.turbine.services.resources.ResourceService; import org.apache.jetspeed.services.security.GroupException; import org.apache.jetspeed.services.security.JetspeedSecurityService; /** * Factory class for creating Jetspeed Groups. * The group class is configured in the JR.p * * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a> * @version $Id: JetspeedGroupFactory.java,v 1.4 2004/02/23 03:14:12 jford Exp $ */ public class JetspeedGroupFactory { private static final String CONFIG_GROUP_CLASSNAME = "group.class"; private static String groupClassName = null; private static Class groupClass = null; /** * Factory method to create JetspeedGroup instances. * * * @throws UnknownEntityException when the group instance cant be created. * @return Group a new created group. */ public static Group getInstance() throws GroupException { return getInstance(true); } public static Group getInstance(boolean isNew) throws GroupException { Group group = null; if (null == groupClassName) { try { ResourceService serviceConf = ((TurbineServices)TurbineServices.getInstance()) .getResources(JetspeedSecurityService.SERVICE_NAME); groupClassName = serviceConf.getString(CONFIG_GROUP_CLASSNAME); groupClass = Class.forName(groupClassName); } catch(Exception e) { throw new GroupException( "GroupFactory: Failed to create a Class object for Group implementation: " + e.toString()); } } try { group = (Group)groupClass.newInstance(); if (group instanceof BaseJetspeedGroup) { ((BaseJetspeedGroup)group).setNew(isNew); } } catch(Exception e) { throw new GroupException("Failed instantiate an Group implementation object: " + e.toString()); } return group; } }