KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > system > resolver > ExplicitDefaultArtifactResolver


1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17
18 package org.apache.geronimo.system.resolver;
19
20 import java.io.File JavaDoc;
21 import java.io.FileInputStream JavaDoc;
22 import java.io.IOException JavaDoc;
23 import java.util.Collection JavaDoc;
24 import java.util.HashMap JavaDoc;
25 import java.util.Iterator JavaDoc;
26 import java.util.Map JavaDoc;
27 import java.util.Properties JavaDoc;
28
29 import org.apache.geronimo.gbean.GBeanInfo;
30 import org.apache.geronimo.gbean.GBeanInfoBuilder;
31 import org.apache.geronimo.kernel.repository.Artifact;
32 import org.apache.geronimo.kernel.repository.ArtifactManager;
33 import org.apache.geronimo.kernel.repository.ArtifactResolver;
34 import org.apache.geronimo.kernel.repository.DefaultArtifactResolver;
35 import org.apache.geronimo.kernel.repository.ListableRepository;
36 import org.apache.geronimo.system.serverinfo.ServerInfo;
37
38 /**
39  * @version $Rev: 476049 $ $Date: 2006-11-16 23:35:17 -0500 (Thu, 16 Nov 2006) $
40  */

41 public class ExplicitDefaultArtifactResolver extends DefaultArtifactResolver {
42
43     public ExplicitDefaultArtifactResolver(String JavaDoc versionMapLocation,
44             ArtifactManager artifactManager,
45             Collection JavaDoc repositories,
46             ServerInfo serverInfo ) throws IOException JavaDoc {
47         super(artifactManager, repositories, buildExplicitResolution(versionMapLocation, serverInfo));
48     }
49
50     private static Map JavaDoc buildExplicitResolution(String JavaDoc versionMapLocation, ServerInfo serverInfo) throws IOException JavaDoc {
51         if (versionMapLocation == null) {
52             return null;
53         }
54         File JavaDoc location = serverInfo == null? new File JavaDoc(versionMapLocation): serverInfo.resolve(versionMapLocation);
55         FileInputStream JavaDoc in = new FileInputStream JavaDoc(location);
56         Properties JavaDoc properties = new Properties JavaDoc();
57         try {
58             properties.load(in);
59         } finally {
60             in.close();
61         }
62         return propertiesToArtifactMap(properties);
63     }
64
65     private static Map JavaDoc propertiesToArtifactMap(Properties JavaDoc properties) {
66         Map JavaDoc explicitResolution = new HashMap JavaDoc();
67         for (Iterator JavaDoc iterator = properties.entrySet().iterator(); iterator.hasNext();) {
68             Map.Entry JavaDoc entry = (Map.Entry JavaDoc) iterator.next();
69             String JavaDoc key = (String JavaDoc) entry.getKey();
70             String JavaDoc resolvedString = (String JavaDoc) entry.getValue();
71             //split the string ourselves since we wish to allow blank artifactIds.
72
String JavaDoc[] parts = key.split("/", -1);
73             if (parts.length != 4) {
74                 throw new IllegalArgumentException JavaDoc("Invalid id: " + key);
75             }
76             Artifact source = new Artifact(parts[0], parts[1], (String JavaDoc)null, parts[3]);
77             Artifact resolved = Artifact.create(resolvedString);
78             explicitResolution.put(source,resolved);
79         }
80         return explicitResolution;
81     }
82
83     public static final GBeanInfo GBEAN_INFO;
84
85     static {
86         GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic(ExplicitDefaultArtifactResolver.class, "ArtifactResolver");
87         infoFactory.addAttribute("versionMapLocation", String JavaDoc.class, true, true);
88         infoFactory.addReference("ArtifactManager", ArtifactManager.class, "ArtifactManager");
89         infoFactory.addReference("Repositories", ListableRepository.class, "Repository");
90         infoFactory.addReference("ServerInfo", ServerInfo.class, "GBean");
91         infoFactory.addInterface(ArtifactResolver.class);
92
93         infoFactory.setConstructor(new String JavaDoc[]{
94                 "versionMapLocation",
95                 "ArtifactManager",
96                 "Repositories",
97                 "ServerInfo"
98         });
99
100
101         GBEAN_INFO = infoFactory.getBeanInfo();
102
103     }
104
105     public static GBeanInfo getGBeanInfo() {
106         return GBEAN_INFO;
107     }
108 }
109
Popular Tags