svn commit: r1553093 - /sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/jobs/consumer/JobExecutor.java

2013-12-23 Thread cziegeler
Author: cziegeler
Date: Mon Dec 23 10:50:52 2013
New Revision: 1553093

URL: http://svn.apache.org/r1553093
Log:
Correct javadocs

Modified:

sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/jobs/consumer/JobExecutor.java

Modified: 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/jobs/consumer/JobExecutor.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/jobs/consumer/JobExecutor.java?rev=1553093r1=1553092r2=1553093view=diff
==
--- 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/jobs/consumer/JobExecutor.java
 (original)
+++ 
sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/jobs/consumer/JobExecutor.java
 Mon Dec 23 10:50:52 2013
@@ -63,25 +63,28 @@ public interface JobExecutor {
 /**
  * Execute the job.
  *
- * If the job has been processed successfully, {@link 
JobExecutionContext#SUCCEEDED()} should be returned.
- * If the job has not been processed completely, but might be rescheduled 
{@link JobExecutionContext#FAILED()}
- * should be returned.
- * If the job processing failed and should not be rescheduled, {@link 
JobExecutionContext#CANCELLED()} should
- * be returned.
+ * If the job has been processed successfully, a job result of succeeded 
should be returned. This result can
+ * be generated by calling 
codeJobExecutionContext.result().succeeded()/code.
+ *
+ * If the job has not been processed completely, but might be rescheduled 
failed should be returned.
+ * This result can be generated by calling 
codeJobExecutionContext.result().failed()/code.
+ *
+ * If the job processing failed and should not be rescheduled, cancelled 
should be returned.
+ * This result can be generated by calling 
codeJobExecutionContext.result().cancelled()/code.
  *
  * If the executor decides to process the job asynchronously it should 
return codenull/code
  * and notify the job manager by using the {@link 
JobExecutionContext#asyncProcessingFinished(JobExecutionResult)}
- * method.
+ * method of the processing result.
  *
  * If the processing fails with throwing an exception/throwable, the 
process will not be rescheduled
- * and treated like the method would have returned {@link 
JobExecutionContext#CANCELLED()}.
+ * and treated like the method would have returned a cancelled result.
  *
- * Instead of the constants from the JobExecutionContext class, this 
method can return a custom instance containing
- * additional information using the builder pattern available from {@link 
JobExecutionContext#result(String)}.
+ * Additional information can be added to the result by using the builder 
pattern available
+ * from {@link JobExecutionContext#result()}.
  *
  * @param job The job
  * @param context The execution context.
- * @return The job execution result
+ * @return The job execution result or codenull/code for asynchronous 
processing.
  */
 JobExecutionResult process(Job job, JobExecutionContext context);
 }




svn commit: r1553094 [5/5] - in /sling/trunk/samples/mail-archive: ./ docs/ server/ server/src/ server/src/main/ server/src/main/java/ server/src/main/java/org/ server/src/main/java/org/apache/ server

2013-12-23 Thread bdelacretaz
Added: 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/navbar.html.esp
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/navbar.html.esp?rev=1553094view=auto
==
--- 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/navbar.html.esp
 (added)
+++ 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/navbar.html.esp
 Mon Dec 23 11:11:15 2013
@@ -0,0 +1,68 @@
+div class=navbar
+   % load(head.esp); %
+
+!-- NAVIGATION BAR --
+
+   a href=%= homePage %home/a  
+%
+   if (currentNode.getName() == search) {
+%
+   a href=/mailarchiveserver/search.htmlsearch/a
+%
+   } else {
+%
+   a href=/mailarchiveserver/archive.htmlarchive/a
+% 
+   var name = [];
+   var href = [];
+   var node = currentNode;
+   var folding = false;
+   var fname = ;
+   var fhref = ;
+   while (node.getName() != archive) {
+   var rt = node[sling:resourceType];
+   if (rt == mailarchiveserver/list) 
+   folding = true;
+   
+   if (rt != undefined) {
+   if (!folding) {
+   name.push(node[jcr:text]);
+   href.push(node.getPath()+.html);
+   } else {
+   fname += node[jcr:text]+.;
+   if (fhref == )
+   fhref = node.getPath()+.html;
+   }
+   }
+   node = node.getParent();
+   }
+   if (folding) {
+   name.push(fname.substring(0, fname.length-1));
+   href.push(fhref);
+   }
+
+   while (name.length  0) {
+   out.print(  a 
href=+href.pop()++name.pop()+/a);
+   }
+   }
+%
+/div
+
+!-- SAERCH BAR --
+
+form method=GET action=/mailarchiveserver/search.html style=width: 40%; 
margin: 1em auto;
+input type=text name=q style=width: 70%; value='%= 
request.getParameter('q') ? request.getParameter('q') : '' %' / 
+input type=submit value=Search style=width: 23%; / span 
+title='You can search in the following ways
+(similar to Markmail)
+General terms: server
+Or phrases:latest news
+Sender field:  from:Roy Fielding, from:adobe.com
+Subject field: subject:how to
+List field:list:sling
+
+Search is NOT case sensitive, i.e. searching for list:oak and LIST:OAK will 
produce same results.
+
+Constraints are ANDed together except in the case of multiple fielded 
constraints of the same type which will be ORed together.
+'(?)/span br 
+/form

Added: 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/root/html.esp
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/root/html.esp?rev=1553094view=auto
==
--- 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/root/html.esp
 (added)
+++ 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/root/html.esp
 Mon Dec 23 11:11:15 2013
@@ -0,0 +1,26 @@
+html
+
+head
+%
+   load(../head.esp); 
+   if (! request.getRequestParameter(noredirect) ) {
+   response.sendRedirect(startPage)
+   }
+%
+   titleMail Archive Server/title
+/head
+
+body
+   div class=content
+   h1Welcome to the Mail Archive Server!/h1 br
+
+   dl
+ dtChoose what you want to do:/dt br
+ dda href=%= currentNode.getPath() 
%/import.mbox.htmlImport mbox file to the archive/a/dd br
+ dda href=%= currentNode.getPath() 
%/archive.htmlBrowse archive/a/dd br
+ dda href=%= currentNode.getPath() %/search.htmlSearch 
archive/a/dd br
+   /dl
+   /div
+/body
+
+/html

