exo-jcr SVN: r2384 - jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene.
by do-not-reply@jboss.org
Author: nzamosenchuk
Date: 2010-05-17 04:01:39 -0400 (Mon, 17 May 2010)
New Revision: 2384
Modified:
jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
Log:
EXOJCR-709: Implemented support of parent handler.
Modified: jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
===================================================================
--- jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2010-05-17 07:09:01 UTC (rev 2383)
+++ jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2010-05-17 08:01:39 UTC (rev 2384)
@@ -550,7 +550,7 @@
//index = new MultiIndex(this, context.getIndexingTree(), modeHandler, getIndexInfos(), getIndexUpdateMonitor());
- singleIndex = new SingleIndex(this, indexDirectory, analyzer , context.getIndexingTree());
+ singleIndex = new SingleIndex(this, indexDirectory, analyzer, context.getIndexingTree());
singleIndex.createInitialIndex(context.getItemStateManager(), this);
// if RW mode, create initial index and start check
@@ -1147,20 +1147,21 @@
{
QueryHandler parentHandler = getContext().getParentHandler();
IndexReader parentReader = null;
- // if (parentHandler instanceof SearchIndex && includeSystemIndex)
- // {
- // parentReader = ((SearchIndex)parentHandler).singleIndex.getIndexReader();
- // }
+ if (parentHandler instanceof SearchIndex && includeSystemIndex)
+ {
+ parentReader = ((SearchIndex)parentHandler).singleIndex.getIndexReader();
+ }
- // IndexReader reader;
- // if (parentReader != null)
- // {
- // //CachingMultiIndexReader[] readers = {index.getIndexReader(), parentReader};
- // return singleIndex.createJcrSingleIndexReader(new MultiReader(new IndexReader[] {singleIndex.getIndexReader(), parentReader}));
- // // reader = new CombinedIndexReader(readers);
- // }
- // else
+ IndexReader reader;
+ if (parentReader != null)
{
+ //CachingMultiIndexReader[] readers = {index.getIndexReader(), parentReader};
+ return singleIndex.createJcrSingleIndexReader(new MultiReader(new IndexReader[]{singleIndex.getIndexReader(),
+ parentReader}));
+ // reader = new CombinedIndexReader(readers);
+ }
+ else
+ {
return singleIndex.createJcrSingleIndexReader(singleIndex.getIndexReader());
//reader = index.getIndexReader();
}
15 years, 11 months
exo-jcr SVN: r2383 - jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core.
by do-not-reply@jboss.org
Author: areshetnyak
Date: 2010-05-17 03:09:01 -0400 (Mon, 17 May 2010)
New Revision: 2383
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SysViewWorkspaceInitializer.java
Log:
EXOJCR-729 : The SpoolFile was used in SysViewWorkspaceInitializer.
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SysViewWorkspaceInitializer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SysViewWorkspaceInitializer.java 2010-05-17 06:56:21 UTC (rev 2382)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SysViewWorkspaceInitializer.java 2010-05-17 07:09:01 UTC (rev 2383)
@@ -43,6 +43,7 @@
import org.exoplatform.services.jcr.impl.dataflow.persistent.CacheableWorkspaceDataManager;
import org.exoplatform.services.jcr.impl.util.JCRDateFormat;
import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
+import org.exoplatform.services.jcr.impl.util.io.SpoolFile;
import org.exoplatform.services.jcr.storage.WorkspaceDataContainer;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -102,6 +103,8 @@
protected String restorePath;
+ private final File tempDir;
+
protected class TempOutputStream extends ByteArrayOutputStream
{
@@ -252,7 +255,7 @@
{
if (buffer.length >= maxBufferSize)
{
- buff = new FileOutputStream(tmpFile = File.createTempFile("jcrrestorewi", ".tmp"));
+ buff = new FileOutputStream(tmpFile = SpoolFile.createTempFile("jcrrestorewi", ".tmp", tempDir));
}
else
{
@@ -262,7 +265,7 @@
else if (tmpFile == null && (((TempOutputStream)buff).getSize() + buffer.length) > maxBufferSize)
{
// spool to file
- FileOutputStream fout = new FileOutputStream(tmpFile = File.createTempFile("jcrrestorewi", ".tmp"));
+ FileOutputStream fout = new FileOutputStream(tmpFile = SpoolFile.createTempFile("jcrrestorewi", ".tmp", tempDir));
fout.write(((TempOutputStream)buff).getBuffer());
buff.close();
buff = fout; // use file
@@ -406,6 +409,8 @@
throw new RepositoryConfigurationException("Workspace (" + workspaceName
+ ") RestoreIntializer should have mandatory parameter "
+ SysViewWorkspaceInitializer.RESTORE_PATH_PARAMETER);
+
+ this.tempDir = new File(System.getProperty("java.io.tmpdir"));
}
/**
@@ -450,6 +455,8 @@
config.getContainer().getParameterInteger(WorkspaceDataContainer.MAXBUFFERSIZE_PROP,
WorkspaceDataContainer.DEF_MAXBUFFERSIZE);
this.restorePath = restorePath;
+
+ this.tempDir = new File(System.getProperty("java.io.tmpdir"));
}
/**
@@ -764,6 +771,7 @@
}
else
{
+
File pfile = propertyValue.getFile();
if (pfile != null)
{
15 years, 11 months
exo-jcr SVN: r2382 - ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/servlet.
by do-not-reply@jboss.org
Author: aparfonov
Date: 2010-05-17 02:56:21 -0400 (Mon, 17 May 2010)
New Revision: 2382
Modified:
ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/servlet/RestServlet.java
Log:
EXOJCR-728 :
Modified: ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/servlet/RestServlet.java
===================================================================
--- ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/servlet/RestServlet.java 2010-05-16 13:49:27 UTC (rev 2381)
+++ ws/trunk/exo.ws.rest.core/src/main/java/org/exoplatform/services/rest/servlet/RestServlet.java 2010-05-17 06:56:21 UTC (rev 2382)
@@ -19,6 +19,7 @@
package org.exoplatform.services.rest.servlet;
import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.component.RequestLifeCycle;
import org.exoplatform.container.web.AbstractHttpServlet;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -32,7 +33,6 @@
import java.io.IOException;
import java.io.OutputStream;
-import java.net.SocketException;
import java.util.List;
import java.util.Map;
@@ -45,7 +45,7 @@
/**
* This servlet is front-end for the REST engine.
- *
+ *
* @author <a href="mailto:andrew00x@gmail.com">Andrey Parfonov</a>
* @version $Id: $
*/
@@ -67,6 +67,8 @@
throws IOException, ServletException
{
+ RequestLifeCycle.begin(container);
+
RequestHandler requestHandler = (RequestHandler)container.getComponentInstanceOfType(RequestHandler.class);
EnvironmentContext env = new EnvironmentContext();
@@ -90,7 +92,7 @@
}
else
{
- throw new ServletException(ioe);
+ throw ioe;
}
}
catch (Exception e)
@@ -100,6 +102,7 @@
finally
{
EnvironmentContext.setCurrent(null);
+ RequestLifeCycle.end();
}
}
@@ -144,7 +147,9 @@
public void writeHeaders(GenericContainerResponse response) throws IOException
{
if (servletResponse.isCommitted())
+ {
return;
+ }
servletResponse.setStatus(response.getStatus());
@@ -158,7 +163,9 @@
{
String value = null;
if (o != null && (value = HeaderHelper.getHeaderAsString(o)) != null)
+ {
servletResponse.addHeader(name, value);
+ }
}
}
}
15 years, 11 months
exo-jcr SVN: r2381 - jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene.
by do-not-reply@jboss.org
Author: skabashnyuk
Date: 2010-05-16 09:49:27 -0400 (Sun, 16 May 2010)
New Revision: 2381
Modified:
jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SingleIndex.java
Log:
EXOJCR-709 : index initialization
Modified: jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
===================================================================
--- jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2010-05-14 15:07:42 UTC (rev 2380)
+++ jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2010-05-16 13:49:27 UTC (rev 2381)
@@ -548,12 +548,13 @@
indexingConfig = createIndexingConfiguration(nsMappings);
analyzer.setIndexingConfig(indexingConfig);
- index = new MultiIndex(this, context.getIndexingTree(), modeHandler, getIndexInfos(), getIndexUpdateMonitor());
+ //index = new MultiIndex(this, context.getIndexingTree(), modeHandler, getIndexInfos(), getIndexUpdateMonitor());
- singleIndex = new SingleIndex(this, indexDirectory, analyzer);
+ singleIndex = new SingleIndex(this, indexDirectory, analyzer , context.getIndexingTree());
+ singleIndex.createInitialIndex(context.getItemStateManager(), this);
// if RW mode, create initial index and start check
- if (modeHandler.getMode() == IndexerIoMode.READ_WRITE)
+ if (index != null && modeHandler.getMode() == IndexerIoMode.READ_WRITE)
{
if (index.numDocs() == 0 && context.isCreateInitialIndex())
{
@@ -592,19 +593,19 @@
// initialize spell checker
spellChecker = createSpellChecker();
- log.info("Index initialized: {} Version: {}", new Object[]{path, index.getIndexFormatVersion()});
- if (!index.getIndexFormatVersion().equals(getIndexFormatVersion()))
- {
- log.warn("Using Version {} for reading. Please re-index version " + "storage for optimal performance.",
- new Integer(getIndexFormatVersion().getVersion()));
- }
+ // log.info("Index initialized: {} Version: {}", new Object[]{path, index.getIndexFormatVersion()});
+ // if (!index.getIndexFormatVersion().equals(getIndexFormatVersion()))
+ // {
+ // log.warn("Using Version {} for reading. Please re-index version " + "storage for optimal performance.",
+ // new Integer(getIndexFormatVersion().getVersion()));
+ // }
File file = new File(indexDirectory, ERROR_LOG);
errorLog = new ErrorLog(file, errorLogfileSize);
// reprocess any notfinished notifies;
if (modeHandler.getMode() == IndexerIoMode.READ_WRITE)
{
- recoverErrorLog(errorLog);
+ // recoverErrorLog(errorLog);
}
modeHandler.addIndexerIoModeListener(this);
@@ -680,40 +681,40 @@
final Set<String> removedNodeIds = new HashSet<String>();
final Set<String> addedNodeIds = new HashSet<String>();
-// index.update(IteratorUtils.toList(new TransformIterator(remove, new Transformer()
-// {
-// public Object transform(Object input)
-// {
-// String uuid = ((String)input);
-// removedNodeIds.add(uuid);
-// return uuid;
-// }
-// })), IteratorUtils.toList(new TransformIterator(add, new Transformer()
-// {
-// public Object transform(Object input)
-// {
-// NodeData state = (NodeData)input;
-// if (state == null)
-// {
-// return null;
-// }
-// String uuid = state.getIdentifier();
-// addedNodeIds.add(uuid);
-// removedNodeIds.remove(uuid);
-// Document doc = null;
-// try
-// {
-// doc = createDocument(state, getNamespaceMappings(), index.getIndexFormatVersion());
-// retrieveAggregateRoot(state, aggregateRoots);
-// }
-// catch (RepositoryException e)
-// {
-// log
-// .warn("Exception while creating document for node: " + state.getIdentifier() + ": " + e.toString(), e);
-// }
-// return doc;
-// }
-// })));
+ // index.update(IteratorUtils.toList(new TransformIterator(remove, new Transformer()
+ // {
+ // public Object transform(Object input)
+ // {
+ // String uuid = ((String)input);
+ // removedNodeIds.add(uuid);
+ // return uuid;
+ // }
+ // })), IteratorUtils.toList(new TransformIterator(add, new Transformer()
+ // {
+ // public Object transform(Object input)
+ // {
+ // NodeData state = (NodeData)input;
+ // if (state == null)
+ // {
+ // return null;
+ // }
+ // String uuid = state.getIdentifier();
+ // addedNodeIds.add(uuid);
+ // removedNodeIds.remove(uuid);
+ // Document doc = null;
+ // try
+ // {
+ // doc = createDocument(state, getNamespaceMappings(), index.getIndexFormatVersion());
+ // retrieveAggregateRoot(state, aggregateRoots);
+ // }
+ // catch (RepositoryException e)
+ // {
+ // log
+ // .warn("Exception while creating document for node: " + state.getIdentifier() + ": " + e.toString(), e);
+ // }
+ // return doc;
+ // }
+ // })));
singleIndex.update(IteratorUtils.toList(new TransformIterator(remove, new Transformer()
{
@@ -1146,19 +1147,19 @@
{
QueryHandler parentHandler = getContext().getParentHandler();
IndexReader parentReader = null;
-// if (parentHandler instanceof SearchIndex && includeSystemIndex)
-// {
-// parentReader = ((SearchIndex)parentHandler).singleIndex.getIndexReader();
-// }
+ // if (parentHandler instanceof SearchIndex && includeSystemIndex)
+ // {
+ // parentReader = ((SearchIndex)parentHandler).singleIndex.getIndexReader();
+ // }
-// IndexReader reader;
-// if (parentReader != null)
-// {
-// //CachingMultiIndexReader[] readers = {index.getIndexReader(), parentReader};
-// return singleIndex.createJcrSingleIndexReader(new MultiReader(new IndexReader[] {singleIndex.getIndexReader(), parentReader}));
-// // reader = new CombinedIndexReader(readers);
-// }
-// else
+ // IndexReader reader;
+ // if (parentReader != null)
+ // {
+ // //CachingMultiIndexReader[] readers = {index.getIndexReader(), parentReader};
+ // return singleIndex.createJcrSingleIndexReader(new MultiReader(new IndexReader[] {singleIndex.getIndexReader(), parentReader}));
+ // // reader = new CombinedIndexReader(readers);
+ // }
+ // else
{
return singleIndex.createJcrSingleIndexReader(singleIndex.getIndexReader());
//reader = index.getIndexReader();
@@ -1226,6 +1227,11 @@
return doc;
}
+ Document createDocument(NodeData node) throws RepositoryException
+ {
+ return createDocument(node, nsMappings, IndexFormatVersion.V3);
+ }
+
/**
* Returns the actual index.
*
Modified: jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SingleIndex.java
===================================================================
--- jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SingleIndex.java 2010-05-14 15:07:42 UTC (rev 2380)
+++ jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SingleIndex.java 2010-05-16 13:49:27 UTC (rev 2381)
@@ -27,6 +27,12 @@
import org.apache.lucene.index.TermDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.RAMDirectory;
+import org.exoplatform.services.jcr.dataflow.ItemDataConsumer;
+import org.exoplatform.services.jcr.datamodel.NodeData;
+import org.exoplatform.services.jcr.impl.core.query.IndexingTree;
+
+import org.exoplatform.services.jcr.util.IdGenerator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,7 +40,12 @@
import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import javax.jcr.ItemNotFoundException;
+import javax.jcr.RepositoryException;
+
/**
* This class implements basic functionality of single-index JCR search index.
*
@@ -63,12 +74,16 @@
private final DocNumberCache cache;
+ private final IndexingTree indexingTree;
+
/**
* Creates instance of SingleIndex class
* @throws IOException
*/
- public SingleIndex(SearchIndex handler, File indexDirectory, Analyzer analyzer) throws IOException
+ public SingleIndex(SearchIndex handler, File indexDirectory, Analyzer analyzer, IndexingTree indexingTree)
+ throws IOException
{
+ this.indexingTree = indexingTree;
String path = indexDirectory.getAbsolutePath() + "_new";
File indexDirectory2 = new File(path);
if (!indexDirectory2.exists())
@@ -78,7 +93,11 @@
log.error("DIRECTORY NOT CREATED!!!!!!!");
}
}
- this.directory = FSDirectory.getDirectory(indexDirectory2);
+ //this.directory = new RAMDirectory();
+ String dir = indexDirectory2 + IdGenerator.generate().toString();
+ this.directory = FSDirectory.getDirectory(dir);
+ log.info(dir);
+ //FSDirectory.getDirectory(indexDirectory2);
this.writer = new IndexWriter(directory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED);
this.reader = IndexReader.open(directory, true);
this.cache = new DocNumberCache(handler.getCacheSize());
@@ -191,10 +210,94 @@
return parents;
}
}
-
-
+
public IndexFormatVersion getIndexFormatVersion()
{
return IndexFormatVersion.getVersion(reader);
}
+
+ /**
+ * Creates an initial index by traversing the node hierarchy starting at the
+ * node with <code>rootId</code>.
+ * @param searchIndex
+ * @throws RepositoryException
+ * @throws IOException
+ */
+ public void createInitialIndex(ItemDataConsumer itemStateManager, SearchIndex searchIndex) throws IOException,
+ RepositoryException
+ {
+ long count = 0;
+ // traverse and index workspace
+ //executeAndLog(new Start(Action.INTERNAL_TRANSACTION));
+ // NodeData rootState = (NodeData) stateMgr.getItemData(rootId);
+ count = createIndex(indexingTree.getIndexingRoot(), itemStateManager, count, searchIndex);
+ //executeAndLog(new Commit(getTransactionId()));
+ writer.commit();
+ log.info("Created initial index for {} nodes", new Long(count));
+
+ }
+
+ /**
+ * Recursively creates an index starting with the NodeState
+ * <code>node</code>.
+ *
+ * @param node
+ * the current NodeState.
+ * @param path
+ * the path of the current node.
+ * @param stateMgr
+ * the shared item state manager.
+ * @param count
+ * the number of nodes already indexed.
+ * @param searchIndex
+ * @return the number of nodes indexed so far.
+ * @throws IOException
+ * if an error occurs while writing to the index.
+ * @throws ItemStateException
+ * if an node state cannot be found.
+ * @throws RepositoryException
+ * if any other error occurs
+ */
+ private long createIndex(NodeData node, ItemDataConsumer stateMgr, long count, SearchIndex searchIndex)
+ throws IOException, RepositoryException
+ {
+ // NodeId id = node.getNodeId();
+
+ if (indexingTree.isExcluded(node))
+ {
+ return count;
+ }
+ //executeAndLog(new AddNode(getTransactionId(), node.getIdentifier()));
+ writer.addDocument(searchIndex.createDocument(node));
+ if (++count % 100 == 0)
+ {
+
+ log.info("indexing... {} ({})", node.getQPath().getAsString(), new Long(count));
+ }
+ if (count % 1000 == 0)
+ {
+ writer.commit();
+ }
+ //checkVolatileCommit();
+ List<NodeData> children = stateMgr.getChildNodesData(node);
+ for (NodeData nodeData : children)
+ {
+
+ NodeData childState = (NodeData)stateMgr.getItemData(nodeData.getIdentifier());
+ if (childState == null)
+ {
+ //TODO
+ // handler.getOnWorkspaceInconsistencyHandler().handleMissingChildNode(
+ // new ItemNotFoundException("Child not found "), handler, nodeData.getQPath(), node, nodeData);
+ }
+
+ if (nodeData != null)
+ {
+ count = createIndex(nodeData, stateMgr, count, searchIndex);
+ }
+ }
+
+ return count;
+ }
+
}
15 years, 11 months
exo-jcr SVN: r2380 - in jcr/branches/1.12-LIC-709/exo.jcr.component.core/src: test/java/org/exoplatform/services/jcr/api/core/query/lucene and 1 other directory.
by do-not-reply@jboss.org
Author: nzamosenchuk
Date: 2010-05-14 11:07:42 -0400 (Fri, 14 May 2010)
New Revision: 2380
Added:
jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SingleIndex.java
Modified:
jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/core/query/lucene/IndexingAggregateTest.java
Log:
EXOJCR-709: first approaches of making POC
Modified: jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
===================================================================
--- jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2010-05-13 13:47:26 UTC (rev 2379)
+++ jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2010-05-14 15:07:42 UTC (rev 2380)
@@ -129,6 +129,7 @@
* calculated as follows: 2 *
* Runtime.getRuntime().availableProcessors().
*/
+ @Deprecated
public static final int DEFAULT_EXTRACTOR_POOL_SIZE = 0;
/**
@@ -173,6 +174,11 @@
private MultiIndex index;
/**
+ * Single actual index
+ */
+ private SingleIndex singleIndex;
+
+ /**
* The analyzer we use for indexing.
*/
private JcrStandartAnalyzer analyzer;
@@ -473,6 +479,7 @@
* if an error occurs while initializing this handler.
* @throws RepositoryException
*/
+ @Override
public void doInit() throws IOException, RepositoryException
{
QueryHandlerContext context = getContext();
@@ -542,6 +549,9 @@
analyzer.setIndexingConfig(indexingConfig);
index = new MultiIndex(this, context.getIndexingTree(), modeHandler, getIndexInfos(), getIndexUpdateMonitor());
+
+ singleIndex = new SingleIndex(this, indexDirectory, analyzer);
+
// if RW mode, create initial index and start check
if (modeHandler.getMode() == IndexerIoMode.READ_WRITE)
{
@@ -670,7 +680,42 @@
final Set<String> removedNodeIds = new HashSet<String>();
final Set<String> addedNodeIds = new HashSet<String>();
- index.update(IteratorUtils.toList(new TransformIterator(remove, new Transformer()
+// index.update(IteratorUtils.toList(new TransformIterator(remove, new Transformer()
+// {
+// public Object transform(Object input)
+// {
+// String uuid = ((String)input);
+// removedNodeIds.add(uuid);
+// return uuid;
+// }
+// })), IteratorUtils.toList(new TransformIterator(add, new Transformer()
+// {
+// public Object transform(Object input)
+// {
+// NodeData state = (NodeData)input;
+// if (state == null)
+// {
+// return null;
+// }
+// String uuid = state.getIdentifier();
+// addedNodeIds.add(uuid);
+// removedNodeIds.remove(uuid);
+// Document doc = null;
+// try
+// {
+// doc = createDocument(state, getNamespaceMappings(), index.getIndexFormatVersion());
+// retrieveAggregateRoot(state, aggregateRoots);
+// }
+// catch (RepositoryException e)
+// {
+// log
+// .warn("Exception while creating document for node: " + state.getIdentifier() + ": " + e.toString(), e);
+// }
+// return doc;
+// }
+// })));
+
+ singleIndex.update(IteratorUtils.toList(new TransformIterator(remove, new Transformer()
{
public Object transform(Object input)
{
@@ -693,7 +738,7 @@
Document doc = null;
try
{
- doc = createDocument(state, getNamespaceMappings(), index.getIndexFormatVersion());
+ doc = createDocument(state, getNamespaceMappings(), singleIndex.getIndexFormatVersion());
retrieveAggregateRoot(state, aggregateRoots);
}
catch (RepositoryException e)
@@ -703,7 +748,7 @@
}
return doc;
}
- })));
+ })));;
// remove any aggregateRoot nodes that are new
// and therefore already up-to-date
@@ -722,7 +767,7 @@
NodeData state = (NodeData)input;
try
{
- return createDocument(state, getNamespaceMappings(), index.getIndexFormatVersion());
+ return createDocument(state, getNamespaceMappings(), singleIndex.getIndexFormatVersion());
}
catch (RepositoryException e)
{
@@ -733,7 +778,7 @@
}
});
modified.addAll(aggregateRoots.values());
- index.update(aggregateRoots.keySet(), modified);
+ singleIndex.update(aggregateRoots.keySet(), modified);
}
}
@@ -824,7 +869,8 @@
{
spellChecker.close();
}
- index.close();
+ //index.close();
+ singleIndex.close();
getContext().destroy();
closed = true;
log.info("Index closed: " + path);
@@ -865,6 +911,7 @@
return new FilterMultiColumnQueryHits(searcher.execute(query, sort, resultFetchHint,
QueryImpl.DEFAULT_SELECTOR_NAME))
{
+ @Override
public void close() throws IOException
{
try
@@ -912,6 +959,7 @@
searcher.setSimilarity(getSimilarity());
return new FilterMultiColumnQueryHits(query.execute(searcher, sort, resultFetchHint))
{
+ @Override
public void close() throws IOException
{
try
@@ -1057,18 +1105,18 @@
if (getContext().getParentHandler() instanceof SearchIndex)
{
SearchIndex parent = (SearchIndex)getContext().getParentHandler();
- if (parent.getIndexFormatVersion().getVersion() < index.getIndexFormatVersion().getVersion())
+ if (parent.getIndexFormatVersion().getVersion() < singleIndex.getIndexFormatVersion().getVersion())
{
indexFormatVersion = parent.getIndexFormatVersion();
}
else
{
- indexFormatVersion = index.getIndexFormatVersion();
+ indexFormatVersion = singleIndex.getIndexFormatVersion();
}
}
else
{
- indexFormatVersion = index.getIndexFormatVersion();
+ indexFormatVersion = singleIndex.getIndexFormatVersion();
}
}
return indexFormatVersion;
@@ -1097,23 +1145,25 @@
protected IndexReader getIndexReader(boolean includeSystemIndex) throws IOException
{
QueryHandler parentHandler = getContext().getParentHandler();
- CachingMultiIndexReader parentReader = null;
- if (parentHandler instanceof SearchIndex && includeSystemIndex)
- {
- parentReader = ((SearchIndex)parentHandler).index.getIndexReader();
- }
+ IndexReader parentReader = null;
+// if (parentHandler instanceof SearchIndex && includeSystemIndex)
+// {
+// parentReader = ((SearchIndex)parentHandler).singleIndex.getIndexReader();
+// }
- IndexReader reader;
- if (parentReader != null)
+// IndexReader reader;
+// if (parentReader != null)
+// {
+// //CachingMultiIndexReader[] readers = {index.getIndexReader(), parentReader};
+// return singleIndex.createJcrSingleIndexReader(new MultiReader(new IndexReader[] {singleIndex.getIndexReader(), parentReader}));
+// // reader = new CombinedIndexReader(readers);
+// }
+// else
{
- CachingMultiIndexReader[] readers = {index.getIndexReader(), parentReader};
- reader = new CombinedIndexReader(readers);
+ return singleIndex.createJcrSingleIndexReader(singleIndex.getIndexReader());
+ //reader = index.getIndexReader();
}
- else
- {
- reader = index.getIndexReader();
- }
- return new JcrIndexReader(reader);
+ //return new JcrIndexReader(reader);
}
/**
@@ -1181,9 +1231,9 @@
*
* @return the actual index.
*/
- public MultiIndex getIndex()
+ public SingleIndex getIndex()
{
- return index;
+ return singleIndex;
}
/**
@@ -1457,7 +1507,7 @@
for (int j = 0; j < aggregates.length; j++)
{
Document aDoc =
- createDocument(aggregates[j], getNamespaceMappings(), index.getIndexFormatVersion());
+ createDocument(aggregates[j], getNamespaceMappings(), singleIndex.getIndexFormatVersion());
// transfer fields to doc if there are any
Fieldable[] fulltextFields = aDoc.getFieldables(FieldNames.FULLTEXT);
if (fulltextFields != null)
@@ -1638,7 +1688,7 @@
long time = System.currentTimeMillis();
try
{
- CachingMultiIndexReader reader = index.getIndexReader();
+ IndexReader reader = singleIndex.getIndexReader();
try
{
Term aggregateUUIDs = new Term(FieldNames.AGGREGATED_NODE_UUID, "");
@@ -1676,7 +1726,7 @@
}
finally
{
- reader.release();
+ reader.decRef();
}
}
catch (Exception e)
@@ -1798,6 +1848,7 @@
return hi;
}
+ @Override
public boolean equals(Object obj)
{
if (obj instanceof CombinedIndexReader)
@@ -1808,6 +1859,7 @@
return false;
}
+ @Override
public int hashCode()
{
int hash = 0;
Added: jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SingleIndex.java
===================================================================
--- jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SingleIndex.java (rev 0)
+++ jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SingleIndex.java 2010-05-14 15:07:42 UTC (rev 2380)
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2010 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.services.jcr.impl.core.query.lucene;
+
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.index.FilterIndexReader;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.index.TermDocs;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * This class implements basic functionality of single-index JCR search index.
+ *
+ * @author <a href="mailto:nikolazius@gmail.com">Nikolay Zamosenchuk</a>
+ * @version $Id: SingleIndex.java 34360 2009-07-22 23:58:59Z nzamosenchuk $
+ *
+ */
+public class SingleIndex
+{
+ private static final Logger log = LoggerFactory.getLogger("exo.jcr.component.core.SingleIndex");
+
+ /**
+ * Index writer instance
+ */
+ private IndexWriter writer;
+
+ /**
+ * Index directory instance
+ */
+ private Directory directory;
+
+ /**
+ * Index reader instance
+ */
+ private IndexReader reader;
+
+ private final DocNumberCache cache;
+
+ /**
+ * Creates instance of SingleIndex class
+ * @throws IOException
+ */
+ public SingleIndex(SearchIndex handler, File indexDirectory, Analyzer analyzer) throws IOException
+ {
+ String path = indexDirectory.getAbsolutePath() + "_new";
+ File indexDirectory2 = new File(path);
+ if (!indexDirectory2.exists())
+ {
+ if (!indexDirectory2.mkdirs())
+ {
+ log.error("DIRECTORY NOT CREATED!!!!!!!");
+ }
+ }
+ this.directory = FSDirectory.getDirectory(indexDirectory2);
+ this.writer = new IndexWriter(directory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED);
+ this.reader = IndexReader.open(directory, true);
+ this.cache = new DocNumberCache(handler.getCacheSize());
+
+ log.info("/!\\ \t\t Initialized on path:" + indexDirectory.getPath());
+ }
+
+ /**
+ * Closes index
+ */
+ public void close()
+ {
+ try
+ {
+ writer.close();
+ reader.close();
+ }
+ catch (IOException e)
+ {
+ // TODO Auto-generated catch block
+ log.error(e.getMessage());
+ }
+ }
+
+ /**
+ * Updates index by removing and adding documents
+ *
+ * @param remove
+ * @param add
+ * @throws IOException
+ */
+ public synchronized void update(Collection remove, Collection add) throws IOException
+ {
+ for (Iterator it = remove.iterator(); it.hasNext();)
+ {
+ Term idTerm = new Term(FieldNames.UUID, (String)it.next());
+ writer.deleteDocuments(idTerm);
+ }
+ for (Iterator it = add.iterator(); it.hasNext();)
+ {
+ Document doc = (Document)it.next();
+ if (doc != null)
+ {
+ writer.addDocument(doc);
+ }
+ }
+ writer.commit();
+ }
+
+ /**
+ * Returns up2date index reader
+ *
+ * @return
+ * @throws IOException
+ */
+ public IndexReader getIndexReader() throws IOException
+ {
+ if (!reader.isCurrent())
+ {
+ IndexReader oldReader = reader;
+ reader = reader.reopen();
+ if (reader != oldReader)
+ {
+ oldReader.close();
+ }
+ }
+ reader.incRef();
+ return reader;
+ }
+
+ public IndexReader createJcrSingleIndexReader(IndexReader reader) throws IOException
+ {
+ return new JcrSingleIndexReader(reader);
+ }
+
+ private class JcrSingleIndexReader extends FilterIndexReader implements HierarchyResolver
+ {
+ /**
+ * @param reader
+ */
+ public JcrSingleIndexReader(IndexReader reader)
+ {
+ super(reader);
+ }
+
+ /**
+ * @see org.exoplatform.services.jcr.impl.core.query.lucene.HierarchyResolver#getParents(int, int[])
+ */
+ public int[] getParents(int n, int[] docNumbers) throws IOException
+ {
+ Document doc = document(n, FieldSelectors.UUID_AND_PARENT);
+ String[] parentUUIDs = doc.getValues(FieldNames.PARENT);
+
+ Term id = new Term(FieldNames.UUID, parentUUIDs[0]);
+ TermDocs docs = termDocs(id);
+ int[] parents;
+ if (docs.next())
+ {
+ parents = new int[]{docs.doc()};
+ if (docs.next())
+ {
+ log.warn("/!\\ \t\t MULTIPLE PARENTS DETECTED!!! ");
+ }
+ }
+ else
+ {
+ parents = new int[0];
+ }
+ docs.close();
+ return parents;
+ }
+ }
+
+
+ public IndexFormatVersion getIndexFormatVersion()
+ {
+ return IndexFormatVersion.getVersion(reader);
+ }
+}
Property changes on: jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SingleIndex.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/core/query/lucene/IndexingAggregateTest.java
===================================================================
--- jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/core/query/lucene/IndexingAggregateTest.java 2010-05-13 13:47:26 UTC (rev 2379)
+++ jcr/branches/1.12-LIC-709/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/core/query/lucene/IndexingAggregateTest.java 2010-05-14 15:07:42 UTC (rev 2380)
@@ -17,23 +17,21 @@
package org.exoplatform.services.jcr.api.core.query.lucene;
import org.exoplatform.services.jcr.api.core.query.AbstractIndexingTest;
-import org.exoplatform.services.jcr.impl.core.query.lucene.IndexingQueue;
-import org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex;
-import javax.jcr.RepositoryException;
-import javax.jcr.Node;
-import javax.jcr.query.Query;
-
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
-import java.io.Writer;
import java.io.OutputStreamWriter;
-import java.io.ByteArrayInputStream;
-import java.util.Calendar;
-import java.util.List;
+import java.io.Writer;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Collections;
import java.util.Iterator;
+import java.util.List;
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.query.Query;
+
/**
* <code>IndexingAggregateTest</code> checks if the nt:file nt:resource
* aggregate defined in workspace indexing-test works properly.
@@ -104,16 +102,16 @@
protected void waitUntilQueueEmpty() throws Exception
{
- SearchIndex index = (SearchIndex)getQueryHandler();
- IndexingQueue queue = index.getIndex().getIndexingQueue();
- index.getIndex().flush();
- synchronized (index.getIndex())
- {
- while (queue.getNumPendingDocuments() > 0)
- {
- index.getIndex().wait(50);
- }
- }
+// SearchIndex index = (SearchIndex)getQueryHandler();
+// IndexingQueue queue = index.getIndex().getIndexingQueue();
+// index.getIndex().flush();
+// synchronized (index.getIndex())
+// {
+// while (queue.getNumPendingDocuments() > 0)
+// {
+// index.getIndex().wait(50);
+// }
+// }
}
public void testContentLastModified() throws RepositoryException
15 years, 12 months
exo-jcr SVN: r2379 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl: core and 1 other directory.
by do-not-reply@jboss.org
Author: tolusha
Date: 2010-05-13 09:47:26 -0400 (Thu, 13 May 2010)
New Revision: 2379
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryServiceImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java
Log:
EXOJCR-707: synchronized createRepository & createWorkspace methods
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryServiceImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryServiceImpl.java 2010-05-13 13:09:36 UTC (rev 2378)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryServiceImpl.java 2010-05-13 13:47:26 UTC (rev 2379)
@@ -45,6 +45,7 @@
import java.util.Map;
import java.util.StringTokenizer;
import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
import javax.jcr.NamespaceException;
import javax.jcr.NamespaceRegistry;
@@ -140,7 +141,8 @@
* Add namespaces and nodetypes from service plugins.
*
*/
- public void createRepository(RepositoryEntry rEntry) throws RepositoryConfigurationException, RepositoryException
+ public synchronized void createRepository(RepositoryEntry rEntry) throws RepositoryConfigurationException,
+ RepositoryException
{
if (repositoryContainers.containsKey(rEntry.getName()))
{
@@ -162,8 +164,9 @@
//TODO will be implemented unregistration in managerStartChanges
//managerStartChanges.removeListeners(repositoryContainer);
repositoryContainers.remove(rEntry.getName());
-
- throw new RepositoryConfigurationException("Repository conatainer " + rEntry.getName() + " was not started.", t);
+
+ throw new RepositoryConfigurationException("Repository conatainer " + rEntry.getName() + " was not started.",
+ t);
}
if (!config.getRepositoryConfigurations().contains(rEntry))
@@ -423,13 +426,9 @@
public class ManagerStartChanges
{
- private HashMap<StorageKey, ItemsPersistenceListener> startChangesListeners;
+ private Map<StorageKey, ItemsPersistenceListener> startChangesListeners =
+ new HashMap<StorageKey, ItemsPersistenceListener>();
- ManagerStartChanges()
- {
- startChangesListeners = new HashMap<StorageKey, ItemsPersistenceListener>();
- }
-
/**
* Add new StartChangesPlugin to manager.
*
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java 2010-05-13 13:09:36 UTC (rev 2378)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java 2010-05-13 13:47:26 UTC (rev 2379)
@@ -228,7 +228,7 @@
* @param workspaceName - Creates a new Workspace with the specified name
* @throws RepositoryException
*/
- public void createWorkspace(String workspaceName) throws RepositoryException
+ public synchronized void createWorkspace(String workspaceName) throws RepositoryException
{
if (isWorkspaceInitialized(workspaceName))
15 years, 12 months
exo-jcr SVN: r2378 - jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core.
by do-not-reply@jboss.org
Author: tolusha
Date: 2010-05-13 09:09:36 -0400 (Thu, 13 May 2010)
New Revision: 2378
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
Log:
EXOJCR-354: Invoke post read after permissions check
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java 2010-05-13 09:30:43 UTC (rev 2377)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java 2010-05-13 13:09:36 UTC (rev 2378)
@@ -412,13 +412,12 @@
if (apiRead)
{
- // TODO post read will be logically to call after the permissions check
- session.getActionHandler().postRead(item);
if (!item.hasPermission(PermissionType.READ))
{
throw new AccessDeniedException("Access denied " + itemData.getQPath().getAsString() + " for "
+ session.getUserID());
}
+ session.getActionHandler().postRead(item);
}
return item;
@@ -1141,7 +1140,7 @@
// We can't remove this VH now.
return;
} // else -- if we has a references in workspace where the VH is being
- // deleted we can remove VH now.
+ // deleted we can remove VH now.
}
}
finally
15 years, 12 months
exo-jcr SVN: r2377 - core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy.
by do-not-reply@jboss.org
Author: aparfonov
Date: 2010-05-13 05:30:43 -0400 (Thu, 13 May 2010)
New Revision: 2377
Modified:
core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy/GroovyScriptInstantiator.java
Log:
EXOJCR-721 :
Modified: core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy/GroovyScriptInstantiator.java
===================================================================
--- core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy/GroovyScriptInstantiator.java 2010-05-13 09:23:41 UTC (rev 2376)
+++ core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy/GroovyScriptInstantiator.java 2010-05-13 09:30:43 UTC (rev 2377)
@@ -196,7 +196,6 @@
* @param codeSource code source
* @param loader
* @return
- * @throws IOException
*/
public Object instantiateScript(GroovyCodeSource codeSource, GroovyClassLoader loader)
{
15 years, 12 months
exo-jcr SVN: r2376 - core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy.
by do-not-reply@jboss.org
Author: aparfonov
Date: 2010-05-13 05:23:41 -0400 (Thu, 13 May 2010)
New Revision: 2376
Modified:
core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy/GroovyScriptInstantiator.java
Log:
EXOJCR-721 :
Modified: core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy/GroovyScriptInstantiator.java
===================================================================
--- core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy/GroovyScriptInstantiator.java 2010-05-12 17:17:03 UTC (rev 2375)
+++ core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy/GroovyScriptInstantiator.java 2010-05-13 09:23:41 UTC (rev 2376)
@@ -19,6 +19,7 @@
package org.exoplatform.services.script.groovy;
import groovy.lang.GroovyClassLoader;
+import groovy.lang.GroovyCodeSource;
import org.codehaus.groovy.control.CompilationFailedException;
import org.exoplatform.container.ExoContainer;
@@ -188,6 +189,34 @@
}
/**
+ * Instantiate script from give {@link GroovyCodeSource} and use given
+ * class-loader. If <code>loader == null</code> then
+ * {@link groovy.lang.GroovyClassLoader} will be is use.
+ *
+ * @param codeSource code source
+ * @param loader
+ * @return
+ * @throws IOException
+ */
+ public Object instantiateScript(GroovyCodeSource codeSource, GroovyClassLoader loader)
+ {
+ if (loader == null)
+ {
+ loader = new GroovyClassLoader();
+ }
+ Class<?> clazz = null;
+ clazz = loader.parseClass(codeSource);
+ try
+ {
+ return createObject(clazz);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Can't instantiate groovy script: " + e.getMessage(), e);
+ }
+ }
+
+ /**
* Created object from given class, if class has parameters in constructor,
* then this parameters will be searched in container.
*
15 years, 12 months
exo-jcr SVN: r2375 - kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml.
by do-not-reply@jboss.org
Author: nfilotto
Date: 2010-05-12 13:17:03 -0400 (Wed, 12 May 2010)
New Revision: 2375
Added:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/ConfigurationMarshallerUtil.java
Log:
EXOJCR-719: A File was missing
Added: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/ConfigurationMarshallerUtil.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/ConfigurationMarshallerUtil.java (rev 0)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/ConfigurationMarshallerUtil.java 2010-05-12 17:17:03 UTC (rev 2375)
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2003-2010 eXo Platform SAS.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation; either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see<http://www.gnu.org/licenses/>.
+ */
+package org.exoplatform.container.xml;
+
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+import org.jibx.runtime.IMarshallingContext;
+
+import java.io.IOException;
+import java.net.URL;
+
+
+/**
+ * This class is an utility class used to marshall the top level objects that compose the configuration
+ *
+ * Created by The eXo Platform SAS
+ * Author : Nicolas Filotto
+ * nicolas.filotto(a)exoplatform.com
+ * 12 mai 2010
+ */
+public class ConfigurationMarshallerUtil
+{
+
+ /**
+ * The logger
+ */
+ private static final Log log = ExoLogger.getLogger("exo.kernel.container.ConfigurationMarshallerUtil");
+
+ /**
+ * This method adds the given {@link URL} as comment to XML content.
+ */
+ static void addURLToContent(URL source, IMarshallingContext ictx)
+ {
+ try
+ {
+ ictx.getXmlWriter().writeComment(" Loaded from '" + source + "' ");
+ }
+ catch (IOException e)
+ {
+ log.warn("Could not add the source into the XML document", e);
+ }
+ }
+
+}
15 years, 12 months