Skip to content

Commit

Permalink
[#117] Improved Plugin APIs
Browse files Browse the repository at this point in the history
  • Loading branch information
lioolli committed Feb 10, 2015
1 parent 9696161 commit c1ea99c
Show file tree
Hide file tree
Showing 91 changed files with 2,237 additions and 650 deletions.
Expand Up @@ -32,9 +32,7 @@
import com.navercorp.pinpoint.bootstrap.config.ProfilerConfig;
import com.navercorp.pinpoint.bootstrap.util.IdValidateUtils;
import com.navercorp.pinpoint.common.PinpointConstants;
import com.navercorp.pinpoint.common.ServiceTypeInitializer;
import com.navercorp.pinpoint.common.plugin.PluginLoader;
import com.navercorp.pinpoint.common.plugin.ServiceTypeProvider;
import com.navercorp.pinpoint.common.ServiceTypeProviderLoader;
import com.navercorp.pinpoint.common.util.BytesUtils;

/**
Expand Down Expand Up @@ -149,8 +147,7 @@ private static Map<String, String> parseAgentArgs(String str) {
}

private static void loadServiceTypeProviders(URL[] pluginJars) {
List<ServiceTypeProvider> providers = PluginLoader.load(ServiceTypeProvider.class, pluginJars);
ServiceTypeInitializer.initialize(providers);
ServiceTypeProviderLoader.initializeServiceType(pluginJars);
}

private static JarFile getBootStrapJarFile(String bootStrapCoreJar) {
Expand Down
Expand Up @@ -35,7 +35,7 @@ public interface ByteCodeInstrumentor {

Interceptor newInterceptor(ClassLoader classLoader, ProtectionDomain protectedDomain, String interceptorFQCN) throws InstrumentException;

// Interceptor newInterceptor(ClassLoader classLoader, ProtectionDomain protectedDomain, String interceptorFQCN, Object[] params) throws InstrumentException;
// TargetMethod newInterceptor(ClassLoader classLoader, ProtectionDomain protectedDomain, String interceptorFQCN, Object[] params) throws InstrumentException;

Interceptor newInterceptor(ClassLoader classLoader, ProtectionDomain protectedDomain, String interceptorFQCN, Object[] params, Class[] paramClazz) throws InstrumentException;
}
@@ -0,0 +1,23 @@
/**
* Copyright 2014 NAVER Corp.
* Licensed 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 com.navercorp.pinpoint.bootstrap.plugin;

/**
* @author Jongho Moon
*
*/
public enum ApplicationServerProperty {
MANAGE_PINPOINT_AGENT_LIFECYCLE;
}
@@ -0,0 +1,30 @@
/**
* Copyright 2014 NAVER Corp.
* Licensed 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 com.navercorp.pinpoint.bootstrap.plugin;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* @author Jongho Moon
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface Attribute {
public String value();
}
@@ -0,0 +1,29 @@
/**
* Copyright 2014 NAVER Corp.
* Licensed 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 com.navercorp.pinpoint.bootstrap.plugin;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* @author Jongho Moon
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface Cached {
}
Expand Up @@ -18,14 +18,70 @@
* @author Jongho Moon
*
*/
public enum FieldSnooper {
OBJECT(ObjectSnooper.class),
OBJECT2(ObjectSnooper2.class),
OBJECT3(ObjectSnooper3.class),
INT(IntSnooper.class),
LONG(LongSnooper.class),
Double(DoubleSnooper.class),
BOOLEAN(BooleanSnooper.class);
@SuppressWarnings("unchecked")
public abstract class FieldSnooper {
private static final FieldSnooper[] VALUES = {
new FieldSnooper(ObjectSnooper0.class) {
@Override
public <T> T get(Object object) {
return (T)((ObjectSnooper0)object)._$PINPOINT$_getObjectField0();
}
},
new FieldSnooper(ObjectSnooper1.class) {
@Override
public <T> T get(Object object) {
return (T)((ObjectSnooper1)object)._$PINPOINT$_getObjectField1();
}
},
new FieldSnooper(ObjectSnooper2.class) {
@Override
public <T> T get(Object object) {
return (T)((ObjectSnooper2)object)._$PINPOINT$_getObjectField2();
}
},
new FieldSnooper(ObjectSnooper3.class) {
@Override
public <T> T get(Object object) {
return (T)((ObjectSnooper3)object)._$PINPOINT$_getObjectField3();
}
},
new FieldSnooper(ObjectSnooper4.class) {
@Override
public <T> T get(Object object) {
return (T)((ObjectSnooper4)object)._$PINPOINT$_getObjectField4();
}
},
new FieldSnooper(ObjectSnooper5.class) {
@Override
public <T> T get(Object object) {
return (T)((ObjectSnooper5)object)._$PINPOINT$_getObjectField5();
}
},
new FieldSnooper(ObjectSnooper6.class) {
@Override
public <T> T get(Object object) {
return (T)((ObjectSnooper6)object)._$PINPOINT$_getObjectField6();
}
},
new FieldSnooper(ObjectSnooper7.class) {
@Override
public <T> T get(Object object) {
return (T)((ObjectSnooper7)object)._$PINPOINT$_getObjectField7();
}
},
new FieldSnooper(ObjectSnooper8.class) {
@Override
public <T> T get(Object object) {
return (T)((ObjectSnooper8)object)._$PINPOINT$_getObjectField8();
}
},
new FieldSnooper(ObjectSnooper9.class) {
@Override
public <T> T get(Object object) {
return (T)((ObjectSnooper9)object)._$PINPOINT$_getObjectField9();
}
}
};

private final Class<? extends Snooper> type;

Expand All @@ -37,26 +93,22 @@ public Class<? extends Snooper> getType() {
return type;
}


public static boolean isInjected(FieldSnooper snooper, Object object) {
return snooper.type.isAssignableFrom(object.getClass());
public boolean isApplicable(Object object) {
return type.isAssignableFrom(object.getClass());
}

@SuppressWarnings("unchecked")
public static <T> T get(Object object) {
return (T)((ObjectSnooper)object)._$PINPOINT$_getObjectField();
}
public abstract <T> T get(Object object);




@SuppressWarnings("unchecked")
public static <T> T get2(Object object) {
return (T)((ObjectSnooper2)object)._$PINPOINT$_getObjectField2();
}

@SuppressWarnings("unchecked")
public static <T> T get3(Object object) {
return (T)((ObjectSnooper3)object)._$PINPOINT$_getObjectField3();
public static FieldSnooper get(int index) {
return VALUES[index];
}



public static boolean getBoolean(Object object) {
return ((BooleanSnooper)object)._$PINPOINT$_getBooleanField();
}
Expand Down Expand Up @@ -93,15 +145,45 @@ public interface IntSnooper extends Snooper {
public int _$PINPOINT$_getIntField();
}

public interface ObjectSnooper extends Snooper {
public Object _$PINPOINT$_getObjectField();

public interface ObjectSnooper0 extends Snooper {
public Object _$PINPOINT$_getObjectField0();
}

public interface ObjectSnooper1 extends Snooper {
public Object _$PINPOINT$_getObjectField1();
}

public interface ObjectSnooper2 extends Snooper {
public Object _$PINPOINT$_getObjectField2();
}

public interface ObjectSnooper3 extends Snooper {
public Object _$PINPOINT$_getObjectField3();
}

public interface ObjectSnooper4 extends Snooper {
public Object _$PINPOINT$_getObjectField4();
}

public interface ObjectSnooper5 extends Snooper {
public Object _$PINPOINT$_getObjectField5();
}

public interface ObjectSnooper6 extends Snooper {
public Object _$PINPOINT$_getObjectField6();
}

public interface ObjectSnooper7 extends Snooper {
public Object _$PINPOINT$_getObjectField7();
}

public interface ObjectSnooper8 extends Snooper {
public Object _$PINPOINT$_getObjectField8();
}

public interface ObjectSnooper9 extends Snooper {
public Object _$PINPOINT$_getObjectField9();
}

}

0 comments on commit c1ea99c

Please sign in to comment.