You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Ruwan Linton <ru...@gmail.com> on 2010/02/11 03:41:01 UTC

Axis2 Deployers doesn't support a directory within another directory under repository??

Folks,

Synapse has a requirement to have a directory called conf/synapse-config in
the repository and have its own space for sequences, endpoints, proxy
services so forth inside that.. So the expected deployer config within the
axis2.xml is as follows;

<deployer extension="xml" directory="conf/synapse-config/sequences"
class="org.apache.synapse.deployers.SequenceDeployer"/>

but because of the following code fragment it takes only the last director
specified in the directory declaration of the deployer. Is there any reason
for us to restrict the deployer to only one level, even in that case we
should be treating the directory as the top level direcotry so that the path
is correct, but here we are calculating a directory path which is not
existing. With the above case it computes the directory as
$AXIS2_REPOSITORY/sequences which is completely wrong :-(

org.apache.axis2.deployment.RepositoryListener [267, 280]

//This will load the files from the directories
    // specified by axis2.xml (As <deployer>)
    private void loadOtherDirectories() {
        for (Map.Entry<String, Map<String, Deployer>> entry :
deploymentEngine.getDeployers().entrySet()) {
            String directory = entry.getKey();
            Map<String, Deployer> extensionMap = entry.getValue();
            for (String extension : extensionMap.keySet()) {
                String[] strings = directory.split("/");
                File dirToSearch = new
File(deploymentEngine.getRepositoryDir(),
                        strings[strings.length - 1]);
                findFileForGivenDirectory(dirToSearch, extension,
directory);
            }
        }
    }

Can we get rid of the splitting and let the user declare inner directories
for the artifacts to be deployed??

Thanks,
Ruwan

-- 
Ruwan Linton
Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
WSO2 Inc.; http://wso2.org
email: ruwan@wso2.com; cell: +94 77 341 3097
blog: http://ruwansblog.blogspot.com

Re: Axis2 Deployers doesn't support a directory within another directory under repository??

Posted by Ruwan Linton <ru...@gmail.com>.
On Thu, Feb 11, 2010 at 10:46 AM, Ruwan Linton <ru...@gmail.com>wrote:

>
>
> On Thu, Feb 11, 2010 at 10:10 AM, Isuru Suriarachchi <is...@gmail.com>wrote:
>
>>
>>
>> On Thu, Feb 11, 2010 at 10:05 AM, Amila Suriarachchi <
>> amilasuriarachchi@gmail.com> wrote:
>>
>>>
>>>
>>> On Thu, Feb 11, 2010 at 8:11 AM, Ruwan Linton <ru...@gmail.com>wrote:
>>>
>>>> Folks,
>>>>
>>>> Synapse has a requirement to have a directory called conf/synapse-config
>>>> in the repository and have its own space for sequences, endpoints, proxy
>>>> services so forth inside that.. So the expected deployer config within the
>>>> axis2.xml is as follows;
>>>>
>>>> <deployer extension="xml" directory="conf/synapse-config/sequences"
>>>> class="org.apache.synapse.deployers.SequenceDeployer"/>
>>>>
>>>> but because of the following code fragment it takes only the last
>>>> director specified in the directory declaration of the deployer. Is there
>>>> any reason for us to restrict the deployer to only one level, even in that
>>>> case we should be treating the directory as the top level direcotry so that
>>>> the path is correct, but here we are calculating a directory path which is
>>>> not existing. With the above case it computes the directory as
>>>> $AXIS2_REPOSITORY/sequences which is completely wrong :-(
>>>>
>>>> org.apache.axis2.deployment.RepositoryListener [267, 280]
>>>>
>>>> //This will load the files from the directories
>>>>     // specified by axis2.xml (As <deployer>)
>>>>     private void loadOtherDirectories() {
>>>>         for (Map.Entry<String, Map<String, Deployer>> entry :
>>>> deploymentEngine.getDeployers().entrySet()) {
>>>>             String directory = entry.getKey();
>>>>             Map<String, Deployer> extensionMap = entry.getValue();
>>>>             for (String extension : extensionMap.keySet()) {
>>>>                 String[] strings = directory.split("/");
>>>>                 File dirToSearch = new
>>>> File(deploymentEngine.getRepositoryDir(),
>>>>                         strings[strings.length - 1]);
>>>>                 findFileForGivenDirectory(dirToSearch, extension,
>>>> directory);
>>>>
>>> I think it may work if you specify only 'conf' and above method finds it
>>> recursively.
>>>
>>
>> But if it is set to 'conf', the deployer will try to find sequences inside
>> all sub directories of the 'conf' dir. Therefore it won't be a good solution
>> I guess.
>>
>> +1 for removing this splitting code and supporting a '/' separated path
>> for the directory attribute of the deployer, rather than only supporting one
>> level.
>>
>
> Yes, Isuru is correct.
>
> So inside the conf/synapse-config we have endpoints, proxy services, local
> entries and so forth as well and they will be tried to build as sequences
> and will be failed as well. Note that all these configurations are in .xml
> extension and we cannot differentiate them with the extension.
>
> Let's remove the splitting if there is no valid reason to have that. I had
> a look at the logic and there is no need to have this logic. Also the logic
> is wrong, I think this has been introduced to detect the absolute path
> provided as the directory case, where it should have been better handled
> with the File operations :-)
>

Well, by looking at the JavaDoc for the two argument (File, String) File
constructor we do not need to do anything special, File class handles it
within the constructor.

<quote> If the <code>child</code>
     * pathname string is absolute then it is converted into a relative
     * pathname in a system-dependent way.
</quote>

Thanks,
Ruwan


>
> I will fix it, and will see if it breaks anything (I don't think so,
> though)
>
> Thanks,
> Ruwan
>
>>
>> Thanks,
>> ~Isuru
>>
>>
>>>
>>> +1 to remove spliting if there is no reason for that.
>>>
>>> thanks,
>>> Amila.
>>>
>>>>             }
>>>>         }
>>>>     }
>>>>
>>>> Can we get rid of the splitting and let the user declare inner
>>>> directories for the artifacts to be deployed??
>>>>
>>>> Thanks,
>>>> Ruwan
>>>>
>>>> --
>>>> Ruwan Linton
>>>> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
>>>> WSO2 Inc.; http://wso2.org
>>>> email: ruwan@wso2.com; cell: +94 77 341 3097
>>>> blog: http://ruwansblog.blogspot.com
>>>>
>>>
>>>
>>>
>>> --
>>> Amila Suriarachchi
>>> WSO2 Inc.
>>> blog: http://amilachinthaka.blogspot.com/
>>>
>>
>>
>>
>> --
>> Senior Software Engineer,
>> WSO2 Inc. http://wso2.org/
>> Blog : http://isurues.wordpress.com/
>>
>
>
>
> --
> Ruwan Linton
> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
> WSO2 Inc.; http://wso2.org
> email: ruwan@wso2.com; cell: +94 77 341 3097
> blog: http://ruwansblog.blogspot.com
>



-- 
Ruwan Linton
Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
WSO2 Inc.; http://wso2.org
email: ruwan@wso2.com; cell: +94 77 341 3097
blog: http://ruwansblog.blogspot.com

Re: Axis2 Deployers doesn't support a directory within another directory under repository??

Posted by Ruwan Linton <ru...@gmail.com>.
On Thu, Feb 11, 2010 at 10:10 AM, Isuru Suriarachchi <is...@gmail.com>wrote:

>
>
> On Thu, Feb 11, 2010 at 10:05 AM, Amila Suriarachchi <
> amilasuriarachchi@gmail.com> wrote:
>
>>
>>
>> On Thu, Feb 11, 2010 at 8:11 AM, Ruwan Linton <ru...@gmail.com>wrote:
>>
>>> Folks,
>>>
>>> Synapse has a requirement to have a directory called conf/synapse-config
>>> in the repository and have its own space for sequences, endpoints, proxy
>>> services so forth inside that.. So the expected deployer config within the
>>> axis2.xml is as follows;
>>>
>>> <deployer extension="xml" directory="conf/synapse-config/sequences"
>>> class="org.apache.synapse.deployers.SequenceDeployer"/>
>>>
>>> but because of the following code fragment it takes only the last
>>> director specified in the directory declaration of the deployer. Is there
>>> any reason for us to restrict the deployer to only one level, even in that
>>> case we should be treating the directory as the top level direcotry so that
>>> the path is correct, but here we are calculating a directory path which is
>>> not existing. With the above case it computes the directory as
>>> $AXIS2_REPOSITORY/sequences which is completely wrong :-(
>>>
>>> org.apache.axis2.deployment.RepositoryListener [267, 280]
>>>
>>> //This will load the files from the directories
>>>     // specified by axis2.xml (As <deployer>)
>>>     private void loadOtherDirectories() {
>>>         for (Map.Entry<String, Map<String, Deployer>> entry :
>>> deploymentEngine.getDeployers().entrySet()) {
>>>             String directory = entry.getKey();
>>>             Map<String, Deployer> extensionMap = entry.getValue();
>>>             for (String extension : extensionMap.keySet()) {
>>>                 String[] strings = directory.split("/");
>>>                 File dirToSearch = new
>>> File(deploymentEngine.getRepositoryDir(),
>>>                         strings[strings.length - 1]);
>>>                 findFileForGivenDirectory(dirToSearch, extension,
>>> directory);
>>>
>> I think it may work if you specify only 'conf' and above method finds it
>> recursively.
>>
>
> But if it is set to 'conf', the deployer will try to find sequences inside
> all sub directories of the 'conf' dir. Therefore it won't be a good solution
> I guess.
>
> +1 for removing this splitting code and supporting a '/' separated path for
> the directory attribute of the deployer, rather than only supporting one
> level.
>

Yes, Isuru is correct.

So inside the conf/synapse-config we have endpoints, proxy services, local
entries and so forth as well and they will be tried to build as sequences
and will be failed as well. Note that all these configurations are in .xml
extension and we cannot differentiate them with the extension.

Let's remove the splitting if there is no valid reason to have that. I had a
look at the logic and there is no need to have this logic. Also the logic is
wrong, I think this has been introduced to detect the absolute path provided
as the directory case, where it should have been better handled with the
File operations :-)

I will fix it, and will see if it breaks anything (I don't think so, though)

Thanks,
Ruwan

>
> Thanks,
> ~Isuru
>
>
>>
>> +1 to remove spliting if there is no reason for that.
>>
>> thanks,
>> Amila.
>>
>>>             }
>>>         }
>>>     }
>>>
>>> Can we get rid of the splitting and let the user declare inner
>>> directories for the artifacts to be deployed??
>>>
>>> Thanks,
>>> Ruwan
>>>
>>> --
>>> Ruwan Linton
>>> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
>>> WSO2 Inc.; http://wso2.org
>>> email: ruwan@wso2.com; cell: +94 77 341 3097
>>> blog: http://ruwansblog.blogspot.com
>>>
>>
>>
>>
>> --
>> Amila Suriarachchi
>> WSO2 Inc.
>> blog: http://amilachinthaka.blogspot.com/
>>
>
>
>
> --
> Senior Software Engineer,
> WSO2 Inc. http://wso2.org/
> Blog : http://isurues.wordpress.com/
>



-- 
Ruwan Linton
Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
WSO2 Inc.; http://wso2.org
email: ruwan@wso2.com; cell: +94 77 341 3097
blog: http://ruwansblog.blogspot.com

Re: Axis2 Deployers doesn't support a directory within another directory under repository??

Posted by Isuru Suriarachchi <is...@gmail.com>.
On Thu, Feb 11, 2010 at 10:05 AM, Amila Suriarachchi <
amilasuriarachchi@gmail.com> wrote:

>
>
> On Thu, Feb 11, 2010 at 8:11 AM, Ruwan Linton <ru...@gmail.com>wrote:
>
>> Folks,
>>
>> Synapse has a requirement to have a directory called conf/synapse-config
>> in the repository and have its own space for sequences, endpoints, proxy
>> services so forth inside that.. So the expected deployer config within the
>> axis2.xml is as follows;
>>
>> <deployer extension="xml" directory="conf/synapse-config/sequences"
>> class="org.apache.synapse.deployers.SequenceDeployer"/>
>>
>> but because of the following code fragment it takes only the last director
>> specified in the directory declaration of the deployer. Is there any reason
>> for us to restrict the deployer to only one level, even in that case we
>> should be treating the directory as the top level direcotry so that the path
>> is correct, but here we are calculating a directory path which is not
>> existing. With the above case it computes the directory as
>> $AXIS2_REPOSITORY/sequences which is completely wrong :-(
>>
>> org.apache.axis2.deployment.RepositoryListener [267, 280]
>>
>> //This will load the files from the directories
>>     // specified by axis2.xml (As <deployer>)
>>     private void loadOtherDirectories() {
>>         for (Map.Entry<String, Map<String, Deployer>> entry :
>> deploymentEngine.getDeployers().entrySet()) {
>>             String directory = entry.getKey();
>>             Map<String, Deployer> extensionMap = entry.getValue();
>>             for (String extension : extensionMap.keySet()) {
>>                 String[] strings = directory.split("/");
>>                 File dirToSearch = new
>> File(deploymentEngine.getRepositoryDir(),
>>                         strings[strings.length - 1]);
>>                 findFileForGivenDirectory(dirToSearch, extension,
>> directory);
>>
> I think it may work if you specify only 'conf' and above method finds it
> recursively.
>

But if it is set to 'conf', the deployer will try to find sequences inside
all sub directories of the 'conf' dir. Therefore it won't be a good solution
I guess.

+1 for removing this splitting code and supporting a '/' separated path for
the directory attribute of the deployer, rather than only supporting one
level.

Thanks,
~Isuru


>
> +1 to remove spliting if there is no reason for that.
>
> thanks,
> Amila.
>
>>             }
>>         }
>>     }
>>
>> Can we get rid of the splitting and let the user declare inner directories
>> for the artifacts to be deployed??
>>
>> Thanks,
>> Ruwan
>>
>> --
>> Ruwan Linton
>> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
>> WSO2 Inc.; http://wso2.org
>> email: ruwan@wso2.com; cell: +94 77 341 3097
>> blog: http://ruwansblog.blogspot.com
>>
>
>
>
> --
> Amila Suriarachchi
> WSO2 Inc.
> blog: http://amilachinthaka.blogspot.com/
>



-- 
Senior Software Engineer,
WSO2 Inc. http://wso2.org/
Blog : http://isurues.wordpress.com/

Re: Axis2 Deployers doesn't support a directory within another directory under repository??

Posted by Amila Suriarachchi <am...@gmail.com>.
On Thu, Feb 11, 2010 at 8:11 AM, Ruwan Linton <ru...@gmail.com>wrote:

> Folks,
>
> Synapse has a requirement to have a directory called conf/synapse-config in
> the repository and have its own space for sequences, endpoints, proxy
> services so forth inside that.. So the expected deployer config within the
> axis2.xml is as follows;
>
> <deployer extension="xml" directory="conf/synapse-config/sequences"
> class="org.apache.synapse.deployers.SequenceDeployer"/>
>
> but because of the following code fragment it takes only the last director
> specified in the directory declaration of the deployer. Is there any reason
> for us to restrict the deployer to only one level, even in that case we
> should be treating the directory as the top level direcotry so that the path
> is correct, but here we are calculating a directory path which is not
> existing. With the above case it computes the directory as
> $AXIS2_REPOSITORY/sequences which is completely wrong :-(
>
> org.apache.axis2.deployment.RepositoryListener [267, 280]
>
> //This will load the files from the directories
>     // specified by axis2.xml (As <deployer>)
>     private void loadOtherDirectories() {
>         for (Map.Entry<String, Map<String, Deployer>> entry :
> deploymentEngine.getDeployers().entrySet()) {
>             String directory = entry.getKey();
>             Map<String, Deployer> extensionMap = entry.getValue();
>             for (String extension : extensionMap.keySet()) {
>                 String[] strings = directory.split("/");
>                 File dirToSearch = new
> File(deploymentEngine.getRepositoryDir(),
>                         strings[strings.length - 1]);
>                 findFileForGivenDirectory(dirToSearch, extension,
> directory);
>
I think it may work if you specify only 'conf' and above method finds it
recursively.

+1 to remove spliting if there is no reason for that.

thanks,
Amila.

>             }
>         }
>     }
>
> Can we get rid of the splitting and let the user declare inner directories
> for the artifacts to be deployed??
>
> Thanks,
> Ruwan
>
> --
> Ruwan Linton
> Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
> WSO2 Inc.; http://wso2.org
> email: ruwan@wso2.com; cell: +94 77 341 3097
> blog: http://ruwansblog.blogspot.com
>



-- 
Amila Suriarachchi
WSO2 Inc.
blog: http://amilachinthaka.blogspot.com/