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 ta...@apache.org on 2004/07/19 06:25:09 UTC
cvs commit: jakarta-jetspeed/src/java/org/apache/jetspeed/services/psmlmanager PsmlImporter.java
taylor 2004/07/18 21:25:09
Modified: src/java/org/apache/jetspeed/services/registry
RegistryImporter.java HybridRegistryService.java
src/java/org/apache/jetspeed/services/psmlmanager
PsmlImporter.java
Log:
- improved Registry Importer's error checking and logging
- now handling dup keys, they can be optionally replaced or skipped
use this setting in RegistryImport.properties
services.RegistryImporter.replace.imported.entries = false
CVS: ----------------------------------------------------------------------
CVS: PR:
CVS: If this change addresses a PR in the problem report tracking
CVS: database, then enter the PR number(s) here.
CVS: Obtained from:
CVS: If this change has been taken from another system, such as NCSA,
CVS: then name the system in this line, otherwise delete it.
CVS: Submitted by:
CVS: If this code has been contributed to Apache by someone else; i.e.,
CVS: they sent us a patch or a new module, then include their name/email
CVS: address here. If this is your work then delete this line.
CVS: Reviewed by:
CVS: If we are doing pre-commit code reviews and someone else has
CVS: reviewed your changes, include their name(s) here.
CVS: If you have not had it reviewed then delete this line.
Revision Changes Path
1.4 +100 -73 jakarta-jetspeed/src/java/org/apache/jetspeed/services/registry/RegistryImporter.java
Index: RegistryImporter.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/registry/RegistryImporter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- RegistryImporter.java 14 Jul 2004 22:35:01 -0000 1.3
+++ RegistryImporter.java 19 Jul 2004 04:25:09 -0000 1.4
@@ -39,14 +39,14 @@
* Static initialization of the logger for this class
*/
private static final JetspeedLogger logger =
- JetspeedLogFactoryService.getLogger(RegistryImporter.class.getName());
+ JetspeedLogFactoryService.getLogger("importer");
protected boolean check = true;
public RegistryImporter()
{
}
public static void main(String args[])
{
- System.out.println("***** Registry Importer *****");
+ logAndPrint("***** Registry Importer *****");
boolean checkImport = true;
//
// initialize and bootstrap services
@@ -62,72 +62,34 @@
TurbineServices.getInstance()).getResources(RegistryService.SERVICE_NAME);
}
- catch (Exception e)
+ catch (Throwable t)
{
String msg =
"Registry Importer: error initializing Turbine configuration";
- logger.error(msg, e);
- System.out.println(msg);
- e.printStackTrace();
- System.exit(0);
+ logAndPrintError(msg, t);
+ System.exit(1);
}
+
//
// get a handle to the exporter service
//
- RegistryService exporterService = null;
- RegistryService importerService = null;
- try
- {
- exporterService =
- (RegistryService) ServiceUtil.getServiceByName(
- "Registry");
- }
- catch (org.apache.turbine.services.InstantiationException e)
- {
- String msg =
- "Registry Importer: error loading Registry Exporter Service";
- logger.error(msg, e);
- System.out.println(msg);
- e.printStackTrace();
- System.exit(0);
- }
- //
- // get a handle to the importer service
- //
- try
- {
- importerService =
- (RegistryService) ServiceUtil.getServiceByName(
- "RegistryImporter");
- }
- catch (org.apache.turbine.services.InstantiationException e)
- {
- String msg =
- "Registry Importer: error loading Registry Importer Service";
- logger.error(msg, e);
- System.out.println(msg);
- e.printStackTrace();
- System.exit(0);
- }
- if (exporterService
- .getClass()
- .getName()
- .equals(importerService.getClass().getName()))
+ RegistryService exporterService = getService("Registry", "Exporter");
+ RegistryService importerService = getService("RegistryImporter", "Importer");
+
+ if (exporterService.getClass().getName().equals(importerService.getClass().getName()))
{
String msg =
"Registry Importer Error: Importer Class cannot equal Exporter Class.";
- logger.error(msg);
- System.out.println(msg);
- System.exit(0);
+ logAndPrintError(msg, null);
+ System.exit(1);
}
+
RegistryImporter importer = new RegistryImporter();
boolean ran = importer.run(exporterService, importerService);
- if (ran)
- {
- System.out.println("**** Registry Importer - completed");
- }
- System.exit(1);
+ logAndPrint("**** Registry Importer - completed");
+ System.exit(0);
}
+
public boolean run(
RegistryService exporterService,
RegistryService importerService)
@@ -135,38 +97,54 @@
String msg;
int registryCount = 0;
int entryCount = 0;
+ int skipCount = 0;
try
{
- msg =
- "Running with Importer Service: " + importerService.getClass();
- System.out.println(msg);
- logger.info(msg);
- msg =
- "Running with Exporter Service: " + exporterService.getClass();
- System.out.println(msg);
- logger.info(msg);
+ msg = "Running with Importer Service: " + importerService.getClass();
+ logAndPrint(msg);
+ msg = "Running with Exporter Service: " + exporterService.getClass();
+ logAndPrint(msg);
Enumeration e = importerService.getNames();
while (e.hasMoreElements())
{
String registryName = (String) e.nextElement();
- System.out.println("Exporting Registry: " + registryName);
+ logAndPrint("Exporting Registry: " + registryName);
Registry importRegistry = importerService.get(registryName);
Registry exportRegistry = exporterService.get(registryName);
-
-
+
Enumeration enum = exportRegistry.getEntries();
while (enum.hasMoreElements())
{
RegistryEntry exportEntry = (RegistryEntry) enum.nextElement();
- System.out.println("Importing into Registry: " + registryName + ", Entry = " + exportEntry.getName());
if (registryName.equals(org.apache.jetspeed.services.Registry.SECURITY))
{
- importerService.addEntry(registryName, exportEntry);
+ if (null == importerService.getEntry(registryName, exportEntry.getName()))
+ {
+ importerService.addEntry(registryName, exportEntry);
+ logAndPrint("Imported into Registry: " + registryName + ", Entry = " + exportEntry.getName());
+ entryCount++;
+ }
+ else
+ {
+ if (importerService instanceof HybridRegistryService)
+ {
+ HybridRegistryService hybrid = (HybridRegistryService)importerService;
+ if (hybrid.getReplaceImportedEntries())
+ {
+ importerService.addEntry(registryName, exportEntry);
+ logAndPrint("Imported (update) into Registry: " + registryName + ", Entry = " + exportEntry.getName());
+ entryCount++;
+ }
+ else
+ {
+ logAndPrint("Skipping Entry, already exists: " + registryName + ", Entry = " + exportEntry.getName());
+ skipCount++;
+ }
+ }
+ }
}
-
- entryCount++;
}
registryCount++;
}
@@ -177,10 +155,59 @@
e.printStackTrace();
return false;
}
- msg = "Registry Importer completed. Exported " + registryCount + " registries, " + entryCount + " total registry entries.";
- System.out.println(msg);
- logger.info(msg);
+ msg = "*** Registry Importer completed ***";
+ logAndPrint(msg);
+ msg = "Total Registries imported : " + registryCount;
+ logAndPrint(msg);
+ msg = "Total Registry Entries imported: " + entryCount;
+ logAndPrint(msg);
+ msg = "Total Registry Entries skipped : " + skipCount;
+ logAndPrint(msg);
return true;
}
+ private static final void logAndPrint(String msg)
+ {
+ System.out.println(msg);
+ logger.info(msg);
+ }
+
+ private static final void logAndPrintError(String msg, Throwable t)
+ {
+ System.err.println(msg);
+ if (null == t)
+ {
+ logger.error(msg);
+ }
+ else
+ {
+ logger.error(msg, t);
+ }
+ }
+
+ private static final RegistryService getService(String serviceName, String serviceMode)
+ {
+ RegistryService service = null;
+
+ try
+ {
+ service = (RegistryService) ServiceUtil.getServiceByName(serviceName);
+ }
+ catch (org.apache.turbine.services.InstantiationException e)
+ {
+ String msg =
+ "Registry Importer: error loading Registry " + serviceMode + " Service";
+ logAndPrintError(msg, e);
+ System.exit(1);
+ }
+
+ if (false == service.getInit())
+ {
+ String msg =
+ "Registry Importer: error initializing Registry " + serviceMode + " Service";
+ logAndPrintError(msg, null);
+ System.exit(1);
+ }
+ return service;
+ }
}
1.6 +37 -24 jakarta-jetspeed/src/java/org/apache/jetspeed/services/registry/HybridRegistryService.java
Index: HybridRegistryService.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/registry/HybridRegistryService.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- HybridRegistryService.java 15 Jul 2004 00:14:39 -0000 1.5
+++ HybridRegistryService.java 19 Jul 2004 04:25:09 -0000 1.6
@@ -33,8 +33,6 @@
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;
import org.apache.turbine.services.InitializationException;
-import org.apache.turbine.services.TurbineServices;
-import org.apache.turbine.services.resources.ResourceService;
/**
* Implements the Jetspeed Registry Service interface, with a hybrid of Database and File-based (Castor)
@@ -53,6 +51,7 @@
private Hashtable dbRegistries = new Hashtable();
private static final JetspeedLogger logger = JetspeedLogFactoryService.getLogger(HybridRegistryService.class.getName());
private boolean hybrid = true;
+ private boolean replaceImportedEntries = false;
/**
@@ -69,11 +68,12 @@
try
{
- // get the list of managed Registries in the Database
+ setInit(false);
- // dst ResourceService rs = serviceConf.getResources("database.default");
+ replaceImportedEntries = getConfiguration().getBoolean("replace.imported.entries");
+
+ // get the list of managed Registries in the Database
Iterator iterator = getConfiguration().getKeys("database.default");
- // dst Iterator iterator = rs.getKeys();
while (iterator.hasNext())
{
String key = (String)iterator.next();
@@ -90,14 +90,20 @@
setInit(true);
}
+ public boolean getReplaceImportedEntries()
+ {
+ return this.replaceImportedEntries;
+ }
+
private void loadCache(String registryName, Registry registry)
+ throws InitializationException
{
LocalRegistry local = (LocalRegistry)registry;
try
{
if (registryName.equals(org.apache.jetspeed.services.Registry.SECURITY))
- {
- Iterator extent = SecurityDbEntryPeer.fetchExtent().iterator();
+ {
+ Iterator extent = SecurityDbEntryPeer.fetchExtent().iterator();
while (extent.hasNext())
{
SecurityEntry se = (SecurityEntry)extent.next();
@@ -105,9 +111,10 @@
}
}
}
- catch (Exception e)
+ catch (Throwable t)
{
- logger.error("Failed to load cache for registry: " + registryName, e);
+ logger.error("Failed to load cache for registry: " + registryName, t);
+ throw new InitializationException("Unable to initialize HybridRegistryService cache", t);
}
}
@@ -221,7 +228,6 @@
}
else
{
- // System.out.println(" +++ Getting from cache");
}
return entry;
}
@@ -248,23 +254,30 @@
public void removeEntry(String registryName, String entryName)
{
- LocalRegistry registry = (LocalRegistry)dbRegistries.get(registryName);
- if (null == registry)
+ try
{
- if (hybrid)
+ LocalRegistry registry = (LocalRegistry)dbRegistries.get(registryName);
+ if (null == registry)
{
- super.removeEntry(registryName, entryName);
+ if (hybrid)
+ {
+ super.removeEntry(registryName, entryName);
+ }
+ return;
+ }
+ if (entryName == null)
+ {
+ return;
+ }
+ if (registryName.equals(org.apache.jetspeed.services.Registry.SECURITY))
+ {
+ SecurityDbEntryPeer.removeSecurityEntry(entryName);
+ registry.removeLocalEntry(entryName);
}
- return;
- }
- if (entryName == null)
- {
- return;
}
- if (registryName.equals(org.apache.jetspeed.services.Registry.SECURITY))
- {
- SecurityDbEntryPeer.removeSecurityEntry(entryName);
- registry.removeLocalEntry(entryName);
+ catch (RegistryException e)
+ {
+
}
}
1.17 +6 -6 jakarta-jetspeed/src/java/org/apache/jetspeed/services/psmlmanager/PsmlImporter.java
Index: PsmlImporter.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/psmlmanager/PsmlImporter.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- PsmlImporter.java 23 Feb 2004 03:32:51 -0000 1.16
+++ PsmlImporter.java 19 Jul 2004 04:25:09 -0000 1.17
@@ -89,7 +89,7 @@
logger.error(msg, e);
System.out.println(msg);
e.printStackTrace();
- System.exit(0);
+ System.exit(1);
}
//
@@ -108,7 +108,7 @@
logger.error(msg, e);
System.out.println(msg);
e.printStackTrace();
- System.exit(0);
+ System.exit(1);
}
//
@@ -124,7 +124,7 @@
logger.error(msg, e);
System.out.println(msg);
e.printStackTrace();
- System.exit(0);
+ System.exit(1);
}
if (exporterService.getClass().getName().equals(importerService.getClass().getName()))
@@ -132,7 +132,7 @@
String msg = "PSML Importer Error: Importer Class cannot equal Exporter Class.";
logger.error(msg);
System.out.println(msg);
- System.exit(0);
+ System.exit(1);
}
PsmlImporter importer = new PsmlImporter();
@@ -144,7 +144,7 @@
System.out.println("**** PSML Importer - completed");
}
- System.exit(1);
+ System.exit(0);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org