Added: 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/search/html.esp
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/search/html.esp?rev=1553094view=auto
==
--- 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/search/html.esp
 (added)
+++ 

svn commit: r1553098 [1/6] - in /sling/trunk/samples/mail-archive/server: ./ src/test/java/org/apache/sling/mailarchiveserver/impl/ src/test/java/org/apache/sling/mailarchiveserver/util/ src/test/reso

2013-12-23 Thread bdelacretaz
Author: bdelacretaz
Date: Mon Dec 23 12:00:04 2013
New Revision: 1553098

URL: http://svn.apache.org/r1553098
Log:
SLING-3297 - fix tests and add some public mbox test files

Added:

sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/util/TU.java
sling/trunk/samples/mail-archive/server/src/test/resources/
sling/trunk/samples/mail-archive/server/src/test/resources/test-files/
  - copied from r1553094, 
sling/trunk/samples/mail-archive/server/test_files/
sling/trunk/samples/mail-archive/server/src/test/resources/test-files/mbox/

sling/trunk/samples/mail-archive/server/src/test/resources/test-files/mbox/hadoop-common-dev-201202.mbox

sling/trunk/samples/mail-archive/server/src/test/resources/test-files/mbox/jackrabbit-dev-201201.mbox

sling/trunk/samples/mail-archive/server/src/test/resources/test-files/mbox/jackrabbit-dev-201309.mbox

sling/trunk/samples/mail-archive/server/src/test/resources/test-files/mbox/sling-dev-201203.mbox

sling/trunk/samples/mail-archive/server/src/test/resources/test-files/mbox/tomcat-dev-201204.mbox
Removed:
sling/trunk/samples/mail-archive/server/test_files/
Modified:
sling/trunk/samples/mail-archive/server/pom.xml

sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImplRepositoryTest.java

sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/Mime4jMboxParserImplCountTest.java

sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/Mime4jMboxParserImplStreamingTest.java

sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/Mime4jMboxParserImplTest.java

Modified: sling/trunk/samples/mail-archive/server/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/server/pom.xml?rev=1553098r1=1553097r2=1553098view=diff
==
--- sling/trunk/samples/mail-archive/server/pom.xml (original)
+++ sling/trunk/samples/mail-archive/server/pom.xml Mon Dec 23 12:00:04 2013
@@ -26,6 +26,15 @@
 artifactIdmaven-scr-plugin/artifactId
 /plugin
 plugin
+groupIdorg.apache.maven.plugins/groupId
+artifactIdmaven-surefire-plugin/artifactId
+configuration
+systemProperties
+
test.folder.path${project.basedir}/target/test-classes/test-files/test.folder.path
+/systemProperties
+/configuration
+/plugin
+plugin
 groupIdorg.apache.felix/groupId
 artifactIdmaven-bundle-plugin/artifactId
 extensionstrue/extensions

Modified: 
sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImplRepositoryTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImplRepositoryTest.java?rev=1553098r1=1553097r2=1553098view=diff
==
--- 
sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImplRepositoryTest.java
 (original)
+++ 
sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImplRepositoryTest.java
 Mon Dec 23 12:00:04 2013
@@ -24,6 +24,7 @@ import org.apache.sling.api.resource.Res
 import org.apache.sling.discovery.impl.setup.MockedResourceResolver;
 import org.apache.sling.mailarchiveserver.api.MboxParser;
 import org.apache.sling.mailarchiveserver.util.MailArchiveServerConstants;
+import org.apache.sling.mailarchiveserver.util.TU;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -34,7 +35,6 @@ public class MessageStoreImplRepositoryT
private MessageStoreImpl store;
 
static final String TEST_RT_KEY = sling_resourceType;
-   private static final String TEST_FOLDER = test_files/;
private static final String BODY_SUFFIX = _body;
private static final String HEADERS_SUFFIX = _headers;
 
@@ -85,14 +85,14 @@ public class MessageStoreImplRepositoryT
@Test
public void testStructure() throws IOException {
MboxParser parser = new Mime4jMboxParserImpl();
-   final File file = new File(TEST_FOLDER + MBOX_FILE);
+   final File file = new File(TU.TEST_FOLDER, MBOX_FILE);
store.saveAll(parser.parse(new FileInputStream(file)));
assertStructure();
}
 
