camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem jiang <willem.ji...@gmail.com>
Subject Re: svn commit: r1424788 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/component/validator/ main/java/org/apache/camel/util/ test/java/org/apache/camel/component/validator/ test/resources/org/apache/camel/component/validator/xsds/ test/resou...
Date Fri, 21 Dec 2012 13:47:13 GMT
I copied the code from com.sun.org.apache.xerces.internal.impl.XMLEntityManager, it looks like the code is also copied to XMLEntityStorage.java (http://cr.openjdk.java.net/~joehw/jdk8/7160496/src/webrev/raw_files/new/src/com/sun/xml/internal/stream/XMLEntityStorage.java).
Anyway I just replaced the getUserDir with better code.  


--  
Willem Jiang

Red Hat, Inc.
FuseSource is now part of Red Hat
Web: http://www.fusesource.com | http://www.redhat.com
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English)
          http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem





On Friday, December 21, 2012 at 7:41 PM, Claus Ibsen wrote:

> On Fri, Dec 21, 2012 at 12:27 PM, Willem jiang <willem.jiang@gmail.com (mailto:willem.jiang@gmail.com)> wrote:
> > Hi
> > First xerces is Apache license, that is why Sun /Oracle can redistribute it.
> > The common/common.xsd is in the relative path of the health.xsd.
>  
>  
>  
> Willem from where did you copy that code? Its not written by you.
>  
> The link from Babak points to code that looks very similar to the code
> you committed.
> And that code is GPL licensed.
>  
> * This code is free software; you can redistribute it and/or modify it
> * under the terms of the GNU General Public License version 2 only, as
> * published by the Free Software Foundation. Oracle designates this
> * particular file as subject to the "Classpath" exception as provided
> * by Oracle in the LICENSE file that accompanied this code.
> *
>  
>  
>  
>  
> > Spring support it out of box [1], so I think we need to provide the same feature here.
> >  
> > [1]https://jira.springsource.org/browse/SWS-413
> >  
> > --
> > Willem Jiang
> >  
> > Red Hat, Inc.
> > FuseSource is now part of Red Hat
> > Web: http://www.fusesource.com | http://www.redhat.com
> > Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English)
> > http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
> > Twitter: willemjiang
> > Weibo: 姜宁willem
> >  
> >  
> >  
> >  
> > On Friday, December 21, 2012 at 7:00 PM, Claus Ibsen wrote:
> >  
> > > On Fri, Dec 21, 2012 at 11:39 AM, Babak Vahdat
> > > <babak.vahdat@swissonline.ch (mailto:babak.vahdat@swissonline.ch)> wrote:
> > > > Hi
> > > >  
> > > > Be aware that Oracle considers this to be it's own copyright property:
> > > >  
> > > > http://cr.openjdk.java.net/~joehw/jdk8/7160496/src/webrev/raw_files/new/src/com/sun/xml/internal/stream/XMLEntityStorage.java
> > > >  
> > > > So that this code *could* cause some juristic story as well, the latest one
> > > > we all know about was that famous "rangeCheck" method by Joshua Bloch.
> > > >  
> > > > http://www.theverge.com/2012/4/19/2961128/google-chief-java-architect-likely-i-copied-sun-code-in-android
> > >  
> > > Yeah I think we should revert the commit and find another solution
> > > without copying some code from SUN/Oracle etc.
> > > Its GPL licensed code.
> > >  
> > > I haven't looked at the problem. But if its to load a
> > > "common/common.xsd" resource from the classpath.
> > > Which is relative to the "starting path" given in the Camel validation
> > > uri. Then I dont understand why you
> > > cant use the existing ClassResolver API from Camel to load that.
> > >  
> > > Code from top of my head:
> > >  
> > > String onlyPath = FileUtil.onlyPath("theUriOfTheCamelEndpoint");
> > > InputStream is = resolver.loadResourceAsInputStream(onlyPath + "/" +
> > > "common/common.xsd");
> > >  
> > >  
> > >  
> > > > Babak
> > > >  
> > > >  
> > > > Willem.Jiang wrote
> > > > > Hi Claus,
> > > > >  
> > > > > The code is toke from the xerces which will set the baseUri to start with
> > > > > the user directory it cannot find right way to setup the baseUri.
> > > > > I will revisit the code to find a better solution to get rid of the weird
> > > > > code.
> > > > >  
> > > > >  
> > > > > --
> > > > > Willem Jiang
> > > > >  
> > > > > Red Hat, Inc.
> > > > > FuseSource is now part of Red Hat
> > > > > Web: http://www.fusesource.com | http://www.redhat.com
> > > > > Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/)
> > > > > (English)
> > > > > http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
> > > > > Twitter: willemjiang
> > > > > Weibo: 姜宁willem
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > On Friday, December 21, 2012 at 4:11 PM, Claus Ibsen wrote:
> > > > >  
> > > > > > Willem what's all the code in FileUtil.
> > > > > > At first glance this doesn't look to good, and easy to support such code.
> > > > > >  
> > > > > > I would like to find a better solution.
> > > > > > And why is this only related to validator component?
> > > > > >  
> > > > > > Can we look at another solution that doesn't require adding a lot of
> > > > > > weird code?
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > On Fri, Dec 21, 2012 at 3:18 AM, &lt;
> > > >  
> > > > > ningjiang@
> > > >  
> > > > > (mailto:
> > > >  
> > > > > ningjiang@
> > > >  
> > > > > )&gt; wrote:
> > > > > > > Author: ningjiang
> > > > > > > Date: Fri Dec 21 02:18:34 2012
> > > > > > > New Revision: 1424788
> > > > > > >  
> > > > > > > URL: http://svn.apache.org/viewvc?rev=1424788&view=rev
> > > > > > > Log:
> > > > > > > CAMEL-5837 fix the schema validator imports with relative path issue
> > > > > > >  
> > > > > > > Added:
> > > > > > camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorIncludeRelativeRouteTest.java
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/health/
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/health/common/
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/health/common/common.xsd
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/health/health.xsd
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/person.xsd
> > > > > > > Modified:
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/main/java/org/apache/camel/component/validator/DefaultLSResourceResolver.java
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
> > > > > > >  
> > > > > > > Modified:
> > > > > > camel/trunk/camel-core/src/main/java/org/apache/camel/component/validator/DefaultLSResourceResolver.java
> > > > > > > URL:
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/validator/DefaultLSResourceResolver.java?rev=1424788&r1=1424787&r2=1424788&view=diff
> > > > > >  
> > > > > >  
> > > > > > ==============================================================================
> > > > > > > ---
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/main/java/org/apache/camel/component/validator/DefaultLSResourceResolver.java
> > > > > > (original)
> > > > > > > +++
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/main/java/org/apache/camel/component/validator/DefaultLSResourceResolver.java
> > > > > > Fri Dec 21 02:18:34 2012
> > > > > > > @@ -50,6 +50,7 @@ public class DefaultLSResourceResolver i
> > > > > > > throw new IllegalArgumentException(String.format("Resource: %s refers
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > an invalid resource without SystemId."
> > > > > > > + " Invalid resource has type: %s, namespaceURI: %s, publicId: %s,
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > systemId: %s, baseURI: %s", resourceUri, type, namespaceURI, publicId,
> > > > > > systemId, baseURI));
> > > > > > > }
> > > > > > > +
> > > > > > > return new DefaultLSInput(publicId, systemId, baseURI);
> > > > > > > }
> > > > > > >  
> > > > > > > @@ -64,11 +65,47 @@ public class DefaultLSResourceResolver i
> > > > > > > this.publicId = publicId;
> > > > > > > this.systemId = systemId;
> > > > > > > this.baseURI = baseURI;
> > > > > > > -
> > > > > > > + this.uri = getInputUri();
> > > > > > > + }
> > > > > > > +
> > > > > > > +
> > > > > > > + private String getInputUri() {
> > > > > > > + // find the xsd with relative path
> > > > > > > + if (ObjectHelper.isNotEmpty(baseURI)) {
> > > > > > > + String inputUri = getUri(getRelativePath(baseURI));
> > > > > > > + try {
> > > > > > > +
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > ResourceHelper.resolveMandatoryResourceAsInputStream(camelContext.getClassResolver(),
> > > > > > inputUri);
> > > > > > > + return inputUri;
> > > > > > > + } catch (IOException e) {
> > > > > > > + // ignore the exception
> > > > > > > + }
> > > > > > > + }
> > > > > > > + // don't use the relative path
> > > > > > > + return getUri("");
> > > > > > > + }
> > > > > > > +
> > > > > > > + private String getRelativePath(String base) {
> > > > > > > + String userDir = "";
> > > > > > > + String answer = "";
> > > > > > > + if (ObjectHelper.isNotEmpty(base)) {
> > > > > > > + try {
> > > > > > > + userDir = FileUtil.getUserDir().toString();
> > > > > > > + } catch (Exception ex) {
> > > > > > > + // do nothing here
> > > > > > > + }
> > > > > > > + // get the relative path from the userdir
> > > > > > > + if (ObjectHelper.isNotEmpty(base) && base.startsWith("file") &&
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > base.startsWith(userDir)) {
> > > > > > > + answer = FileUtil.onlyPath(base.substring(userDir.length())) + "/";
> > > > > > > + }
> > > > > > > + }
> > > > > > > + return answer;
> > > > > > > + }
> > > > > > > +
> > > > > > > + private String getUri(String relativePath) {
> > > > > > > if (resourcePath != null) {
> > > > > > > - uri = resourcePath + "/" + systemId;
> > > > > > > + return FileUtil.onlyPath(resourceUri) + "/" + relativePath +
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > systemId;
> > > > > > > } else {
> > > > > > > - uri = systemId;
> > > > > > > + return relativePath + systemId;
> > > > > > > }
> > > > > > > }
> > > > > > >  
> > > > > > > @@ -164,4 +201,6 @@ public class DefaultLSResourceResolver i
> > > > > > > }
> > > > > > > }
> > > > > > >  
> > > > > > > +
> > > > > > > +
> > > > > > > }
> > > > > > >  
> > > > > > > Modified:
> > > > > > camel/trunk/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
> > > > > > > URL:
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/FileUtil.java?rev=1424788&r1=1424787&r2=1424788&view=diff
> > > > > >  
> > > > > >  
> > > > > > ==============================================================================
> > > > > > > ---
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
> > > > > > (original)
> > > > > > > +++
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
> > > > > > Fri Dec 21 02:18:34 2012
> > > > > > > @@ -16,10 +16,13 @@
> > > > > > > */
> > > > > > > package org.apache.camel.util;
> > > > > > >  
> > > > > > > +
> > > > > > > import java.io.File;
> > > > > > > import java.io.FileInputStream;
> > > > > > > import java.io.FileOutputStream;
> > > > > > > import java.io.IOException;
> > > > > > > +import java.net.URI;
> > > > > > > +import java.net.URISyntaxException;
> > > > > > > import java.nio.channels.FileChannel;
> > > > > > > import java.util.Iterator;
> > > > > > > import java.util.Locale;
> > > > > > > @@ -39,8 +42,149 @@ public final class FileUtil {
> > > > > > > private static final transient Logger LOG =
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > LoggerFactory.getLogger(FileUtil.class);
> > > > > > > private static final int RETRY_SLEEP_MILLIS = 10;
> > > > > > > private static File defaultTempDir;
> > > > > > > -
> > > > > > > +
> > > > > > > + // current value of the "user.dir" property
> > > > > > > + private static String gUserDir;
> > > > > > > + // cached URI object for the current value of the escaped "user.dir"
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > property stored as a URI
> > > > > > > + private static URI gUserDirURI;
> > > > > > > + // which ASCII characters need to be escaped
> > > > > > > + private static boolean gNeedEscaping[] = new boolean[128];
> > > > > > > + // the first hex character if a character needs to be escaped
> > > > > > > + private static char gAfterEscaping1[] = new char[128];
> > > > > > > + // the second hex character if a character needs to be escaped
> > > > > > > + private static char gAfterEscaping2[] = new char[128];
> > > > > > > + private static char[] gHexChs = {'0', '1', '2', '3', '4', '5', '6',
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > '7',
> > > > > > > + '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
> > > > > > > + // initialize the above 3 arrays
> > > > > > > + static {
> > > > > > > + for (int i = 0; i <= 0x1f; i++) {
> > > > > > > + gNeedEscaping[i] = true;
> > > > > > > + gAfterEscaping1[i] = gHexChs[i >> 4];
> > > > > > > + gAfterEscaping2[i] = gHexChs[i & 0xf];
> > > > > > > + }
> > > > > > > + gNeedEscaping[0x7f] = true;
> > > > > > > + gAfterEscaping1[0x7f] = '7';
> > > > > > > + gAfterEscaping2[0x7f] = 'F';
> > > > > > > + char[] escChs = {' ', '<', '>', '#', '%', '"', '{', '}',
> > > > > > > + '|', '\\', '^', '~', '[', ']', '`'};
> > > > > > > + int len = escChs.length;
> > > > > > > + char ch;
> > > > > > > + for (int i = 0; i < len; i++) {
> > > > > > > + ch = escChs[i];
> > > > > > > + gNeedEscaping[ch] = true;
> > > > > > > + gAfterEscaping1[ch] = gHexChs[ch >> 4];
> > > > > > > + gAfterEscaping2[ch] = gHexChs[ch & 0xf];
> > > > > > > + }
> > > > > > > + }
> > > > > > > +
> > > > > > > private FileUtil() {
> > > > > > > + // Utils method
> > > > > > > + }
> > > > > > > +
> > > > > > > +
> > > > > > > + // To escape the "user.dir" system property, by using %HH to
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > represent
> > > > > > > + // special ASCII characters: 0x00~0x1F, 0x7F, ' ', '<', '>', '#', '%'
> > > > > > > + // and '"'. It's a static method, so needs to be synchronized.
> > > > > > > + // this method looks heavy, but since the system property isn't
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > expected
> > > > > > > + // to change often, so in most cases, we only need to return the URI
> > > > > > > + // that was escaped before.
> > > > > > > + // According to the URI spec, non-ASCII characters (whose value >=
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > 128)
> > > > > > > + // need to be escaped too.
> > > > > > > + // REVISIT: don't know how to escape non-ASCII characters, especially
> > > > > > > + // which encoding to use. Leave them for now.
> > > > > > > + public static synchronized URI getUserDir() throws URISyntaxException
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > {
> > > > > > > + // get the user.dir property
> > > > > > > + String userDir = "";
> > > > > > > + try {
> > > > > > > + userDir = System.getProperty("user.dir");
> > > > > > > + } catch (SecurityException se) {
> > > > > > > + }
> > > > > > > +
> > > > > > > + // return empty string if property value is empty string.
> > > > > > > + if (userDir.length() == 0) {
> > > > > > > + return new URI("file", "", "", null, null);
> > > > > > > + }
> > > > > > > + // compute the new escaped value if the new property value doesn't
> > > > > > > + // match the previous one
> > > > > > > + if (gUserDirURI != null && userDir.equals(gUserDir)) {
> > > > > > > + return gUserDirURI;
> > > > > > > + }
> > > > > > > +
> > > > > > > + // record the new value as the global property value
> > > > > > > + gUserDir = userDir;
> > > > > > > +
> > > > > > > + char separator = java.io.File.separatorChar;
> > > > > > > + userDir = userDir.replace(separator, '/');
> > > > > > > +
> > > > > > > + int len = userDir.length();
> > > > > > > + int ch;
> > > > > > > + StringBuffer buffer = new StringBuffer(len * 3);
> > > > > > > + // change C:/blah to /C:/blah
> > > > > > > + if (len >= 2 && userDir.charAt(1) == ':') {
> > > > > > > + ch = Character.toUpperCase(userDir.charAt(0));
> > > > > > > + if (ch >= 'A' && ch <= 'Z') {
> > > > > > > + buffer.append('/');
> > > > > > > + }
> > > > > > > + }
> > > > > > > +
> > > > > > > + // for each character in the path
> > > > > > > + int i = 0;
> > > > > > > + for (; i < len; i++) {
> > > > > > > + ch = userDir.charAt(i);
> > > > > > > + // if it's not an ASCII character, break here, and use UTF-8 encoding
> > > > > > > + if (ch >= 128) {
> > > > > > > + break;
> > > > > > > + }
> > > > > > > + if (gNeedEscaping[ch]) {
> > > > > > > + buffer.append('%');
> > > > > > > + buffer.append(gAfterEscaping1[ch]);
> > > > > > > + buffer.append(gAfterEscaping2[ch]);
> > > > > > > + // record the fact that it's escaped
> > > > > > > + } else {
> > > > > > > + buffer.append((char)ch);
> > > > > > > + }
> > > > > > > + }
> > > > > > > +
> > > > > > > + // we saw some non-ascii character
> > > > > > > + if (i < len) {
> > > > > > > + // get UTF-8 bytes for the remaining sub-string
> > > > > > > + byte[] bytes = null;
> > > > > > > + byte b;
> > > > > > > + try {
> > > > > > > + bytes = userDir.substring(i).getBytes("UTF-8");
> > > > > > > + } catch (java.io.UnsupportedEncodingException e) {
> > > > > > > + // should never happen
> > > > > > > + return new URI("file", "", userDir, null, null);
> > > > > > > + }
> > > > > > > + len = bytes.length;
> > > > > > > +
> > > > > > > + // for each byte
> > > > > > > + for (i = 0; i < len; i++) {
> > > > > > > + b = bytes[i];
> > > > > > > + // for non-ascii character: make it positive, then escape
> > > > > > > + if (b < 0) {
> > > > > > > + ch = b + 256;
> > > > > > > + buffer.append('%');
> > > > > > > + buffer.append(gHexChs[ch >> 4]);
> > > > > > > + buffer.append(gHexChs[ch & 0xf]);
> > > > > > > + } else if (gNeedEscaping[b]) {
> > > > > > > + buffer.append('%');
> > > > > > > + buffer.append(gAfterEscaping1[b]);
> > > > > > > + buffer.append(gAfterEscaping2[b]);
> > > > > > > + } else {
> > > > > > > + buffer.append((char)b);
> > > > > > > + }
> > > > > > > + }
> > > > > > > + }
> > > > > > > +
> > > > > > > + // change blah/blah to blah/blah/
> > > > > > > + if (!userDir.endsWith("/")) {
> > > > > > > + buffer.append('/');
> > > > > > > + }
> > > > > > > +
> > > > > > > + gUserDirURI = new URI("file", "", buffer.toString(), null, null);
> > > > > > > +
> > > > > > > + return gUserDirURI;
> > > > > > > }
> > > > > > >  
> > > > > > > /**
> > > > > > >  
> > > > > > > Added:
> > > > > > camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorIncludeRelativeRouteTest.java
> > > > > > > URL:
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorIncludeRelativeRouteTest.java?rev=1424788&view=auto
> > > > > >  
> > > > > >  
> > > > > > ==============================================================================
> > > > > > > ---
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorIncludeRelativeRouteTest.java
> > > > > > (added)
> > > > > > > +++
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorIncludeRelativeRouteTest.java
> > > > > > Fri Dec 21 02:18:34 2012
> > > > > > > @@ -0,0 +1,66 @@
> > > > > > > +/**
> > > > > > > + * 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.camel.component.validator;
> > > > > > > +
> > > > > > > +import org.apache.camel.ValidationException;
> > > > > > > +import org.apache.camel.builder.RouteBuilder;
> > > > > > > +import org.apache.camel.component.mock.MockEndpoint;
> > > > > > > +
> > > > > > > +public class ValidatorIncludeRelativeRouteTest extends
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > ValidatorIncludeRouteTest {
> > > > > > > +
> > > > > > > + public void testValidMessage() throws Exception {
> > > > > > > + validEndpoint.expectedMessageCount(1);
> > > > > > > + finallyEndpoint.expectedMessageCount(1);
> > > > > > > +
> > > > > > > + String body = "
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <p:person user=\"james\" xmlns:p=\"org.person\"
> > > > > xmlns:h=\"org.health.check.person\" xmlns:c=\"org.health.check.common\">
> > > > > \n"
> > > > > > > + + "
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <p:firstName>
> > > > > James
> > > > > </p:firstName>
> > > > > \n"
> > > > > > > + + "
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <p:lastName>
> > > > > Strachan
> > > > > </p:lastName>
> > > > > \n"
> > > > > > > + + "
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <p:city>
> > > > > London
> > > > > </p:city>
> > > > > \n"
> > > > > > > + + "
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <h:health>
> > > > > \n"
> > > > > > > + + "
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <h:lastCheck>
> > > > > 2011-12-23
> > > > > </h:lastCheck>
> > > > > \n"
> > > > > > > + + "
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <h:status>
> > > > > OK
> > > > > </h:status>
> > > > > \n"
> > > > > > > + + "
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <c:commonElement>
> > > > > "
> > > > > > > + + "
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <c:element1/>
> > > > > "
> > > > > > > + + "
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <c:element2/>
> > > > > "
> > > > > > > + + "
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > </c:commonElement>
> > > > > "
> > > > > > > + + "
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > </h:health>
> > > > > \n"
> > > > > > > + + "
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > </p:person>
> > > > > ";
> > > > > > > +
> > > > > > > + template.sendBody("direct:start", body);
> > > > > > > +
> > > > > > > + MockEndpoint.assertIsSatisfied(validEndpoint, invalidEndpoint,
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > finallyEndpoint);
> > > > > > > + }
> > > > > > > +
> > > > > > > + @Override
> > > > > > > + protected RouteBuilder createRouteBuilder() throws Exception {
> > > > > > > + return new RouteBuilder() {
> > > > > > > + @Override
> > > > > > > + public void configure() throws Exception {
> > > > > > > + from("direct:start")
> > > > > > > + .doTry()
> > > > > > > + .to("validator:org/apache/camel/component/validator/xsds/person.xsd")
> > > > > > > + .to("mock:valid")
> > > > > > > + .doCatch(ValidationException.class)
> > > > > > > + .to("mock:invalid")
> > > > > > > + .doFinally()
> > > > > > > + .to("mock:finally")
> > > > > > > + .end();
> > > > > > > + }
> > > > > > > + };
> > > > > > > + }
> > > > > > > +
> > > > > > > +}
> > > > > > >  
> > > > > > > Added:
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/health/common/common.xsd
> > > > > > > URL:
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/health/common/common.xsd?rev=1424788&view=auto
> > > > > >  
> > > > > >  
> > > > > > ==============================================================================
> > > > > > > ---
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/health/common/common.xsd
> > > > > > (added)
> > > > > > > +++
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/health/common/common.xsd
> > > > > > Fri Dec 21 02:18:34 2012
> > > > > > > @@ -0,0 +1,14 @@
> > > > > > > +<?xml version="1.0" encoding="UTF-8"?>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:schema
> > > > >  
> > > > >  
> > > > > > + attributeFormDefault="unqualified"
> > > > > > > + elementFormDefault="qualified"
> > > > > > > + targetNamespace="org.health.check.common"
> > > > > > > + xmlns:xs="http://www.w3.org/2001/XMLSchema">
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:element name="commonElement" type="common:commonType"
> > > > > xmlns:common="org.health.check.common"/>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:complexType name="commonType">
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:sequence>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:element type="xs:string" name="element1"/>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:element type="xs:string" name="element2"/>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > </xs:sequence>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > </xs:complexType>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > </xs:schema>
> > > > > > > \ No newline at end of file
> > > > > > >  
> > > > > > > Added:
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/health/health.xsd
> > > > > > > URL:
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/health/health.xsd?rev=1424788&view=auto
> > > > > >  
> > > > > >  
> > > > > > ==============================================================================
> > > > > > > ---
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/health/health.xsd
> > > > > > (added)
> > > > > > > +++
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/health/health.xsd
> > > > > > Fri Dec 21 02:18:34 2012
> > > > > > > @@ -0,0 +1,18 @@
> > > > > > > +<?xml version="1.0" encoding="UTF-8"?>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:schema
> > > > >  
> > > > >  
> > > > > > + attributeFormDefault="unqualified"
> > > > > > > + elementFormDefault="qualified"
> > > > > > > + targetNamespace="org.health.check.person"
> > > > > > > + xmlns:xs="http://www.w3.org/2001/XMLSchema"
> > > > > > > + xmlns:common="org.health.check.common">
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:import schemaLocation="common/common.xsd"
> > > > > namespace="org.health.check.common"/>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:element name="health" type="org:healthType"
> > > > > xmlns:org="org.health.check.person"/>
> > > > > > > +
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:complexType name="healthType">
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:sequence>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:element type="xs:string" name="lastCheck"/>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:element type="xs:string" name="status"/>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:element ref="common:commonElement" maxOccurs="1" minOccurs="0"/>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > </xs:sequence>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > </xs:complexType>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > </xs:schema>
> > > > > > > \ No newline at end of file
> > > > > > >  
> > > > > > > Added:
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/person.xsd
> > > > > > > URL:
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/person.xsd?rev=1424788&view=auto
> > > > > >  
> > > > > >  
> > > > > > ==============================================================================
> > > > > > > ---
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/person.xsd
> > > > > > (added)
> > > > > > > +++
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > camel/trunk/camel-core/src/test/resources/org/apache/camel/component/validator/xsds/person.xsd
> > > > > > Fri Dec 21 02:18:34 2012
> > > > > > > @@ -0,0 +1,20 @@
> > > > > > > +<?xml version="1.0" encoding="UTF-8"?>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:schema attributeFormDefault="unqualified"
> > > > >  
> > > > >  
> > > > > > + elementFormDefault="qualified"
> > > > > > > + xmlns:xs="http://www.w3.org/2001/XMLSchema"
> > > > > > > + xmlns:p="org.person"
> > > > > > > + targetNamespace="org.person"
> > > > > > > + xmlns:h="org.health.check.person">
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:import schemaLocation="health/health.xsd"
> > > > > namespace="org.health.check.person"/>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:element name="person" type="p:personType">
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > </xs:element>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:complexType name="personType">
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:sequence>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:element type="xs:string" name="firstName"/>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:element type="xs:string" name="lastName"/>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:element type="xs:string" name="city"/>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:element ref="h:health" maxOccurs="1" minOccurs="0"/>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > </xs:sequence>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > <xs:attribute type="xs:string" name="user"/>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > </xs:complexType>
> > > > > > > +
> > > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > >  
> > > > > </xs:schema>
> > > > > > > \ No newline at end of file
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > >  
> > > > > > --
> > > > > > Claus Ibsen
> > > > > > -----------------
> > > > > > Red Hat, Inc.
> > > > > > FuseSource is now part of Red Hat
> > > > > > Email:
> > > > >  
> > > >  
> > > >  
> > > >  
> > > >  
> > > >  
> > > > > cibsen@
> > > >  
> > > > > (mailto:
> > > >  
> > > > > cibsen@
> > > >  
> > > > > )
> > > > > > Web: http://fusesource.com
> > > > > > Twitter: davsclaus
> > > > > > Blog: http://davsclaus.com
> > > > > > Author of Camel in Action: http://www.manning.com/ibsen
> > > > >  
> > > >  
> > > >  
> > > >  
> > > >  
> > > >  
> > > >  
> > > >  
> > > >  
> > > >  
> > > > --
> > > > View this message in context: http://camel.465427.n5.nabble.com/Re-svn-commit-r1424788-in-camel-trunk-camel-core-src-main-java-org-apache-camel-component-validator--tp5724487p5724495.html
> > > > Sent from the Camel Development mailing list archive at Nabble.com (http://Nabble.com).
> > >  
> > >  
> > >  
> > >  
> > >  
> > >  
> > >  
> > > --
> > > Claus Ibsen
> > > -----------------
> > > Red Hat, Inc.
> > > FuseSource is now part of Red Hat
> > > Email: cibsen@redhat.com (mailto:cibsen@redhat.com)
> > > Web: http://fusesource.com
> > > Twitter: davsclaus
> > > Blog: http://davsclaus.com
> > > Author of Camel in Action: http://www.manning.com/ibsen
> >  
>  
>  
>  
>  
>  
> --  
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> FuseSource is now part of Red Hat
> Email: cibsen@redhat.com (mailto:cibsen@redhat.com)
> Web: http://fusesource.com
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen




Mime
View raw message