01: /**
02: *
03: * Licensed to the Apache Software Foundation (ASF) under one or more
04: * contributor license agreements. See the NOTICE file distributed with
05: * this work for additional information regarding copyright ownership.
06: * The ASF licenses this file to You under the Apache License, Version 2.0
07: * (the "License"); you may not use this file except in compliance with
08: * the License. You may obtain a copy of the License at
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing, software
13: * distributed under the License is distributed on an "AS IS" BASIS,
14: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15: * See the License for the specific language governing permissions and
16: * limitations under the License.
17: */package org.apache.openejb.resource.jdbc;
18:
19: import org.apache.commons.dbcp.BasicDataSource;
20: import org.apache.openejb.loader.SystemInstance;
21: import org.apache.xbean.finder.ResourceFinder;
22:
23: import java.io.File;
24: import java.io.FileOutputStream;
25: import java.io.IOException;
26:
27: public class InstantdbDataSourcePlugin implements DataSourcePlugin {
28:
29: public void configure(BasicDataSource dataSource) {
30: String jdbcUrl = dataSource.getUrl();
31:
32: // jdbc:idb:conf/instantdb.properties
33: String prefix = "jdbc:idb:";
34: int index = jdbcUrl.indexOf(prefix);
35: if (index == -1) {
36: return;
37: }
38:
39: String confFile = jdbcUrl.substring(index + prefix.length());
40:
41: File base = SystemInstance.get().getBase().getDirectory();
42: File file = new File(base, confFile);
43:
44: if (file.exists()) {
45: // The instantdb properties file is there, we're good
46: return;
47: }
48:
49: if (!file.getParentFile().exists()) {
50: // The directory the instantdb properties file should live in
51: // doesn't exist, don't bother
52: return;
53: }
54:
55: FileOutputStream out = null;
56: try {
57: ResourceFinder finder = new ResourceFinder("");
58: String defaultProperties = finder
59: .findString("default.instantdb.properties");
60: out = new FileOutputStream(file);
61: out.write(defaultProperties.getBytes());
62: out.flush();
63: } catch (IOException e) {
64: // TODO; Handle this
65: e.printStackTrace();
66: } finally {
67: try {
68: out.close();
69: } catch (IOException e) {
70: }
71: }
72: }
73:
74: public boolean enableUserDirHack() {
75: return true;
76: }
77:
78: }
|