private void assertSaveMessage(String messageFile) throws 
MimeException, IOException, FileNotFoundException {
MessageBuilder builder = new DefaultMessageBuilder();
-   Message 

svn commit: r1553100 - in /sling/trunk/samples/mail-archive: ./ stats/ stats/src/ stats/src/main/ stats/src/main/java/ stats/src/main/java/org/ stats/src/main/java/org/apache/ stats/src/main/java/org/

2013-12-23 Thread bdelacretaz
Author: bdelacretaz
Date: Mon Dec 23 12:13:35 2013
New Revision: 1553100

URL: http://svn.apache.org/r1553100
Log:
SLING-3297 - add my (work in progress) stats module

Added:
sling/trunk/samples/mail-archive/stats/   (with props)
sling/trunk/samples/mail-archive/stats/pom.xml
sling/trunk/samples/mail-archive/stats/src/
sling/trunk/samples/mail-archive/stats/src/main/
sling/trunk/samples/mail-archive/stats/src/main/java/
sling/trunk/samples/mail-archive/stats/src/main/java/org/
sling/trunk/samples/mail-archive/stats/src/main/java/org/apache/
sling/trunk/samples/mail-archive/stats/src/main/java/org/apache/sling/

sling/trunk/samples/mail-archive/stats/src/main/java/org/apache/sling/mailarchive/

sling/trunk/samples/mail-archive/stats/src/main/java/org/apache/sling/mailarchive/stats/

sling/trunk/samples/mail-archive/stats/src/main/java/org/apache/sling/mailarchive/stats/MailStatsProcessor.java

sling/trunk/samples/mail-archive/stats/src/main/java/org/apache/sling/mailarchive/stats/OrgMapper.java

sling/trunk/samples/mail-archive/stats/src/main/java/org/apache/sling/mailarchive/stats/impl/

sling/trunk/samples/mail-archive/stats/src/main/java/org/apache/sling/mailarchive/stats/impl/MailStatsProcessorImpl.java

sling/trunk/samples/mail-archive/stats/src/main/java/org/apache/sling/mailarchive/stats/impl/OrgMapperImpl.java

sling/trunk/samples/mail-archive/stats/src/main/java/org/apache/sling/mailarchive/stats/impl/StatsDataServlet.java

sling/trunk/samples/mail-archive/stats/src/main/java/org/apache/sling/mailarchive/stats/impl/StatsTestServlet.java
sling/trunk/samples/mail-archive/stats/src/main/resources/
sling/trunk/samples/mail-archive/stats/src/main/resources/initial-content/

sling/trunk/samples/mail-archive/stats/src/main/resources/initial-content/apps/

sling/trunk/samples/mail-archive/stats/src/main/resources/initial-content/apps/mailserver/

sling/trunk/samples/mail-archive/stats/src/main/resources/initial-content/apps/mailserver/stats/

sling/trunk/samples/mail-archive/stats/src/main/resources/initial-content/apps/mailserver/stats/destination/

sling/trunk/samples/mail-archive/stats/src/main/resources/initial-content/apps/mailserver/stats/destination/destination.esp
   (with props)

sling/trunk/samples/mail-archive/stats/src/main/resources/initial-content/apps/mailserver/stats/stats.esp
   (with props)
Modified:
sling/trunk/samples/mail-archive/pom.xml

Modified: sling/trunk/samples/mail-archive/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/pom.xml?rev=1553100r1=1553099r2=1553100view=diff
==
--- sling/trunk/samples/mail-archive/pom.xml (original)
+++ sling/trunk/samples/mail-archive/pom.xml Mon Dec 23 12:13:35 2013
@@ -11,5 +11,6 @@
 modules
 moduleserver/module
 moduleui/module
+modulestats/module
 /modules
 /project

Propchange: sling/trunk/samples/mail-archive/stats/
--
--- svn:ignore (added)
+++ svn:ignore Mon Dec 23 12:13:35 2013
@@ -0,0 +1,13 @@
+target
+bin
+*.iml
+*.ipr
+*.iws
+.settings
+.project
+.classpath
+.externalToolBuilders
+maven-eclipse.xml
+
+
+

Added: sling/trunk/samples/mail-archive/stats/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/stats/pom.xml?rev=1553100view=auto
==
--- sling/trunk/samples/mail-archive/stats/pom.xml (added)
+++ sling/trunk/samples/mail-archive/stats/pom.xml Mon Dec 23 12:13:35 2013
@@ -0,0 +1,131 @@
+?xml version=1.0 encoding=UTF-8?
+project xmlns=http://maven.apache.org/POM/4.0.0; 
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; 
xsi:schemaLocation=http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd;
+
+modelVersion4.0.0/modelVersion
+
+parent
+groupIdorg.apache.sling/groupId
+artifactIdsling/artifactId
+version18/version
+/parent
+
+groupIdorg.apache.sling/groupId
+artifactIdorg.apache.sling.mailarchive.stats/artifactId
+packagingbundle/packaging
+version0.0.1-SNAPSHOT/version
+
+nameApache Sling Mail Archive Server Stats/name
+inceptionYear2013/inceptionYear
+
+description
+Stats module for the mail archive server
+/description
+
+properties
+sling.java.version6/sling.java.version
+/properties
+
+build
+plugins
+plugin
+groupIdorg.apache.felix/groupId
+artifactIdmaven-scr-plugin/artifactId
+/plugin
+plugin
+groupIdorg.apache.felix/groupId
+artifactIdmaven-bundle-plugin/artifactId
+extensionstrue/extensions
+configuration
+instructions
+   

svn commit: r1553102 - /sling/trunk/samples/mail-archive/README.md

2013-12-23 Thread bdelacretaz
Author: bdelacretaz
Date: Mon Dec 23 12:22:02 2013
New Revision: 1553102

URL: http://svn.apache.org/r1553102
Log:
SLING-3297 - README

Added:
sling/trunk/samples/mail-archive/README.md

Added: sling/trunk/samples/mail-archive/README.md
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/README.md?rev=1553102view=auto
==
--- sling/trunk/samples/mail-archive/README.md (added)
+++ sling/trunk/samples/mail-archive/README.md Mon Dec 23 12:22:02 2013
@@ -0,0 +1,25 @@
+Apache Sling mail archive server sample app
+==
+
+This is a work in progress sample application for Sling, initially
+contributed by Igor Bogomolov who wrote it as part of an internship,
+and meant to create a useful mail archive server that also serves
+as a more complex Sling sample.
+
+To run this, install the dom, core and mbox bundles from the 
+http://james.apache.org/mime4j/ project on a trunk Sling launchpad
+instance, and install the bundles provided by this module. Note the
+MIME4J-231 issue when building the Mime4J bundles.
+
+Then, start at http://localhost:8080/mailarchiveserver/import.mbox.html
+to import a few mbox files, you can find some at 
+server/src/test/resources/test-files/mbox/
+
+http://localhost:8080/mailarchiveserver.html is the server's homepage.
+
+To import live mail from a mail server you need a Connector - the SLING-3297
+contribution does include one for Exchange, but we haven't included it
+in this sample so far.
+
+Stats (even more work in progress) are available at 
+http://localhost:8080/content/mailarchiveserver/stats.html




svn commit: r1553104 - in /sling/trunk/samples/mail-archive/server/src: main/java/org/apache/sling/mailarchiveserver/impl/ test/java/org/apache/sling/mailarchiveserver/impl/

2013-12-23 Thread bdelacretaz
Author: bdelacretaz
Date: Mon Dec 23 12:37:37 2013
New Revision: 1553104

URL: http://svn.apache.org/r1553104
Log:
SLING-3297 - use unicode literals in strings

Modified:

sling/trunk/samples/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImpl.java

sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImplStaticMethodsTest.java

sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/ThreadKeyGeneratorImplSubjectEqualityTest.java

sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/ThreadKeyGeneratorImplTest.java

Modified: 
sling/trunk/samples/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImpl.java?rev=1553104r1=1553103r2=1553104view=diff
==
--- 
sling/trunk/samples/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImpl.java
 (original)
+++ 
sling/trunk/samples/mail-archive/server/src/main/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImpl.java
 Mon Dec 23 12:37:37 2013
@@ -82,8 +82,11 @@ public class MessageStoreImpl implements
 private BundleContext bundleContext = null;
 
 static final String FIELD_SEPARATOR =  : ;
-private static final String[] RE_PREFIXES = { re:, aw:, fw:, re , 
aw , fw , 答复};
-// for testing
+
+// TODO should be configurable, and should probably be in 
ThreadKeyGeneratorImpl
+private static final String[] RE_PREFIXES = { re:, aw:, fw:, re , 
aw , fw , \u7B54\u590D};
+
+// TODO for testing??
 String archivePath = MailArchiveServerConstants.ARCHIVE_PATH;
 String resourceTypeKey = MailArchiveServerConstants.RT_KEY;
 

Modified: 
sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImplStaticMethodsTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImplStaticMethodsTest.java?rev=1553104r1=1553103r2=1553104view=diff
==
--- 
sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImplStaticMethodsTest.java
 (original)
+++ 
sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/MessageStoreImplStaticMethodsTest.java
 Mon Dec 23 12:37:37 2013
@@ -6,19 +6,13 @@ import static org.apache.sling.mailarchi
 import static 
org.apache.sling.mailarchiveserver.impl.MessageStoreImpl.removeRe;
 import static org.junit.Assert.assertEquals;
 
-import java.util.Date;
-import java.util.Map;
-
-import org.apache.james.mime4j.dom.Message;
-import org.apache.james.mime4j.message.MessageImpl;
-import org.apache.sling.mailarchiveserver.util.MailArchiveServerConstants;
 import org.junit.Test;
 
 public class MessageStoreImplStaticMethodsTest {

@Test
public void testMakeJcrFriendly() {
-   assertEquals(Remove each char, , 
makeJcrFriendly(��!@#$%^*()+={}[],/?\\;:'\));
+   assertEquals(Remove each char, , 
makeJcrFriendly(\\uFFFD\uFFFD!@#$%^*()+={}[],/?;:'\\\));
assertEquals(Substitute each char with _ char, trimming, a, 
makeJcrFriendly(.a_)); 
assertEquals(Substitute each char with _ char, b_e, 
makeJcrFriendly(b_ .-e));
}

Modified: 
sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/ThreadKeyGeneratorImplSubjectEqualityTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/ThreadKeyGeneratorImplSubjectEqualityTest.java?rev=1553104r1=1553103r2=1553104view=diff
==
--- 
sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/ThreadKeyGeneratorImplSubjectEqualityTest.java
 (original)
+++ 
sling/trunk/samples/mail-archive/server/src/test/java/org/apache/sling/mailarchiveserver/impl/ThreadKeyGeneratorImplSubjectEqualityTest.java
 Mon Dec 23 12:37:37 2013
@@ -25,11 +25,10 @@ public class ThreadKeyGeneratorImplSubje
 public static ListObject[] data() {
 final ListObject[] result = new ArrayListObject[]();
 
-result.add(new Object[] {Chef cookbooks for Installing CQ  
packages, Re: Chef cookbooks for Installing CQ  packages} ); 
+result.add(new Object[] {Chef cookbooks for Installing FAQ  
packages, Re: Chef cookbooks for Installing FAQ  packages} ); 
 result.add(new Object[] {Dropbox to throw 

svn commit: r1553128 - /sling/trunk/contrib/extensions/cassandra/pom.xml

2013-12-23 Thread bdelacretaz
Author: bdelacretaz
Date: Mon Dec 23 15:30:23 2013
New Revision: 1553128

URL: http://svn.apache.org/r1553128
Log:
SLING-2798 - explicit dependency

Modified:
sling/trunk/contrib/extensions/cassandra/pom.xml

Modified: sling/trunk/contrib/extensions/cassandra/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/cassandra/pom.xml?rev=1553128r1=1553127r2=1553128view=diff
==
--- sling/trunk/contrib/extensions/cassandra/pom.xml (original)
+++ sling/trunk/contrib/extensions/cassandra/pom.xml Mon Dec 23 15:30:23 2013
@@ -265,8 +265,11 @@
 artifactIdorg.apache.sling.api/artifactId
 version2.4.2/version
 /dependency
-
-
+dependency
+groupIdorg.apache.sling/groupId
+artifactIdorg.apache.sling.commons.testing/artifactId
+version2.0.16/version
+/dependency
 /dependencies
 
 /project




svn commit: r1553130 - /sling/trunk/samples/mail-archive/stats/pom.xml

2013-12-23 Thread bdelacretaz
Author: bdelacretaz
Date: Mon Dec 23 15:36:15 2013
New Revision: 1553130

URL: http://svn.apache.org/r1553130
Log:
SLING-3297 - fix wrong dependency

Modified:
sling/trunk/samples/mail-archive/stats/pom.xml

Modified: sling/trunk/samples/mail-archive/stats/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/stats/pom.xml?rev=1553130r1=1553129r2=1553130view=diff
==
--- sling/trunk/samples/mail-archive/stats/pom.xml (original)
+++ sling/trunk/samples/mail-archive/stats/pom.xml Mon Dec 23 15:36:15 2013
@@ -104,8 +104,8 @@
 version2.0.6/version
 /dependency
 dependency
-groupIdorg.apache.sling.mailarchiveserver/groupId
-artifactIdserver/artifactId
+groupIdorg.apache.sling/groupId
+artifactIdorg.apache.sling.mailarchive.server/artifactId
 version0.1.0-SNAPSHOT/version
 scopeprovided/scope
 /dependency




svn commit: r1553131 [2/2] - in /sling/trunk/samples/mail-archive: ./ server/ server/src/main/java/org/apache/sling/mailarchiveserver/api/ server/src/main/java/org/apache/sling/mailarchiveserver/impl/

2013-12-23 Thread bdelacretaz
Modified: 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/message/preview.html.esp
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/message/preview.html.esp?rev=1553131r1=1553130r2=1553131view=diff
==
--- 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/message/preview.html.esp
 (original)
+++ 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/message/preview.html.esp
 Mon Dec 23 15:47:20 2013
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * License); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
 div
 
 a class=nolinkstyle href=% 

Modified: 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/navbar.html.esp
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/navbar.html.esp?rev=1553131r1=1553130r2=1553131view=diff
==
--- 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/navbar.html.esp
 (original)
+++ 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/navbar.html.esp
 Mon Dec 23 15:47:20 2013
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * License); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
 div class=navbar
% load(head.esp); %
 

Modified: 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/root/html.esp
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/root/html.esp?rev=1553131r1=1553130r2=1553131view=diff
==
--- 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/root/html.esp
 (original)
+++ 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/root/html.esp
 Mon Dec 23 15:47:20 2013
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * License); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
 html
 
 head

Modified: 
sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/search/html.esp
URL: 
http://svn.apache.org/viewvc/sling/trunk/samples/mail-archive/ui/src/main/resources/initial-content/apps/mailarchiveserver/search/html.esp?rev=1553131r1=1553130r2=1553131view=diff
==
--- 

svn commit: r1553137 - /sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/api/HealthCheck.java

2013-12-23 Thread cziegeler
Author: cziegeler
Date: Mon Dec 23 16:13:29 2013
New Revision: 1553137

URL: http://svn.apache.org/r1553137
Log:
Update javadocs

Modified:

sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/api/HealthCheck.java

Modified: 
sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/api/HealthCheck.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/api/HealthCheck.java?rev=1553137r1=1553136r2=1553137view=diff
==
--- 
sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/api/HealthCheck.java
 (original)
+++ 
sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/api/HealthCheck.java
 Mon Dec 23 16:13:29 2013
@@ -38,7 +38,7 @@ public interface HealthCheck {
 /**
  * Optional service property: the name of the MBean for registering
  * the health check as an MBean. If this property is missing the
- * health check is not registered.
+ * health check is not registered as a JMX MBean.
  * If there is more than one service with the same value for this
  * property, the one with the highest service ranking is registered
  * only.




svn commit: r1553143 - in /sling/whiteboard/justin/yamf: org.apache.sling.yamf.impl/pom.xml org.apache.sling.yamf.server-side-tests/pom.xml

2013-12-23 Thread justin
Author: justin
Date: Mon Dec 23 16:27:37 2013
New Revision: 1553143

URL: http://svn.apache.org/r1553143
Log:
pom cleanup

Modified:
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/pom.xml
sling/whiteboard/justin/yamf/org.apache.sling.yamf.server-side-tests/pom.xml

Modified: sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/pom.xml?rev=1553143r1=1553142r2=1553143view=diff
==
--- sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/pom.xml (original)
+++ sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/pom.xml Mon Dec 23 
16:27:37 2013
@@ -28,8 +28,8 @@
 artifactIdorg.apache.sling.yamf.impl/artifactId
 packagingbundle/packaging
 version0.0.1-SNAPSHOT/version
-nameorg.apache.sling.yamf.impl/name
-descriptionorg.apache.sling - org.apache.sling.yamf.impl/description
+nameYAMF Implementation/name
+descriptionYet Another Model Factory Implementation/description
 properties
 sling.java.version6/sling.java.version
 /properties
@@ -130,31 +130,4 @@
 scopecompile/scope
 /dependency
 /dependencies
-profiles
-profile
-idautoInstallBundle/id
-build
-plugins
-plugin
-groupIdorg.apache.sling/groupId
-artifactIdmaven-sling-plugin/artifactId
-version2.0.4-incubator/version
-executions
-execution
-idinstall-bundle/id
-goals
-goalinstall/goal
-/goals
-configuration
-
slingUrlhttp://localhost:/system/console/slingUrl
-useradmin/user
-passwordadmin/password
-/configuration
-/execution
-/executions
-/plugin
-/plugins
-/build
-/profile
-/profiles
 /project

Modified: 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.server-side-tests/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/justin/yamf/org.apache.sling.yamf.server-side-tests/pom.xml?rev=1553143r1=1553142r2=1553143view=diff
==
--- 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.server-side-tests/pom.xml 
(original)
+++ 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.server-side-tests/pom.xml 
Mon Dec 23 16:27:37 2013
@@ -20,8 +20,8 @@
 artifactIdorg.apache.sling.yamf.server-side-tests/artifactId
 packagingbundle/packaging
 version0.0.1-SNAPSHOT/version
-nameorg.apache.sling.yamf.server-side-tests/name
-descriptionorg.apache.sling - 
org.apache.sling.yamf.server-side-tests/description
+nameYAMF ITs/name
+descriptionYet Another Model Factory ITs/description
 build
 plugins
 plugin
@@ -122,31 +122,4 @@
 scopeprovided/scope
 /dependency
 /dependencies
-profiles
-profile
-idautoInstallBundle/id
-build
-plugins
-plugin
-groupIdorg.apache.sling/groupId
-artifactIdmaven-sling-plugin/artifactId
-version2.0.4-incubator/version
-executions
-execution
-idinstall-bundle/id
-goals
-goalinstall/goal
-/goals
-configuration
-
slingUrlhttp://localhost:/system/console/slingUrl
-useradmin/user
-passwordadmin/password
-/configuration
-/execution
-/executions
-/plugin
-/plugins
-/build
-/profile
-/profiles
 /project




svn commit: r1553145 - in /sling/whiteboard/justin/yamf: org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/ org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/

2013-12-23 Thread justin
Author: justin
Date: Mon Dec 23 16:27:50 2013
New Revision: 1553145

URL: http://svn.apache.org/r1553145
Log:
adding a source annotation which ties a specific injection point to a specific 
injector. also works as a meta annotation, see e.g. @Filter

Added:

sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Source.java
  - copied, changed from r1553144, 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Filter.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/impl/MultipleInjectorTest.java
Modified:

sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Filter.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/BindingsInjector.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/OSGiServiceInjector.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/RequestAttributeInjector.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/ValueMapInjector.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/spi/Injector.java

Modified: 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Filter.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Filter.java?rev=1553145r1=1553144r2=1553145view=diff
==
--- 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Filter.java
 (original)
+++ 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Filter.java
 Mon Dec 23 16:27:50 2013
@@ -26,6 +26,7 @@ import java.lang.annotation.Target;
  */
 @Target({ ElementType.FIELD, ElementType.METHOD })
 @Retention(RetentionPolicy.RUNTIME)
+@Source(osgi-services)
 public @interface Filter {
 
 public String value();

Copied: 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Source.java
 (from r1553144, 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Filter.java)
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Source.java?p2=sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Source.javap1=sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Filter.javar1=1553144r2=1553145rev=1553145view=diff
==
--- 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Filter.java
 (original)
+++ 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Source.java
 Mon Dec 23 16:27:50 2013
@@ -22,12 +22,13 @@ import java.lang.annotation.RetentionPol
 import java.lang.annotation.Target;
 
 /**
- * Provide a filter on an @Inject.
+ * Annotation which indicates the specific injector which will populate this 
injection.
+ * Can also be used as a meta-annotation to declare that some other annotation 
implies
+ * a source.
  */
-@Target({ ElementType.FIELD, ElementType.METHOD })
+@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE })
 @Retention(RetentionPolicy.RUNTIME)
-public @interface Filter {
-
-public String value();
+public @interface Source {
 
+String value();
 }

Modified: 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java?rev=1553145r1=1553144r2=1553145view=diff
==
--- 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java
 (original)
+++ 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java
 Mon Dec 23 16:27:50 2013
@@ -16,6 +16,7 @@
  */
 package org.apache.sling.yamf.impl;
 
+import java.lang.annotation.Annotation;
 import java.lang.reflect.AnnotatedElement;
 

svn commit: r1553142 - in /sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl: ModelPackageBundleListener.java YamfAdapterFactory.java

2013-12-23 Thread justin
Author: justin
Date: Mon Dec 23 16:27:35 2013
New Revision: 1553142

URL: http://svn.apache.org/r1553142
Log:
refactor bundle listener into separate class

Added:

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/ModelPackageBundleListener.java
Modified:

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java

Added: 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/ModelPackageBundleListener.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/ModelPackageBundleListener.java?rev=1553142view=auto
==
--- 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/ModelPackageBundleListener.java
 (added)
+++ 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/ModelPackageBundleListener.java
 Mon Dec 23 16:27:35 2013
@@ -0,0 +1,151 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the License); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.yamf.impl;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.sling.api.adapter.AdapterFactory;
+import org.apache.sling.commons.osgi.PropertiesUtil;
+import org.apache.sling.yamf.api.Model;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleEvent;
+import org.osgi.framework.BundleListener;
+import org.osgi.framework.ServiceRegistration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ModelPackageBundleListener implements BundleListener {
+
+private static final Logger log = 
LoggerFactory.getLogger(ModelPackageBundleListener.class);
+
+private final BundleContext bundleContext;
+
+private final AdapterFactory factory;
+
+private final MapBundle, ListServiceRegistration 
registeredModelFactories;
+
+public ModelPackageBundleListener(BundleContext bundleContext, 
AdapterFactory factory) {
+this.bundleContext = bundleContext;
+this.factory = factory;
+this.registeredModelFactories = new HashMapBundle, 
ListServiceRegistration();
+for (final Bundle bundle : this.bundleContext.getBundles()) {
+if (bundle.getState() == Bundle.ACTIVE) {
+addBundle(bundle);
+}
+}
+
+this.bundleContext.addBundleListener(this);
+}
+
+@Override
+public synchronized void bundleChanged(BundleEvent event) {
+if (event.getType() == BundleEvent.STOPPED) {
+removeBundle(event.getBundle());
+} else if (event.getType() == BundleEvent.STARTED) {
+addBundle(event.getBundle());
+}
+}
+
+public synchronized void unregisterAll() {
+IteratorMap.EntryBundle, ListServiceRegistration it = 
registeredModelFactories.entrySet().iterator();
+while (it.hasNext()) {
+for (ServiceRegistration reg : it.next().getValue()) {
+reg.unregister();
+}
+it.remove();
+}
+}
+
+private void addBundle(final Bundle bundle) {
+Dictionary?, ? headers = bundle.getHeaders();
+String packageList = 
PropertiesUtil.toString(headers.get(Sling-YAMF-Packages), null);
+if (packageList != null) {
+ListServiceRegistration regs = new 
ArrayListServiceRegistration();
+
+packageList = StringUtils.deleteWhitespace(packageList);
+String[] packages = packageList.split(,);
+for (String singlePackage : packages) {
+@SuppressWarnings(unchecked)
+EnumerationURL classUrls = bundle.findEntries(/ + 
singlePackage.replace('.', '/'), *.class,
+true);
+while (classUrls.hasMoreElements()) {
+  

svn commit: r1553144 - in /sling/whiteboard/justin/yamf: org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/ org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/api/ o

2013-12-23 Thread justin
Author: justin
Date: Mon Dec 23 16:27:44 2013
New Revision: 1553144

URL: http://svn.apache.org/r1553144
Log:
rename api package - annotations

Added:

sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/

sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Default.java
  - copied, changed from r1553143, 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/api/Default.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Filter.java
  - copied, changed from r1553143, 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/api/Filter.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Model.java
  - copied, changed from r1553143, 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/api/Model.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Optional.java
  - copied, changed from r1553143, 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/api/Optional.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Projection.java
  - copied, changed from r1553143, 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/api/Projection.java
Removed:

sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/api/Default.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/api/Filter.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/api/Model.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/api/Optional.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/api/Projection.java
Modified:

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/ModelPackageBundleListener.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/OSGiServiceInjector.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/classes/ArrayOSGiModel.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/classes/BindingsModel.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/classes/CollectionOSGiModel.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/classes/DefaultStringModel.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/classes/ListOSGiModel.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/classes/ProjectionModel.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/classes/ResourceModelWithRequiredField.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/classes/SetOSGiModel.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/classes/SimpleOSGiModel.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/classes/SimplePropertyModel.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/classes/SubClass.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/interfaces/ResourceModelWithRequiredField.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/interfaces/SimplePropertyModel.java

Copied: 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/annotations/Default.java
 (from r1553143, 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.api/src/main/java/org/apache/sling/yamf/api/Default.java)
URL: 

svn commit: r1553149 - in /sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor: ExecutionResult.java HealthCheckDescriptor.java HealthCheckResultCache.

2013-12-23 Thread cziegeler
Author: cziegeler
Date: Mon Dec 23 16:59:19 2013
New Revision: 1553149

URL: http://svn.apache.org/r1553149
Log:
SLING-3278 : Provide a HealthCheckExecutor service. Only use service.id as 
cache key, don't hold service reference

Modified:

sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/ExecutionResult.java

sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckDescriptor.java

sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckResultCache.java

Modified: 
sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/ExecutionResult.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/ExecutionResult.java?rev=1553149r1=1553148r2=1553149view=diff
==
--- 
sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/ExecutionResult.java
 (original)
+++ 
sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/ExecutionResult.java
 Mon Dec 23 16:59:19 2013
@@ -20,7 +20,6 @@ package org.apache.sling.hc.core.impl.ex
 import java.text.Collator;
 import java.util.Date;
 import java.util.Iterator;
-import java.util.LinkedList;
 import java.util.List;
 
 import org.apache.sling.hc.api.HealthCheck;
@@ -33,23 +32,27 @@ public class ExecutionResult implements 
 
 private final HealthCheckResult resultFromHC;
 
-private final HealthCheckDescriptor healthCheckDescriptor;
+private final String name;
+private final ListString tags;
 private final Date finishedAt;
 private final long elapsedTimeInMs;
+private final long serviceId;
 
 /** Build a single-value Result
  *  @param s if lower than OK, our status is set to OK */
 ExecutionResult(final HealthCheckDescriptor healthCheckDescriptor, 
HealthCheckResult simpleResult,
 long elapsedTimeInMs) {
-this.healthCheckDescriptor = healthCheckDescriptor;
+this.name = healthCheckDescriptor.getName();
+this.tags = healthCheckDescriptor.getTags();
 this.resultFromHC = simpleResult;
 this.finishedAt = new Date();
 this.elapsedTimeInMs = elapsedTimeInMs;
+this.serviceId = healthCheckDescriptor.getServiceId();
 }
 
 /**
  * Shortcut constructor to created error result.
- * 
+ *
  * @param healthCheckDescriptor
  * @param status
  * @param errorMessage
@@ -60,7 +63,7 @@ public class ExecutionResult implements 
 
 /**
  * Shortcut constructor to created error result.
- * 
+ *
  * @param healthCheckDescriptor
  * @param status
  * @param errorMessage
@@ -69,11 +72,13 @@ public class ExecutionResult implements 
 this(healthCheckDescriptor, new Result(status, errorMessage), 
elapsedTime);
 }
 
+@Override
 public boolean isOk() {
 return resultFromHC.isOk();
 }
 
 
+@Override
 public Result.Status getStatus() {
 return resultFromHC.getStatus();
 }
@@ -88,24 +93,27 @@ public class ExecutionResult implements 
 return ExecutionResult [status= + getStatus() + , finishedAt= + 
finishedAt + , elapsedTimeInMs= + elapsedTimeInMs + ];
 }
 
+@Override
 public long getElapsedTimeInMs() {
 return elapsedTimeInMs;
 }
 
-HealthCheckDescriptor getHealthCheckDescriptor() {
-return healthCheckDescriptor;
+Long getServiceId() {
+return this.serviceId;
 }
 
+@Override
 public String getHealthCheckName() {
-return healthCheckDescriptor != null ? healthCheckDescriptor.getName() 
: toString();
+return this.name;
 }
 
 
 @Override
 public ListString getHealthCheckTags() {
-return healthCheckDescriptor != null ? healthCheckDescriptor.getTags() 
: new LinkedListString();
+return this.tags;
 }
 
+@Override
 public Date getFinishedAt() {
 return finishedAt;
 }

Modified: 
sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckDescriptor.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckDescriptor.java?rev=1553149r1=1553148r2=1553149view=diff
==
--- 
sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckDescriptor.java
 (original)
+++ 
sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckDescriptor.java
 Mon Dec 23 16:59:19 2013
@@ -32,17 +32,18 @@ import 

svn commit: r1553235 - in /sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl: pom.xml src/main/java/org/apache/sling/yamf/impl/ModelPackageBundleListener.java

2013-12-23 Thread justin
Author: justin
Date: Tue Dec 24 00:24:28 2013
New Revision: 1553235

URL: http://svn.apache.org/r1553235
Log:
using bundle tracker instead of bundle listener

Modified:
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/pom.xml

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/ModelPackageBundleListener.java

Modified: sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/pom.xml?rev=1553235r1=1553234r2=1553235view=diff
==
--- sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/pom.xml (original)
+++ sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/pom.xml Tue Dec 24 
00:24:28 2013
@@ -45,7 +45,9 @@
 extensionstrue/extensions
 configuration
 instructions
-Embed-Dependency*;scope=compile/Embed-Dependency
+Embed-Dependency
+*;scope=compile,
+
org.osgi.compendium;inline=org/osgi/util/tracker/*/Embed-Dependency
 /instructions
 /configuration
 /plugin
@@ -66,6 +68,7 @@
 dependency
 groupIdorg.osgi/groupId
 artifactIdorg.osgi.compendium/artifactId
+version4.2.0/version
 scopeprovided/scope
 /dependency
 dependency

Modified: 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/ModelPackageBundleListener.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/ModelPackageBundleListener.java?rev=1553235r1=1553234r2=1553235view=diff
==
--- 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/ModelPackageBundleListener.java
 (original)
+++ 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/ModelPackageBundleListener.java
 Tue Dec 24 00:24:28 2013
@@ -35,56 +35,35 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleEvent;
 import org.osgi.framework.BundleListener;
 import org.osgi.framework.ServiceRegistration;
+import org.osgi.util.tracker.BundleTracker;
+import org.osgi.util.tracker.BundleTrackerCustomizer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class ModelPackageBundleListener implements BundleListener {
-
+public class ModelPackageBundleListener implements BundleTrackerCustomizer {
+
 private static final Logger log = 
LoggerFactory.getLogger(ModelPackageBundleListener.class);
-
-private final BundleContext bundleContext;
 
-private final AdapterFactory factory;
+private final BundleContext bundleContext;
 
-private final MapBundle, ListServiceRegistration 
registeredModelFactories;
+private final BundleTracker bundleTracker;
 
+private final AdapterFactory factory;
+
 public ModelPackageBundleListener(BundleContext bundleContext, 
AdapterFactory factory) {
 this.bundleContext = bundleContext;
 this.factory = factory;
-this.registeredModelFactories = new HashMapBundle, 
ListServiceRegistration();
-for (final Bundle bundle : this.bundleContext.getBundles()) {
-if (bundle.getState() == Bundle.ACTIVE) {
-addBundle(bundle);
-}
-}
-
-this.bundleContext.addBundleListener(this);
+this.bundleTracker = new BundleTracker(bundleContext, Bundle.ACTIVE, 
this);
+this.bundleTracker.open();
 }
-
+
 @Override
-public synchronized void bundleChanged(BundleEvent event) {
-if (event.getType() == BundleEvent.STOPPED) {
-removeBundle(event.getBundle());
-} else if (event.getType() == BundleEvent.STARTED) {
-addBundle(event.getBundle());
-}
-}
-
-public synchronized void unregisterAll() {
-IteratorMap.EntryBundle, ListServiceRegistration it = 
registeredModelFactories.entrySet().iterator();
-while (it.hasNext()) {
-for (ServiceRegistration reg : it.next().getValue()) {
-reg.unregister();
-}
-it.remove();
-}
-}
-
-private void addBundle(final Bundle bundle) {
+public Object addingBundle(Bundle bundle, BundleEvent event) {
+ListServiceRegistration regs = new ArrayListServiceRegistration();
+
 Dictionary?, ? headers = bundle.getHeaders();
 String packageList = 
PropertiesUtil.toString(headers.get(Sling-YAMF-Packages), null);
 if (packageList != null) {
-ListServiceRegistration regs = new 
ArrayListServiceRegistration();
 
 

svn commit: r1553233 - in /sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src: main/java/org/apache/sling/yamf/impl/ main/java/org/apache/sling/yamf/impl/injectors/ test/java/org/apache/sling

2013-12-23 Thread justin
Author: justin
Date: Tue Dec 24 00:24:22 2013
New Revision: 1553233

URL: http://svn.apache.org/r1553233
Log:
add support for child resource injection as well as the ability to adapt an 
injection if necessary

Added:

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/ChildResourceInjector.java
  - copied, changed from r1553145, 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/RequestAttributeInjector.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/classes/ChildModel.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/interfaces/ChildResourceModel.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/interfaces/ChildValueMapModel.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/interfaces/ParentModel.java
Modified:

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/OSGiServiceInjector.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/RequestAttributeInjector.java

sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/impl/ResourceModelClassesTest.java

Modified: 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java?rev=1553233r1=1553232r2=1553233view=diff
==
--- 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java
 (original)
+++ 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java
 Tue Dec 24 00:24:22 2013
@@ -44,6 +44,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.ReferencePolicy;
+import org.apache.sling.api.adapter.Adaptable;
 import org.apache.sling.api.adapter.AdapterFactory;
 import org.apache.sling.commons.osgi.ServiceUtil;
 import org.apache.sling.yamf.annotations.Default;
@@ -445,6 +446,12 @@ public class YamfAdapterFactory implemen
 
 private boolean setField(Field field, Object createdObject, Object value) {
 if (value != null) {
+if (!isAcceptableType(field.getClass(), value)  value instanceof 
Adaptable) {
+value = ((Adaptable)value).adaptTo(field.getClass());
+if (value == null) {
+return false;
+}
+}
 boolean accessible = field.isAccessible();
 try {
 if (!accessible) {
@@ -466,7 +473,13 @@ public class YamfAdapterFactory implemen
 }
 
 private boolean setMethod(Method method, MapMethod, Object methods, 
Object value) {
-if (value != null  (isAcceptableType(method.getReturnType(), 
value))) {
+if (value != null) {
+if (!isAcceptableType(method.getReturnType(), value)  value 
instanceof Adaptable) {
+value = ((Adaptable)value).adaptTo(method.getReturnType());
+if (value == null) {
+return false;
+}
+}
 methods.put(method, value);
 return true;
 } else {

Copied: 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/ChildResourceInjector.java
 (from r1553145, 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/RequestAttributeInjector.java)
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/ChildResourceInjector.java?p2=sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/ChildResourceInjector.javap1=sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/RequestAttributeInjector.javar1=1553145r2=1553233rev=1553233view=diff
==
--- 
sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/injectors/RequestAttributeInjector.java
 (original)
+++ 

[CONF] Apache Sling YAMF - Yet Another Model Factory

2013-12-23 Thread Justin Edelson (Confluence)














  


Justin Edelson edited the page:
 


YAMF - Yet Another Model Factory   






 



 Table of Contents




  
Many Sling projects want to be able to create model objects - POJOs which are automatically mapped from Sling objects, typically resources, but also request objects. Sometimes these POJOs need OSGi services as well.
...



 Code Block








language
java


 




 @Model(adaptables=SlingHttpServletRequest.class)
public interface MyModel {

 @Inject @Projection(resource)
  String getPropertyName();
} 



 Annotation Reference 

 @Model - declares a model class or interface   
 @Inject - marks a field or method as injectable 
 @Named - declare a name for the injection (otherwise, defaults based on field or method name).   
 @Optional - marks a field or method injection as optional   
 @Source - explictly tie an injected field or method to a particular injector (by name). Can also be on other annotations.   
 @Filter - an OSGi service filter   
 @PostConstruct - methods to call upon model option creation (only for model classes)   
 @Projection - project a JavaBean property as the adaptable.   
 

[CONF] Apache Sling YAMF - Yet Another Model Factory

2013-12-23 Thread Justin Edelson (Confluence)














  


Justin Edelson edited the page:
 


YAMF - Yet Another Model Factory   






...

 Value Map (valuemap) - adapt the adaptable to a ValueMap and retrive properties. 
 OSGI Services (osgi-services) - lookup services based on class name (including List and Array support). Effectively ignores name. 
 Script Bindings (script-bindings) - gets script bindings from request and looks up by name. 
 Child Resources (child-resources) - gets child resources by name. 
 Request Attributes (request-atttributes) - gets request attributes 
  







 View Online   Like   View Changes   Add Comment  
 Stop watching space   Manage Notifications  


 


 


  This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software