You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by we...@apache.org on 2003/12/02 18:45:13 UTC
cvs commit: jakarta-jetspeed-2/cornerstone/src/resources/org/apache/cornerstone/framework/logging InMemoryLogFactory.properties
weaver 2003/12/02 09:45:13
Added: cornerstone/src/java/org/apache/cornerstone/framework/registry/factory
PropertiesRegistryEntryFactory.java
PropertiesRegistryFactory.java
OverwritablePropertiesRegistryFactory.java
cornerstone/src/resources/org/apache/cornerstone/framework/implementation
BaseImplementationManager.properties
cornerstone/src/java/org/apache/cornerstone/framework/persistence/datasource
BaseDataSource.java
cornerstone/src/java/org/apache/cornerstone/framework/api/core
IObject.java
cornerstone/src/resources/org/apache/cornerstone/framework/pubsub
BasePubSubManager.properties
cornerstone/src/java/org/apache/cornerstone/framework/persistence/factory
BasePersistentObjectMapFactory.properties
BasePersistentObjectSetFactory.properties
BasePersistentObjectListFactory.properties
cornerstone/src/java/org/apache/cornerstone/framework/singleton
BaseSingletonManager.java
cornerstone/src/java/org/apache/cornerstone/framework/api/singleton
ISingletonManager.java
cornerstone/src/java/org/apache/cornerstone/framework/registry
OverwritableRegistry.java
cornerstone/src/resources/org/apache/cornerstone/framework/sysman
ModelMBeanDescriptorBuilder.properties
ModelMBeanInfoBuilderFactory.properties
ModelMBeanDescriptorBuilderFactory.properties
cornerstone/src/resources/org/apache/cornerstone/framework/bean/helper
BeanHelper.properties
cornerstone/src/resources/org/apache/cornerstone/framework/registry/factory
PropertiesRegistryFactory.properties
PropertiesRegistryEntryFactory.properties
cornerstone/src/java/org/apache/cornerstone/framework/api/persistence/factory
IPersistenceFactory.java
cornerstone/src/java/org/apache/cornerstone/framework/api/implementation
ImplementationException.java
IImplementationManager.java
cornerstone/src/resources/org/apache/cornerstone/framework/service
BaseServiceManager.properties
cornerstone/src/resources/org/apache/cornerstone/framework/persistence/connection
BaseConnectionManager.properties
cornerstone/src/java/org/apache/cornerstone/framework/api/persistence/connection
ConnectionException.java
cornerstone/src/java/org/apache/cornerstone/framework/implementation
BaseImplementationManager.java
cornerstone/src/java/org/apache/cornerstone/framework/factory/ioc
InversionOfControlFactory.java
cornerstone/src/java/org/apache/cornerstone/framework/api/persistence/datasource
IDataSource.java
cornerstone/src/java/org/apache/cornerstone/framework/init
InitException.java Cornerstone.java
cornerstone/src/java/org/apache/cornerstone/framework/service
BaseServiceManager.java
cornerstone/src/java/org/apache/cornerstone/framework/service/controller
SequenceServiceController.java
cornerstone/src/resources/org/apache/cornerstone/framework/registry
BaseRegistry.properties
cornerstone/src/resources/org/apache/cornerstone/framework/logging
InMemoryLogFactory.properties
Log:
cornerstone update
Revision Changes Path
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/registry/factory/PropertiesRegistryEntryFactory.java
Index: PropertiesRegistryEntryFactory.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Jetspeed" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Jetspeed", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.cornerstone.framework.registry.factory;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import org.apache.cornerstone.framework.api.factory.CreationException;
import org.apache.cornerstone.framework.api.registry.IRegistryEntry;
import org.apache.cornerstone.framework.factory.BaseFactory;
import org.apache.cornerstone.framework.registry.BaseRegistryEntry;
import org.apache.log4j.Logger;
public class PropertiesRegistryEntryFactory extends BaseFactory
{
public static final String REVISION = "$Revision: 1.1 $";
public static PropertiesRegistryEntryFactory getSingleton()
{
return _Singleton;
}
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.factory.BaseFactory#createInstance()
*/
public Object createInstance() throws CreationException
{
throw new CreationException("please use the other signature that uses a File");
}
/**
* Creates a RegistryEntry object
* @return Object as RegistryEntry
*/
public Object createInstance(Object file) throws CreationException
{
File registryEntryFile = (File) file;
FileInputStream fis = null;
try
{
Properties registryProperties = new Properties();
fis = new FileInputStream(registryEntryFile);
registryProperties.load(fis);
IRegistryEntry registryEntry = new BaseRegistryEntry(registryProperties);
return registryEntry;
}
catch(IOException e)
{
String message = "failed to read registry entry file '" + registryEntryFile.getAbsolutePath() + "'";
_Logger.error(message, e);
throw new CreationException(message, e);
}
finally
{
if (fis != null)
{
try
{
fis.close();
}
catch (IOException e1)
{
_Logger.error("failed to close registry entry file '" + registryEntryFile.getAbsolutePath() + "'");
}
}
}
}
private static Logger _Logger = Logger.getLogger(PropertiesRegistryEntryFactory.class);
private static PropertiesRegistryEntryFactory _Singleton = new PropertiesRegistryEntryFactory();
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/registry/factory/PropertiesRegistryFactory.java
Index: PropertiesRegistryFactory.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Jetspeed" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Jetspeed", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.cornerstone.framework.registry.factory;
import java.io.File;
import java.util.List;
import java.util.Set;
import java.util.HashSet;
import org.apache.cornerstone.framework.api.factory.CreationException;
import org.apache.cornerstone.framework.api.registry.IRegistry;
import org.apache.cornerstone.framework.api.registry.IRegistryEntry;
import org.apache.cornerstone.framework.constant.Constant;
import org.apache.cornerstone.framework.factory.BaseFactory;
import org.apache.cornerstone.framework.registry.BaseRegistry;
import org.apache.cornerstone.framework.util.Util;
import org.apache.log4j.Logger;
public class PropertiesRegistryFactory extends BaseFactory
{
public static final String REVISION = "$Revision: 1.1 $";
public static final String SHORT_HAND = "shortHand";
public static final String META_SHORT_HAND = Constant.META + Constant.DOT + SHORT_HAND + Constant.DASH;
public static final String REG_DIR_NAME = "registry";
public static final String REG_FILE_EXTENSION = ".reg.properties";
public static final String CONFIG_FILE_NAMES_TO_SKIP = "fileNamesToSkip";
public static PropertiesRegistryFactory getSingleton()
{
return _Singleton;
}
public Object createInstance() throws CreationException
{
throw new CreationException("please use the other signature to pass in registryParentPath");
}
public Object createInstance(Object registryParentPath) throws CreationException
{
String registryPath = registryParentPath + File.separator + REG_DIR_NAME;
// create the Registry
IRegistry registry = BaseRegistry.getSingleton();
// for every file in this path added to the
// registry as RegistryEntry
//
File registryDir = new File(registryPath);
File[] domains = registryDir.listFiles();
if (domains != null)
{
PropertiesRegistryEntryFactory registryEntryFactory = PropertiesRegistryEntryFactory.getSingleton();
for ( int k = 0; k < domains.length; k++ )
{
String domainName = domains[k].getName();
if (skipFile(domainName)) continue;
if ( domains[k].isDirectory() )
{
File domainDir = new File(domains[k].getAbsolutePath());
File[] interfaces = domainDir.listFiles();
for ( int i = 0; i < interfaces.length; i++ )
{
String interfaceName = interfaces[i].getName();
if (skipFile(interfaceName)) continue;
if ( interfaces[i].isDirectory() )
{
File[] implementations = interfaces[i].listFiles();
for (int j = 0; j < implementations.length; j++)
{
IRegistryEntry registryEntry = (IRegistryEntry)registryEntryFactory.createInstance(implementations[j]);
String implementationName = implementations[j].getName();
String registryEntryName =
implementationName.startsWith(Constant.DOT) ?
"" :
implementationName.substring(0, implementationName.indexOf(REG_FILE_EXTENSION));
registry.register(domainName, interfaceName, registryEntryName, registryEntry);
}
}
else if (interfaceName.startsWith(META_SHORT_HAND))
{
String nameValuePair = interfaceName.substring(META_SHORT_HAND.length());
int dash = nameValuePair.indexOf(Constant.DASH);
if (dash > 0)
{
String alias = nameValuePair.substring(0, dash);
String fullName = nameValuePair.substring(dash + 1);
registry.setInterfaceShortHand(domainName, alias, fullName);
}
}
else
{
_Logger.info("Unrecognized file '" + interfaces[i].getName() + "' found in registry '" + registryPath + "'; ignored");
}
}
}
else
{
_Logger.info("Unrecognized file '" + domains[k].getName() + "' found in registry '" + registryPath + "'; ignored");
}
}
}
return registry;
}
protected PropertiesRegistryFactory()
{
super();
String names = getConfigProperty(CONFIG_FILE_NAMES_TO_SKIP);
List nameList = Util.convertStringsToList(names);
_setOfFileNamesToSkip = new HashSet();
_setOfFileNamesToSkip.addAll(nameList);
}
protected boolean skipFile(String fileName)
{
if (_setOfFileNamesToSkip != null)
{
return _setOfFileNamesToSkip.contains(fileName);
}
else
{
return false;
}
}
private static Logger _Logger = Logger.getLogger(PropertiesRegistryFactory.class);
private static PropertiesRegistryFactory _Singleton = new PropertiesRegistryFactory();
protected Set _setOfFileNamesToSkip;
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/registry/factory/OverwritablePropertiesRegistryFactory.java
Index: OverwritablePropertiesRegistryFactory.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Jetspeed" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Jetspeed", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.cornerstone.framework.registry.factory;
import java.io.File;
import org.apache.cornerstone.framework.api.factory.CreationException;
import org.apache.cornerstone.framework.factory.BaseFactory;
public class OverwritablePropertiesRegistryFactory extends BaseFactory
{
public static final String REVISION = "$Revision: 1.1 $";
public static final String REG_DIR_NAME = "registry";
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.api.factory.IFactory#createInstance()
*/
public Object createInstance() throws CreationException
{
throw new CreationException("please use the other signature to pass in registryParentPath");
}
public Object createInstance(Object registryParentPath) throws CreationException
{
String registryPath = registryParentPath + File.separator + REG_DIR_NAME;
return null;
}
}
1.1 jakarta-jetspeed-2/cornerstone/src/resources/org/apache/cornerstone/framework/implementation/BaseImplementationManager.properties
Index: BaseImplementationManager.properties
===================================================================
_.instance.isSingleton=true
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/persistence/datasource/BaseDataSource.java
Index: BaseDataSource.java
===================================================================
package org.apache.cornerstone.framework.persistence.datasource;
import org.apache.cornerstone.framework.api.persistence.datasource.IDataSource;
import org.apache.cornerstone.framework.constant.Constant;
import org.apache.cornerstone.framework.core.BaseObject;
public class BaseDataSource extends BaseObject implements IDataSource
{
public static final String REVISION = "$Revision: 1.1 $";
public static final String DRIVER_CLASS_NAME = Constant.DRIVER + Constant.DOT + Constant.CLASS_NAME;
public static final String CONNECTION_URL = Constant.CONNECTION + Constant.DOT + Constant.URL;
public static final String CONNECTION_USER_NAME = Constant.CONNECTION + Constant.DOT + "userName";
public static final String CONNECTION_PASSWORD = Constant.CONNECTION + Constant.DOT + "password";
public static final String CONFIG_PARAMS =
DRIVER_CLASS_NAME
+ Constant.COMMA + CONNECTION_URL
+ Constant.COMMA + CONNECTION_USER_NAME
+ Constant.COMMA + CONNECTION_PASSWORD;
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.api.persistence.datasource.IDataSource#getDriverClassName()
*/
public String getDriverClassName()
{
return _config.getProperty(DRIVER_CLASS_NAME);
}
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.api.persistence.datasource.IDataSource#getConnectionUrl()
*/
public String getConnectionUrl()
{
return _config.getProperty(CONNECTION_URL);
}
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.api.persistence.datasource.IDataSource#getUserName()
*/
public String getConnectionUserName()
{
return _config.getProperty(CONNECTION_USER_NAME);
}
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.api.persistence.datasource.IDataSource#getPassword()
*/
public String getConnectionPassword()
{
return _config.getProperty(CONNECTION_PASSWORD);
}
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/api/core/IObject.java
Index: IObject.java
===================================================================
package org.apache.cornerstone.framework.api.core;
public interface IObject
{
public static final String REVISION = "$Revision: 1.1 $";
public void init();
}
1.1 jakarta-jetspeed-2/cornerstone/src/resources/org/apache/cornerstone/framework/pubsub/BasePubSubManager.properties
Index: BasePubSubManager.properties
===================================================================
_.instance.isSingleton=true
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/persistence/factory/BasePersistentObjectMapFactory.properties
Index: BasePersistentObjectMapFactory.properties
===================================================================
collection.instance.className=java.util.HashMap
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/persistence/factory/BasePersistentObjectSetFactory.properties
Index: BasePersistentObjectSetFactory.properties
===================================================================
collection.instance.className=java.util.HashSet
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/persistence/factory/BasePersistentObjectListFactory.properties
Index: BasePersistentObjectListFactory.properties
===================================================================
collection.instance.className=java.util.ArrayList
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/singleton/BaseSingletonManager.java
Index: BaseSingletonManager.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Jetspeed" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Jetspeed", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.cornerstone.framework.singleton;
import java.util.HashMap;
import java.util.Map;
import org.apache.cornerstone.framework.api.singleton.ISingletonManager;
import org.apache.cornerstone.framework.util.Util;
import org.apache.log4j.Logger;
/**
Manager for all singleton instances.
*/
public class BaseSingletonManager implements ISingletonManager
{
public static final String REVISION = "$Revision: 1.1 $";
public static BaseSingletonManager getSingleton()
{
return _Singleton;
}
/**
* Retrieves the singleton instance of a class.
* @param className
* @return singleton instance of class className.
*/
public Object getSingleton(String className)
{
try
{
// make sure class is loaded first
Object s = _singletonMap.get(className);
if (s == null)
{
s = Util.createInstance(className);
addSingleton(s);
}
return s;
}
catch (Exception e)
{
_Logger.error("failed to create singleton for class " + className, e);
return null;
}
}
protected BaseSingletonManager()
{
addSingleton(this);
}
/**
* Registers a singleton instance with this manager.
* @param singleton
*/
protected void addSingleton(Object singleton)
{
_singletonMap.put(singleton.getClass().getName(), singleton);
if (_Logger.isInfoEnabled())
{
_Logger.info(singleton + " added");
}
}
private static Logger _Logger = Logger.getLogger(BaseSingletonManager.class);
private static BaseSingletonManager _Singleton = new BaseSingletonManager();
protected Map _singletonMap = new HashMap();
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/api/singleton/ISingletonManager.java
Index: ISingletonManager.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Jetspeed" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Jetspeed", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.cornerstone.framework.api.singleton;
public interface ISingletonManager
{
public static final String REVISION = "$Revision: 1.1 $";
public Object getSingleton(String className);
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/registry/OverwritableRegistry.java
Index: OverwritableRegistry.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Jetspeed" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Jetspeed", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.cornerstone.framework.registry;
import java.util.Set;
import org.apache.cornerstone.framework.api.registry.IRegistry;
import org.apache.cornerstone.framework.api.registry.IRegistryEntry;
public class OverwritableRegistry extends BaseRegistry
{
public static final String REVISION = "$Revision: 1.1 $";
public static IRegistry getSingleton()
{
return _Singleton;
}
public void init()
{
_parent = null;
}
public void setParent(IRegistry overwrittenRegistry)
{
_parent = overwrittenRegistry;
}
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.api.registry.IRegistry#getRegistryEntry(java.lang.String, java.lang.String, java.lang.String)
*/
public IRegistryEntry getEntry(String domainName, String interfaceName, String entryName)
{
IRegistryEntry localEntry = super.getEntry(domainName, interfaceName, entryName);
if (localEntry == null)
return _parent.getEntry(domainName, interfaceName, entryName);
else
return localEntry;
}
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.api.registry.IRegistry#getRegistryEntryNameSet(java.lang.String, java.lang.String)
*/
public Set getEntryNameSet(String domainName, String interfaceName)
{
Set localEntryNameSet = super.getEntryNameSet(domainName, interfaceName);
Set parentEntryNameSet = _parent.getEntryNameSet(domainName, interfaceName);
Set entryNameSet = localEntryNameSet;
entryNameSet.addAll(parentEntryNameSet);
return entryNameSet;
}
private static OverwritableRegistry _Singleton = new OverwritableRegistry();
protected IRegistry _parent; // the registry overwritten by this registry
}
1.1 jakarta-jetspeed-2/cornerstone/src/resources/org/apache/cornerstone/framework/sysman/ModelMBeanDescriptorBuilder.properties
Index: ModelMBeanDescriptorBuilder.properties
===================================================================
_.instance.isSignleton=true
1.1 jakarta-jetspeed-2/cornerstone/src/resources/org/apache/cornerstone/framework/sysman/ModelMBeanInfoBuilderFactory.properties
Index: ModelMBeanInfoBuilderFactory.properties
===================================================================
_.instance.isSingleton=true
1.1 jakarta-jetspeed-2/cornerstone/src/resources/org/apache/cornerstone/framework/sysman/ModelMBeanDescriptorBuilderFactory.properties
Index: ModelMBeanDescriptorBuilderFactory.properties
===================================================================
_.instance.isSingleton=true
1.1 jakarta-jetspeed-2/cornerstone/src/resources/org/apache/cornerstone/framework/bean/helper/BeanHelper.properties
Index: BeanHelper.properties
===================================================================
_.instance.isSingleton=true
1.1 jakarta-jetspeed-2/cornerstone/src/resources/org/apache/cornerstone/framework/registry/factory/PropertiesRegistryFactory.properties
Index: PropertiesRegistryFactory.properties
===================================================================
_.instance.isSingleton=true
fileNamesToSkip=CVS,.cvsignore
1.1 jakarta-jetspeed-2/cornerstone/src/resources/org/apache/cornerstone/framework/registry/factory/PropertiesRegistryEntryFactory.properties
Index: PropertiesRegistryEntryFactory.properties
===================================================================
_.instance.isSingleton=true
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/api/persistence/factory/IPersistenceFactory.java
Index: IPersistenceFactory.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Jetspeed" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Jetspeed", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.cornerstone.framework.api.persistence.factory;
import org.apache.cornerstone.framework.api.factory.IFactory;
public interface IPersistenceFactory extends IFactory
{
public static final String REVISION = "$Revision: 1.1 $";
public static final String CTX_QUERY_NAME = "queryName";
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/api/implementation/ImplementationException.java
Index: ImplementationException.java
===================================================================
package org.apache.cornerstone.framework.api.implementation;
import org.apache.cornerstone.framework.api.core.BaseException;
public class ImplementationException extends BaseException
{
public static final String REVISION = "$Revision: 1.1 $";
/**
* @param msg
*/
public ImplementationException(String msg)
{
super(msg);
}
/**
* @param cause
*/
public ImplementationException(Throwable cause)
{
super(cause);
}
/**
* @param msg
* @param cause
*/
public ImplementationException(String msg, Throwable cause)
{
super(msg, cause);
}
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/api/implementation/IImplementationManager.java
Index: IImplementationManager.java
===================================================================
package org.apache.cornerstone.framework.api.implementation;
public interface IImplementationManager
{
public static final String REVISION = "$Revision: 1.1 $";
public Object createImplementation(String interfaceName) throws ImplementationException;
public Object createImplementation(Class interfaceClass) throws ImplementationException;
public Object createImplementation(String interfaceName, String variantName) throws ImplementationException;
public Object createImplementation(Class interfaceClass, String variantName) throws ImplementationException;
}
1.1 jakarta-jetspeed-2/cornerstone/src/resources/org/apache/cornerstone/framework/service/BaseServiceManager.properties
Index: BaseServiceManager.properties
===================================================================
_.instance.isSingleton=true
serviceRegistry.domainName=implementation
serviceRegistry.interfaceName=cornerstone.service
1.1 jakarta-jetspeed-2/cornerstone/src/resources/org/apache/cornerstone/framework/persistence/connection/BaseConnectionManager.properties
Index: BaseConnectionManager.properties
===================================================================
_.instance.isSingleton=true
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/api/persistence/connection/ConnectionException.java
Index: ConnectionException.java
===================================================================
package org.apache.cornerstone.framework.api.persistence.connection;
import org.apache.cornerstone.framework.api.core.BaseException;
public class ConnectionException extends BaseException
{
public static final String REVISION = "$Revision: 1.1 $";
/**
* @param msg
*/
public ConnectionException(String msg)
{
super(msg);
}
/**
* @param cause
*/
public ConnectionException(Throwable cause)
{
super(cause);
}
/**
* @param msg
* @param cause
*/
public ConnectionException(String msg, Throwable cause)
{
super(msg, cause);
}
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/implementation/BaseImplementationManager.java
Index: BaseImplementationManager.java
===================================================================
package org.apache.cornerstone.framework.implementation;
import java.util.*;
import org.apache.cornerstone.framework.api.config.IConfigurable;
import org.apache.cornerstone.framework.api.factory.IFactory;
import org.apache.cornerstone.framework.api.implementation.IImplementationManager;
import org.apache.cornerstone.framework.api.implementation.ImplementationException;
import org.apache.cornerstone.framework.api.registry.IRegistry;
import org.apache.cornerstone.framework.api.registry.IRegistryEntry;
import org.apache.cornerstone.framework.constant.Constant;
import org.apache.cornerstone.framework.core.BaseObject;
import org.apache.cornerstone.framework.init.Cornerstone;
import org.apache.cornerstone.framework.util.Util;
import org.apache.log4j.Logger;
public class BaseImplementationManager extends BaseObject implements IImplementationManager
{
public static final String REVISION = "$Revision: 1.1 $";
public static final String REGISTRY_DOMAIN_NAME = Constant.IMPLEMENTATION;
public static final String META = "_";
public static final String META_DOT = META + ".";
public static final String IS_SINGLETON = "isSingleton"; // per virtual class singleton
public static final String CONFIG_META_INSTANCE_CLASS_NAME = META_DOT + Constant.INSTANCE_CLASS_NAME;
public static final String CONFIG_META_FACTORY_CLASS_NAME = META_DOT + Constant.FACTORY_CLASS_NAME;
public static final String CONFIG_META_PARENT_NAME = META_DOT + Constant.PARENT_NAME;
public static final String CONFIG_INSTANCE_IS_SINGLETON = Constant.INSTANCE + Constant.DOT + IS_SINGLETON;
public static BaseImplementationManager getSingleton()
{
return _Singleton;
}
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.api.core.IObject#init()
*/
public void init()
{
super.init();
_implementationMap = new HashMap();
_registry = Cornerstone.getRegistry();
}
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.api.implementation.IImplementationManager#getImplementation(java.lang.String)
*/
public Object createImplementation(String interfaceName) throws ImplementationException
{
return createImplementationInternal(interfaceName, "");
}
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.api.implementation.IImplementationManager#getImplementation(java.lang.Class)
*/
public Object createImplementation(Class interfaceClass) throws ImplementationException
{
return createImplementation(interfaceClass.getName());
}
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.api.implementation.IImplementationManager#getImplementation(java.lang.String, java.lang.String)
*/
public Object createImplementation(String interfaceName, String variantName) throws ImplementationException
{
return createImplementationInternal(interfaceName, variantName);
}
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.api.implementation.IImplementationManager#getImplementation(java.lang.Class, java.lang.String)
*/
public Object createImplementation(Class interfaceClass, String variantName) throws ImplementationException
{
return createImplementation(interfaceClass.getName(), variantName);
}
protected Object createImplementationInternal(String interfaceName, String variantName) throws ImplementationException
{
IRegistryEntry entry = _registry.getEntry(REGISTRY_DOMAIN_NAME, interfaceName, variantName);
if (entry == null)
{
String message = "registry entry '" + REGISTRY_DOMAIN_NAME + Constant.SLASH + interfaceName + Constant.SLASH + variantName + "' undefined";
_Logger.error(message);
throw new ImplementationException(message);
}
Properties entryProperties = entry.getProperties();
Properties metaProperties = Util.getPropertiesOfPrefix(entryProperties, META_DOT);
Object implementation;
String configImplementationIsSingleton = metaProperties.getProperty(CONFIG_INSTANCE_IS_SINGLETON);
boolean implementationIsSingleton = new Boolean(configImplementationIsSingleton).booleanValue();
if (implementationIsSingleton)
{
String key = getImplemenationMapKey(interfaceName, variantName);
implementation = _implementationMap.get(key);
if (implementation == null)
{
implementation = createImplementationInternalAccordingToMetaProperties(interfaceName, variantName, metaProperties, entryProperties);
_implementationMap.put(key, implementation); // TODO: lock
}
else
{
if (_Logger.isDebugEnabled()) _Logger.debug("singleton of '" +key + "' already created");
}
}
else
{
implementation = createImplementationInternalAccordingToMetaProperties(interfaceName, variantName, metaProperties, entryProperties);
}
return implementation;
}
protected Object createImplementationInternalAccordingToMetaProperties(
String interfaceName,
String variantName,
Properties metaProperties,
Properties instanceConfig
)
throws ImplementationException
{
String instanceClassName = metaProperties.getProperty(Constant.INSTANCE_CLASS_NAME);
if (instanceClassName != null)
{
// "_.instance.className" is specified, create a new instance using default constructor
try
{
Class implementationClass = Class.forName(instanceClassName);
Object implementation = implementationClass.newInstance();
overwriteConfig(implementation, instanceConfig);
return implementation;
}
catch (Exception e)
{
throw new ImplementationException("failed to create instance of class '" + instanceClassName + "'", e);
}
}
String factoryClassName = metaProperties.getProperty(Constant.FACTORY_CLASS_NAME);
if (factoryClassName != null)
{
// "_.factory.className" is specified, create a new instance using factory
try
{
IFactory factory = (IFactory) Cornerstone.getSingletonManager().getSingleton(factoryClassName);
Object implementation = factory.createInstance();
overwriteConfig(implementation, instanceConfig);
return implementation;
}
catch (Exception e)
{
throw new ImplementationException("failed to create instance with factory class '" + factoryClassName + "'", e);
}
}
String parentName = metaProperties.getProperty(Constant.PARENT_NAME);
if (parentName != null)
{
// "_.parent.name" is specified, create a new instance using parent
try
{
Object implementation = createImplementation(interfaceName, parentName);
overwriteConfig(implementation, instanceConfig);
return implementation;
}
catch (Exception e)
{
throw new ImplementationException("failed to create instance using parent '" + parentName + "'", e);
}
}
throw new ImplementationException(
"registry entry '" + REGISTRY_DOMAIN_NAME + Constant.SLASH + interfaceName + Constant.SLASH + variantName +
"' has no '" + CONFIG_META_INSTANCE_CLASS_NAME +
"' or '" + CONFIG_META_FACTORY_CLASS_NAME +
"' or '" + CONFIG_META_PARENT_NAME +
"' defined"
);
}
/**
* @param interfaceName
* @param variantName
* @return
*/
protected String getImplemenationMapKey(String interfaceName, String variantName)
{
return interfaceName + Constant.SLASH + variantName;
}
protected void overwriteConfig(Object object, Properties config)
{
if (object instanceof IConfigurable)
{
IConfigurable configurable = (IConfigurable) object;
configurable.overwriteConfig(config);
}
}
private static Logger _Logger = Logger.getLogger(BaseImplementationManager.class);
private static BaseImplementationManager _Singleton = new BaseImplementationManager();
protected Map _implementationMap;
protected IRegistry _registry = Cornerstone.getRegistry();
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/factory/ioc/InversionOfControlFactory.java
Index: InversionOfControlFactory.java
===================================================================
package org.apache.cornerstone.framework.factory.ioc;
import java.beans.PropertyDescriptor;
import java.util.Enumeration;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.cornerstone.framework.api.factory.CreationException;
import org.apache.cornerstone.framework.api.factory.IFactory;
import org.apache.cornerstone.framework.api.implementation.ImplementationException;
import org.apache.cornerstone.framework.bean.helper.BeanHelper;
import org.apache.cornerstone.framework.constant.Constant;
import org.apache.cornerstone.framework.factory.BaseFactory;
import org.apache.cornerstone.framework.init.Cornerstone;
/**
*
* Sample config: MyFactory.properties
* product.instance.className=MyA1
* product.property.b.instance.className=MyB2
* product.property.c.factory.className=MyC1Factory
* product.property.x.parent.name=myObj1 ### will look under property's interface type
* product.property.y.factory.parent.name=yFactory ### will look under cornerstone.factory
*/
public class InversionOfControlFactory extends BaseFactory
{
public static final String REVISION = "$Revision: 1.1 $";
public static final String VALUE = "value";
public static final String CONFIG_PRODUCT_INSTANCE_CLASS_NAME = Constant.PRODUCT_DOT + Constant.INSTANCE_CLASS_NAME;
public static final String CONFIG_PRODUCT_PROPERTY_DOT = Constant.PRODUCT_DOT + Constant.PROPERTY_DOT;
/* (non-Javadoc)
* @see org.apache.cornerstone.framework.api.factory.IFactory#createInstance()
*/
public Object createInstance() throws CreationException
{
// create product instance
String productInstanceClassName = _config.getProperty(CONFIG_PRODUCT_INSTANCE_CLASS_NAME);
if (productInstanceClassName == null)
throw new CreationException("config '" + CONFIG_PRODUCT_INSTANCE_CLASS_NAME + "' missing");
Object product = createInstanceByClassName(productInstanceClassName);
// set properties
for (Enumeration e = _config.keys(); e.hasMoreElements();)
{
String configName = (String) e.nextElement();
if (configName.startsWith(CONFIG_PRODUCT_PROPERTY_DOT))
{
String propertyConfigName = configName.substring(CONFIG_PRODUCT_PROPERTY_DOT.length());
int dot = propertyConfigName.indexOf(Constant.DOT);
String propertyName = propertyConfigName.substring(0, dot);
String instanceSpecName = propertyConfigName.substring(dot + 1);
String instanceSpecValue = _config.getProperty(configName);
Object propertyValue = createProperty(product, propertyName, instanceSpecName, instanceSpecValue);
BeanHelper.getSingleton().setProperty(product, propertyName, propertyValue);
}
}
return product;
}
protected Object createProperty(
Object product,
String propertyName,
String instanceSpecName,
String instanceSpecValue
)
throws CreationException
{
if (Constant.INSTANCE_CLASS_NAME.equals(instanceSpecName))
{
Object propertyValue = createInstanceByClassName(instanceSpecValue);
return propertyValue;
}
else if (Constant.FACTORY_CLASS_NAME.equals(instanceSpecName))
{
Object propertyValue = createInstanceByFactoryClassName(instanceSpecValue);
return propertyValue;
}
else if (Constant.PARENT_NAME.equals(instanceSpecName))
{
Object propertyValue = createInstanceByParentName(product, propertyName, instanceSpecValue);
return propertyValue;
}
else if (VALUE.equals(instanceSpecName))
{
return instanceSpecValue;
}
else
{
throw new CreationException(
"instanceSpecName '" + instanceSpecName + "' of property '" +
propertyName + "' not understood;" +
"allowed: '" + Constant.INSTANCE_CLASS_NAME +
"' and '" + Constant.FACTORY_CLASS_NAME +
"' and '" + Constant.PARENT_NAME +
"'"
);
}
}
protected Object createInstanceByClassName(String className) throws CreationException
{
try
{
Object instance = Class.forName(className).newInstance();
return instance;
}
catch (Exception e)
{
throw new CreationException("failed to create instance of class '" + className + "'", e);
}
}
protected Object createInstanceByFactoryClassName(String factoryClassName) throws CreationException
{
IFactory factory = (IFactory) Cornerstone.getSingletonManager().getSingleton(factoryClassName);
if (factory == null)
throw new CreationException("singleton of class '" + factoryClassName + "' not found");
Object product = factory.createInstance();
return product;
}
protected Object createInstanceByParentName(Object product, String propertyName, String parentName) throws CreationException
{
try
{
PropertyDescriptor pd = PropertyUtils.getPropertyDescriptor(product, propertyName);
Class interfaceType = pd.getPropertyType();
if (!interfaceType.isInterface())
throw new CreationException("property '" + propertyName + "' of class '" + product.getClass().getName() + "' should be an interface type");
Object propertyValue = Cornerstone.getImplementationManager().createImplementation(interfaceType, parentName);
return propertyValue;
}
catch (ImplementationException ie)
{
throw new CreationException(ie.getCause());
}
catch (Exception e)
{
throw new CreationException(e);
}
}
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/api/persistence/datasource/IDataSource.java
Index: IDataSource.java
===================================================================
package org.apache.cornerstone.framework.api.persistence.datasource;
public interface IDataSource
{
public static final String REVISION = "$Revision: 1.1 $";
public String getDriverClassName();
public String getConnectionUrl();
public String getConnectionUserName();
public String getConnectionPassword();
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/init/InitException.java
Index: InitException.java
===================================================================
package org.apache.cornerstone.framework.init;
import org.apache.cornerstone.framework.api.core.BaseException;
public class InitException extends BaseException
{
public static final String REVISION = "$Revision: 1.1 $";
/**
* @param msg
*/
public InitException(String msg)
{
super(msg);
}
/**
* @param cause
*/
public InitException(Throwable cause)
{
super(cause);
}
/**
* @param msg
* @param cause
*/
public InitException(String msg, Throwable cause)
{
super(msg, cause);
}
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/init/Cornerstone.java
Index: Cornerstone.java
===================================================================
package org.apache.cornerstone.framework.init;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
import org.apache.cornerstone.framework.api.action.IActionManager;
import org.apache.cornerstone.framework.api.factory.CreationException;
import org.apache.cornerstone.framework.api.factory.IFactory;
import org.apache.cornerstone.framework.api.implementation.IImplementationManager;
import org.apache.cornerstone.framework.api.registry.IRegistry;
import org.apache.cornerstone.framework.api.service.IServiceManager;
import org.apache.cornerstone.framework.api.singleton.ISingletonManager;
import org.apache.cornerstone.framework.constant.Constant;
import org.apache.cornerstone.framework.util.Util;
import org.apache.log4j.Logger;
public class Cornerstone
{
public static final String REVISION = "$Revision: 1.1 $";
public static final String CORNERSTONE_RUNTIME_HOME = "CORNERSTONE_RUNTIME_HOME";
public static final String DEFAULT_CORNERSTONE_RUNTIME_HOME = "./";
public static final String BOOTSTRAP_CONFIG_FILE_NAME = "bootstrap.properties";
public static final String CONFIG_SINGLETON_MANAGER_INSTANCE_CLASS_NAME = Constant.IMPLEMENTATION + Constant.SLASH + ISingletonManager.class.getName() + Constant.SLASH + Constant.INSTANCE_CLASS_NAME;
public static final String CONFIG_REGISTRY_FACTORY_CLASS_NAME = Constant.IMPLEMENTATION + Constant.SLASH + IRegistry.class.getName() + Constant.SLASH + Constant.FACTORY_CLASS_NAME;
public static final String CONFIG_IMPLEMENTATION_MANAGER_INSTANCE_CLASS_NAME = Constant.IMPLEMENTATION + Constant.SLASH + IImplementationManager.class.getName() + Constant.SLASH + Constant.INSTANCE_CLASS_NAME;
public static final String CONFIG_SERVICE_MANAGER_INSTANCE_CLASS_NAME = Constant.IMPLEMENTATION + Constant.SLASH + IServiceManager.class.getName() + Constant.SLASH + Constant.INSTANCE_CLASS_NAME;
public static final String CONFIG_ACTION_MANAGER_INSTANCE_CLASS_NAME = Constant.IMPLEMENTATION + Constant.SLASH + IActionManager.class.getName() + Constant.SLASH + Constant.INSTANCE_CLASS_NAME;
/**
* Initializes the Cornerstone Framework.
* Gets Cornerstone runtime home directory from system property <code>CORNERSTONE_RUNTIME_HOME</code>.
* If it doesn't exist, the default value of "./" (current directory) is used.
* @throws InitException
*/
public static void init() throws InitException
{
String runtimeHomeDir = System.getProperty(
CORNERSTONE_RUNTIME_HOME,
DEFAULT_CORNERSTONE_RUNTIME_HOME
);
init(runtimeHomeDir);
}
/**
* Initialized the Cornerstone Framework with the runtime home directory passed in.
* @param runtimeHomeDir Cornerstone Framework runtime home directoy, where bootstrap
* configuration files and registry are to be found.
* @throws InitException
*/
public static void init(String runtimeHomeDir) throws InitException
{
_RuntimeHomeDir = runtimeHomeDir;
if (_Logger.isInfoEnabled())
_Logger.info(CORNERSTONE_RUNTIME_HOME + "='" + _RuntimeHomeDir + "'");
readBootStrapProperties();
initSingletonManager();
initRegistry();
initImplementationManager();
initServiceManager();
initActionManager();
}
public static String getRuntimeHome()
{
return _RuntimeHomeDir;
}
public static ISingletonManager getSingletonManager()
{
return _singletonManager;
}
public static IRegistry getRegistry()
{
return _Registry;
}
public static IImplementationManager getImplementationManager()
{
return _implementationManager;
}
public static IServiceManager getServiceManager()
{
return _serviceManager;
}
public static IActionManager getActionManager()
{
return _actionManager;
}
protected static void readBootStrapProperties() throws InitException
{
String bootStrapFilePath = _RuntimeHomeDir + File.separator + BOOTSTRAP_CONFIG_FILE_NAME;
FileInputStream fis;
try
{
fis = new FileInputStream(bootStrapFilePath);
_BootStrapProperties = new Properties();
_BootStrapProperties.load(fis);
}
catch (Exception e)
{
throw new InitException(e);
}
}
protected static void initSingletonManager() throws InitException
{
String singletonManagerClassName = _BootStrapProperties.getProperty(CONFIG_SINGLETON_MANAGER_INSTANCE_CLASS_NAME);
if (singletonManagerClassName == null)
{
String bootStrapFilePath = _RuntimeHomeDir + File.pathSeparator + BOOTSTRAP_CONFIG_FILE_NAME;
throw new InitException("'" + CONFIG_SINGLETON_MANAGER_INSTANCE_CLASS_NAME + "' undefined in '" + bootStrapFilePath + "'");
}
try
{
_singletonManager = (ISingletonManager) Util.createInstance(singletonManagerClassName);
}
catch (Exception e)
{
throw new InitException("failed to create singleton manager", e);
}
}
protected static void initRegistry() throws InitException
{
String registryFactoryClassName = _BootStrapProperties.getProperty(CONFIG_REGISTRY_FACTORY_CLASS_NAME);
if (registryFactoryClassName == null)
{
String bootStrapFilePath = _RuntimeHomeDir + File.pathSeparator + BOOTSTRAP_CONFIG_FILE_NAME;
throw new InitException("'" + CONFIG_REGISTRY_FACTORY_CLASS_NAME + "' undefined in '" + bootStrapFilePath + "'");
}
IFactory registryFactory = (IFactory) getSingletonManager().getSingleton(registryFactoryClassName);
try
{
_Registry = (IRegistry) registryFactory.createInstance(_RuntimeHomeDir);
}
catch (CreationException ce)
{
throw new InitException("failed to create registry instance", ce.getCause());
}
}
protected static void initImplementationManager() throws InitException
{
String implementationManagerClassName = _BootStrapProperties.getProperty(CONFIG_IMPLEMENTATION_MANAGER_INSTANCE_CLASS_NAME);
if (implementationManagerClassName == null)
{
String bootStrapFilePath = _RuntimeHomeDir + File.pathSeparator + BOOTSTRAP_CONFIG_FILE_NAME;
throw new InitException("'" + CONFIG_IMPLEMENTATION_MANAGER_INSTANCE_CLASS_NAME + "' undefined in '" + bootStrapFilePath + "'");
}
_implementationManager = (IImplementationManager) getSingletonManager().getSingleton(implementationManagerClassName);
}
protected static void initServiceManager() throws InitException
{
String serviceManagerClassName = _BootStrapProperties.getProperty(CONFIG_SERVICE_MANAGER_INSTANCE_CLASS_NAME);
if (serviceManagerClassName == null)
{
String bootStrapFilePath = _RuntimeHomeDir + File.pathSeparator + BOOTSTRAP_CONFIG_FILE_NAME;
throw new InitException("'" + CONFIG_SERVICE_MANAGER_INSTANCE_CLASS_NAME + "' undefined in '" + bootStrapFilePath + "'");
}
_serviceManager = (IServiceManager) getSingletonManager().getSingleton(serviceManagerClassName);
}
protected static void initActionManager() throws InitException
{
String actionManagerClassName = _BootStrapProperties.getProperty(CONFIG_ACTION_MANAGER_INSTANCE_CLASS_NAME);
if (actionManagerClassName == null)
{
String bootStrapFilePath = _RuntimeHomeDir + File.pathSeparator + BOOTSTRAP_CONFIG_FILE_NAME;
throw new InitException("'" + CONFIG_ACTION_MANAGER_INSTANCE_CLASS_NAME + "' undefined in '" + bootStrapFilePath + "'");
}
_actionManager = (IActionManager) getSingletonManager().getSingleton(actionManagerClassName);
}
private static Logger _Logger = Logger.getLogger(Cornerstone.class);
protected static String _RuntimeHomeDir = DEFAULT_CORNERSTONE_RUNTIME_HOME;
protected static Properties _BootStrapProperties;
protected static ISingletonManager _singletonManager;
protected static IRegistry _Registry;
protected static IImplementationManager _implementationManager;
protected static IServiceManager _serviceManager;
protected static IActionManager _actionManager;
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/service/BaseServiceManager.java
Index: BaseServiceManager.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Jetspeed" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Jetspeed", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.cornerstone.framework.service;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.apache.cornerstone.framework.api.implementation.ImplementationException;
import org.apache.cornerstone.framework.api.registry.IRegistry;
import org.apache.cornerstone.framework.api.service.IService;
import org.apache.cornerstone.framework.api.service.IServiceDescriptor;
import org.apache.cornerstone.framework.api.service.IServiceManager;
import org.apache.cornerstone.framework.api.service.InvalidServiceException;
import org.apache.cornerstone.framework.api.service.ServiceException;
import org.apache.cornerstone.framework.constant.Constant;
import org.apache.cornerstone.framework.core.BaseObject;
import org.apache.cornerstone.framework.init.Cornerstone;
import org.apache.log4j.Logger;
/**
Factory for getting all service instances.
*/
public class BaseServiceManager extends BaseObject implements IServiceManager
{
public static final String REVISION = "$Revision: 1.1 $";
public static final String SERVICE_REGISTRY = "serviceRegistry";
public static final String SERVICE_REGISTRY_DOT = SERVICE_REGISTRY + Constant.DOT;
public static final String CONFIG_SERVICE_REGISTRY_FACTORY_CLASS_NAME = SERVICE_REGISTRY_DOT+ Constant.FACTORY_CLASS_NAME;
public static final String CONFIG_SERVICE_REGISTRY_DOMAIN_NAME = SERVICE_REGISTRY_DOT + "domainName";
public static final String CONFIG_SERVICE_REGISTRY_INTERFACE_NAME = SERVICE_REGISTRY_DOT + "interfaceName";
public static final String META_DOT = Constant.META + Constant.DOT;
public static final String CONFIG_META_INSTANCE_CLASS_NAME = META_DOT + Constant.INSTANCE_CLASS_NAME;
public static final String CONFIG_META_FACTORY_CLASS_NAME = META_DOT + Constant.FACTORY_CLASS_NAME;
public static final String CONFIG_META_NAME = META_DOT + Constant.PARENT_NAME;
/**
* Object configuration metadata
*/
public static final String CONFIG_PARAMS =
CONFIG_SERVICE_REGISTRY_DOMAIN_NAME + "," +
CONFIG_SERVICE_REGISTRY_FACTORY_CLASS_NAME + "," +
CONFIG_META_INSTANCE_CLASS_NAME + "," +
CONFIG_META_FACTORY_CLASS_NAME + "," +
CONFIG_META_NAME;
private static Logger _Logger = Logger.getLogger(BaseServiceManager.class);
public static BaseServiceManager getSingleton()
{
return _Singleton;
}
public void init()
{
super.init();
_registry = Cornerstone.getRegistry();
_serviceDomainName = getConfigProperty(CONFIG_SERVICE_REGISTRY_DOMAIN_NAME);
_serviceInterfaceName = getConfigProperty(CONFIG_SERVICE_REGISTRY_INTERFACE_NAME);
initServices();
}
public IService createServiceByName(String logicalName)
throws ServiceException
{
if (!_inInit)
{
IServiceDescriptor sd = (IServiceDescriptor) _serviceDescriptorMap.get(logicalName);
if (sd == null)
{
throw new ServiceException("service '" + logicalName + "' not found in registry");
}
if (!sd.isValid())
{
throw new ServiceException("service '" + logicalName + "' not valid");
}
}
try
{
IService service = (IService) Cornerstone.getImplementationManager().createImplementation(IService.class, logicalName);
service.setName(logicalName); // overwrite class name with logical name
return service;
}
catch (ImplementationException ie)
{
throw new ServiceException(ie.getCause());
}
}
public boolean serviceInitialized(String serviceName)
{
return _serviceDescriptorMap.containsKey(serviceName);
}
protected BaseServiceManager()
{
init();
}
protected void initServices()
{
Set serviceNameSet = _registry.getEntryNameSet(_serviceDomainName, _serviceInterfaceName);
_inInit = true;
_serviceDescriptorMap = new HashMap();
for (Iterator itr = serviceNameSet.iterator(); itr.hasNext();)
{
String serviceName = (String) itr.next();
initService(serviceName);
}
_inInit = false;
}
protected void initService(String serviceName)
{
if (serviceInitialized(serviceName)) return;
IService service = null;
IServiceDescriptor sd = null;
try
{
service = createServiceByName(serviceName);
sd = service.getDescriptor();
_serviceDescriptorMap.put(serviceName, sd);
_Logger.info("service '" + serviceName + "' init OK");
}
catch(InvalidServiceException ise)
{
_Logger.error("service '" + serviceName + "' init failed: invalid", ise);
sd = new ServiceDescriptor();
sd.setValid(false);
_serviceDescriptorMap.put(serviceName, sd);
}
catch(ServiceException se)
{
_Logger.error("failed to get service '" + serviceName + "'", se.getCause());
}
}
protected static BaseServiceManager _Singleton = new BaseServiceManager();
protected IRegistry _registry;
protected Map _serviceDescriptorMap;
protected boolean _inInit;
protected String _serviceDomainName;
protected String _serviceInterfaceName;
}
1.1 jakarta-jetspeed-2/cornerstone/src/java/org/apache/cornerstone/framework/service/controller/SequenceServiceController.java
Index: SequenceServiceController.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Jetspeed" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Jetspeed", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.cornerstone.framework.service.controller;
import java.util.ArrayList;
import java.util.List;
import org.apache.cornerstone.framework.api.context.IContext;
import org.apache.cornerstone.framework.api.service.IService;
import org.apache.cornerstone.framework.api.service.IServiceDescriptor;
import org.apache.cornerstone.framework.api.service.ServiceException;
import org.apache.cornerstone.framework.constant.Constant;
import org.apache.cornerstone.framework.init.Cornerstone;
import org.apache.cornerstone.framework.util.Util;
import org.apache.log4j.Logger;
/**
Service controller that invokes its services in sequence.
*/
public class SequenceServiceController extends BaseServiceController
{
public static final String REVISION = "$Revision: 1.1 $";
public static final String CONFIG_SEQUENCE = "sequence";
/**
* Invokes all my services in sequence.
* @param context context object that has all input and output parameters.
* @return value of service.
* @exception ServiceException
*/
protected Object invokeMiddle(IContext context) throws ServiceException
{
List serviceList = getServiceList();
Object result = null;
if (serviceList != null)
{
for (int i = 0; i < serviceList.size(); i++)
{
IService service = (IService) serviceList.get(i);
result = service.invoke(context);
IServiceDescriptor sd = service.getDescriptor();
String outputName = sd.getOutputName();
context.setValue(outputName, result);
}
}
return result;
}
/**
* Gets list of service instances.
* @return list of service instances.
* @throws ServiceException
*/
protected List getServiceList() throws ServiceException
{
if (_serviceList == null)
{
_serviceList = new ArrayList();
String serviceListString =
getConfigProperty(CONFIG_SEQUENCE);
List serviceNameList =
Util.convertStringsToList(serviceListString);
for (int i = 0; i < serviceNameList.size(); i++)
{
String sequenceElemetnName = (String) serviceNameList.get(i);
String serviceLogicalName = getConfigProperty(CONFIG_SEQUENCE, sequenceElemetnName, Constant.PARENT_NAME);
_serviceList.add(Cornerstone.getServiceManager().createServiceByName(serviceLogicalName));
}
}
return _serviceList;
}
protected List _serviceList = null;
private static Logger _Logger = Logger.getLogger(SequenceServiceController.class);
}
1.1 jakarta-jetspeed-2/cornerstone/src/resources/org/apache/cornerstone/framework/registry/BaseRegistry.properties
Index: BaseRegistry.properties
===================================================================
_.instance.isSingleton=true
1.1 jakarta-jetspeed-2/cornerstone/src/resources/org/apache/cornerstone/framework/logging/InMemoryLogFactory.properties
Index: InMemoryLogFactory.properties
===================================================================
_.instance.isSingleton=true
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org